@loona/core
Version:
App State Management done with GraphQL (core package)
36 lines • 2.94 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { ensureMetadata } from './metadata';
/**
* @param {?} proto
* @param {?} propName
* @param {?} mutation
* @return {?}
*/
export function setUpdateMetadata(proto, propName, mutation) {
/** @type {?} */
const constructor = proto.constructor;
/** @type {?} */
const meta = ensureMetadata(constructor);
meta.updates.push({
propName,
mutation,
});
}
/**
* @param {?} instance
* @param {?} meta
* @param {?=} transformFn
* @return {?}
*/
export function transformUpdates(instance, meta, transformFn = resolver => resolver) {
if (meta.updates) {
return meta.updates.map(({ propName, mutation }) => ({
mutation,
resolve: transformFn(instance[propName].bind(instance)),
}));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvb25hL2NvcmUvIiwic291cmNlcyI6WyJtZXRhZGF0YS91cGRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7QUFFMUMsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixLQUFVLEVBQ1YsUUFBZ0IsRUFDaEIsUUFBZ0I7O1VBRVYsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXOztVQUMvQixJQUFJLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQztJQUV4QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNoQixRQUFRO1FBQ1IsUUFBUTtLQUNULENBQUMsQ0FBQztBQUNMLENBQUM7Ozs7Ozs7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLFFBQWEsRUFDYixJQUFjLEVBQ2QsY0FBb0QsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRO0lBRXhFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDakQsUUFBUTtZQUNSLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4RCxDQUFDLENBQUMsQ0FBQztLQUNMO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VXBkYXRlRGVmLCBVcGRhdGVSZXNvbHZlRm59IGZyb20gJy4uL3R5cGVzL3VwZGF0ZSc7XG5pbXBvcnQge01ldGFkYXRhfSBmcm9tICcuLi90eXBlcy9tZXRhZGF0YSc7XG5pbXBvcnQge2Vuc3VyZU1ldGFkYXRhfSBmcm9tICcuL21ldGFkYXRhJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFVwZGF0ZU1ldGFkYXRhKFxuICBwcm90bzogYW55LFxuICBwcm9wTmFtZTogc3RyaW5nLFxuICBtdXRhdGlvbjogc3RyaW5nLFxuKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yID0gcHJvdG8uY29uc3RydWN0b3I7XG4gIGNvbnN0IG1ldGEgPSBlbnN1cmVNZXRhZGF0YShjb25zdHJ1Y3Rvcik7XG5cbiAgbWV0YS51cGRhdGVzLnB1c2goe1xuICAgIHByb3BOYW1lLFxuICAgIG11dGF0aW9uLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVVwZGF0ZXMoXG4gIGluc3RhbmNlOiBhbnksXG4gIG1ldGE6IE1ldGFkYXRhLFxuICB0cmFuc2Zvcm1GbjogKChyZXNvbHZlcjogYW55KSA9PiBVcGRhdGVSZXNvbHZlRm4pID0gcmVzb2x2ZXIgPT4gcmVzb2x2ZXIsXG4pOiBVcGRhdGVEZWZbXSB8IHVuZGVmaW5lZCB7XG4gIGlmIChtZXRhLnVwZGF0ZXMpIHtcbiAgICByZXR1cm4gbWV0YS51cGRhdGVzLm1hcCgoe3Byb3BOYW1lLCBtdXRhdGlvbn0pID0+ICh7XG4gICAgICBtdXRhdGlvbixcbiAgICAgIHJlc29sdmU6IHRyYW5zZm9ybUZuKGluc3RhbmNlW3Byb3BOYW1lXS5iaW5kKGluc3RhbmNlKSksXG4gICAgfSkpO1xuICB9XG59XG4iXX0=