@loona/core
Version:
App State Management done with GraphQL (core package)
46 lines • 4.18 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { ensureMetadata } from './metadata';
import { getNameOfMutation, isMutation, mutationToType } from '../mutation';
import { isDocument } from '../helpers';
/**
* @param {?} proto
* @param {?} propName
* @param {?} effects
* @return {?}
*/
export function setEffectMetadata(proto, propName, effects) {
/** @type {?} */
const constructor = proto.constructor;
/** @type {?} */
const meta = ensureMetadata(constructor);
for (const action of effects) {
/** @type {?} */
let type = undefined;
if (typeof action === 'string') {
type = action;
}
else if (isMutation(action)) {
type = mutationToType(action);
}
else if (isDocument(action)) {
type = getNameOfMutation(action);
}
else if (typeof action.type === 'string') {
type = action.type;
}
if (!type) {
throw new Error(`Loona couldn't figure out the type of the action`);
}
if (!meta.effects[type]) {
meta.effects[type] = [];
}
meta.effects[type].push({
propName,
type,
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvb25hL2NvcmUvIiwic291cmNlcyI6WyJtZXRhZGF0YS9lZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFMUMsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDMUUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFlBQVksQ0FBQzs7Ozs7OztBQUV0QyxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLEtBQVUsRUFDVixRQUFnQixFQUNoQixPQUFvQjs7VUFFZCxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVc7O1VBQy9CLElBQUksR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDO0lBRXhDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFOztZQUN4QixJQUFJLEdBQXVCLFNBQVM7UUFFeEMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7WUFDOUIsSUFBSSxHQUFHLE1BQU0sQ0FBQztTQUNmO2FBQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMvQjthQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzdCLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsQzthQUFNLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7U0FDckU7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3RCLFFBQVE7WUFDUixJQUFJO1NBQ0wsQ0FBQyxDQUFDO0tBQ0o7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtlbnN1cmVNZXRhZGF0YX0gZnJvbSAnLi9tZXRhZGF0YSc7XG5pbXBvcnQge0VmZmVjdERlZn0gZnJvbSAnLi4vdHlwZXMvZWZmZWN0JztcbmltcG9ydCB7Z2V0TmFtZU9mTXV0YXRpb24sIGlzTXV0YXRpb24sIG11dGF0aW9uVG9UeXBlfSBmcm9tICcuLi9tdXRhdGlvbic7XG5pbXBvcnQge2lzRG9jdW1lbnR9IGZyb20gJy4uL2hlbHBlcnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0RWZmZWN0TWV0YWRhdGEoXG4gIHByb3RvOiBhbnksXG4gIHByb3BOYW1lOiBzdHJpbmcsXG4gIGVmZmVjdHM6IEVmZmVjdERlZltdLFxuKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yID0gcHJvdG8uY29uc3RydWN0b3I7XG4gIGNvbnN0IG1ldGEgPSBlbnN1cmVNZXRhZGF0YShjb25zdHJ1Y3Rvcik7XG5cbiAgZm9yIChjb25zdCBhY3Rpb24gb2YgZWZmZWN0cykge1xuICAgIGxldCB0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHR5cGUgPSBhY3Rpb247XG4gICAgfSBlbHNlIGlmIChpc011dGF0aW9uKGFjdGlvbikpIHtcbiAgICAgIHR5cGUgPSBtdXRhdGlvblRvVHlwZShhY3Rpb24pO1xuICAgIH0gZWxzZSBpZiAoaXNEb2N1bWVudChhY3Rpb24pKSB7XG4gICAgICB0eXBlID0gZ2V0TmFtZU9mTXV0YXRpb24oYWN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY3Rpb24udHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHR5cGUgPSBhY3Rpb24udHlwZTtcbiAgICB9XG5cbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTG9vbmEgY291bGRuJ3QgZmlndXJlIG91dCB0aGUgdHlwZSBvZiB0aGUgYWN0aW9uYCk7XG4gICAgfVxuXG4gICAgaWYgKCFtZXRhLmVmZmVjdHNbdHlwZV0pIHtcbiAgICAgIG1ldGEuZWZmZWN0c1t0eXBlXSA9IFtdO1xuICAgIH1cblxuICAgIG1ldGEuZWZmZWN0c1t0eXBlXS5wdXNoKHtcbiAgICAgIHByb3BOYW1lLFxuICAgICAgdHlwZSxcbiAgICB9KTtcbiAgfVxufVxuIl19