UNPKG

@loona/core

Version:

App State Management done with GraphQL (core package)

136 lines 10.9 kB
/** * @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=