@microphi/store 0.2.10 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/lib/index.d.ts +4 -0
  2. package/lib/index.js +8 -0
  3. package/lib/index.js.map +1 -0
  4. package/lib/lib/effect/effect.d.ts +61 -0
  5. package/lib/lib/effect/effect.js +75 -0
  6. package/lib/lib/effect/effect.js.map +1 -0
  7. package/lib/{list → lib/list}/list.d.ts +1 -1
  8. package/lib/lib/list/list.js +75 -0
  9. package/lib/lib/list/list.js.map +1 -0
  10. package/lib/lib/reduce/reduce.d.ts +11 -0
  11. package/lib/lib/reduce/reduce.js +26 -0
  12. package/lib/lib/reduce/reduce.js.map +1 -0
  13. package/lib/lib/store/store.d.ts +38 -0
  14. package/lib/lib/store/store.js +99 -0
  15. package/lib/lib/store/store.js.map +1 -0
  16. package/lib/lib/utilities/capitalise.d.ts +1 -0
  17. package/lib/lib/utilities/capitalise.js +7 -0
  18. package/lib/lib/utilities/capitalise.js.map +1 -0
  19. package/lib/lib/utilities/scan-instance.d.ts +2 -0
  20. package/lib/lib/utilities/scan-instance.js +19 -0
  21. package/lib/lib/utilities/scan-instance.js.map +1 -0
  22. package/package.json +18 -14
  23. package/bundles/microphi-store.umd.js +0 -996
  24. package/bundles/microphi-store.umd.js.map +0 -1
  25. package/bundles/microphi-store.umd.min.js +0 -16
  26. package/bundles/microphi-store.umd.min.js.map +0 -1
  27. package/esm2015/lib/actions.js +0 -105
  28. package/esm2015/lib/base-store.js +0 -156
  29. package/esm2015/lib/effect.js +0 -11
  30. package/esm2015/lib/http-status/http-status.interceptor.js +0 -31
  31. package/esm2015/lib/http-status/http-status.store.js +0 -63
  32. package/esm2015/lib/list/list.js +0 -80
  33. package/esm2015/lib/observable-list/observable-list.js +0 -119
  34. package/esm2015/lib/reduce.js +0 -15
  35. package/esm2015/lib/store.js +0 -13
  36. package/esm2015/microphi-store.js +0 -5
  37. package/esm2015/public-api.js +0 -13
  38. package/esm5/lib/actions.js +0 -110
  39. package/esm5/lib/base-store.js +0 -177
  40. package/esm5/lib/effect.js +0 -11
  41. package/esm5/lib/http-status/http-status.interceptor.js +0 -33
  42. package/esm5/lib/http-status/http-status.store.js +0 -66
  43. package/esm5/lib/list/list.js +0 -126
  44. package/esm5/lib/observable-list/observable-list.js +0 -250
  45. package/esm5/lib/reduce.js +0 -15
  46. package/esm5/lib/store.js +0 -13
  47. package/esm5/microphi-store.js +0 -5
  48. package/esm5/public-api.js +0 -13
  49. package/fesm2015/microphi-store.js +0 -586
  50. package/fesm2015/microphi-store.js.map +0 -1
  51. package/fesm5/microphi-store.js +0 -788
  52. package/fesm5/microphi-store.js.map +0 -1
  53. package/lib/actions.d.ts +0 -77
  54. package/lib/base-store.d.ts +0 -31
  55. package/lib/effect.d.ts +0 -2
  56. package/lib/http-status/http-status.interceptor.d.ts +0 -7
  57. package/lib/http-status/http-status.store.d.ts +0 -17
  58. package/lib/observable-list/observable-list.d.ts +0 -29
  59. package/lib/reduce.d.ts +0 -7
  60. package/lib/store.d.ts +0 -9
  61. package/microphi-store.d.ts +0 -4
  62. package/microphi-store.metadata.json +0 -1
  63. package/public-api.d.ts +0 -9
