@loona/core
Version:
App State Management done with GraphQL (core package)
136 lines • 10.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Store } from './internal/store';
import { getMutationDefinition, getFirstField } from './internal/utils';
import { buildContext, buildGetCacheKey } from './helpers';
var MutationManager = /** @class */ (function (_super) {
tslib_1.__extends(MutationManager, _super);
function MutationManager(defs) {
var _this = _super.call(this) || this;
if (defs) {
defs.forEach(function (def) {
_this.set(def.mutation, def);
});
}
return _this;
}
/**
* @param {?} defs
* @return {?}
*/
MutationManager.prototype.add = /**
* @param {?} defs
* @return {?}
*/
function (defs) {
var _this = this;
defs.forEach(function (def) {
_this.set(def.mutation, def);
});
};
return MutationManager;
}(Store));
export { MutationManager };
/**
* @param {?} action
* @return {?}
*/
export function mutationToType(action) {
/** @type {?} */
var mutation = getMutation(action);
/** @type {?} */
var name = getNameOfMutation(mutation);
return name;
}
/**
* @param {?} action
* @return {?}
*/
export function getMutation(action) {
if (action.constructor && action.constructor.mutation) {
return action.constructor.mutation;
}
return action.mutation;
}
/**
* @param {?} action
* @return {?}
*/
export function isMutation(action) {
return typeof getMutation(action) !== 'undefined';
}
/**
* @param {?} mutation
* @return {?}
*/
export function getNameOfMutation(mutation) {
/** @type {?} */
var def = getMutationDefinition(mutation);
/** @type {?} */
var field = getFirstField(def);
return field.name.value;
}
/**
* @template T, V
* @param {?} config
* @param {?} manager
* @return {?}
*/
export function withUpdates(config, manager) {
/** @type {?} */
var orgUpdate = config.update;
return tslib_1.__assign({}, config, { update: function (proxy, mutationResult) {
/** @type {?} */
var name = getNameOfMutation(config.mutation);
/** @type {?} */
var result = mutationResult.data && mutationResult.data[name];
/** @type {?} */
var cache = manager.cache;
/** @type {?} */
var context = buildContext({
cache: proxy,
getCacheKey: buildGetCacheKey(cache),
}, manager.getClient());
/** @type {?} */
var updates = manager.updates.get(name);
if (updates) {
/** @type {?} */
var info_1 = {
name: name,
variables: config.variables,
result: result,
};
updates.forEach(function (def) { return def.resolve(info_1, context); });
}
if (orgUpdate) {
orgUpdate(proxy, mutationResult);
}
} });
}
/**
* @template T, V
* @param {?} config
* @param {?} result
* @return {?}
*/
export function buildActionFromResult(config, result) {
return tslib_1.__assign({ type: 'mutation', options: config, ok: true }, result);
}
/**
* @template T, V
* @param {?} config
* @param {?} error
* @return {?}
*/
export function buildActionFromError(config, error) {
return {
type: 'mutation',
options: config,
ok: false,
error: error,
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRpb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbG9vbmEvY29yZS8iLCJzb3VyY2VzIjpbIm11dGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBS0EsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RSxPQUFPLEVBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXpEO0lBQXFDLDJDQUFrQjtJQUNyRCx5QkFBWSxJQUFvQjtRQUFoQyxZQUNFLGlCQUFPLFNBT1I7UUFMQyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO2dCQUNkLEtBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztTQUNKOztJQUNILENBQUM7Ozs7O0lBRUQsNkJBQUc7Ozs7SUFBSCxVQUFJLElBQW1CO1FBQXZCLGlCQUlDO1FBSEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEdBQUc7WUFDZCxLQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBaEJELENBQXFDLEtBQUssR0FnQnpDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQXNCOztRQUM3QyxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQzs7UUFDOUIsSUFBSSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztJQUV4QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFXO0lBQ3JDLElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTtRQUNyRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO0tBQ3BDO0lBRUQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3pCLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFXO0lBQ3BDLE9BQU8sT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssV0FBVyxDQUFDO0FBQ3BELENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFFBQXNCOztRQUNoRCxHQUFHLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDOztRQUNyQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQztJQUVoQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzFCLENBQUM7Ozs7Ozs7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUN6QixNQUErQixFQUMvQixPQUFnQjs7UUFFVixTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU07SUFFL0IsNEJBQ0ssTUFBTSxJQUNULE1BQU0sRUFBRSxVQUFDLEtBQUssRUFBRSxjQUE4Qjs7Z0JBQ3RDLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDOztnQkFDekMsTUFBTSxHQUFNLGNBQWMsQ0FBQyxJQUFJLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7O2dCQUM1RCxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUs7O2dCQUVyQixPQUFPLEdBQUcsWUFBWSxDQUMxQjtnQkFDRSxLQUFLLEVBQUUsS0FBSztnQkFDWixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2FBQ3JDLEVBQ0QsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUNwQjs7Z0JBRUssT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUV6QyxJQUFJLE9BQU8sRUFBRTs7b0JBQ0wsTUFBSSxHQUFHO29CQUNYLElBQUksTUFBQTtvQkFDSixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7b0JBQzNCLE1BQU0sUUFBQTtpQkFDUDtnQkFFRCxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFJLEVBQUUsT0FBTyxDQUFDLEVBQTFCLENBQTBCLENBQUMsQ0FBQzthQUNwRDtZQUVELElBQUksU0FBUyxFQUFFO2dCQUNiLFNBQVMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7YUFDbEM7UUFDSCxDQUFDLElBQ0Q7QUFDSixDQUFDOzs7Ozs7O0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxNQUE2QixFQUM3QixNQUFzQjtJQVV0QiwwQkFDRSxJQUFJLEVBQUUsVUFBVSxFQUNoQixPQUFPLEVBQUUsTUFBTSxFQUNmLEVBQUUsRUFBRSxJQUFJLElBQ0wsTUFBTSxFQUNUO0FBQ0osQ0FBQzs7Ozs7OztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsTUFBNkIsRUFDN0IsS0FBVTtJQUVWLE9BQU87UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixPQUFPLEVBQUUsTUFBTTtRQUNmLEVBQUUsRUFBRSxLQUFLO1FBQ1QsS0FBSyxPQUFBO0tBQ04sQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RvY3VtZW50Tm9kZSwgR3JhcGhRTEVycm9yfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7TXV0YXRpb25PcHRpb25zfSBmcm9tICdhcG9sbG8tY2xpZW50JztcbmltcG9ydCB7RmV0Y2hSZXN1bHR9IGZyb20gJ2Fwb2xsby1saW5rJztcblxuaW1wb3J0IHtNdXRhdGlvbkRlZiwgTXV0YXRpb25PYmplY3R9IGZyb20gJy4vdHlwZXMvbXV0YXRpb24nO1xuaW1wb3J0IHtTdG9yZX0gZnJvbSAnLi9pbnRlcm5hbC9zdG9yZSc7XG5pbXBvcnQge2dldE11dGF0aW9uRGVmaW5pdGlvbiwgZ2V0Rmlyc3RGaWVsZH0gZnJvbSAnLi9pbnRlcm5hbC91dGlscyc7XG5pbXBvcnQge01hbmFnZXJ9IGZyb20gJy4vbWFuYWdlcic7XG5pbXBvcnQge2J1aWxkQ29udGV4dCwgYnVpbGRHZXRDYWNoZUtleX0gZnJvbSAnLi9oZWxwZXJzJztcblxuZXhwb3J0IGNsYXNzIE11dGF0aW9uTWFuYWdlciBleHRlbmRzIFN0b3JlPE11dGF0aW9uRGVmPiB7XG4gIGNvbnN0cnVjdG9yKGRlZnM/OiBNdXRhdGlvbkRlZltdKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChkZWZzKSB7XG4gICAgICBkZWZzLmZvckVhY2goZGVmID0+IHtcbiAgICAgICAgdGhpcy5zZXQoZGVmLm11dGF0aW9uLCBkZWYpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkKGRlZnM6IE11dGF0aW9uRGVmW10pOiB2b2lkIHtcbiAgICBkZWZzLmZvckVhY2goZGVmID0+IHtcbiAgICAgIHRoaXMuc2V0KGRlZi5tdXRhdGlvbiwgZGVmKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbXV0YXRpb25Ub1R5cGUoYWN0aW9uOiBNdXRhdGlvbk9iamVjdCk6IHN0cmluZyB7XG4gIGNvbnN0IG11dGF0aW9uID0gZ2V0TXV0YXRpb24oYWN0aW9uKTtcbiAgY29uc3QgbmFtZSA9IGdldE5hbWVPZk11dGF0aW9uKG11dGF0aW9uKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE11dGF0aW9uKGFjdGlvbjogYW55KTogRG9jdW1lbnROb2RlIHtcbiAgaWYgKGFjdGlvbi5jb25zdHJ1Y3RvciAmJiBhY3Rpb24uY29uc3RydWN0b3IubXV0YXRpb24pIHtcbiAgICByZXR1cm4gYWN0aW9uLmNvbnN0cnVjdG9yLm11dGF0aW9uO1xuICB9XG5cbiAgcmV0dXJuIGFjdGlvbi5tdXRhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTXV0YXRpb24oYWN0aW9uOiBhbnkpOiBhY3Rpb24gaXMgTXV0YXRpb25PYmplY3Qge1xuICByZXR1cm4gdHlwZW9mIGdldE11dGF0aW9uKGFjdGlvbikgIT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmFtZU9mTXV0YXRpb24obXV0YXRpb246IERvY3VtZW50Tm9kZSk6IHN0cmluZyB7XG4gIGNvbnN0IGRlZiA9IGdldE11dGF0aW9uRGVmaW5pdGlvbihtdXRhdGlvbik7XG4gIGNvbnN0IGZpZWxkID0gZ2V0Rmlyc3RGaWVsZChkZWYpO1xuXG4gIHJldHVybiBmaWVsZC5uYW1lLnZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFVwZGF0ZXM8VCwgVj4oXG4gIGNvbmZpZzogTXV0YXRpb25PcHRpb25zPGFueSwgVj4sXG4gIG1hbmFnZXI6IE1hbmFnZXIsXG4pOiBNdXRhdGlvbk9wdGlvbnM8YW55LCBWPiB7XG4gIGNvbnN0IG9yZ1VwZGF0ZSA9IGNvbmZpZy51cGRhdGU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5jb25maWcsXG4gICAgdXBkYXRlOiAocHJveHksIG11dGF0aW9uUmVzdWx0OiBGZXRjaFJlc3VsdDxUPikgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IGdldE5hbWVPZk11dGF0aW9uKGNvbmZpZy5tdXRhdGlvbik7XG4gICAgICBjb25zdCByZXN1bHQ6IFQgPSBtdXRhdGlvblJlc3VsdC5kYXRhICYmIG11dGF0aW9uUmVzdWx0LmRhdGFbbmFtZV07XG4gICAgICBjb25zdCBjYWNoZSA9IG1hbmFnZXIuY2FjaGU7XG5cbiAgICAgIGNvbnN0IGNvbnRleHQgPSBidWlsZENvbnRleHQoXG4gICAgICAgIHtcbiAgICAgICAgICBjYWNoZTogcHJveHksXG4gICAgICAgICAgZ2V0Q2FjaGVLZXk6IGJ1aWxkR2V0Q2FjaGVLZXkoY2FjaGUpLFxuICAgICAgICB9LFxuICAgICAgICBtYW5hZ2VyLmdldENsaWVudCgpLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdXBkYXRlcyA9IG1hbmFnZXIudXBkYXRlcy5nZXQobmFtZSk7XG5cbiAgICAgIGlmICh1cGRhdGVzKSB7XG4gICAgICAgIGNvbnN0IGluZm8gPSB7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB2YXJpYWJsZXM6IGNvbmZpZy52YXJpYWJsZXMsXG4gICAgICAgICAgcmVzdWx0LFxuICAgICAgICB9O1xuXG4gICAgICAgIHVwZGF0ZXMuZm9yRWFjaChkZWYgPT4gZGVmLnJlc29sdmUoaW5mbywgY29udGV4dCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3JnVXBkYXRlKSB7XG4gICAgICAgIG9yZ1VwZGF0ZShwcm94eSwgbXV0YXRpb25SZXN1bHQpO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFjdGlvbkZyb21SZXN1bHQ8VCwgVj4oXG4gIGNvbmZpZzogTXV0YXRpb25PcHRpb25zPFQsIFY+LFxuICByZXN1bHQ6IEZldGNoUmVzdWx0PFQ+LFxuKToge1xuICB0eXBlOiBzdHJpbmc7XG4gIG9wdGlvbnM6IE11dGF0aW9uT3B0aW9uczxULCBWPjtcbiAgb2s6IGJvb2xlYW47XG4gIGVycm9ycz86IFJlYWRvbmx5QXJyYXk8R3JhcGhRTEVycm9yPjtcbiAgZGF0YT86IFQgfCB7W2tleTogc3RyaW5nXTogYW55fTtcbiAgZXh0ZW5zaW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGNvbnRleHQ/OiBhbnk7XG59IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnbXV0YXRpb24nLFxuICAgIG9wdGlvbnM6IGNvbmZpZyxcbiAgICBvazogdHJ1ZSxcbiAgICAuLi5yZXN1bHQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFjdGlvbkZyb21FcnJvcjxULCBWPihcbiAgY29uZmlnOiBNdXRhdGlvbk9wdGlvbnM8VCwgVj4sXG4gIGVycm9yOiBhbnksXG4pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnbXV0YXRpb24nLFxuICAgIG9wdGlvbnM6IGNvbmZpZyxcbiAgICBvazogZmFsc2UsXG4gICAgZXJyb3IsXG4gIH07XG59XG4iXX0=