@loona/core
Version:
App State Management done with GraphQL (core package)
50 lines • 4.39 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { ensureMetadata, readMetadata } from './metadata';
import { getNameOfMutation } from '../mutation';
/**
* @param {?} proto
* @param {?} propName
* @param {?} mutation
* @return {?}
*/
export function setMutationMetadata(proto, propName, mutation) {
/** @type {?} */
const constructor = proto.constructor;
/** @type {?} */
const meta = ensureMetadata(constructor);
meta.mutations.push({
propName,
mutation,
});
}
/**
* @param {?} target
* @param {?} propName
* @return {?}
*/
export function hasMutation(target, propName) {
/** @type {?} */
const meta = readMetadata(target);
if (meta) {
return meta.mutations.some(def => {
return def.propName === propName;
});
}
return false;
}
/**
* @param {?} instance
* @param {?} meta
* @param {?=} transformFn
* @return {?}
*/
export function transformMutations(instance, meta, transformFn = resolver => resolver) {
return meta.mutations.map(({ propName, mutation }) => ({
mutation: typeof mutation === 'string' ? mutation : getNameOfMutation(mutation),
resolve: transformFn(instance[propName].bind(instance)),
}));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRpb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbG9vbmEvY29yZS8iLCJzb3VyY2VzIjpbIm1ldGFkYXRhL211dGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxPQUFPLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxNQUFNLFlBQVksQ0FBQztBQUd4RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7QUFFOUMsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxLQUFVLEVBQ1YsUUFBZ0IsRUFDaEIsUUFBK0I7O1VBRXpCLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVzs7VUFDL0IsSUFBSSxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUM7SUFFeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDbEIsUUFBUTtRQUNSLFFBQVE7S0FDVCxDQUFDLENBQUM7QUFDTCxDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQVcsRUFBRSxRQUFnQjs7VUFDakQsSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFFakMsSUFBSSxJQUFJLEVBQUU7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQzs7Ozs7OztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsUUFBYSxFQUNiLElBQWMsRUFDZCxjQUFzRCxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVE7SUFFMUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELFFBQVEsRUFDTixPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1FBQ3ZFLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN4RCxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RvY3VtZW50Tm9kZX0gZnJvbSAnZ3JhcGhxbCc7XG5cbmltcG9ydCB7ZW5zdXJlTWV0YWRhdGEsIHJlYWRNZXRhZGF0YX0gZnJvbSAnLi9tZXRhZGF0YSc7XG5pbXBvcnQge01ldGFkYXRhfSBmcm9tICcuLi90eXBlcy9tZXRhZGF0YSc7XG5pbXBvcnQge011dGF0aW9uRGVmLCBNdXRhdGlvblJlc29sdmVGbn0gZnJvbSAnLi4vdHlwZXMvbXV0YXRpb24nO1xuaW1wb3J0IHtnZXROYW1lT2ZNdXRhdGlvbn0gZnJvbSAnLi4vbXV0YXRpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0TXV0YXRpb25NZXRhZGF0YShcbiAgcHJvdG86IGFueSxcbiAgcHJvcE5hbWU6IHN0cmluZyxcbiAgbXV0YXRpb246IERvY3VtZW50Tm9kZSB8IHN0cmluZyxcbikge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHByb3RvLmNvbnN0cnVjdG9yO1xuICBjb25zdCBtZXRhID0gZW5zdXJlTWV0YWRhdGEoY29uc3RydWN0b3IpO1xuXG4gIG1ldGEubXV0YXRpb25zLnB1c2goe1xuICAgIHByb3BOYW1lLFxuICAgIG11dGF0aW9uLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc011dGF0aW9uKHRhcmdldDogYW55LCBwcm9wTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG1ldGEgPSByZWFkTWV0YWRhdGEodGFyZ2V0KTtcblxuICBpZiAobWV0YSkge1xuICAgIHJldHVybiBtZXRhLm11dGF0aW9ucy5zb21lKGRlZiA9PiB7XG4gICAgICByZXR1cm4gZGVmLnByb3BOYW1lID09PSBwcm9wTmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU11dGF0aW9ucyhcbiAgaW5zdGFuY2U6IGFueSxcbiAgbWV0YTogTWV0YWRhdGEsXG4gIHRyYW5zZm9ybUZuOiAoKHJlc29sdmVyOiBhbnkpID0+IE11dGF0aW9uUmVzb2x2ZUZuKSA9IHJlc29sdmVyID0+IHJlc29sdmVyLFxuKTogTXV0YXRpb25EZWZbXSB7XG4gIHJldHVybiBtZXRhLm11dGF0aW9ucy5tYXAoKHtwcm9wTmFtZSwgbXV0YXRpb259KSA9PiAoe1xuICAgIG11dGF0aW9uOlxuICAgICAgdHlwZW9mIG11dGF0aW9uID09PSAnc3RyaW5nJyA/IG11dGF0aW9uIDogZ2V0TmFtZU9mTXV0YXRpb24obXV0YXRpb24pLFxuICAgIHJlc29sdmU6IHRyYW5zZm9ybUZuKGluc3RhbmNlW3Byb3BOYW1lXS5iaW5kKGluc3RhbmNlKSksXG4gIH0pKTtcbn1cbiJdfQ==