chrono-forge
Version:
A comprehensive framework for building resilient Temporal workflows, advanced state management, and real-time streaming activities in TypeScript. Designed for a seamless developer experience with powerful abstractions, dynamic orchestration, and full cont
34 lines (33 loc) • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Property = void 0;
require("reflect-metadata");
const metadata_1 = require("./metadata");
const Property = (options = {}) => {
return (target, propertyKey) => {
const properties = Reflect.getOwnMetadata(metadata_1.PROPERTY_METADATA_KEY, target) || [];
properties.push({
propertyKey,
path: options.path,
get: options.get || options.get === undefined,
set: options.set || options.set === undefined,
queryName: propertyKey,
signalName: propertyKey,
memo: options.memo
});
Reflect.defineMetadata(metadata_1.PROPERTY_METADATA_KEY, properties, target);
if (options.get) {
const getterName = typeof options.get === 'string' ? options.get : propertyKey;
const getters = Reflect.getOwnMetadata(metadata_1.GETTER_METADATA_KEY, target) || {};
getters[getterName] = propertyKey;
Reflect.defineMetadata(metadata_1.GETTER_METADATA_KEY, getters, target);
}
if (options.set) {
const setterName = typeof options.set === 'string' ? options.set : propertyKey;
const setters = Reflect.getOwnMetadata(metadata_1.SETTER_METADATA_KEY, target) || {};
setters[setterName] = propertyKey;
Reflect.defineMetadata(metadata_1.SETTER_METADATA_KEY, setters, target);
}
};
};
exports.Property = Property;