@@ -1 +0,0 @@
1
- {"version":3,"file":"microphi-store.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://@microphi/store/lib/actions.ts","ng://@microphi/store/lib/store.ts","ng://@microphi/store/lib/reduce.ts","ng://@microphi/store/lib/base-store.ts","ng://@microphi/store/lib/effect.ts","ng://@microphi/store/lib/observable-list/observable-list.ts","ng://@microphi/store/lib/http-status/http-status.store.ts","ng://@microphi/store/lib/http-status/http-status.interceptor.ts","ng://@microphi/store/lib/list/list.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export const REQUEST_SUFFIX = '_REQUEST';\nexport const RESPONSE_SUFFIX = '_RESPONSE';\nexport const ERROR_SUFFIX = '_ERROR';\n\nexport interface Action {\n type: string;\n payload: any;\n}\n\nexport interface RestActions {\n request: string;\n response: string;\n error: string;\n}\n\n\n/**\n * Action are defined with an enum. Such as:\n *\n * emun {\n * GET_ALL,\n * GET_ONE,\n * DELETE,\n * }\n *\n * For each action defined a REQUEST, a RESPONSE and an ERROR are associated to it.\n *\n *\n */\nexport class Actions<A extends any> {\n\n /**\n * Example:\n * {\n * 0: { request: 'ACTION_NAME_REQUEST', response: 'ACTION_NAME_RESPONSE', error: 'ACTION_NAME_ERROR' }\n * [....]\n * }\n */\n public actions: {\n [k: number]: RestActions;\n } = {};\n\n /**\n * Example:\n * {\n * ACTION_NAME: 0\n * [....]\n * }\n *\n */\n public names: {\n [actionName: string]: number;\n } = {};\n\n /**\n * Example:\n * {\n * 0: 'ACTION_NAME',\n * [....]\n *\n * }\n */\n public codes: {\n [actionCode: number]: string\n } = {};\n\n /**\n * Example:\n * {\n * ACTION_NAME': { request: 'ACTION_NAME_REQUEST', response: 'ACTION_NAME_RESPONSE', error: 'ACTION_NAME_ERROR' }\n * [....]\n * }\n */\n public restActionsByName: {\n [name: string]: RestActions;\n } = {};\n\n constructor(actions: A) {\n Object.keys(actions).forEach((key) => {\n if (+key >= 0) {\n\n this.codes[key] = actions[key];\n\n this.actions[key] = Actions.createAction(actions[key]);\n\n } else {\n this.names[key] = actions[key];\n\n this.restActionsByName[key] = Actions.createAction(key);\n }\n\n });\n }\n\n private static createAction(key: string): RestActions {\n return {\n request: `${key}${REQUEST_SUFFIX}`,\n response: `${key}${RESPONSE_SUFFIX}`,\n error: `${key}${ERROR_SUFFIX}`,\n };\n }\n\n public getByName(actionName: string) {\n return this.names[actionName];\n }\n\n public getByCode(code: number) {\n return this.codes[code];\n }\n\n public getActionsByCode(key: number) {\n return this.actions[key];\n }\n\n public getActionsByName(actionName: string) {\n const code = this.getByName(actionName);\n return this.getActionsByCode(code);\n }\n\n public getActionNameFromChild(childAction: string): string {\n let actionName;\n\n Object.keys(this.restActionsByName).forEach((restAction) => {\n const restActions = this.restActionsByName[restAction];\n if (restActions.response === childAction || restActions.request === childAction || restActions.error === childAction) {\n actionName = restAction;\n }\n });\n\n return actionName;\n }\n\n public getActionCodeFromChild(childAction: string): number {\n let actionCode;\n\n Object.keys(this.actions).forEach((restAction) => {\n const restActions = this.actions[restAction];\n if (restActions.response === childAction || restActions.request === childAction || restActions.error === childAction) {\n actionCode = restAction;\n }\n });\n\n return Number(actionCode);\n }\n\n}\n","import { getDebugger } from '@microgamma/loggator';\n\nexport const StoreMetadata = '@Store';\n\nexport interface StoreOptions {\n initialState: any;\n name: string;\n actions: any;\n useLocalStorage?: boolean;\n}\n\nexport function Store(options: StoreOptions) {\n\n const d = getDebugger(`microphi:@Store:${options.name}`);\n\n return (target) => {\n\n d('running store decorator');\n\n Reflect.defineMetadata(StoreMetadata, options, target);\n };\n}\n\nexport function getStoreMetadata(instance): StoreOptions {\n return Reflect.getMetadata(StoreMetadata, instance.constructor);\n}\n\n\n","import { BaseStore } from './base-store';\nimport { getDebugger } from '@microgamma/loggator';\n\nexport const ReduceMetadata = '@Reduce';\n\nexport interface Reducers {\n [actionName: number]: string;\n}\n\nexport function Reduce(onAction: number) {\n return <Store extends BaseStore<any>>(target: Store, key: string) => {\n const d = getDebugger(`microphi:@Reduce:${target.constructor.name}`);\n\n const reducer = Reflect.getMetadata(ReduceMetadata, target) || {};\n\n reducer[onAction] = key;\n\n d('stored reducers', reducer);\n\n return Reflect.defineMetadata(ReduceMetadata, reducer, target);\n\n };\n}\n\nexport function getReduceMetadata(instance): Reducers {\n return Reflect.getMetadata(ReduceMetadata, instance) || {};\n}\n","import { getDebugger } from '@microgamma/loggator';\nimport { BehaviorSubject, Observable, Subject, throwError } from 'rxjs';\nimport { getStoreMetadata, StoreOptions } from './store';\nimport { Action, Actions, REQUEST_SUFFIX, RESPONSE_SUFFIX } from './actions';\nimport { getReduceMetadata } from './reduce';\nimport { catchError, takeUntil, tap } from 'rxjs/operators';\nimport { OnDestroy } from '@angular/core';\n\nexport abstract class BaseStore<T extends {}> implements OnDestroy {\n\n private logger = getDebugger(`microphi:BaseStore:${this.constructor.name}`);\n\n private readonly storeMetadata: StoreOptions;\n private readonly actionsMetadata: Actions<any>;\n\n private _state: T;\n private get state(): T {\n return this._state;\n }\n private set state(value: T) {\n this.logger('setting new state', value);\n this._state = value;\n this._store$.next(value);\n if (this.storeMetadata.useLocalStorage) {\n this.logger('saving on localStorage');\n localStorage.setItem(this.storeMetadata.name, JSON.stringify(value));\n }\n }\n\n private _store$: BehaviorSubject<T>;\n\n public get store$(): Observable<T> {\n return this._store$.asObservable();\n }\n\n private actions$ = new Subject<{\n type: string,\n payload: any\n }>();\n\n private _loading$ = new Subject<{\n type: string,\n code?: number,\n payload: any,\n status: boolean\n }>();\n\n get loading$(): Observable<{ type: string; code?: number; payload: any; status: boolean }> {\n return this._loading$.asObservable();\n }\n\n private _error$ = new Subject<{\n action: number,\n error: any\n }>();\n\n get error$(): Observable<{ action: number; error: any }> {\n return this._error$.asObservable();\n }\n\n private destroy$: Subject<any> = new Subject<any>();\n\n constructor() {\n\n this.storeMetadata = getStoreMetadata(this);\n this.logger('@Store', this.storeMetadata);\n\n this._store$ = new BehaviorSubject(this.storeMetadata.initialState);\n // dereference initial state so that is does not leak between instances\n this._state = Object.assign( {}, this.storeMetadata.initialState);\n this.logger('InitialState', this.state);\n\n this.actionsMetadata = new Actions(this.storeMetadata.actions);\n\n const reducerMetadata = getReduceMetadata(this);\n this.logger('Reducers', reducerMetadata);\n const remappedReducers = this.parseReducers(reducerMetadata);\n this.logger('remapped reducers', remappedReducers);\n\n\n const effectsMetadata = Reflect.getMetadata('@Effect', this) || {};\n this.logger('Effects', effectsMetadata);\n const remappedEffects = this.remapEffects(effectsMetadata);\n this.logger('remapped effects', remappedEffects);\n\n this.actions$.pipe(\n tap((action: Action) => {\n this._loading$.next({\n type: action.type,\n code: this.actionsMetadata.getActionCodeFromChild(action.type),\n payload: action.payload,\n status: action.type.endsWith('_REQUEST')\n });\n\n }),\n takeUntil(this.destroy$),\n ).subscribe( (action: Action) => {\n this.logger('got type', action);\n\n const type = action.type;\n\n // effects are associated with requests\n if (type.endsWith(REQUEST_SUFFIX)) {\n if (remappedEffects.hasOwnProperty(type)) {\n\n const effectName = remappedEffects[type];\n this.logger('should call', effectName);\n\n\n if (this[effectName] instanceof Function) {\n\n const retValue = this[effectName](action.payload) as Observable<any>;\n\n if (retValue instanceof Observable) {\n retValue.pipe(\n catchError((err) => {\n console.error(`@Effect: ${effectName} thrown the following error`);\n console.error(err);\n this._loading$.next({\n status: false,\n payload: action.payload,\n code: this.actionsMetadata.getActionCodeFromChild(action.type),\n type: action.type,\n });\n this._error$.next({action: this.actionsMetadata.getActionCodeFromChild(action.type), error: err});\n return throwError(err);\n }),\n takeUntil(this.destroy$)\n ).subscribe((value) => {\n this.logger('got data', value);\n\n this.actions$.next({\n type: remappedEffects[effectName],\n payload: value\n });\n });\n }\n\n }\n\n } else {\n // if there is no effect associated with this action then we can proceed calling the reducer associated\n this.actions$.next({\n type: type.replace(REQUEST_SUFFIX, RESPONSE_SUFFIX),\n payload: action.payload\n });\n\n }\n } else if (type.endsWith(RESPONSE_SUFFIX)) {\n\n const fn = remappedReducers[action.type];\n this.logger('should call fn', fn);\n\n if (this[remappedReducers[action.type]]) {\n try {\n this.state = this[remappedReducers[action.type]](this.state, action.payload);\n } catch (e) {\n\n // we don't need to stop loading here at it has already been stopped\n\n console.error(`@Reduce ${fn} thrown an error`, e);\n this._error$.next({action: this.actionsMetadata.getActionCodeFromChild(action.type), error: e});\n }\n }\n\n }\n\n }, (err) => {\n this.logger('got error', err);\n // TODO should handle the error or should we change loading$ to a more generic status$ so we can pass altogether\n // loadings and errors events?\n this._error$.next(err);\n console.error(err);\n });\n\n }\n\n public dispatch(type: number, payload?: any) {\n\n const requestAction = this.actionsMetadata.getActionsByCode(type).request;\n this.logger('dispatching type', requestAction);\n\n this.actions$.next({type: requestAction, payload});\n }\n\n private parseReducers(reducers) {\n const remappedReducers = {};\n\n Object.keys(reducers).forEach((action) => {\n if (+action >= 0) {\n const _action: number = Number(action);\n // this.logger('remapping', type, 'to');\n const realAction = this.actionsMetadata.getActionsByCode(_action).response;\n // this.logger('real type to map to', realAction);\n remappedReducers[realAction] = reducers[action];\n }\n });\n\n return remappedReducers;\n }\n\n private remapEffects(effectsMetadata: {}) {\n const remappedEffects = {};\n\n Object.keys(effectsMetadata).forEach((action) => {\n // effects should react to REQUEST events\n\n if (+action >= 0) {\n const _action = Number(action);\n\n const realAction = this.actionsMetadata.getActionsByCode(_action).request;\n\n remappedEffects[realAction] = effectsMetadata[action];\n // mapping the effect function so that it can return a response type\n remappedEffects[effectsMetadata[action]] = this.actionsMetadata.getActionsByCode(_action).response;\n }\n });\n\n return remappedEffects;\n }\n\n public ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n}\n","import { getDebugger } from '@microgamma/loggator';\nimport { BaseStore } from './base-store';\n\nexport function Effect(onAction: number) {\n\n return <Store extends BaseStore<any>>(target: Store, key: string) => {\n\n const d = getDebugger(`microphi:@Effect:${target.constructor.name}`);\n\n d('decorating', key, 'with type', onAction);\n\n const effects = Reflect.getMetadata('@Effect', target) || {};\n\n effects[onAction] = key;\n\n return Reflect.defineMetadata('@Effect', effects, target);\n };\n}\n","import { BehaviorSubject } from 'rxjs';\n\nexport class ObservableList<T extends {}> {\n private readonly ids: Set<string> = new Set<string>();\n private data: Map<string, BehaviorSubject<T>> = new Map();\n\n private static difference(setA, setB): Set<string> {\n const _difference: Set<string> = new Set(setA);\n for (const elem of setB) {\n _difference.delete(elem);\n }\n return _difference;\n }\n\n private static intersection(setA, setB): Set<string> {\n const _intersection: Set<string> = new Set();\n for (const elem of setB) {\n if (setA.has(elem)) {\n _intersection.add(elem);\n }\n }\n return _intersection;\n }\n\n private static symmetricDifference(setA, setB): Set<string> {\n const _difference: Set<string> = new Set(setA);\n for (const elem of setB) {\n if (_difference.has(elem)) {\n _difference.delete(elem);\n } else {\n _difference.add(elem);\n }\n }\n return _difference;\n }\n\n constructor(items: T[], private idFieldName = 'id') {\n const ids = items.map((i) => i[this.idFieldName]);\n this.ids = new Set(ids);\n for (const id of ids) {\n this.data.set(id, new BehaviorSubject(items[id]));\n }\n\n\n }\n\n *[Symbol.iterator](): IterableIterator<BehaviorSubject<T>> {\n\n\n // tslint:disable-next-line:forin\n for (const id of this.ids.values()) {\n yield this.data.get(id);\n // yield this.data[id];\n }\n\n }\n\n public push(...items: T[]) {\n const id = this.idFieldName;\n\n for (const item of items) {\n\n if (this.data.has(item[id])) {\n // check whether the item changed;\n\n const storedItem = this.data.get(item[id]).getValue();\n const shouldUpdate = Object.keys(storedItem).some((key) => {\n return storedItem[key] !== item[key];\n });\n\n if (shouldUpdate) {\n this.data.get(item[id]).next(item);\n }\n } else {\n this.ids.add(item[id]);\n this.data.set(item[id], new BehaviorSubject(item));\n }\n\n }\n\n }\n\n public updateOne(item: T) {\n if (this.data.has(item[this.idFieldName])) {\n\n this.data.get(item[this.idFieldName]).next(item);\n } else {\n console.warn('item not found', item);\n }\n }\n\n public toJSON() {\n\n const data = [];\n\n this.data.forEach((value) => {\n data.push(value.getValue());\n });\n\n return data;\n }\n\n /**\n * Will update items that are already present only if they need to be updated and remove items that are not present.\n * @param items items of the list\n */\n public set(...items: T[]): void {\n const newIds: string[] = items.map((i) => i[this.idFieldName]);\n\n const intersection: Set<string> = ObservableList.intersection(this.ids, newIds);\n\n for (const id of intersection) {\n this.updateOne(items[id]);\n }\n\n const itemsToRemove: Set<string> = ObservableList.difference(this.ids, newIds);\n\n for (const id of itemsToRemove) {\n this.removeItem(id);\n }\n\n const itemsToAdd: Set<string> = ObservableList.difference(newIds, this.ids);\n\n for (const id of itemsToAdd) {\n this.addItem(items[id]);\n }\n\n }\n\n /**\n * Remove an item from the list given its id\n * @param id id of the item to remove\n */\n public removeItem(id: string) {\n this.ids.delete(id);\n this.data.delete(id);\n }\n\n /**\n * Adds an new item to the list\n * @param item the item to be added\n */\n private addItem(item: T) {\n const id = item[this.idFieldName];\n this.ids.add(id);\n this.data.set(id, new BehaviorSubject(item));\n\n }\n}\n","import { map } from 'rxjs/operators';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '../store';\nimport { BaseStore } from '../base-store';\nimport { Reduce } from '../reduce';\n\nexport interface HttpState {\n isLoading: boolean;\n error?: HttpErrorResponse;\n}\n\nexport enum HttpActions {\n REQUEST,\n RESPONSE,\n ERROR\n}\n\n@Store({\n name: 'httpStatusStore',\n initialState: {\n isLoading: false,\n error: null\n },\n actions: HttpActions\n})\n@Injectable({\n providedIn: 'root'\n})\nexport class HttpStatusStore extends BaseStore<HttpState> {\n // TODO: add explicit constructor\n\n\n\n public isLoading$ = this.store$.pipe(\n map((state) => {\n return state.isLoading;\n })\n );\n\n\n @Reduce(HttpActions.REQUEST)\n private onRequest(): HttpState {\n return {\n isLoading: true\n };\n }\n\n @Reduce(HttpActions.RESPONSE)\n private onResponse(): HttpState {\n return {\n isLoading: false\n };\n }\n\n @Reduce(HttpActions.ERROR)\n public onError(state: HttpState, err): HttpState {\n return {\n isLoading: false,\n error: err\n };\n }\n\n}\n","import { delay, tap } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { HttpActions, HttpStatusStore } from './http-status.store';\n\n@Injectable()\nexport class HttpStatusInterceptor implements HttpInterceptor {\n constructor(private httpStatusStore: HttpStatusStore) {}\n\n intercept(req: HttpRequest<any>, next: HttpHandler) {\n\n this.httpStatusStore.dispatch(HttpActions.REQUEST);\n\n // extend server response observable with logging\n return next.handle(req)\n .pipe(\n delay(100),\n tap(\n // Succeeds when there is a response; ignore other events\n () => {\n this.httpStatusStore.dispatch(HttpActions.RESPONSE);\n\n },\n // Operation failed; error is an HttpErrorResponse\n (error) => {\n this.httpStatusStore.dispatch(HttpActions.ERROR, error);\n }\n )\n );\n }\n}\n","import { $Keys } from 'utility-types';\n\nexport class List<EntityType extends {}> implements Iterable<EntityType> {\n\n public readonly entities = new Map<any, EntityType>();\n\n /**\n * maps entities position from the original array to their ids\n */\n private readonly ids: any[] = [];\n\n public get size() {\n if (this.ids.length !== this.entities.size) {\n\n throw new Error(`Size Mismatch ${this.ids.length} !== ${this.entities.size}`);\n }\n\n return this.entities.size;\n }\n\n public get(id) {\n return this.entities.get(id);\n }\n private getId(entity: EntityType) {\n return entity[this.IDField];\n }\n\n constructor(entities: EntityType[], private IDField: $Keys<EntityType>) {\n\n this.ids = entities.map((e) => this.getId(e));\n\n entities\n .forEach((item, idx) => {\n const id = item[IDField];\n this.entities.set(id, item);\n });\n }\n\n *[Symbol.iterator](): IterableIterator<EntityType> {\n // tslint:disable-next-line:forin\n for (const idx in this.ids) {\n const id = this.ids[idx];\n yield this.entities.get(id);\n }\n }\n\n public upsert(...entities: EntityType[]) {\n entities.forEach((e) => {\n const id = this.getId(e);\n\n if (!this.entities.has(id)) {\n this.ids.push(id);\n }\n\n this.entities.set(id, e);\n });\n }\n\n public prepend(...entities: EntityType[]) {\n entities.reverse().forEach((e) => {\n const id = this.getId(e);\n\n if (this.entities.has(id)) {\n console.warn(`Entity with id '${id}' already exists, moving to the top of the list. Entity will be updated`);\n this.delete(e);\n }\n\n this.ids.unshift(id);\n\n this.entities.set(id, e);\n\n });\n }\n\n public delete(...entities: EntityType[]) {\n entities.forEach((e) => {\n const id = this.getId(e);\n const indexOfId = this.ids.findIndex((_id) => _id === id);\n\n if (indexOfId < 0) {\n console.warn(`Cannot find id: ${id}`);\n } else {\n this.ids.splice(indexOfId, 1);\n this.entities.delete(id);\n }\n\n });\n }\n\n public append(...entities: EntityType[]) {\n entities.forEach((e) => {\n const id = this.getId(e);\n if (this.entities.has(id)) {\n console.warn(`Entity with id '${id}' already exists, moving to the end of the list. Entity will be updated.`);\n this.delete(e);\n }\n\n this.ids.push(id);\n this.entities.set(id, e);\n });\n }\n}\n"],"names":["getDebugger","Subject","BehaviorSubject","tap","takeUntil","Observable","catchError","throwError","HttpActions","map","Injectable","delay"],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@microgamma/loggator"),require("rxjs"),require("rxjs/operators"),require("@angular/core")):"function"==typeof define&&define.amd?define("@microphi/store",["exports","@microgamma/loggator","rxjs","rxjs/operators","@angular/core"],e):e(((t=t||self).microphi=t.microphi||{},t.microphi.store={}),t.loggator,t.rxjs,t.rxjs.operators,t.ng.core)}(this,(function(t,e,r,n,o){"use strict";
2
- /*! *****************************************************************************
3
- Copyright (c) Microsoft Corporation. All rights reserved.
4
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
5
- this file except in compliance with the License. You may obtain a copy of the
6
- License at http://www.apache.org/licenses/LICENSE-2.0
7
-
8
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
9
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
10
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
11
- MERCHANTABLITY OR NON-INFRINGEMENT.
12
-
13
- See the Apache Version 2.0 License for specific language governing permissions
14
- and limitations under the License.
15
- ***************************************************************************** */var i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)};function a(t,e,r,n){var o,i=arguments.length,a=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(a=(i<3?o(a):i>3?o(e,r,a):o(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a}function s(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function c(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}}var u=function(){function t(e){var r=this;this.actions={},this.names={},this.codes={},this.restActionsByName={},Object.keys(e).forEach((function(n){+n>=0?(r.codes[n]=e[n],r.actions[n]=t.createAction(e[n])):(r.names[n]=e[n],r.restActionsByName[n]=t.createAction(n))}))}return t.createAction=function(t){return{request:t+"_REQUEST",response:t+"_RESPONSE",error:t+"_ERROR"}},t.prototype.getByName=function(t){return this.names[t]},t.prototype.getByCode=function(t){return this.codes[t]},t.prototype.getActionsByCode=function(t){return this.actions[t]},t.prototype.getActionsByName=function(t){var e=this.getByName(t);return this.getActionsByCode(e)},t.prototype.getActionNameFromChild=function(t){var e,r=this;return Object.keys(this.restActionsByName).forEach((function(n){var o=r.restActionsByName[n];o.response!==t&&o.request!==t&&o.error!==t||(e=n)})),e},t.prototype.getActionCodeFromChild=function(t){var e,r=this;return Object.keys(this.actions).forEach((function(n){var o=r.actions[n];o.response!==t&&o.request!==t&&o.error!==t||(e=n)})),Number(e)},t}();function l(t){var r=e.getDebugger("microphi:@Store:"+t.name);return function(e){r("running store decorator"),Reflect.defineMetadata("@Store",t,e)}}function f(t){return Reflect.getMetadata("@Store",t.constructor)}function d(t){return function(r,n){var o=e.getDebugger("microphi:@Reduce:"+r.constructor.name),i=Reflect.getMetadata("@Reduce",r)||{};return i[t]=n,o("stored reducers",i),Reflect.defineMetadata("@Reduce",i,r)}}function p(t){return Reflect.getMetadata("@Reduce",t)||{}}var h=function(){function t(){var t=this;this.logger=e.getDebugger("microphi:BaseStore:"+this.constructor.name),this.actions$=new r.Subject,this._loading$=new r.Subject,this._error$=new r.Subject,this.destroy$=new r.Subject,this.storeMetadata=f(this),this.logger("@Store",this.storeMetadata),this._store$=new r.BehaviorSubject(this.storeMetadata.initialState),this._state=Object.assign({},this.storeMetadata.initialState),this.logger("InitialState",this.state),this.actionsMetadata=new u(this.storeMetadata.actions);var o=p(this);this.logger("Reducers",o);var i=this.parseReducers(o);this.logger("remapped reducers",i);var a=Reflect.getMetadata("@Effect",this)||{};this.logger("Effects",a);var s=this.remapEffects(a);this.logger("remapped effects",s),this.actions$.pipe(n.tap((function(e){t._loading$.next({type:e.type,code:t.actionsMetadata.getActionCodeFromChild(e.type),payload:e.payload,status:e.type.endsWith("_REQUEST")})})),n.takeUntil(this.destroy$)).subscribe((function(e){t.logger("got type",e);var o=e.type;if(o.endsWith("_REQUEST"))if(s.hasOwnProperty(o)){var a=s[o];if(t.logger("should call",a),t[a]instanceof Function){var c=t[a](e.payload);c instanceof r.Observable&&c.pipe(n.catchError((function(n){return console.error("@Effect: "+a+" thrown the following error"),console.error(n),t._loading$.next({status:!1,payload:e.payload,code:t.actionsMetadata.getActionCodeFromChild(e.type),type:e.type}),t._error$.next({action:t.actionsMetadata.getActionCodeFromChild(e.type),error:n}),r.throwError(n)})),n.takeUntil(t.destroy$)).subscribe((function(e){t.logger("got data",e),t.actions$.next({type:s[a],payload:e})}))}}else t.actions$.next({type:o.replace("_REQUEST","_RESPONSE"),payload:e.payload});else if(o.endsWith("_RESPONSE")){var u=i[e.type];if(t.logger("should call fn",u),t[i[e.type]])try{t.state=t[i[e.type]](t.state,e.payload)}catch(r){console.error("@Reduce "+u+" thrown an error",r),t._error$.next({action:t.actionsMetadata.getActionCodeFromChild(e.type),error:r})}}}),(function(e){t.logger("got error",e),t._error$.next(e),console.error(e)}))}return Object.defineProperty(t.prototype,"state",{get:function(){return this._state},set:function(t){this.logger("setting new state",t),this._state=t,this._store$.next(t),this.storeMetadata.useLocalStorage&&(this.logger("saving on localStorage"),localStorage.setItem(this.storeMetadata.name,JSON.stringify(t)))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"store$",{get:function(){return this._store$.asObservable()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"loading$",{get:function(){return this._loading$.asObservable()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"error$",{get:function(){return this._error$.asObservable()},enumerable:!0,configurable:!0}),t.prototype.dispatch=function(t,e){var r=this.actionsMetadata.getActionsByCode(t).request;this.logger("dispatching type",r),this.actions$.next({type:r,payload:e})},t.prototype.parseReducers=function(t){var e=this,r={};return Object.keys(t).forEach((function(n){if(+n>=0){var o=Number(n),i=e.actionsMetadata.getActionsByCode(o).response;r[i]=t[n]}})),r},t.prototype.remapEffects=function(t){var e=this,r={};return Object.keys(t).forEach((function(n){if(+n>=0){var o=Number(n),i=e.actionsMetadata.getActionsByCode(o).request;r[i]=t[n],r[t[n]]=e.actionsMetadata.getActionsByCode(o).response}})),r},t.prototype.ngOnDestroy=function(){this.destroy$.next(),this.destroy$.complete()},t}();var y,g=function(){function t(t,e){var n,o,i=this;void 0===e&&(e="id"),this.idFieldName=e,this.ids=new Set,this.data=new Map;var a=t.map((function(t){return t[i.idFieldName]}));this.ids=new Set(a);try{for(var s=c(a),u=s.next();!u.done;u=s.next()){var l=u.value;this.data.set(l,new r.BehaviorSubject(t[l]))}}catch(t){n={error:t}}finally{try{u&&!u.done&&(o=s.return)&&o.call(s)}finally{if(n)throw n.error}}}return t.difference=function(t,e){var r,n,o=new Set(t);try{for(var i=c(e),a=i.next();!a.done;a=i.next()){var s=a.value;o.delete(s)}}catch(t){r={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return o},t.intersection=function(t,e){var r,n,o=new Set;try{for(var i=c(e),a=i.next();!a.done;a=i.next()){var s=a.value;t.has(s)&&o.add(s)}}catch(t){r={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return o},t.symmetricDifference=function(t,e){var r,n,o=new Set(t);try{for(var i=c(e),a=i.next();!a.done;a=i.next()){var s=a.value;o.has(s)?o.delete(s):o.add(s)}}catch(t){r={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return o},t.prototype[Symbol.iterator]=function(){var t,e,r,n,o,i;return s(this,(function(a){switch(a.label){case 0:a.trys.push([0,5,6,7]),t=c(this.ids.values()),e=t.next(),a.label=1;case 1:return e.done?[3,4]:(r=e.value,[4,this.data.get(r)]);case 2:a.sent(),a.label=3;case 3:return e=t.next(),[3,1];case 4:return[3,7];case 5:return n=a.sent(),o={error:n},[3,7];case 6:try{e&&!e.done&&(i=t.return)&&i.call(t)}finally{if(o)throw o.error}return[7];case 7:return[2]}}))},t.prototype.push=function(){for(var t,e,n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];var i=this.idFieldName,a=function(t){if(s.data.has(t[i])){var e=s.data.get(t[i]).getValue();Object.keys(e).some((function(r){return e[r]!==t[r]}))&&s.data.get(t[i]).next(t)}else s.ids.add(t[i]),s.data.set(t[i],new r.BehaviorSubject(t))},s=this;try{for(var u=c(n),l=u.next();!l.done;l=u.next()){var f=l.value;a(f)}}catch(e){t={error:e}}finally{try{l&&!l.done&&(e=u.return)&&e.call(u)}finally{if(t)throw t.error}}},t.prototype.updateOne=function(t){this.data.has(t[this.idFieldName])?this.data.get(t[this.idFieldName]).next(t):console.warn("item not found",t)},t.prototype.toJSON=function(){var t=[];return this.data.forEach((function(e){t.push(e.getValue())})),t},t.prototype.set=function(){for(var e,r,n,o,i,a,s=this,u=[],l=0;l<arguments.length;l++)u[l]=arguments[l];var f=u.map((function(t){return t[s.idFieldName]})),d=t.intersection(this.ids,f);try{for(var p=c(d),h=p.next();!h.done;h=p.next()){var y=h.value;this.updateOne(u[y])}}catch(t){e={error:t}}finally{try{h&&!h.done&&(r=p.return)&&r.call(p)}finally{if(e)throw e.error}}var g=t.difference(this.ids,f);try{for(var v=c(g),b=v.next();!b.done;b=v.next()){y=b.value;this.removeItem(y)}}catch(t){n={error:t}}finally{try{b&&!b.done&&(o=v.return)&&o.call(v)}finally{if(n)throw n.error}}var m=t.difference(f,this.ids);try{for(var S=c(m),E=S.next();!E.done;E=S.next()){y=E.value;this.addItem(u[y])}}catch(t){i={error:t}}finally{try{E&&!E.done&&(a=S.return)&&a.call(S)}finally{if(i)throw i.error}}},t.prototype.removeItem=function(t){this.ids.delete(t),this.data.delete(t)},t.prototype.addItem=function(t){var e=t[this.idFieldName];this.ids.add(e),this.data.set(e,new r.BehaviorSubject(t))},t}();(y=t.HttpActions||(t.HttpActions={}))[y.REQUEST=0]="REQUEST",y[y.RESPONSE=1]="RESPONSE",y[y.ERROR=2]="ERROR";var v=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.isLoading$=t.store$.pipe(n.map((function(t){return t.isLoading}))),t}return function(t,e){function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}(r,e),r.prototype.onRequest=function(){return{isLoading:!0}},r.prototype.onResponse=function(){return{isLoading:!1}},r.prototype.onError=function(t,e){return{isLoading:!1,error:e}},r.ɵprov=o["ɵɵdefineInjectable"]({factory:function(){return new r},token:r,providedIn:"root"}),a([d(t.HttpActions.REQUEST)],r.prototype,"onRequest",null),a([d(t.HttpActions.RESPONSE)],r.prototype,"onResponse",null),a([d(t.HttpActions.ERROR)],r.prototype,"onError",null),r=a([l({name:"httpStatusStore",initialState:{isLoading:!1,error:null},actions:t.HttpActions}),o.Injectable({providedIn:"root"})],r)}(h),b=function(){function e(t){this.httpStatusStore=t}return e.prototype.intercept=function(e,r){var o=this;return this.httpStatusStore.dispatch(t.HttpActions.REQUEST),r.handle(e).pipe(n.delay(100),n.tap((function(){o.httpStatusStore.dispatch(t.HttpActions.RESPONSE)}),(function(e){o.httpStatusStore.dispatch(t.HttpActions.ERROR,e)})))},e.ctorParameters=function(){return[{type:v}]},e=a([o.Injectable()],e)}(),m=function(){function t(t,e){var r=this;this.IDField=e,this.entities=new Map,this.ids=[],this.ids=t.map((function(t){return r.getId(t)})),t.forEach((function(t,n){var o=t[e];r.entities.set(o,t)}))}return Object.defineProperty(t.prototype,"size",{get:function(){if(this.ids.length!==this.entities.size)throw new Error("Size Mismatch "+this.ids.length+" !== "+this.entities.size);return this.entities.size},enumerable:!0,configurable:!0}),t.prototype.get=function(t){return this.entities.get(t)},t.prototype.getId=function(t){return t[this.IDField]},t.prototype[Symbol.iterator]=function(){var t,e,r,n,o;return s(this,(function(i){switch(i.label){case 0:for(e in t=[],this.ids)t.push(e);r=0,i.label=1;case 1:return r<t.length?(n=t[r],o=this.ids[n],[4,this.entities.get(o)]):[3,4];case 2:i.sent(),i.label=3;case 3:return r++,[3,1];case 4:return[2]}}))},t.prototype.upsert=function(){for(var t=this,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];e.forEach((function(e){var r=t.getId(e);t.entities.has(r)||t.ids.push(r),t.entities.set(r,e)}))},t.prototype.prepend=function(){for(var t=this,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];e.reverse().forEach((function(e){var r=t.getId(e);t.entities.has(r)&&(console.warn("Entity with id '"+r+"' already exists, moving to the top of the list. Entity will be updated"),t.delete(e)),t.ids.unshift(r),t.entities.set(r,e)}))},t.prototype.delete=function(){for(var t=this,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];e.forEach((function(e){var r=t.getId(e),n=t.ids.findIndex((function(t){return t===r}));n<0?console.warn("Cannot find id: "+r):(t.ids.splice(n,1),t.entities.delete(r))}))},t.prototype.append=function(){for(var t=this,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];e.forEach((function(e){var r=t.getId(e);t.entities.has(r)&&(console.warn("Entity with id '"+r+"' already exists, moving to the end of the list. Entity will be updated."),t.delete(e)),t.ids.push(r),t.entities.set(r,e)}))},t}();t.Actions=u,t.BaseStore=h,t.ERROR_SUFFIX="_ERROR",t.Effect=function(t){return function(r,n){e.getDebugger("microphi:@Effect:"+r.constructor.name)("decorating",n,"with type",t);var o=Reflect.getMetadata("@Effect",r)||{};return o[t]=n,Reflect.defineMetadata("@Effect",o,r)}},t.HttpStatusInterceptor=b,t.HttpStatusStore=v,t.List=m,t.ObservableList=g,t.REQUEST_SUFFIX="_REQUEST",t.RESPONSE_SUFFIX="_RESPONSE",t.Reduce=d,t.ReduceMetadata="@Reduce",t.Store=l,t.StoreMetadata="@Store",t.getReduceMetadata=p,t.getStoreMetadata=f,Object.defineProperty(t,"__esModule",{value:!0})}));
16
- //# sourceMappingURL=microphi-store.umd.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@microphi/store/lib/actions.ts","ng://@microphi/store/lib/store.ts","ng://@microphi/store/lib/reduce.ts","ng://@microphi/store/lib/base-store.ts","ng://@microphi/store/lib/http-status/http-status.store.ts","ng://@microphi/store/lib/observable-list/observable-list.ts","ng://@microphi/store/lib/http-status/http-status.interceptor.ts","ng://@microphi/store/lib/list/list.ts","ng://@microphi/store/lib/effect.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","push","e","step","__values","o","m","Actions","actions","_this","names","codes","restActionsByName","keys","forEach","createAction","request","response","error","prototype","getByName","actionName","getByCode","code","getActionsByCode","getActionsByName","getActionNameFromChild","childAction","restAction","restActions","getActionCodeFromChild","actionCode","Number","Store","options","getDebugger","name","defineMetadata","getStoreMetadata","instance","getMetadata","constructor","Reduce","onAction","reducer","getReduceMetadata","BaseStore","logger","actions$","Subject","_loading$","_error$","destroy$","storeMetadata","_store$","BehaviorSubject","initialState","_state","assign","state","actionsMetadata","reducerMetadata","remappedReducers","parseReducers","effectsMetadata","remappedEffects","remapEffects","pipe","tap","action","type","payload","status","endsWith","takeUntil","subscribe","effectName_1","Function","retValue","Observable","catchError","err","console","throwError","replace","fn","useLocalStorage","localStorage","setItem","JSON","stringify","asObservable","dispatch","requestAction","reducers","_action","realAction","ngOnDestroy","complete","HttpActions","ObservableList","items","idFieldName","ids","Set","data","Map","map","ids_1","ids_1_1","id","set","difference","setA","setB","_difference","setB_1","setB_1_1","elem","delete","intersection","_intersection","setB_2","setB_2_1","has","add","symmetricDifference","setB_3","setB_3_1","_a","values","_b","get","_d","_i","item","this_1","storedItem_1","getValue","some","items_1","items_1_1","updateOne","warn","toJSON","newIds","intersection_1","intersection_1_1","itemsToRemove","itemsToRemove_1","itemsToRemove_1_1","removeItem","itemsToAdd","itemsToAdd_1","itemsToAdd_1_1","addItem","HttpStatusStore","_super","apply","isLoading$","store$","isLoading","__","create","__extends","onRequest","onResponse","onError","REQUEST","RESPONSE","ERROR","Injectable","providedIn","HttpStatusInterceptor","httpStatusStore","intercept","req","handle","delay","List","entities","IDField","getId","idx","size","Error","entity","_c","upsert","prepend","reverse","unshift","indexOfId","findIndex","_id","splice","append","effects"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export const REQUEST_SUFFIX = '_REQUEST';\nexport const RESPONSE_SUFFIX = '_RESPONSE';\nexport const ERROR_SUFFIX = '_ERROR';\n\nexport interface Action {\n type: string;\n payload: any;\n}\n\nexport interface RestActions {\n request: string;\n response: string;\n error: string;\n}\n\n\n/**\n * Action are defined with an enum. Such as:\n *\n * emun {\n * GET_ALL,\n * GET_ONE,\n * DELETE,\n * }\n *\n * For each action defined a REQUEST, a RESPONSE and an ERROR are associated to it.\n *\n *\n */\nexport class Actions<A extends any> {\n\n /**\n * Example:\n * {\n * 0: { request: 'ACTION_NAME_REQUEST', response: 'ACTION_NAME_RESPONSE', error: 'ACTION_NAME_ERROR' }\n * [....]\n * }\n */\n public actions: {\n [k: number]: RestActions;\n } = {};\n\n /**\n * Example:\n * {\n * ACTION_NAME: 0\n * [....]\n * }\n *\n */\n public names: {\n [actionName: string]: number;\n } = {};\n\n /**\n * Example:\n * {\n * 0: 'ACTION_NAME',\n * [....]\n *\n * }\n */\n public codes: {\n [actionCode: number]: string\n } = {};\n\n /**\n * Example:\n * {\n * ACTION_NAME': { request: 'ACTION_NAME_REQUEST', response: 'ACTION_NAME_RESPONSE', error: 'ACTION_NAME_ERROR' }\n * [....]\n * }\n */\n public restActionsByName: {\n [name: string]: RestActions;\n } = {};\n\n constructor(actions: A) {\n Object.keys(actions).forEach((key) => {\n if (+key >= 0) {\n\n this.codes[key] = actions[key];\n\n this.actions[key] = Actions.createAction(actions[key]);\n\n } else {\n this.names[key] = actions[key];\n\n this.restActionsByName[key] = Actions.createAction(key);\n }\n\n });\n }\n\n private static createAction(key: string): RestActions {\n return {\n request: `${key}${REQUEST_SUFFIX}`,\n response: `${key}${RESPONSE_SUFFIX}`,\n error: `${key}${ERROR_SUFFIX}`,\n };\n }\n\n public getByName(actionName: string) {\n return this.names[actionName];\n }\n\n public getByCode(code: number) {\n return this.codes[code];\n }\n\n public getActionsByCode(key: number) {\n return this.actions[key];\n }\n\n public getActionsByName(actionName: string) {\n const code = this.getByName(actionName);\n return this.getActionsByCode(code);\n }\n\n public getActionNameFromChild(childAction: string): string {\n let actionName;\n\n Object.keys(this.restActionsByName).forEach((restAction) => {\n const restActions = this.restActionsByName[restAction];\n if (restActions.response === childAction || restActions.request === childAction || restActions.error === childAction) {\n actionName = restAction;\n }\n });\n\n return actionName;\n }\n\n public getActionCodeFromChild(childAction: string): number {\n let actionCode;\n\n Object.keys(this.actions).forEach((restAction) => {\n const restActions = this.actions[restAction];\n if (restActions.response === childAction || restActions.request === childAction || restActions.error === childAction) {\n actionCode = restAction;\n }\n });\n\n return Number(actionCode);\n }\n\n}\n","import { getDebugger } from '@microgamma/loggator';\n\nexport const StoreMetadata = '@Store';\n\nexport interface StoreOptions {\n initialState: any;\n name: string;\n actions: any;\n useLocalStorage?: boolean;\n}\n\nexport function Store(options: StoreOptions) {\n\n const d = getDebugger(`microphi:@Store:${options.name}`);\n\n return (target) => {\n\n d('running store decorator');\n\n Reflect.defineMetadata(StoreMetadata, options, target);\n };\n}\n\nexport function getStoreMetadata(instance): StoreOptions {\n return Reflect.getMetadata(StoreMetadata, instance.constructor);\n}\n\n\n","import { BaseStore } from './base-store';\nimport { getDebugger } from '@microgamma/loggator';\n\nexport const ReduceMetadata = '@Reduce';\n\nexport interface Reducers {\n [actionName: number]: string;\n}\n\nexport function Reduce(onAction: number) {\n return <Store extends BaseStore<any>>(target: Store, key: string) => {\n const d = getDebugger(`microphi:@Reduce:${target.constructor.name}`);\n\n const reducer = Reflect.getMetadata(ReduceMetadata, target) || {};\n\n reducer[onAction] = key;\n\n d('stored reducers', reducer);\n\n return Reflect.defineMetadata(ReduceMetadata, reducer, target);\n\n };\n}\n\nexport function getReduceMetadata(instance): Reducers {\n return Reflect.getMetadata(ReduceMetadata, instance) || {};\n}\n","import { getDebugger } from '@microgamma/loggator';\nimport { BehaviorSubject, Observable, Subject, throwError } from 'rxjs';\nimport { getStoreMetadata, StoreOptions } from './store';\nimport { Action, Actions, REQUEST_SUFFIX, RESPONSE_SUFFIX } from './actions';\nimport { getReduceMetadata } from './reduce';\nimport { catchError, takeUntil, tap } from 'rxjs/operators';\nimport { OnDestroy } from '@angular/core';\n\nexport abstract class BaseStore<T extends {}> implements OnDestroy {\n\n private logger = getDebugger(`microphi:BaseStore:${this.constructor.name}`);\n\n private readonly storeMetadata: StoreOptions;\n private readonly actionsMetadata: Actions<any>;\n\n private _state: T;\n private get state(): T {\n return this._state;\n }\n private set state(value: T) {\n this.logger('setting new state', value);\n this._state = value;\n this._store$.next(value);\n if (this.storeMetadata.useLocalStorage) {\n this.logger('saving on localStorage');\n localStorage.setItem(this.storeMetadata.name, JSON.stringify(value));\n }\n }\n\n private _store$: BehaviorSubject<T>;\n\n public get store$(): Observable<T> {\n return this._store$.asObservable();\n }\n\n private actions$ = new Subject<{\n type: string,\n payload: any\n }>();\n\n private _loading$ = new Subject<{\n type: string,\n code?: number,\n payload: any,\n status: boolean\n }>();\n\n get loading$(): Observable<{ type: string; code?: number; payload: any; status: boolean }> {\n return this._loading$.asObservable();\n }\n\n private _error$ = new Subject<{\n action: number,\n error: any\n }>();\n\n get error$(): Observable<{ action: number; error: any }> {\n return this._error$.asObservable();\n }\n\n private destroy$: Subject<any> = new Subject<any>();\n\n constructor() {\n\n this.storeMetadata = getStoreMetadata(this);\n this.logger('@Store', this.storeMetadata);\n\n this._store$ = new BehaviorSubject(this.storeMetadata.initialState);\n // dereference initial state so that is does not leak between instances\n this._state = Object.assign( {}, this.storeMetadata.initialState);\n this.logger('InitialState', this.state);\n\n this.actionsMetadata = new Actions(this.storeMetadata.actions);\n\n const reducerMetadata = getReduceMetadata(this);\n this.logger('Reducers', reducerMetadata);\n const remappedReducers = this.parseReducers(reducerMetadata);\n this.logger('remapped reducers', remappedReducers);\n\n\n const effectsMetadata = Reflect.getMetadata('@Effect', this) || {};\n this.logger('Effects', effectsMetadata);\n const remappedEffects = this.remapEffects(effectsMetadata);\n this.logger('remapped effects', remappedEffects);\n\n this.actions$.pipe(\n tap((action: Action) => {\n this._loading$.next({\n type: action.type,\n code: this.actionsMetadata.getActionCodeFromChild(action.type),\n payload: action.payload,\n status: action.type.endsWith('_REQUEST')\n });\n\n }),\n takeUntil(this.destroy$),\n ).subscribe( (action: Action) => {\n this.logger('got type', action);\n\n const type = action.type;\n\n // effects are associated with requests\n if (type.endsWith(REQUEST_SUFFIX)) {\n if (remappedEffects.hasOwnProperty(type)) {\n\n const effectName = remappedEffects[type];\n this.logger('should call', effectName);\n\n\n if (this[effectName] instanceof Function) {\n\n const retValue = this[effectName](action.payload) as Observable<any>;\n\n if (retValue instanceof Observable) {\n retValue.pipe(\n catchError((err) => {\n console.error(`@Effect: ${effectName} thrown the following error`);\n console.error(err);\n this._loading$.next({\n status: false,\n payload: action.payload,\n code: this.actionsMetadata.getActionCodeFromChild(action.type),\n type: action.type,\n });\n this._error$.next({action: this.actionsMetadata.getActionCodeFromChild(action.type), error: err});\n return throwError(err);\n }),\n takeUntil(this.destroy$)\n ).subscribe((value) => {\n this.logger('got data', value);\n\n this.actions$.next({\n type: remappedEffects[effectName],\n payload: value\n });\n });\n }\n\n }\n\n } else {\n // if there is no effect associated with this action then we can proceed calling the reducer associated\n this.actions$.next({\n type: type.replace(REQUEST_SUFFIX, RESPONSE_SUFFIX),\n payload: action.payload\n });\n\n }\n } else if (type.endsWith(RESPONSE_SUFFIX)) {\n\n const fn = remappedReducers[action.type];\n this.logger('should call fn', fn);\n\n if (this[remappedReducers[action.type]]) {\n try {\n this.state = this[remappedReducers[action.type]](this.state, action.payload);\n } catch (e) {\n\n // we don't need to stop loading here at it has already been stopped\n\n console.error(`@Reduce ${fn} thrown an error`, e);\n this._error$.next({action: this.actionsMetadata.getActionCodeFromChild(action.type), error: e});\n }\n }\n\n }\n\n }, (err) => {\n this.logger('got error', err);\n // TODO should handle the error or should we change loading$ to a more generic status$ so we can pass altogether\n // loadings and errors events?\n this._error$.next(err);\n console.error(err);\n });\n\n }\n\n public dispatch(type: number, payload?: any) {\n\n const requestAction = this.actionsMetadata.getActionsByCode(type).request;\n this.logger('dispatching type', requestAction);\n\n this.actions$.next({type: requestAction, payload});\n }\n\n private parseReducers(reducers) {\n const remappedReducers = {};\n\n Object.keys(reducers).forEach((action) => {\n if (+action >= 0) {\n const _action: number = Number(action);\n // this.logger('remapping', type, 'to');\n const realAction = this.actionsMetadata.getActionsByCode(_action).response;\n // this.logger('real type to map to', realAction);\n remappedReducers[realAction] = reducers[action];\n }\n });\n\n return remappedReducers;\n }\n\n private remapEffects(effectsMetadata: {}) {\n const remappedEffects = {};\n\n Object.keys(effectsMetadata).forEach((action) => {\n // effects should react to REQUEST events\n\n if (+action >= 0) {\n const _action = Number(action);\n\n const realAction = this.actionsMetadata.getActionsByCode(_action).request;\n\n remappedEffects[realAction] = effectsMetadata[action];\n // mapping the effect function so that it can return a response type\n remappedEffects[effectsMetadata[action]] = this.actionsMetadata.getActionsByCode(_action).response;\n }\n });\n\n return remappedEffects;\n }\n\n public ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n}\n","import { map } from 'rxjs/operators';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '../store';\nimport { BaseStore } from '../base-store';\nimport { Reduce } from '../reduce';\n\nexport interface HttpState {\n isLoading: boolean;\n error?: HttpErrorResponse;\n}\n\nexport enum HttpActions {\n REQUEST,\n RESPONSE,\n ERROR\n}\n\n@Store({\n name: 'httpStatusStore',\n initialState: {\n isLoading: false,\n error: null\n },\n actions: HttpActions\n})\n@Injectable({\n providedIn: 'root'\n})\nexport class HttpStatusStore extends BaseStore<HttpState> {\n // TODO: add explicit constructor\n\n\n\n public isLoading$ = this.store$.pipe(\n map((state) => {\n return state.isLoading;\n })\n );\n\n\n @Reduce(HttpActions.REQUEST)\n private onRequest(): HttpState {\n return {\n isLoading: true\n };\n }\n\n @Reduce(HttpActions.RESPONSE)\n private onResponse(): HttpState {\n return {\n isLoading: false\n };\n }\n\n @Reduce(HttpActions.ERROR)\n public onError(state: HttpState, err): HttpState {\n return {\n isLoading: false,\n error: err\n };\n }\n\n}\n","import { BehaviorSubject } from 'rxjs';\n\nexport class ObservableList<T extends {}> {\n private readonly ids: Set<string> = new Set<string>();\n private data: Map<string, BehaviorSubject<T>> = new Map();\n\n private static difference(setA, setB): Set<string> {\n const _difference: Set<string> = new Set(setA);\n for (const elem of setB) {\n _difference.delete(elem);\n }\n return _difference;\n }\n\n private static intersection(setA, setB): Set<string> {\n const _intersection: Set<string> = new Set();\n for (const elem of setB) {\n if (setA.has(elem)) {\n _intersection.add(elem);\n }\n }\n return _intersection;\n }\n\n private static symmetricDifference(setA, setB): Set<string> {\n const _difference: Set<string> = new Set(setA);\n for (const elem of setB) {\n if (_difference.has(elem)) {\n _difference.delete(elem);\n } else {\n _difference.add(elem);\n }\n }\n return _difference;\n }\n\n constructor(items: T[], private idFieldName = 'id') {\n const ids = items.map((i) => i[this.idFieldName]);\n this.ids = new Set(ids);\n for (const id of ids) {\n this.data.set(id, new BehaviorSubject(items[id]));\n }\n\n\n }\n\n *[Symbol.iterator](): IterableIterator<BehaviorSubject<T>> {\n\n\n // tslint:disable-next-line:forin\n for (const id of this.ids.values()) {\n yield this.data.get(id);\n // yield this.data[id];\n }\n\n }\n\n public push(...items: T[]) {\n const id = this.idFieldName;\n\n for (const item of items) {\n\n if (this.data.has(item[id])) {\n // check whether the item changed;\n\n const storedItem = this.data.get(item[id]).getValue();\n const shouldUpdate = Object.keys(storedItem).some((key) => {\n return storedItem[key] !== item[key];\n });\n\n if (shouldUpdate) {\n this.data.get(item[id]).next(item);\n }\n } else {\n this.ids.add(item[id]);\n this.data.set(item[id], new BehaviorSubject(item));\n }\n\n }\n\n }\n\n public updateOne(item: T) {\n if (this.data.has(item[this.idFieldName])) {\n\n this.data.get(item[this.idFieldName]).next(item);\n } else {\n console.warn('item not found', item);\n }\n }\n\n public toJSON() {\n\n const data = [];\n\n this.data.forEach((value) => {\n data.push(value.getValue());\n });\n\n return data;\n }\n\n /**\n * Will update items that are already present only if they need to be updated and remove items that are not present.\n * @param items items of the list\n */\n public set(...items: T[]): void {\n const newIds: string[] = items.map((i) => i[this.idFieldName]);\n\n const intersection: Set<string> = ObservableList.intersection(this.ids, newIds);\n\n for (const id of intersection) {\n this.updateOne(items[id]);\n }\n\n const itemsToRemove: Set<string> = ObservableList.difference(this.ids, newIds);\n\n for (const id of itemsToRemove) {\n this.removeItem(id);\n }\n\n const itemsToAdd: Set<string> = ObservableList.difference(newIds, this.ids);\n\n for (const id of itemsToAdd) {\n this.addItem(items[id]);\n }\n\n }\n\n /**\n * Remove an item from the list given its id\n * @param id id of the item to remove\n */\n public removeItem(id: string) {\n this.ids.delete(id);\n this.data.delete(id);\n }\n\n /**\n * Adds an new item to the list\n * @param item the item to be added\n */\n private addItem(item: T) {\n const id = item[this.idFieldName];\n this.ids.add(id);\n this.data.set(id, new BehaviorSubject(item));\n\n }\n}\n","import { delay, tap } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { HttpActions, HttpStatusStore } from './http-status.store';\n\n@Injectable()\nexport class HttpStatusInterceptor implements HttpInterceptor {\n constructor(private httpStatusStore: HttpStatusStore) {}\n\n intercept(req: HttpRequest<any>, next: HttpHandler) {\n\n this.httpStatusStore.dispatch(HttpActions.REQUEST);\n\n // extend server response observable with logging\n return next.handle(req)\n .pipe(\n delay(100),\n tap(\n // Succeeds when there is a response; ignore other events\n () => {\n this.httpStatusStore.dispatch(HttpActions.RESPONSE);\n\n },\n // Operation failed; error is an HttpErrorResponse\n (error) => {\n this.httpStatusStore.dispatch(HttpActions.ERROR, error);\n }\n )\n );\n }\n}\n","import { $Keys } from 'utility-types';\n\nexport class List<EntityType extends {}> implements Iterable<EntityType> {\n\n public readonly entities = new Map<any, EntityType>();\n\n /**\n * maps entities position from the original array to their ids\n */\n private readonly ids: any[] = [];\n\n public get size() {\n if (this.ids.length !== this.entities.size) {\n\n throw new Error(`Size Mismatch ${this.ids.length} !== ${this.entities.size}`);\n }\n\n return this.entities.size;\n }\n\n public get(id) {\n return this.entities.get(id);\n }\n private getId(entity: EntityType) {\n return entity[this.IDField];\n }\n\n constructor(entities: EntityType[], private IDField: $Keys<EntityType>) {\n\n this.ids = entities.map((e) => this.getId(e));\n\n entities\n .forEach((item, idx) => {\n const id = item[IDField];\n this.entities.set(id, item);\n });\n }\n\n *[Symbol.iterator](): IterableIterator<EntityType> {\n // tslint:disable-next-line:forin\n for (const idx in this.ids) {\n const id = this.ids[idx];\n yield this.entities.get(id);\n }\n }\n\n public upsert(...entities: EntityType[]) {\n entities.forEach((e) => {\n const id = this.getId(e);\n\n if (!this.entities.has(id)) {\n this.ids.push(id);\n }\n\n this.entities.set(id, e);\n });\n }\n\n public prepend(...entities: EntityType[]) {\n entities.reverse().forEach((e) => {\n const id = this.getId(e);\n\n if (this.entities.has(id)) {\n console.warn(`Entity with id '${id}' already exists, moving to the top of the list. Entity will be updated`);\n this.delete(e);\n }\n\n this.ids.unshift(id);\n\n this.entities.set(id, e);\n\n });\n }\n\n public delete(...entities: EntityType[]) {\n entities.forEach((e) => {\n const id = this.getId(e);\n const indexOfId = this.ids.findIndex((_id) => _id === id);\n\n if (indexOfId < 0) {\n console.warn(`Cannot find id: ${id}`);\n } else {\n this.ids.splice(indexOfId, 1);\n this.entities.delete(id);\n }\n\n });\n }\n\n public append(...entities: EntityType[]) {\n entities.forEach((e) => {\n const id = this.getId(e);\n if (this.entities.has(id)) {\n console.warn(`Entity with id '${id}' already exists, moving to the end of the list. Entity will be updated.`);\n this.delete(e);\n }\n\n this.ids.push(id);\n this.entities.set(id, e);\n });\n }\n}\n","import { getDebugger } from '@microgamma/loggator';\nimport { BaseStore } from './base-store';\n\nexport function Effect(onAction: number) {\n\n return <Store extends BaseStore<any>>(target: Store, key: string) => {\n\n const d = getDebugger(`microphi:@Effect:${target.constructor.name}`);\n\n d('decorating', key, 'with type', onAction);\n\n const effects = Reflect.getMetadata('@Effect', target) || {};\n\n effects[onAction] = key;\n\n return Reflect.defineMetadata('@Effect', effects, target);\n };\n}\n"]}
@@ -1,105 +0,0 @@
1
- export const REQUEST_SUFFIX = '_REQUEST';
2
- export const RESPONSE_SUFFIX = '_RESPONSE';
3
- export const ERROR_SUFFIX = '_ERROR';
4
- /**
5
- * Action are defined with an enum. Such as:
6
- *
7
- * emun {
8
- * GET_ALL,
9
- * GET_ONE,
10
- * DELETE,
11
- * }
12
- *
13
- * For each action defined a REQUEST, a RESPONSE and an ERROR are associated to it.
14
- *
15
- *
16
- */
17
- export class Actions {
18
- constructor(actions) {
19
- /**
20
- * Example:
21
- * {
22
- * 0: { request: 'ACTION_NAME_REQUEST', response: 'ACTION_NAME_RESPONSE', error: 'ACTION_NAME_ERROR' }
23
- * [....]
24
- * }
25
- */
26
- this.actions = {};
27
- /**
28
- * Example:
29
- * {
30
- * ACTION_NAME: 0
31
- * [....]
32
- * }
33
- *
34
- */
35
- this.names = {};
36
- /**
37
- * Example:
38
- * {
39
- * 0: 'ACTION_NAME',
40
- * [....]
41
- *
42
- * }
43
- */
44
- this.codes = {};
45
- /**
46
- * Example:
47
- * {
48
- * ACTION_NAME': { request: 'ACTION_NAME_REQUEST', response: 'ACTION_NAME_RESPONSE', error: 'ACTION_NAME_ERROR' }
49
- * [....]
50
- * }
51
- */
52
- this.restActionsByName = {};
53
- Object.keys(actions).forEach((key) => {
54
- if (+key >= 0) {
55
- this.codes[key] = actions[key];
56
- this.actions[key] = Actions.createAction(actions[key]);
57
- }
58
- else {
59
- this.names[key] = actions[key];
60
- this.restActionsByName[key] = Actions.createAction(key);
61
- }
62
- });
63
- }
64
- static createAction(key) {
65
- return {
66
- request: `${key}${REQUEST_SUFFIX}`,
67
- response: `${key}${RESPONSE_SUFFIX}`,
68
- error: `${key}${ERROR_SUFFIX}`,
69
- };
70
- }
71
- getByName(actionName) {
72
- return this.names[actionName];
73
- }
74
- getByCode(code) {
75
- return this.codes[code];
76
- }
77
- getActionsByCode(key) {
78
- return this.actions[key];
79
- }
80
- getActionsByName(actionName) {
81
- const code = this.getByName(actionName);
82
- return this.getActionsByCode(code);
83
- }
84
- getActionNameFromChild(childAction) {
85
- let actionName;
86
- Object.keys(this.restActionsByName).forEach((restAction) => {
87
- const restActions = this.restActionsByName[restAction];
88
- if (restActions.response === childAction || restActions.request === childAction || restActions.error === childAction) {
89
- actionName = restAction;
90
- }
91
- });
92
- return actionName;
93
- }
94
- getActionCodeFromChild(childAction) {
95
- let actionCode;
96
- Object.keys(this.actions).forEach((restAction) => {
97
- const restActions = this.actions[restAction];
98
- if (restActions.response === childAction || restActions.request === childAction || restActions.error === childAction) {
99
- actionCode = restAction;
100
- }
101
- });
102
- return Number(actionCode);
103
- }
104
- }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3BoaS9zdG9yZS8iLCJzb3VyY2VzIjpbImxpYi9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUM7QUFDekMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQztBQUMzQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDO0FBY3JDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBZ0RsQixZQUFZLE9BQVU7UUE5Q3RCOzs7Ozs7V0FNRztRQUNJLFlBQU8sR0FFVixFQUFFLENBQUM7UUFFUDs7Ozs7OztXQU9HO1FBQ0ksVUFBSyxHQUVSLEVBQUUsQ0FBQztRQUVQOzs7Ozs7O1dBT0c7UUFDSSxVQUFLLEdBRVIsRUFBRSxDQUFDO1FBRVA7Ozs7OztXQU1HO1FBQ0ksc0JBQWlCLEdBRXBCLEVBQUUsQ0FBQztRQUdMLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUU7Z0JBRWIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRS9CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUV4RDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekQ7UUFFSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQVc7UUFDckMsT0FBTztZQUNMLE9BQU8sRUFBRSxHQUFHLEdBQUcsR0FBRyxjQUFjLEVBQUU7WUFDbEMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLGVBQWUsRUFBRTtZQUNwQyxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsWUFBWSxFQUFFO1NBQy9CLENBQUM7SUFDSixDQUFDO0lBRU0sU0FBUyxDQUFDLFVBQWtCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sU0FBUyxDQUFDLElBQVk7UUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsVUFBa0I7UUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sc0JBQXNCLENBQUMsV0FBbUI7UUFDL0MsSUFBSSxVQUFVLENBQUM7UUFFZixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3pELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2RCxJQUFJLFdBQVcsQ0FBQyxRQUFRLEtBQUssV0FBVyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEtBQUssV0FBVyxJQUFJLFdBQVcsQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO2dCQUNwSCxVQUFVLEdBQUcsVUFBVSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU0sc0JBQXNCLENBQUMsV0FBbUI7UUFDL0MsSUFBSSxVQUFVLENBQUM7UUFFZixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUMvQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLElBQUksV0FBVyxDQUFDLFFBQVEsS0FBSyxXQUFXLElBQUksV0FBVyxDQUFDLE9BQU8sS0FBSyxXQUFXLElBQUksV0FBVyxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7Z0JBQ3BILFVBQVUsR0FBRyxVQUFVLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBSRVFVRVNUX1NVRkZJWCA9ICdfUkVRVUVTVCc7XG5leHBvcnQgY29uc3QgUkVTUE9OU0VfU1VGRklYID0gJ19SRVNQT05TRSc7XG5leHBvcnQgY29uc3QgRVJST1JfU1VGRklYID0gJ19FUlJPUic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uIHtcbiAgdHlwZTogc3RyaW5nO1xuICBwYXlsb2FkOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdEFjdGlvbnMge1xuICByZXF1ZXN0OiBzdHJpbmc7XG4gIHJlc3BvbnNlOiBzdHJpbmc7XG4gIGVycm9yOiBzdHJpbmc7XG59XG5cblxuLyoqXG4gKiBBY3Rpb24gYXJlIGRlZmluZWQgd2l0aCBhbiBlbnVtLiBTdWNoIGFzOlxuICpcbiAqIGVtdW4ge1xuICogICBHRVRfQUxMLFxuICogICBHRVRfT05FLFxuICogICBERUxFVEUsXG4gKiB9XG4gKlxuICogRm9yIGVhY2ggYWN0aW9uIGRlZmluZWQgYSBSRVFVRVNULCBhIFJFU1BPTlNFIGFuZCBhbiBFUlJPUiBhcmUgYXNzb2NpYXRlZCB0byBpdC5cbiAqXG4gKlxuICovXG5leHBvcnQgY2xhc3MgQWN0aW9uczxBIGV4dGVuZHMgYW55PiB7XG5cbiAgLyoqXG4gICAqIEV4YW1wbGU6XG4gICAqIHtcbiAgICogICAwOiB7IHJlcXVlc3Q6ICdBQ1RJT05fTkFNRV9SRVFVRVNUJywgcmVzcG9uc2U6ICdBQ1RJT05fTkFNRV9SRVNQT05TRScsIGVycm9yOiAnQUNUSU9OX05BTUVfRVJST1InIH1cbiAgICogICBbLi4uLl1cbiAgICogfVxuICAgKi9cbiAgcHVibGljIGFjdGlvbnM6IHtcbiAgICBbazogbnVtYmVyXTogUmVzdEFjdGlvbnM7XG4gIH0gPSB7fTtcblxuICAvKipcbiAgICogRXhhbXBsZTpcbiAgICoge1xuICAgKiAgIEFDVElPTl9OQU1FOiAwXG4gICAqICAgWy4uLi5dXG4gICAqIH1cbiAgICpcbiAgICovXG4gIHB1YmxpYyBuYW1lczoge1xuICAgIFthY3Rpb25OYW1lOiBzdHJpbmddOiBudW1iZXI7XG4gIH0gPSB7fTtcblxuICAvKipcbiAgICogRXhhbXBsZTpcbiAgICoge1xuICAgKiAgIDA6ICdBQ1RJT05fTkFNRScsXG4gICAqICAgWy4uLi5dXG4gICAqXG4gICAqIH1cbiAgICovXG4gIHB1YmxpYyBjb2Rlczoge1xuICAgIFthY3Rpb25Db2RlOiBudW1iZXJdOiBzdHJpbmdcbiAgfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBFeGFtcGxlOlxuICAgKiB7XG4gICAqICAgQUNUSU9OX05BTUUnOiB7IHJlcXVlc3Q6ICdBQ1RJT05fTkFNRV9SRVFVRVNUJywgcmVzcG9uc2U6ICdBQ1RJT05fTkFNRV9SRVNQT05TRScsIGVycm9yOiAnQUNUSU9OX05BTUVfRVJST1InIH1cbiAgICogICBbLi4uLl1cbiAgICogfVxuICAgKi9cbiAgcHVibGljIHJlc3RBY3Rpb25zQnlOYW1lOiB7XG4gICAgW25hbWU6IHN0cmluZ106IFJlc3RBY3Rpb25zO1xuICB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoYWN0aW9uczogQSkge1xuICAgIE9iamVjdC5rZXlzKGFjdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKCtrZXkgPj0gMCkge1xuXG4gICAgICAgIHRoaXMuY29kZXNba2V5XSA9IGFjdGlvbnNba2V5XTtcblxuICAgICAgICB0aGlzLmFjdGlvbnNba2V5XSA9IEFjdGlvbnMuY3JlYXRlQWN0aW9uKGFjdGlvbnNba2V5XSk7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubmFtZXNba2V5XSA9IGFjdGlvbnNba2V5XTtcblxuICAgICAgICB0aGlzLnJlc3RBY3Rpb25zQnlOYW1lW2tleV0gPSBBY3Rpb25zLmNyZWF0ZUFjdGlvbihrZXkpO1xuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVBY3Rpb24oa2V5OiBzdHJpbmcpOiBSZXN0QWN0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVlc3Q6IGAke2tleX0ke1JFUVVFU1RfU1VGRklYfWAsXG4gICAgICByZXNwb25zZTogYCR7a2V5fSR7UkVTUE9OU0VfU1VGRklYfWAsXG4gICAgICBlcnJvcjogYCR7a2V5fSR7RVJST1JfU1VGRklYfWAsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRCeU5hbWUoYWN0aW9uTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXNbYWN0aW9uTmFtZV07XG4gIH1cblxuICBwdWJsaWMgZ2V0QnlDb2RlKGNvZGU6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmNvZGVzW2NvZGVdO1xuICB9XG5cbiAgcHVibGljIGdldEFjdGlvbnNCeUNvZGUoa2V5OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zW2tleV07XG4gIH1cblxuICBwdWJsaWMgZ2V0QWN0aW9uc0J5TmFtZShhY3Rpb25OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5nZXRCeU5hbWUoYWN0aW9uTmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWN0aW9uc0J5Q29kZShjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY3Rpb25OYW1lRnJvbUNoaWxkKGNoaWxkQWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBhY3Rpb25OYW1lO1xuXG4gICAgT2JqZWN0LmtleXModGhpcy5yZXN0QWN0aW9uc0J5TmFtZSkuZm9yRWFjaCgocmVzdEFjdGlvbikgPT4ge1xuICAgICAgY29uc3QgcmVzdEFjdGlvbnMgPSB0aGlzLnJlc3RBY3Rpb25zQnlOYW1lW3Jlc3RBY3Rpb25dO1xuICAgICAgaWYgKHJlc3RBY3Rpb25zLnJlc3BvbnNlID09PSBjaGlsZEFjdGlvbiB8fCByZXN0QWN0aW9ucy5yZXF1ZXN0ID09PSBjaGlsZEFjdGlvbiB8fCByZXN0QWN0aW9ucy5lcnJvciA9PT0gY2hpbGRBY3Rpb24pIHtcbiAgICAgICAgYWN0aW9uTmFtZSA9IHJlc3RBY3Rpb247XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWN0aW9uTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY3Rpb25Db2RlRnJvbUNoaWxkKGNoaWxkQWN0aW9uOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBhY3Rpb25Db2RlO1xuXG4gICAgT2JqZWN0LmtleXModGhpcy5hY3Rpb25zKS5mb3JFYWNoKChyZXN0QWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCByZXN0QWN0aW9ucyA9IHRoaXMuYWN0aW9uc1tyZXN0QWN0aW9uXTtcbiAgICAgIGlmIChyZXN0QWN0aW9ucy5yZXNwb25zZSA9PT0gY2hpbGRBY3Rpb24gfHwgcmVzdEFjdGlvbnMucmVxdWVzdCA9PT0gY2hpbGRBY3Rpb24gfHwgcmVzdEFjdGlvbnMuZXJyb3IgPT09IGNoaWxkQWN0aW9uKSB7XG4gICAgICAgIGFjdGlvbkNvZGUgPSByZXN0QWN0aW9uO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIE51bWJlcihhY3Rpb25Db2RlKTtcbiAgfVxuXG59XG4iXX0=