mosx
Version:
Multiview observable state management engine
60 lines • 6.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mx = void 0;
const mobx_1 = require("mobx");
const context_1 = require("./context");
const mosx_1 = require("./mosx");
const mosxPropertyDecorator = (type = "any", hidden = false, getter = false) => {
// tslint:disable-next-line: ban-types
return (target, key, descriptor) => {
if (typeof key === "string") {
const constructor = target.constructor;
// save ptoperty to schema
const params = { key, type, hidden, getter };
if (!exports.mx.$context.has(constructor)) {
exports.mx.$context.add(constructor);
const parent = constructor.$mx || { props: [] };
constructor.$mx = { props: [...parent.props], hidden: parent.hidden };
}
constructor.$mx.props.push(params);
return getter ? (0, mobx_1.computed)(target, key, descriptor) : (0, mobx_1.observable)(target, key);
}
};
};
const propertyFactory = (hidden = false, getter = false) => ({
string: mosxPropertyDecorator("string", hidden, getter),
number: mosxPropertyDecorator("number", hidden, getter),
boolean: mosxPropertyDecorator("boolean", hidden, getter),
object: (mType) => mosxPropertyDecorator(mType, hidden, getter),
array: (mType) => mosxPropertyDecorator([mType], hidden, getter),
map: (mType) => mosxPropertyDecorator({ map: mType }, hidden, getter),
set: (mType) => mosxPropertyDecorator({ set: mType }, hidden, getter),
});
const computedFactory = mosxPropertyDecorator("any", false, true);
computedFactory.private = Object.assign(mosxPropertyDecorator("any", true, true), propertyFactory(true, true));
// tslint:disable-next-line: ban-types
const mosxClassDecorator = (hidden = false) => (constructor) => {
const _constructor = constructor;
if (!exports.mx.$context.has(_constructor)) {
exports.mx.$context.add(_constructor);
_constructor.$mx = Object.assign({}, _constructor.$mx || { props: [] });
}
_constructor.$mx.hidden = hidden;
return class extends _constructor {
constructor(...args) {
super(...args);
if (!(this instanceof mosx_1.Mosx)) {
mosx_1.Mosx.inject(this);
}
}
};
};
exports.mx = Object.assign(mosxPropertyDecorator(), propertyFactory());
exports.mx.private = Object.assign(mosxPropertyDecorator("any", true), propertyFactory(true));
exports.mx.computed = Object.assign(computedFactory, propertyFactory(false, true));
exports.mx.observable = mobx_1.observable;
exports.mx.Object = Object.assign(mosxClassDecorator(false), {
private: mosxClassDecorator(true),
});
exports.mx.$context = new context_1.MosxContext();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFzRDtBQUN0RCx1Q0FBdUM7QUFDdkMsaUNBQTZCO0FBaUQ3QixNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBdUIsS0FBSyxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBcUIsRUFBRTtJQUNoSCxzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLE1BQWMsRUFBRSxHQUFvQixFQUFFLFVBQStCLEVBQUUsRUFBRTtRQUMvRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUMzQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBa0IsQ0FBQTtZQUU3QywwQkFBMEI7WUFDMUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQTtZQUM1QyxJQUFJLENBQUMsVUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ2pDLFVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUM1QixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFBO2dCQUMvQyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQTthQUN0RTtZQUNELFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNsQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBQSxlQUFRLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQTtTQUM1RTtJQUNILENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQUVELE1BQU0sZUFBZSxHQUFRLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxNQUFNLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUN2RCxNQUFNLEVBQUUscUJBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDdkQsT0FBTyxFQUFFLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ3pELE1BQU0sRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDdkUsS0FBSyxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQy9FLEdBQUcsRUFBRSxDQUFDLEtBQW9CLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDcEYsR0FBRyxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztDQUNyRixDQUFDLENBQUE7QUFFRixNQUFNLGVBQWUsR0FBUSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQ3RFLGVBQWUsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQTZCOUcsc0NBQXNDO0FBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFzQyxXQUFjLEVBQUssRUFBRTtJQUN4RyxNQUFNLFlBQVksR0FBRyxXQUFrQixDQUFBO0lBQ3ZDLElBQUksQ0FBQyxVQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtRQUNsQyxVQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM3QixZQUFZLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtLQUN4RTtJQUNELFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUVoQyxPQUFPLEtBQU0sU0FBUSxZQUFZO1FBQy9CLFlBQVksR0FBRyxJQUFXO1lBQ3hCLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1lBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLFdBQUksQ0FBQyxFQUFFO2dCQUMzQixXQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO2FBQ2xCO1FBQ0gsQ0FBQztLQUNHLENBQUE7QUFDUixDQUFDLENBQUE7QUFFWSxRQUFBLEVBQUUsR0FBa0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUE7QUFFMUYsVUFBRSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUNyRixVQUFFLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUMxRSxVQUFFLENBQUMsVUFBVSxHQUFHLGlCQUFVLENBQUE7QUFDMUIsVUFBRSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ25ELE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7Q0FDbEMsQ0FBQyxDQUFBO0FBRUYsVUFBRSxDQUFDLFFBQVEsR0FBRyxJQUFJLHFCQUFXLEVBQUUsQ0FBQSJ9