UNPKG

@loona/core

Version:

App State Management done with GraphQL (core package)

110 lines 9.67 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import produce from 'immer'; /** * @param {?} context * @param {?} client * @return {?} */ export function buildContext(context, client) { return tslib_1.__assign({}, context, { patchQuery: patchQuery(client), patchFragment: patchFragment(context, client), writeData: /** * @param {?} options * @return {?} */ function (options) { return client.writeData(options); } }); } /** * @param {?} cache * @return {?} */ export function buildGetCacheKey(cache) { return function (obj) { if (((/** @type {?} */ (cache))).config) { return ((/** @type {?} */ (cache))).config.dataIdFromObject(obj); } else { throw new Error('To use context.getCacheKey, you need to use a cache that has a configurable dataIdFromObject, like apollo-cache-inmemory.'); } }; } /** * @param {?} fragment * @return {?} */ export function getFragmentTypename(fragment) { /** @type {?} */ var def = (/** @type {?} */ (fragment.definitions.find(function (def) { return def.kind === 'FragmentDefinition'; }))); return def.typeCondition.name.value; } /** * @param {?} client * @return {?} */ export function patchQuery(client) { return function (query, patchFn) { /** @type {?} */ var options = isDocument(query) ? { query: query } : query; /** @type {?} */ var obj = client.readQuery(options); /** @type {?} */ var data = produce(obj, patchFn); client.writeQuery(tslib_1.__assign({}, options, { data: data })); return data; }; } /** * @param {?} context * @param {?} client * @return {?} */ export function patchFragment(context, client) { return function (fragment, obj, patchFn) { /** @type {?} */ var __typename = getFragmentTypename(fragment); /** @type {?} */ var id = context.getCacheKey(tslib_1.__assign({}, obj, { __typename: __typename })); /** @type {?} */ var frgmt = client.readFragment({ fragment: fragment, id: id, }); /** @type {?} */ var data = produce(frgmt, patchFn); client.writeFragment({ fragment: fragment, id: id, data: tslib_1.__assign({}, data, { __typename: __typename }), }); return data; }; } /** * @param {?} doc * @return {?} */ export function isDocument(doc) { return doc && doc.kind === 'Document'; } /** * @param {?} action * @return {?} */ export function isMutationAsAction(action) { return action.type === 'mutation'; } /** * @param {?} action * @return {?} */ export function getActionType(action) { if (action.constructor && action.constructor.type) { return action.constructor.type; } return action.type; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bsb29uYS9jb3JlLyIsInNvdXJjZXMiOlsiaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLE9BQU8sT0FBTyxNQUFNLE9BQU8sQ0FBQzs7Ozs7O0FBSzVCLE1BQU0sVUFBVSxZQUFZLENBQzFCLE9BQXdCLEVBQ3hCLE1BQXlCO0lBRXpCLDRCQUNLLE9BQU8sSUFDVixVQUFVLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUM5QixhQUFhLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDN0MsU0FBUzs7OztrQkFBQyxPQUF3QztZQUNoRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxJQUNEO0FBQ0osQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBVTtJQUN6QyxPQUFPLFVBQUMsR0FBOEM7UUFDcEQsSUFBSSxDQUFDLG1CQUFBLEtBQUssRUFBTyxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxtQkFBQSxLQUFLLEVBQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwRDthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FDYiwySEFBMkgsQ0FDNUgsQ0FBQztTQUNIO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsUUFBc0I7O1FBQ2xELEdBQUcsR0FBRyxtQkFBQSxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDbkMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsSUFBSSxLQUFLLG9CQUFvQixFQUFqQyxDQUFpQyxDQUN6QyxFQUEwQjtJQUUzQixPQUFPLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUN0QyxDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBeUI7SUFDbEQsT0FBTyxVQUNMLEtBT0ssRUFDTCxPQUF5Qjs7WUFFbkIsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLE9BQUEsRUFBQyxDQUFDLENBQUMsQ0FBQyxLQUFLOztZQUM3QyxHQUFHLEdBQVEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7O1lBQ3BDLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztRQUVsQyxNQUFNLENBQUMsVUFBVSxzQkFDWixPQUFPLElBQ1YsSUFBSSxNQUFBLElBQ0osQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsT0FBd0IsRUFDeEIsTUFBeUI7SUFFekIsT0FBTyxVQUNMLFFBQXNCLEVBQ3RCLEdBQVEsRUFDUixPQUF5Qjs7WUFFbkIsVUFBVSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQzs7WUFDMUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLHNCQUN6QixHQUFHLElBQ04sVUFBVSxZQUFBLElBQ1Y7O1lBRUksS0FBSyxHQUFRLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDckMsUUFBUSxVQUFBO1lBQ1IsRUFBRSxJQUFBO1NBQ0gsQ0FBQzs7WUFDSSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7UUFFcEMsTUFBTSxDQUFDLGFBQWEsQ0FBQztZQUNuQixRQUFRLFVBQUE7WUFDUixFQUFFLElBQUE7WUFDRixJQUFJLHVCQUNDLElBQUksSUFDUCxVQUFVLFlBQUEsR0FDWDtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVE7SUFDakMsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7QUFDeEMsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBYztJQUMvQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQ3BDLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFXO0lBQ3ZDLElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtRQUNqRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0tBQ2hDO0lBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RvY3VtZW50Tm9kZSwgRnJhZ21lbnREZWZpbml0aW9uTm9kZX0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQge0Fwb2xsb0NsaWVudH0gZnJvbSAnYXBvbGxvLWNsaWVudCc7XG5pbXBvcnQge0RhdGFQcm94eX0gZnJvbSAnYXBvbGxvLWNhY2hlJztcbmltcG9ydCBwcm9kdWNlIGZyb20gJ2ltbWVyJztcblxuaW1wb3J0IHtSZWNlaXZlZENvbnRleHQsIENvbnRleHR9IGZyb20gJy4vdHlwZXMvY29tbW9uJztcbmltcG9ydCB7QWN0aW9uLCBNdXRhdGlvbkFzQWN0aW9ufSBmcm9tICcuL3R5cGVzL2VmZmVjdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENvbnRleHQoXG4gIGNvbnRleHQ6IFJlY2VpdmVkQ29udGV4dCxcbiAgY2xpZW50OiBBcG9sbG9DbGllbnQ8YW55Pixcbik6IENvbnRleHQge1xuICByZXR1cm4ge1xuICAgIC4uLmNvbnRleHQsXG4gICAgcGF0Y2hRdWVyeTogcGF0Y2hRdWVyeShjbGllbnQpLFxuICAgIHBhdGNoRnJhZ21lbnQ6IHBhdGNoRnJhZ21lbnQoY29udGV4dCwgY2xpZW50KSxcbiAgICB3cml0ZURhdGEob3B0aW9uczogRGF0YVByb3h5LldyaXRlRGF0YU9wdGlvbnM8YW55Pikge1xuICAgICAgcmV0dXJuIGNsaWVudC53cml0ZURhdGEob3B0aW9ucyk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkR2V0Q2FjaGVLZXkoY2FjaGU6IGFueSkge1xuICByZXR1cm4gKG9iajoge19fdHlwZW5hbWU6IHN0cmluZzsgaWQ6IHN0cmluZyB8IG51bWJlcn0pID0+IHtcbiAgICBpZiAoKGNhY2hlIGFzIGFueSkuY29uZmlnKSB7XG4gICAgICByZXR1cm4gKGNhY2hlIGFzIGFueSkuY29uZmlnLmRhdGFJZEZyb21PYmplY3Qob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVG8gdXNlIGNvbnRleHQuZ2V0Q2FjaGVLZXksIHlvdSBuZWVkIHRvIHVzZSBhIGNhY2hlIHRoYXQgaGFzIGEgY29uZmlndXJhYmxlIGRhdGFJZEZyb21PYmplY3QsIGxpa2UgYXBvbGxvLWNhY2hlLWlubWVtb3J5LicsXG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYWdtZW50VHlwZW5hbWUoZnJhZ21lbnQ6IERvY3VtZW50Tm9kZSk6IHN0cmluZyB7XG4gIGNvbnN0IGRlZiA9IGZyYWdtZW50LmRlZmluaXRpb25zLmZpbmQoXG4gICAgZGVmID0+IGRlZi5raW5kID09PSAnRnJhZ21lbnREZWZpbml0aW9uJyxcbiAgKSBhcyBGcmFnbWVudERlZmluaXRpb25Ob2RlO1xuXG4gIHJldHVybiBkZWYudHlwZUNvbmRpdGlvbi5uYW1lLnZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2hRdWVyeShjbGllbnQ6IEFwb2xsb0NsaWVudDxhbnk+KSB7XG4gIHJldHVybiA8UiA9IGFueT4oXG4gICAgcXVlcnk6XG4gICAgICB8IERvY3VtZW50Tm9kZVxuICAgICAgfCB7XG4gICAgICAgICAgcXVlcnk6IERvY3VtZW50Tm9kZTtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgIHBhdGNoRm46IChkYXRhOiBSKSA9PiBhbnksXG4gICk6IFIgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBpc0RvY3VtZW50KHF1ZXJ5KSA/IHtxdWVyeX0gOiBxdWVyeTtcbiAgICBjb25zdCBvYmo6IGFueSA9IGNsaWVudC5yZWFkUXVlcnkob3B0aW9ucyk7XG4gICAgY29uc3QgZGF0YSA9IHByb2R1Y2Uob2JqLCBwYXRjaEZuKTtcblxuICAgIGNsaWVudC53cml0ZVF1ZXJ5KHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBkYXRhLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaEZyYWdtZW50KFxuICBjb250ZXh0OiBSZWNlaXZlZENvbnRleHQsXG4gIGNsaWVudDogQXBvbGxvQ2xpZW50PGFueT4sXG4pIHtcbiAgcmV0dXJuIDxSID0gYW55PihcbiAgICBmcmFnbWVudDogRG9jdW1lbnROb2RlLFxuICAgIG9iajogYW55LFxuICAgIHBhdGNoRm46IChkYXRhOiBSKSA9PiBhbnksXG4gICk6IFIgPT4ge1xuICAgIGNvbnN0IF9fdHlwZW5hbWUgPSBnZXRGcmFnbWVudFR5cGVuYW1lKGZyYWdtZW50KTtcbiAgICBjb25zdCBpZCA9IGNvbnRleHQuZ2V0Q2FjaGVLZXkoe1xuICAgICAgLi4ub2JqLFxuICAgICAgX190eXBlbmFtZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGZyZ210OiBhbnkgPSBjbGllbnQucmVhZEZyYWdtZW50KHtcbiAgICAgIGZyYWdtZW50LFxuICAgICAgaWQsXG4gICAgfSk7XG4gICAgY29uc3QgZGF0YSA9IHByb2R1Y2UoZnJnbXQsIHBhdGNoRm4pO1xuXG4gICAgY2xpZW50LndyaXRlRnJhZ21lbnQoe1xuICAgICAgZnJhZ21lbnQsXG4gICAgICBpZCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgX190eXBlbmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRG9jdW1lbnQoZG9jOiBhbnkpOiBkb2MgaXMgRG9jdW1lbnROb2RlIHtcbiAgcmV0dXJuIGRvYyAmJiBkb2Mua2luZCA9PT0gJ0RvY3VtZW50Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTXV0YXRpb25Bc0FjdGlvbihhY3Rpb246IEFjdGlvbik6IGFjdGlvbiBpcyBNdXRhdGlvbkFzQWN0aW9uIHtcbiAgcmV0dXJuIGFjdGlvbi50eXBlID09PSAnbXV0YXRpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uVHlwZShhY3Rpb246IGFueSk6IHN0cmluZyB7XG4gIGlmIChhY3Rpb24uY29uc3RydWN0b3IgJiYgYWN0aW9uLmNvbnN0cnVjdG9yLnR5cGUpIHtcbiAgICByZXR1cm4gYWN0aW9uLmNvbnN0cnVjdG9yLnR5cGU7XG4gIH1cblxuICByZXR1cm4gYWN0aW9uLnR5cGU7XG59XG4iXX0=