@micropermit/client-angular 0.2.11 → 0.2.13

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.
@@ -2,6 +2,7 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
+ import { MicroClient } from './microclient.service';
5
6
  import { LinkField } from './links/linkfield';
6
7
  import { CallableLink, LinkSerializer } from './links/callablelink';
7
8
  import * as _ from 'lodash';
@@ -23,7 +24,23 @@ var MicroObject = /** @class */ (function () {
23
24
  * @return {?}
24
25
  */
25
26
  function (toCopy, client) {
26
- return (/** @type {?} */ (_.cloneDeep(toCopy)));
27
+ return (/** @type {?} */ (_.cloneDeepWith(toCopy, MicroObject.deepCopyCustomizer)));
28
+ };
29
+ /**
30
+ * @private
31
+ * @param {?} value
32
+ * @return {?}
33
+ */
34
+ MicroObject.deepCopyCustomizer = /**
35
+ * @private
36
+ * @param {?} value
37
+ * @return {?}
38
+ */
39
+ function (value) {
40
+ if (value instanceof MicroClient) {
41
+ return value;
42
+ }
43
+ return undefined;
27
44
  };
28
45
  /**
29
46
  * @template T
@@ -276,4 +293,4 @@ if (false) {
276
293
  /** @type {?} */
277
294
  MicroObjectMetadata.prototype.error;
278
295
  }
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9vYmplY3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvbWljcm9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRWxFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQU01QjtJQUFBO1FBR0ksV0FBTSxHQUF3QixTQUFTLENBQUM7SUFnRjVDLENBQUM7Ozs7Ozs7SUE5RWlCLG9CQUFROzs7Ozs7SUFBdEIsVUFBb0QsTUFBUyxFQUFFLE1BQW9CO1FBQy9FLE9BQU8sbUJBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBQSxDQUFDO0lBQ25DLENBQUM7Ozs7Ozs7O0lBRWEsc0JBQVU7Ozs7Ozs7SUFBeEIsVUFBMkMsR0FBVyxFQUFFLE1BQW1CLEVBQUUsU0FBbUI7UUFBbkIsMEJBQUEsRUFBQSxnQkFBbUI7O1lBQ3RGLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs7Ozs7OztJQUVhLHNCQUFVOzs7Ozs7O0lBQXhCLFVBQTJDLEdBQVEsRUFBRSxNQUFtQixFQUFFLFNBQW1CO1FBQW5CLDBCQUFBLEVBQUEsZ0JBQW1CO1FBQ3pGLElBQUcsR0FBRyxLQUFLLElBQUksRUFBQztZQUNaLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7O2dCQUNkLE1BQU0sR0FBUSxHQUFHO1lBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxF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QUssSUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUM5QjtTQUNKO0lBQ0wsQ0FBQzs7Ozs7SUFFTSwyQ0FBYTs7OztJQUFwQixVQUFxQixFQUE0QztRQUM3RCxLQUFLLElBQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDaEM7U0FDSjtJQUNMLENBQUM7SUFHTCwwQkFBQztBQUFELENBQUMsQUE1Q0QsSUE0Q0M7Ozs7SUEzQ0csb0NBQVc7O0lBQ1gsc0NBQWE7O0lBQ2IsMENBQW9COztJQUNwQix1Q0FBeUI7O0lBQ3pCLG9DQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWljcm9DbGllbnR9IGZyb20gJy4vbWljcm9jbGllbnQuc2VydmljZSc7XG5pbXBvcnQge0xpbmtGaWVsZH0gZnJvbSAnLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtDYWxsYWJsZUxpbmssIExpbmtTZXJpYWxpemVyfSBmcm9tICcuL2xpbmtzL2NhbGxhYmxlbGluayc7XG5pbXBvcnQge01pY3JvRXJyb3J9IGZyb20gJy4vZXJyb3IvbWljcm9lcnJvcic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWljcm9PYmplY3Qge1xuICAgIF9fbWV0YTogTWljcm9PYmplY3RNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGNsYXNzIE1pY3JvT2JqZWN0IGltcGxlbWVudHMgTWljcm9PYmplY3Qge1xuICAgIHB1YmxpYyBzdGF0aWMgTUVUQV9LRVkgPSAnX19tZXRhJztcblxuICAgIF9fbWV0YTogTWljcm9PYmplY3RNZXRhZGF0YSA9IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZGVlcENvcHk8VCBleHRlbmRzIG9iamVjdCB8IG9iamVjdFtdPih0b0NvcHk6IFQsIGNsaWVudD86IE1pY3JvQ2xpZW50KTogVCB7XG4gICAgICAgIHJldHVybiA8VD4gXy5jbG9uZURlZXAodG9Db3B5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmc8VCBleHRlbmRzIG9iamVjdD4oc3RyOiBzdHJpbmcsIGNsaWVudDogTWljcm9DbGllbnQsIHByb3RvdHlwZTogVCA9IG51bGwpOiBUIHwgVFtdIHtcbiAgICAgICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShzdHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0KG9iaiwgY2xpZW50LCBwcm90b3R5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbU9iamVjdDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IGFueSwgY2xpZW50OiBNaWNyb0NsaWVudCwgcHJvdG90eXBlOiBUID0gbnVsbCk6IFQgfCBUW10ge1xuICAgICAgICBpZihvYmogPT09IG51bGwpe1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgICAgICBjb25zdCBvYmpBcnI6IFRbXSA9IG9iajtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IG9iakFycltpXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVsZW0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iakFycltpXSA9IDxUPk1pY3JvT2JqZWN0LmZyb21PYmplY3QoZWxlbSwgY2xpZW50LCBwcm90b3R5cGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvYmpBcnI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCAhPT0gTWljcm9PYmplY3QuTUVUQV9LRVkgJiYgb2JqLmhhc093blByb3BlcnR5KGZpZWxkKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gb2JqW2ZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZFZhbHVlIGluc3RhbmNlb2YgT2JqZWN0IHx8IEFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbZmllbGRdID0gTWljcm9PYmplY3QuZnJvbU9iamVjdChmaWVsZFZhbHVlLCBjbGllbnQsIHByb3RvdHlwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNyYyA9IHByb3RvdHlwZSA9PSBudWxsID8gTWljcm9PYmplY3QucHJvdG90eXBlIDogcHJvdG90eXBlO1xuICAgICAgICAgICAgY29uc3QgbWljcm9PYmplY3Q6IE1pY3JvT2JqZWN0ID0gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHNyYyksIG9iaik7XG5cblxuICAgICAgICAgICAgTWljcm9PYmplY3QuYXR0YWNoTWV0YWRhdGFPYmplY3QobWljcm9PYmplY3QsIGNsaWVudCk7XG5cbiAgICAgICAgICAgIHJldHVybiA8VD5taWNyb09iamVjdDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXR0YWNoTWV0YWRhdGFPYmplY3QobWljcm9PYmplY3Q6IE1pY3JvT2JqZWN0LCBjbGllbnQ6IE1pY3JvQ2xpZW50KSB7XG4gICAgICAgIGNvbnN0IHJhd01ldGE6IE1pY3JvT2JqZWN0TWV0YWRhdGEgPSBtaWNyb09iamVjdCAhPSBudWxsID8gbWljcm9PYmplY3RbTWljcm9PYmplY3QuTUVUQV9LRVldIDogbnVsbDtcbiAgICAgICAgaWYgKHJhd01ldGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IGNsaWVudFRvVXNlID0gY2xpZW50O1xuICAgICAgICAgICAgaWYgKHJhd01ldGEucGVybWl0VG9rZW4pIHtcbiAgICAgICAgICAgICAgICBpZiAoY2xpZW50LmdldEVudHJ5UG9pbnQoKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWVudFRvVXNlID0gY2xpZW50LmNyZWF0ZUNoaWxkQ2xpZW50Rm9yRW50cnlQb2ludChtaWNyb09iamVjdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtaWNyb09iamVjdC5fX21ldGEgPSBNaWNyb09iamVjdE1ldGFkYXRhLmZyb21PYmplY3QobWljcm9PYmplY3QuX19tZXRhLCBjbGllbnRUb1VzZSk7XG5cbiAgICAgICAgICAgIE1pY3JvT2JqZWN0LmF0dGFjaExpbmtGaWVsZHMobWljcm9PYmplY3QuX19tZXRhLCBtaWNyb09iamVjdCwgY2xpZW50VG9Vc2UpO1xuICAgICAgICAgICAgTWljcm9PYmplY3QuYXR0YWNoQ2FsbGFibGVMaW5rcyhtaWNyb09iamVjdC5fX21ldGEsIG1pY3JvT2JqZWN0LCBjbGllbnRUb1VzZSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXR0YWNoTGlua0ZpZWxkcyhtZXRhOiBNaWNyb09iamVjdE1ldGFkYXRhLCBtaWNyb09iamVjdDogTWljcm9PYmplY3QsIGNsaWVudDogTWljcm9DbGllbnQpIHtcbiAgICAgICAgbWV0YS5mb3JFYWNoTGluaygobGlua05hbWUsIGxpbmtVcmwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbWljcm9PYmplY3RbbGlua05hbWVdO1xuICAgICAgICAgICAgbWljcm9PYmplY3RbbGlua05hbWVdID0gbmV3IExpbmtGaWVsZChsaW5rVXJsLCBjbGllbnQsIHZhbHVlLCB2YWx1ZSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXR0YWNoQ2FsbGFibGVMaW5rcyhtZXRhOiBNaWNyb09iamVjdE1ldGFkYXRhLCBtaWNyb09iamVjdDogTWljcm9PYmplY3QsIGNsaWVudDogTWljcm9DbGllbnQpIHtcbiAgICAgICAgbWV0YS5mb3JFYWNoQWN0aW9uKChsaW5rTmFtZSwgbGlua1VybCkgPT4ge1xuICAgICAgICAgICAgbWljcm9PYmplY3RbbGlua05hbWVdID0gbmV3IENhbGxhYmxlTGluayhsaW5rVXJsLCBjbGllbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaWNyb09iamVjdE1ldGFkYXRhIHtcbiAgICBsaW5rczogYW55O1xuICAgIGFjdGlvbnM6IGFueTtcbiAgICBwZXJtaXRUb2tlbjogc3RyaW5nO1xuICAgIG5leHRQYWdlOiBMaW5rRmllbGQ8YW55PjtcbiAgICBlcnJvcjogTWljcm9FcnJvcjtcblxuXG4gICAgc3RhdGljIGZyb21PYmplY3Qob2JqOiBvYmplY3QsIGNsaWVudDogTWljcm9DbGllbnQpOiBNaWNyb09iamVjdE1ldGFkYXRhIHtcbiAgICAgICAgY29uc3Qgb2JqTWV0YWRhdGEgPSBPYmplY3QuYXNzaWduKG5ldyBNaWNyb09iamVjdE1ldGFkYXRhKCksIG9iaik7XG5cbiAgICAgICAgaWYgKG9iak1ldGFkYXRhLm5leHRQYWdlICE9IG51bGwpIHtcbiAgICAgICAgICAgIG9iak1ldGFkYXRhLm5leHRQYWdlID0gbmV3IExpbmtGaWVsZCg8YW55Pm9iak1ldGFkYXRhLm5leHRQYWdlLCBjbGllbnQpO1xuICAgICAgICAgICAgb2JqTWV0YWRhdGEubmV4dFBhZ2Uuc2VyaWFsaXplVG8gPSBMaW5rU2VyaWFsaXplci5BU19MSU5LO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iak1ldGFkYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMaW5rVXJsKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlua3Nba2V5XTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzTGluayhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5saW5rc1trZXldICE9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGZvckVhY2hMaW5rKG9wOiAobGlua05hbWU6IHN0cmluZywgbGluazogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgICAgIGZvciAoY29uc3QgbGluayBpbiB0aGlzLmxpbmtzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW5rcy5oYXNPd25Qcm9wZXJ0eShsaW5rKSkge1xuICAgICAgICAgICAgICAgIG9wKGxpbmssIHRoaXMubGlua3NbbGlua10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZvckVhY2hBY3Rpb24ob3A6IChsaW5rTmFtZTogc3RyaW5nLCBsaW5rOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBsaW5rIGluIHRoaXMuYWN0aW9ucykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9ucy5oYXNPd25Qcm9wZXJ0eShsaW5rKSkge1xuICAgICAgICAgICAgICAgIG9wKGxpbmssIHRoaXMuYWN0aW9uc1tsaW5rXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuIl19
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9vYmplY3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvbWljcm9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7QUFNNUI7SUFBQTtRQUdJLFdBQU0sR0FBd0IsU0FBUyxDQUFDO0lBd0Y1QyxDQUFDOzs7Ozs7O0lBdEZpQixvQkFBUTs7Ozs7O0lBQXRCLFVBQW9ELE1BQVMsRUFBRSxNQUFvQjtRQUMvRSxPQUFPLG1CQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFBLENBQUM7SUFDdEUsQ0FBQzs7Ozs7O0lBRWMsOEJBQWtCOzs7OztJQUFqQyxVQUFrQyxLQUFLO1FBQ25DLElBQUksS0FBSyxZQUFZLFdBQVcsRUFBRTtZQUM5QixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Ozs7Ozs7O0lBR2Esc0JBQVU7Ozs7Ozs7SUFBeEIsVUFBMkMsR0FBVyxFQUFFLE1BQW1CLEVBQUUsU0FBbUI7UUFBbkIsMEJBQUEsRUFBQSxnQkFBbUI7O1lBQ3RGLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs7Ozs7OztJQUVhLHNCQUFVOzs7Ozs7O0lBQXhCLFVBQTJDLEdBQVEsRUFBRSxNQUFt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TyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7Ozs7O0lBRU0scUNBQU87Ozs7SUFBZCxVQUFlLEdBQVc7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNuQyxDQUFDOzs7OztJQUVNLHlDQUFXOzs7O0lBQWxCLFVBQW1CLEVBQTRDO1FBQzNELEtBQUssSUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUM5QjtTQUNKO0lBQ0wsQ0FBQzs7Ozs7SUFFTSwyQ0FBYTs7OztJQUFwQixVQUFxQixFQUE0QztRQUM3RCxLQUFLLElBQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDaEM7U0FDSjtJQUNMLENBQUM7SUFHTCwwQkFBQztBQUFELENBQUMsQUE1Q0QsSUE0Q0M7Ozs7SUEzQ0csb0NBQVc7O0lBQ1gsc0NBQWE7O0lBQ2IsMENBQW9COztJQUNwQix1Q0FBeUI7O0lBQ3pCLG9DQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWljcm9DbGllbnR9IGZyb20gJy4vbWljcm9jbGllbnQuc2VydmljZSc7XG5pbXBvcnQge0xpbmtGaWVsZH0gZnJvbSAnLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtDYWxsYWJsZUxpbmssIExpbmtTZXJpYWxpemVyfSBmcm9tICcuL2xpbmtzL2NhbGxhYmxlbGluayc7XG5pbXBvcnQge01pY3JvRXJyb3J9IGZyb20gJy4vZXJyb3IvbWljcm9lcnJvcic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWljcm9PYmplY3Qge1xuICAgIF9fbWV0YTogTWljcm9PYmplY3RNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGNsYXNzIE1pY3JvT2JqZWN0IGltcGxlbWVudHMgTWljcm9PYmplY3Qge1xuICAgIHB1YmxpYyBzdGF0aWMgTUVUQV9LRVkgPSAnX19tZXRhJztcblxuICAgIF9fbWV0YTogTWljcm9PYmplY3RNZXRhZGF0YSA9IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZGVlcENvcHk8VCBleHRlbmRzIG9iamVjdCB8IG9iamVjdFtdPih0b0NvcHk6IFQsIGNsaWVudD86IE1pY3JvQ2xpZW50KTogVCB7XG4gICAgICAgIHJldHVybiA8VD5fLmNsb25lRGVlcFdpdGgodG9Db3B5LCBNaWNyb09iamVjdC5kZWVwQ29weUN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGRlZXBDb3B5Q3VzdG9taXplcih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNaWNyb0NsaWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmc8VCBleHRlbmRzIG9iamVjdD4oc3RyOiBzdHJpbmcsIGNsaWVudDogTWljcm9DbGllbnQsIHByb3RvdHlwZTogVCA9IG51bGwpOiBUIHwgVFtdIHtcbiAgICAgICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShzdHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0KG9iaiwgY2xpZW50LCBwcm90b3R5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbU9iamVjdDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IGFueSwgY2xpZW50OiBNaWNyb0NsaWVudCwgcHJvdG90eXBlOiBUID0gbnVsbCk6IFQgfCBUW10ge1xuICAgICAgICBpZiAob2JqID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIGNvbnN0IG9iakFycjogVFtdID0gb2JqO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmpBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0gb2JqQXJyW2ldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqQXJyW2ldID0gPFQ+TWljcm9PYmplY3QuZnJvbU9iamVjdChlbGVtLCBjbGllbnQsIHByb3RvdHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9iakFycjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkICE9PSBNaWNyb09iamVjdC5NRVRBX0tFWSAmJiBvYmouaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBvYmpbZmllbGRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkVmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgfHwgQXJyYXkuaXNBcnJheShmaWVsZFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialtmaWVsZF0gPSBNaWNyb09iamVjdC5mcm9tT2JqZWN0KGZpZWxkVmFsdWUsIGNsaWVudCwgcHJvdG90eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3JjID0gcHJvdG90eXBlID09IG51bGwgPyBNaWNyb09iamVjdC5wcm90b3R5cGUgOiBwcm90b3R5cGU7XG4gICAgICAgICAgICBjb25zdCBtaWNyb09iamVjdDogTWljcm9PYmplY3QgPSBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoc3JjKSwgb2JqKTtcblxuXG4gICAgICAgICAgICBNaWNyb09iamVjdC5hdHRhY2hNZXRhZGF0YU9iamVjdChtaWNyb09iamVjdCwgY2xpZW50KTtcblxuICAgICAgICAgICAgcmV0dXJuIDxUPm1pY3JvT2JqZWN0O1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhdHRhY2hNZXRhZGF0YU9iamVjdChtaWNyb09iamVjdDogTWljcm9PYmplY3QsIGNsaWVudDogTWljcm9DbGllbnQpIHtcbiAgICAgICAgY29uc3QgcmF3TWV0YTogTWljcm9PYmplY3RNZXRhZGF0YSA9IG1pY3JvT2JqZWN0ICE9IG51bGwgPyBtaWNyb09iamVjdFtNaWNyb09iamVjdC5NRVRBX0tFWV0gOiBudWxsO1xuICAgICAgICBpZiAocmF3TWV0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgY2xpZW50VG9Vc2UgPSBjbGllbnQ7XG4gICAgICAgICAgICBpZiAocmF3TWV0YS5wZXJtaXRUb2tlbikge1xuICAgICAgICAgICAgICAgIGlmIChjbGllbnQuZ2V0RW50cnlQb2ludCgpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50VG9Vc2UgPSBjbGllbnQuY3JlYXRlQ2hpbGRDbGllbnRGb3JFbnRyeVBvaW50KG1pY3JvT2JqZWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1pY3JvT2JqZWN0Ll9fbWV0YSA9IE1pY3JvT2JqZWN0TWV0YWRhdGEuZnJvbU9iamVjdChtaWNyb09iamVjdC5fX21ldGEsIGNsaWVudFRvVXNlKTtcblxuICAgICAgICAgICAgTWljcm9PYmplY3QuYXR0YWNoTGlua0ZpZWxkcyhtaWNyb09iamVjdC5fX21ldGEsIG1pY3JvT2JqZWN0LCBjbGllbnRUb1VzZSk7XG4gICAgICAgICAgICBNaWNyb09iamVjdC5hdHRhY2hDYWxsYWJsZUxpbmtzKG1pY3JvT2JqZWN0Ll9fbWV0YSwgbWljcm9PYmplY3QsIGNsaWVudFRvVXNlKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhdHRhY2hMaW5rRmllbGRzKG1ldGE6IE1pY3JvT2JqZWN0TWV0YWRhdGEsIG1pY3JvT2JqZWN0OiBNaWNyb09iamVjdCwgY2xpZW50OiBNaWNyb0NsaWVudCkge1xuICAgICAgICBtZXRhLmZvckVhY2hMaW5rKChsaW5rTmFtZSwgbGlua1VybCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBtaWNyb09iamVjdFtsaW5rTmFtZV07XG4gICAgICAgICAgICBtaWNyb09iamVjdFtsaW5rTmFtZV0gPSBuZXcgTGlua0ZpZWxkKGxpbmtVcmwsIGNsaWVudCwgdmFsdWUsIHZhbHVlICE9PSB1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhdHRhY2hDYWxsYWJsZUxpbmtzKG1ldGE6IE1pY3JvT2JqZWN0TWV0YWRhdGEsIG1pY3JvT2JqZWN0OiBNaWNyb09iamVjdCwgY2xpZW50OiBNaWNyb0NsaWVudCkge1xuICAgICAgICBtZXRhLmZvckVhY2hBY3Rpb24oKGxpbmtOYW1lLCBsaW5rVXJsKSA9PiB7XG4gICAgICAgICAgICBtaWNyb09iamVjdFtsaW5rTmFtZV0gPSBuZXcgQ2FsbGFibGVMaW5rKGxpbmtVcmwsIGNsaWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pY3JvT2JqZWN0TWV0YWRhdGEge1xuICAgIGxpbmtzOiBhbnk7XG4gICAgYWN0aW9uczogYW55O1xuICAgIHBlcm1pdFRva2VuOiBzdHJpbmc7XG4gICAgbmV4dFBhZ2U6IExpbmtGaWVsZDxhbnk+O1xuICAgIGVycm9yOiBNaWNyb0Vycm9yO1xuXG5cbiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmo6IG9iamVjdCwgY2xpZW50OiBNaWNyb0NsaWVudCk6IE1pY3JvT2JqZWN0TWV0YWRhdGEge1xuICAgICAgICBjb25zdCBvYmpNZXRhZGF0YSA9IE9iamVjdC5hc3NpZ24obmV3IE1pY3JvT2JqZWN0TWV0YWRhdGEoKSwgb2JqKTtcblxuICAgICAgICBpZiAob2JqTWV0YWRhdGEubmV4dFBhZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgb2JqTWV0YWRhdGEubmV4dFBhZ2UgPSBuZXcgTGlua0ZpZWxkKDxhbnk+b2JqTWV0YWRhdGEubmV4dFBhZ2UsIGNsaWVudCk7XG4gICAgICAgICAgICBvYmpNZXRhZGF0YS5uZXh0UGFnZS5zZXJpYWxpemVUbyA9IExpbmtTZXJpYWxpemVyLkFTX0xJTks7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqTWV0YWRhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExpbmtVcmwoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5saW5rc1trZXldO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNMaW5rKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpbmtzW2tleV0gIT0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRWFjaExpbmsob3A6IChsaW5rTmFtZTogc3RyaW5nLCBsaW5rOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBsaW5rIGluIHRoaXMubGlua3MpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxpbmtzLmhhc093blByb3BlcnR5KGxpbmspKSB7XG4gICAgICAgICAgICAgICAgb3AobGluaywgdGhpcy5saW5rc1tsaW5rXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRWFjaEFjdGlvbihvcDogKGxpbmtOYW1lOiBzdHJpbmcsIGxpbms6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgaW4gdGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpb25zLmhhc093blByb3BlcnR5KGxpbmspKSB7XG4gICAgICAgICAgICAgICAgb3AobGluaywgdGhpcy5hY3Rpb25zW2xpbmtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG59XG4iXX0=
@@ -57,4 +57,4 @@ if (false) {
57
57
  */
58
58
  LinkFieldPipe.prototype.asyncPipe;
59
59
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2ZpZWxkLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvcGlwZXMvbGlua2ZpZWxkLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQWdCLElBQUksRUFBYSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFMUM7SUFLSSx1QkFBWSxpQkFBb0M7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Ozs7SUFFRCxtQ0FBVzs7O0lBQVg7UUFDSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Ozs7OztJQUVELGlDQUFTOzs7OztJQUFULFVBQW1ELFNBQXVCO1FBQ3RFLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxTQUFTLFlBQVksU0FBUyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNILG9CQUFvQjtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUM7U0FDdkc7SUFDTCxDQUFDOztnQkF2QkosSUFBSSxTQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDOzs7O2dCQUpFLGlCQUFpQjs7SUE2QnpELG9CQUFDO0NBQUEsQUF6QkQsSUF5QkM7U0F4QlksYUFBYTs7Ozs7O0lBRXRCLGtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlua0ZpZWxkfSBmcm9tICcuLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtQaXBlVHJhbnNmb3JtLCBQaXBlLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4uL21pY3Jvb2JqZWN0JztcbmltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AUGlwZSh7bmFtZTogJ2xpbmtGaWVsZCcsIHB1cmU6IGZhbHNlfSlcbmV4cG9ydCBjbGFzcyBMaW5rRmllbGRQaXBlIGltcGxlbWVudHMgT25EZXN0cm95LCBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHByaXZhdGUgYXN5bmNQaXBlOiBBc3luY1BpcGU7XG5cbiAgICBjb25zdHJ1Y3RvcihjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUgPSBuZXcgQXN5bmNQaXBlKGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm08VCBleHRlbmRzIChNaWNyb09iamVjdCB8IE1pY3JvT2JqZWN0W10pPihsaW5rRmllbGQ6IExpbmtGaWVsZDxUPik6IGFueSB7XG4gICAgICAgIGlmIChsaW5rRmllbGQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmtGaWVsZCBpbnN0YW5jZW9mIExpbmtGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmNQaXBlLnRyYW5zZm9ybShsaW5rRmllbGQuZ2V0T2JzKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcmV0dXJuIGxpbmtGaWVsZDtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuXFwndCB1c2UgdGhlIGxpbmtGaWVsZCBwaXBlIHdpdGggYSB2YWx1ZSB3aGljaCBpc25cXCd0IGFuIGluc3RhbmNlIG9mIExpbmtGaWVsZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2ZpZWxkLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvcGlwZXMvbGlua2ZpZWxkLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQWdCLElBQUksRUFBYSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFMUM7SUFLSSx1QkFBWSxpQkFBb0M7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Ozs7SUFFRCxtQ0FBVzs7O0lBQVg7UUFDSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Ozs7OztJQUVELGlDQUFTOzs7OztJQUFULFVBQXlDLFNBQXVCO1FBQzVELElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxTQUFTLFlBQVksU0FBUyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNILG9CQUFvQjtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUM7U0FDdkc7SUFDTCxDQUFDOztnQkF2QkosSUFBSSxTQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDOzs7O2dCQUpFLGlCQUFpQjs7SUE2QnpELG9CQUFDO0NBQUEsQUF6QkQsSUF5QkM7U0F4QlksYUFBYTs7Ozs7O0lBRXRCLGtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlua0ZpZWxkfSBmcm9tICcuLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtQaXBlVHJhbnNmb3JtLCBQaXBlLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4uL21pY3Jvb2JqZWN0JztcbmltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AUGlwZSh7bmFtZTogJ2xpbmtGaWVsZCcsIHB1cmU6IGZhbHNlfSlcbmV4cG9ydCBjbGFzcyBMaW5rRmllbGRQaXBlIGltcGxlbWVudHMgT25EZXN0cm95LCBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHByaXZhdGUgYXN5bmNQaXBlOiBBc3luY1BpcGU7XG5cbiAgICBjb25zdHJ1Y3RvcihjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUgPSBuZXcgQXN5bmNQaXBlKGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm08VCBleHRlbmRzIChvYmplY3QgfCBvYmplY3RbXSk+KGxpbmtGaWVsZDogTGlua0ZpZWxkPFQ+KTogYW55IHtcbiAgICAgICAgaWYgKGxpbmtGaWVsZCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGlua0ZpZWxkIGluc3RhbmNlb2YgTGlua0ZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hc3luY1BpcGUudHJhbnNmb3JtKGxpbmtGaWVsZC5nZXRPYnMoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyByZXR1cm4gbGlua0ZpZWxkO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5cXCd0IHVzZSB0aGUgbGlua0ZpZWxkIHBpcGUgd2l0aCBhIHZhbHVlIHdoaWNoIGlzblxcJ3QgYW4gaW5zdGFuY2Ugb2YgTGlua0ZpZWxkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
@@ -2,7 +2,7 @@ import { Injectable, Component, Pipe, ChangeDetectorRef, Input, Directive, ViewC
2
2
  import { HttpHeaders, HttpClient, HttpClientModule } from '@angular/common/http';
3
3
  import { ReplaySubject, defer, throwError, timer, of } from 'rxjs';
4
4
  import { take, map, catchError, finalize, switchMap, delay } from 'rxjs/operators';
5
- import { cloneDeep } from 'lodash';
5
+ import { cloneDeepWith } from 'lodash';
6
6
  import { AsyncPipe } from '@angular/common';
7
7
  import { FormGroup, NG_ASYNC_VALIDATORS } from '@angular/forms';
8
8
 
@@ -726,7 +726,18 @@ class MicroObject {
726
726
  * @return {?}
727
727
  */
728
728
  static deepCopy(toCopy, client) {
729
- return (/** @type {?} */ (cloneDeep(toCopy)));
729
+ return (/** @type {?} */ (cloneDeepWith(toCopy, MicroObject.deepCopyCustomizer)));
730
+ }
731
+ /**
732
+ * @private
733
+ * @param {?} value
734
+ * @return {?}
735
+ */
736
+ static deepCopyCustomizer(value) {
737
+ if (value instanceof MicroClient) {
738
+ return value;
739
+ }
740
+ return undefined;
730
741
  }
731
742
  /**
732
743
  * @template T
@@ -1 +1 @@
1
- {"version":3,"file":"micropermit-client-angular.js","sources":["ng://@micropermit/client-angular/lib/paramutils.ts","ng://@micropermit/client-angular/lib/links/callablelink.ts","ng://@micropermit/client-angular/lib/links/linkfield.ts","ng://@micropermit/client-angular/lib/microobject.ts","ng://@micropermit/client-angular/lib/error/microerror.ts","ng://@micropermit/client-angular/lib/microclient.service.ts","ng://@micropermit/client-angular/lib/components/loadingindicator.component.ts","ng://@micropermit/client-angular/lib/pipes/linkfield.pipe.ts","ng://@micropermit/client-angular/lib/components/errorindicator.component.ts","ng://@micropermit/client-angular/lib/directives/linkfield.directive.ts","ng://@micropermit/client-angular/lib/directives/call-link.directive.ts","ng://@micropermit/client-angular/lib/directives/micro-link-validate.directive.ts","ng://@micropermit/client-angular/lib/microclient.module.ts","ng://@micropermit/client-angular/lib/link-field-paging-support.ts","ng://@micropermit/client-angular/lib/links/mock-linkfield.ts"],"sourcesContent":["export class ParamUtils {\n\n private static plusRegex = new RegExp('\\\\+');\n private static slashRegex = new RegExp('/', 'g');\n private static multiEqualRegex = new RegExp('=+$', 'g');\n private static minusRegex = new RegExp('-', 'g');\n private static underscoreRegex = new RegExp('_', 'g');\n\n public static addParam(url: string, key: string, value: string, replaceExisting: boolean = true): string {\n const hasQueryParams = url.indexOf('?') >= 0;\n if (!hasQueryParams) {\n url += '?';\n }\n\n const existingParam: string = ParamUtils.getParam(url, key);\n if (existingParam != null && replaceExisting) {\n url = url.replace(key + '=' + existingParam, key + '=' + value);\n } else {\n if (hasQueryParams) {\n url += '&';\n }\n url += key + '=' + value;\n }\n\n return url;\n }\n\n public static setParams(url: string, params: Object): string {\n const splitted = url.split('?');\n\n let resURL = splitted[0];\n let first = true;\n\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n if (first) {\n resURL += '?';\n first = false;\n }\n\n resURL += key + '=' + params[key];\n }\n }\n return resURL;\n }\n\n public static getParams(url: string): Object {\n const splitted = url.split('?');\n if (splitted.length < 2) {\n return {};\n }\n\n const queryStr = splitted[1];\n const params = {};\n\n const paramsStrs = queryStr.split('&');\n for (const paramStr of paramsStrs) {\n const splittedParamStr = paramStr.split('=', 2);\n const key = splittedParamStr[0];\n\n if (splittedParamStr.length === 2) {\n params[key] = splittedParamStr[1];\n } else {\n params[key] = null;\n }\n }\n return params;\n }\n\n public static base64UrlEncode(toEncode: string): string {\n return btoa(toEncode)\n .replace(ParamUtils.plusRegex, '-')\n .replace(ParamUtils.slashRegex, '_')\n .replace(ParamUtils.multiEqualRegex, '');\n }\n\n public static base64UrlDecode(toDecode: string): string {\n toDecode = (toDecode + '===').slice(0, toDecode.length + (toDecode.length % 4));\n return atob(\n toDecode\n .replace(ParamUtils.minusRegex, '+')\n .replace(ParamUtils.underscoreRegex, '/')\n );\n }\n\n public static needsBase64UrlEncoding(toCheck: any): boolean {\n if (toCheck == null) {\n return false;\n } else {\n return typeof toCheck === 'object';\n }\n }\n\n public static getParam(url: string, name: string, urlDecode: boolean = false): string {\n const paramsQueryIdx = url.indexOf('?');\n url = url.substr(paramsQueryIdx);\n const regExp = (new RegExp('[?&]' + encodeURIComponent(name) + '=([^&]*)'));\n const match = regExp.exec(url);\n if (match) {\n if (urlDecode && match[1]) {\n return this.base64UrlDecode(match[1]);\n } else {\n return match[1];\n }\n } else {\n return null;\n }\n }\n}\n","import {MicroClient} from '../microclient.service';\nimport {Observable} from 'rxjs';\nimport {MicroObject} from '../microobject';\nimport {ParamUtils} from '../paramutils';\n\nexport class CallableLink<T> {\n\n constructor(\n protected link: string,\n protected microClient: MicroClient,\n protected callParams: object = null,\n protected requestOptions: object = null\n ) {\n }\n\n public serializeTo: (link: string, callParams: object, requestOptions: object, value: any, isInitialized: boolean) => any = LinkSerializer.DONT_SERIALIZE;\n\n hasLink(): Boolean {\n return this.link != null;\n }\n\n getLink(): string {\n return this.link;\n }\n\n getQueryParam(key: string, urlDecode: boolean = false) {\n return ParamUtils.getParam(this.link, key, urlDecode);\n }\n\n getSignedParams(): MicroObject | MicroObject[] {\n let params = this.getSignedMicroObjectParam('params');\n if (params == null) {\n params = this.getSignedMicroObjectParam('bParams');\n }\n return params;\n }\n\n getOpenParams(copy: boolean = false): MicroObject | MicroObject[] {\n let params: MicroObject | MicroObject[] = this.getMicroObjectParam('oParams');\n if (params == null) {\n params = this.getMicroObjectParam('bOParams');\n } else {\n if (copy) {\n params = MicroObject.fromString(JSON.stringify(params), this.microClient);\n }\n\n if (this.callParams) {\n params = Object.assign(params, this.callParams);\n }\n }\n return params;\n }\n\n getOptions(): MicroObject {\n let options = this.getMicroObjectParam('options');\n\n if (this.requestOptions) {\n if (options == null) {\n options = new MicroObject();\n }\n options = Object.assign(options, this.requestOptions);\n }\n\n return options;\n }\n\n private getSignedMicroObjectParam(key: string): MicroObject {\n const paramsStr = ParamUtils.getParam(this.link, key, false);\n let params = null;\n if (paramsStr) {\n const splitted = paramsStr.split('.');\n if (splitted.length !== 3) {\n throw new Error('Expected a signed query param to have a JWT like structure');\n }\n params = MicroObject.fromString(atob(splitted[1]), this.microClient);\n }\n return params;\n }\n\n getMicroObjectParam(key: string): MicroObject {\n const paramsStr = ParamUtils.getParam(this.link, key, true);\n let params = null;\n if (paramsStr) {\n params = MicroObject.fromString(paramsStr, this.microClient);\n }\n return params;\n }\n\n call(onNext: (T) => void): Promise<T> {\n return this.callWith(null, null, onNext);\n }\n\n callWith(params: object = null, requestOptions: object = null, onNext: (T) => void): Promise<T> {\n return <Promise<T>>this.callWithObs(params, requestOptions).toPromise().then(onNext);\n }\n\n callWithObs(params: object = null, requestOptions: object = null): Observable<T> {\n if (this.link == null) {\n throw Error('Can\\'t use callWithObs without a provided link');\n }\n if (this.microClient == null) {\n throw Error('Can\\'t use callWithObs without a provided microClient');\n }\n\n let paramsToUse = null;\n if (this.callParams != null) {\n paramsToUse = Object.assign(new MicroObject(), this.callParams);\n }\n if (params) {\n if (paramsToUse == null) {\n paramsToUse = new MicroObject();\n }\n paramsToUse = Object.assign(paramsToUse, params);\n }\n\n let optionsToUse = null;\n if (this.requestOptions != null) {\n optionsToUse = Object.assign(new MicroObject(), this.requestOptions);\n }\n if (requestOptions) {\n if (optionsToUse == null) {\n optionsToUse = new MicroObject();\n }\n optionsToUse = Object.assign(optionsToUse, requestOptions);\n }\n\n return <Observable<T>> this.microClient.load(this.link, paramsToUse, optionsToUse);\n }\n\n copy(): CallableLink<T> {\n return new CallableLink(this.link, this.microClient, this.callParams, this.requestOptions);\n }\n\n withCallParams(callParams: object, requestOptions: object = this.requestOptions) {\n return new CallableLink(this.link, this.microClient, callParams, requestOptions);\n }\n\n toJSON(): any {\n if (this.serializeTo) {\n return this.serializeTo(this.link, this.callParams, this.requestOptions, undefined, undefined);\n } else {\n return undefined;\n }\n }\n}\n\n// @dynamic\nexport class LinkSerializer {\n public static DONT_SERIALIZE = function () {\n return undefined;\n };\n\n public static AS_LINK = function (link: string) {\n return link;\n };\n\n public static AS_VALUE_IF_INITIALIZED = function (link: string, callParams: object, requestOptions: object, value: any, isInitialized: boolean) {\n if (isInitialized) {\n return value;\n } else {\n return undefined;\n }\n };\n}\n","import {defer, Observable, ReplaySubject} from 'rxjs';\nimport {MicroClient, MicroClientLoadError} from '../microclient.service';\nimport {CallableLink, LinkSerializer} from './callablelink';\nimport {map, take} from 'rxjs/operators';\n\nexport class LinkField<T> extends CallableLink<T> {\n private value: T;\n private initialized = false;\n private _getPromise: Promise<T>;\n\n private valueSubj: ReplaySubject<T>;\n\n public serializeTo: (link: string, callParams: object, requestOptions: object, value: T, isInitialized: boolean) => any = LinkSerializer.AS_VALUE_IF_INITIALIZED;\n\n constructor(\n link: string,\n microClient: MicroClient,\n initialValue: T = null,\n initialized: boolean = false,\n callParams: object = null,\n requestOptions: object = null\n ) {\n super(link, microClient, callParams, requestOptions);\n if (initialized) {\n this.set(initialValue);\n }\n }\n\n static from<T extends (object | object[])>(value: T): LinkField<T> {\n return new LinkField(null, null, value, true);\n }\n\n get(callback?: (T) => void): Promise<T> {\n if (callback) {\n this.getObs().subscribe(callback);\n return null;\n }\n return this.getPromise();\n }\n\n getPromise(): Promise<T> {\n if (!this._getPromise) {\n this._getPromise = this.getObs().toPromise();\n }\n return this._getPromise;\n }\n\n private intervalId = null;\n private isRefreshing = false;\n\n refresh(interval?: number, errorHandler?: (error: MicroClientLoadError) => void) {\n if (interval) {\n this.stopRefresh();\n }\n let resCb = () => {\n this.isRefreshing = false;\n };\n this.isRefreshing = true;\n this.initWithObs().subscribe(resCb, (error: MicroClientLoadError) => {\n resCb();\n if (errorHandler) {\n errorHandler(error);\n }\n }, resCb);\n\n if (interval) {\n this.intervalId = setInterval(() => {\n if (!this.isRefreshing) {\n this.isRefreshing = true;\n this.initWithObs().subscribe(resCb, (error: MicroClientLoadError) => {\n resCb();\n if (errorHandler) {\n errorHandler(error);\n }\n }, resCb);\n }\n }, interval);\n }\n }\n\n stopRefresh() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n }\n\n listenObs(): Observable<T> {\n if (this.valueSubj) {\n return this.valueSubj;\n } else {\n this.valueSubj = new ReplaySubject<T>(1);\n return defer(() => {\n this.initWithObs(null, null).subscribe();\n return this.valueSubj;\n });\n }\n }\n\n getObs(): Observable<T> {\n return this.listenObs().pipe(\n take(1)\n );\n }\n\n set(value: T): T {\n const oldValue = this.value;\n this.value = value;\n this.initialized = true;\n if (!this.valueSubj) {\n this.valueSubj = new ReplaySubject<T>(1);\n }\n this.valueSubj.next(value);\n this._getPromise = null;\n\n return oldValue;\n }\n\n isInitialized(): boolean {\n return this.initialized;\n }\n\n uninitialize() {\n this.value = null;\n this.initialized = false;\n this.valueSubj = null;\n this._getPromise = null;\n }\n\n getInitializedValue(): T {\n if (!this.isInitialized()) {\n throw new Error('Can\\'t get the intialized value for a LinkField that hasn\\'t been initialized');\n }\n return this.value;\n }\n\n initWith(parms: object = null, requestOptions: object = null, callback: (T) => void) {\n this.initWithObs(parms, requestOptions).subscribe(callback);\n }\n\n initWithObs(params: object = null, requestOptions: object = null): Observable<T> {\n return this.callWithObs(params, requestOptions).pipe(\n map((value) => {\n this.set(<T>value);\n return value;\n })\n );\n }\n\n withCallParams(callParams: object, requestOptions: object = this.requestOptions): LinkField<T> {\n return new LinkField(this.link, this.microClient, this.value, this.initialized, callParams, requestOptions);\n }\n\n copy(withValue?: T): LinkField<T> {\n if (withValue === undefined) {\n return new LinkField(this.link, this.microClient, this.value, this.initialized, this.callParams, this.requestOptions);\n } else {\n return new LinkField(this.link, this.microClient, withValue, true, this.callParams, this.requestOptions);\n }\n }\n\n toJSON(): any {\n if (this.serializeTo) {\n return this.serializeTo(this.link, this.callParams, this.requestOptions, this.value, this.isInitialized());\n } else {\n return undefined;\n }\n }\n}\n\n","import {MicroClient} from './microclient.service';\nimport {LinkField} from './links/linkfield';\nimport {CallableLink, LinkSerializer} from './links/callablelink';\nimport {MicroError} from './error/microerror';\nimport * as _ from 'lodash';\n\nexport interface MicroObject {\n __meta: MicroObjectMetadata;\n}\n\nexport class MicroObject implements MicroObject {\n public static META_KEY = '__meta';\n\n __meta: MicroObjectMetadata = undefined;\n\n public static deepCopy<T extends object | object[]>(toCopy: T, client?: MicroClient): T {\n return <T> _.cloneDeep(toCopy);\n }\n\n public static fromString<T extends object>(str: string, client: MicroClient, prototype: T = null): T | T[] {\n const obj = JSON.parse(str);\n return this.fromObject(obj, client, prototype);\n }\n\n public static fromObject<T extends object>(obj: any, client: MicroClient, prototype: T = null): T | T[] {\n if(obj === null){\n return null;\n }\n\n if (Array.isArray(obj)) {\n const objArr: T[] = obj;\n for (let i = 0; i < objArr.length; i++) {\n const elem = objArr[i];\n if (typeof elem === 'object') {\n objArr[i] = <T>MicroObject.fromObject(elem, client, prototype);\n }\n }\n return objArr;\n } else {\n for (const field in obj) {\n if (field !== MicroObject.META_KEY && obj.hasOwnProperty(field)) {\n const fieldValue = obj[field];\n if (fieldValue) {\n if (fieldValue instanceof Object || Array.isArray(fieldValue)) {\n obj[field] = MicroObject.fromObject(fieldValue, client, prototype);\n }\n }\n }\n }\n\n const src = prototype == null ? MicroObject.prototype : prototype;\n const microObject: MicroObject = Object.assign(Object.create(src), obj);\n\n\n MicroObject.attachMetadataObject(microObject, client);\n\n return <T>microObject;\n }\n\n }\n\n private static attachMetadataObject(microObject: MicroObject, client: MicroClient) {\n const rawMeta: MicroObjectMetadata = microObject != null ? microObject[MicroObject.META_KEY] : null;\n if (rawMeta != null) {\n let clientToUse = client;\n if (rawMeta.permitToken) {\n if (client.getEntryPoint() != null) {\n clientToUse = client.createChildClientForEntryPoint(microObject);\n }\n }\n\n microObject.__meta = MicroObjectMetadata.fromObject(microObject.__meta, clientToUse);\n\n MicroObject.attachLinkFields(microObject.__meta, microObject, clientToUse);\n MicroObject.attachCallableLinks(microObject.__meta, microObject, clientToUse);\n\n } else {\n return null;\n }\n }\n\n private static attachLinkFields(meta: MicroObjectMetadata, microObject: MicroObject, client: MicroClient) {\n meta.forEachLink((linkName, linkUrl) => {\n const value = microObject[linkName];\n microObject[linkName] = new LinkField(linkUrl, client, value, value !== undefined);\n });\n }\n\n private static attachCallableLinks(meta: MicroObjectMetadata, microObject: MicroObject, client: MicroClient) {\n meta.forEachAction((linkName, linkUrl) => {\n microObject[linkName] = new CallableLink(linkUrl, client);\n });\n }\n}\n\nexport class MicroObjectMetadata {\n links: any;\n actions: any;\n permitToken: string;\n nextPage: LinkField<any>;\n error: MicroError;\n\n\n static fromObject(obj: object, client: MicroClient): MicroObjectMetadata {\n const objMetadata = Object.assign(new MicroObjectMetadata(), obj);\n\n if (objMetadata.nextPage != null) {\n objMetadata.nextPage = new LinkField(<any>objMetadata.nextPage, client);\n objMetadata.nextPage.serializeTo = LinkSerializer.AS_LINK;\n }\n\n return objMetadata;\n }\n\n public getLinkUrl(key: string): string {\n return this.links[key];\n }\n\n public hasLink(key: string): boolean {\n return this.links[key] != null;\n }\n\n public forEachLink(op: (linkName: string, link: string) => void) {\n for (const link in this.links) {\n if (this.links.hasOwnProperty(link)) {\n op(link, this.links[link]);\n }\n }\n }\n\n public forEachAction(op: (linkName: string, link: string) => void) {\n for (const link in this.actions) {\n if (this.actions.hasOwnProperty(link)) {\n op(link, this.actions[link]);\n }\n }\n }\n\n\n}\n","export class MicroError {\n timestamp: number;\n errorMessage: string;\n atService: string;\n atEndpoint: string;\n instanceID: string;\n httpEquivCode: number;\n cause: MicroError;\n errorID: string;\n errorType: Array<String>;\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClient, HttpErrorResponse, HttpHeaders} from '@angular/common/http';\nimport {MicroObject} from './microobject';\nimport {Observable, ReplaySubject, Subject, throwError} from 'rxjs';\nimport {catchError, finalize, map, take, shareReplay} from 'rxjs/operators';\nimport {ParamUtils} from './paramutils';\nimport {MicroError} from './error/microerror';\n\n@Injectable()\nexport class MicroClient {\n\n private authHeader: string;\n private permitToken: string;\n private entryPoint: MicroObject;\n\n private entryPointSubject: ReplaySubject<MicroObject> = new ReplaySubject<MicroObject>();\n\n private urlRewriter: (string) => string;\n private defaultErrorHandler: (httpError: HttpErrorResponse, microError: MicroObject) => void;\n public usePost = true;\n\n public sendAsPermitTokenHeader = true;\n\n constructor(private httpClient: HttpClient) {\n\n }\n\n public setSendAsPermitTokenHeader(sendAsPermitTokenHeader: boolean) {\n this.sendAsPermitTokenHeader = sendAsPermitTokenHeader;\n }\n\n public setAuthToken(token: string) {\n this.authHeader = 'Bearer ' + token;\n this.permitToken = token;\n }\n\n public setAuthHeader(authHeader: string) {\n this.authHeader = authHeader;\n }\n\n public getEntryPoint(): any {\n return this.entryPoint;\n }\n\n public waitForEntryPoint(cb?: (entryPoint: any) => void): Promise<any> {\n if (cb != null) {\n this.entryPointSubject.subscribe(cb);\n return null;\n }\n return this.entryPointSubject.toPromise();\n }\n\n public copyAuthAndEntrypointOf(other: MicroClient) {\n this.authHeader = other.authHeader;\n this.permitToken = other.permitToken;\n this.entryPoint = other.entryPoint;\n }\n\n public setEntryPoint<T extends MicroObject>(entryPoint: any) {\n if (entryPoint == null) {\n this.authHeader = null;\n this.entryPoint = null;\n this.permitToken = null;\n } else {\n this.entryPoint = entryPoint;\n if (this.entryPoint.__meta && this.entryPoint.__meta.permitToken) {\n this.setAuthToken(this.entryPoint.__meta.permitToken);\n } else {\n throw Error('Expected the entryPoint to contain a \"permitToken\" within the \"__meta\" field');\n }\n this.entryPointSubject.next(entryPoint);\n }\n }\n\n public setDefaultErrorHandler(handler: (httpError: HttpErrorResponse, microError: MicroObject) => void) {\n this.defaultErrorHandler = handler;\n }\n\n public handleError(httpErr: HttpErrorResponse) {\n if (this.defaultErrorHandler) {\n const microError = MicroClient.toMicroError(httpErr);\n if (microError) {\n const microResultObj: MicroObject = <MicroObject>MicroObject.fromObject(httpErr.error, this);\n this.defaultErrorHandler(httpErr, microResultObj);\n } else {\n this.defaultErrorHandler(httpErr, null);\n }\n }\n }\n\n public ignite<T>(\n url: string,\n username: String = null,\n password: String = null,\n headers: object = {}\n ): Observable<T> {\n if (this.urlRewriter) {\n url = this.urlRewriter(url);\n }\n\n let requestHeaders = new HttpHeaders();\n for (const headerKey in headers) {\n if (headers.hasOwnProperty(headerKey)) {\n requestHeaders = requestHeaders.set(headerKey, headers[headerKey]);\n }\n }\n\n if (username != null || password != null) {\n requestHeaders = requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n return this.httpClient.get(url, {\n headers: requestHeaders\n }).pipe(\n map(val => {\n const entryPoint = MicroObject.fromObject(val, this);\n this.setEntryPoint(entryPoint);\n return entryPoint as T;\n }),\n this.catchAndHandleError()\n );\n }\n\n public load<T>(\n url: string,\n params?: object,\n requestOptions?: object\n ): Observable<T> {\n let requestHeaders = new HttpHeaders();\n if (this.authHeader) {\n requestHeaders = requestHeaders.set('Authorization', this.authHeader);\n\n if (this.sendAsPermitTokenHeader) {\n requestHeaders = requestHeaders.set('MicroPermitToken', this.permitToken);\n }\n }\n\n let oParams = params;\n if (params != null || this.usePost) {\n const existingParamsStr = ParamUtils.getParam(url, 'oParams', true);\n let existingParams;\n if (existingParamsStr) {\n existingParams = JSON.parse(existingParamsStr);\n } else {\n existingParams = {};\n }\n oParams = Object.assign(existingParams, params);\n }\n\n let options = requestOptions;\n if (requestOptions != null || this.usePost) {\n const prevOptionsStr = ParamUtils.getParam(url, 'options', true);\n if (prevOptionsStr) {\n options = JSON.parse(prevOptionsStr);\n } else {\n options = {};\n }\n\n options = Object.assign(options, requestOptions);\n }\n\n const queryParams = ParamUtils.getParams(url);\n\n let httpObs = null;\n if (this.usePost) {\n\n let bOParams;\n const encBOParams = queryParams['bOParams'];\n if (encBOParams) {\n bOParams = JSON.parse(ParamUtils.base64UrlDecode(encBOParams));\n }\n const body = {\n params: queryParams['params'],\n oParams: oParams,\n bParams: queryParams['bParams'],\n bOParams: bOParams,\n options: options,\n };\n\n delete queryParams['params'];\n delete queryParams['oParams'];\n delete queryParams['bParams'];\n delete queryParams['bOParams'];\n delete queryParams['options'];\n\n url = ParamUtils.setParams(url, queryParams);\n\n if (this.urlRewriter) {\n url = this.urlRewriter(url);\n }\n\n httpObs = this.httpClient.post(url, body, {\n headers: requestHeaders\n });\n } else {\n if (oParams) {\n queryParams['oParams'] = ParamUtils.base64UrlEncode(JSON.stringify(oParams));\n }\n\n if (options) {\n queryParams['options'] = ParamUtils.base64UrlEncode(JSON.stringify(options));\n }\n url = ParamUtils.setParams(url, queryParams);\n\n if (this.urlRewriter) {\n url = this.urlRewriter(url);\n }\n\n httpObs = this.httpClient.get(url, {\n headers: requestHeaders\n });\n }\n\n httpObs = httpObs.pipe(\n map(val => {\n return MicroObject.fromObject(val, this);\n }),\n this.catchAndHandleError()\n );\n\n return httpObs;\n }\n\n private catchAndHandleError<T>(): ((source: Observable<T>) => Observable<T>) {\n return (source: Observable<T>) => {\n return source.pipe(\n catchError(err => {\n let loadError = new MicroClientLoadError(err, (errToHandle) => {\n this.handleError(errToHandle);\n });\n return throwError(loadError).pipe(\n finalize(() => {\n if (!loadError.shouldPreventDefault()) {\n loadError.handleDefault();\n }\n })\n );\n })\n );\n };\n }\n\n public createChildClientForEntryPoint(entryPoint: MicroObject): MicroClient {\n if (entryPoint.__meta && entryPoint.__meta.permitToken) {\n const childClient: MicroClient = Object.create(this, {\n entryPoint: {\n configurable: true,\n enumerable: true,\n writable: true\n },\n authHeader: {\n configurable: true,\n enumerable: true,\n writable: true\n },\n permitToken: {\n configurable: true,\n enumerable: true,\n writable: true\n }\n });\n childClient.setEntryPoint(entryPoint);\n return childClient;\n } else {\n throw new Error('The supplied value can\\'t be used to construct a child MicroClient because it doesn\\'t contain metadata with a permitToken ');\n }\n }\n\n public setURLRewriter(rewriter: (string) => string) {\n this.urlRewriter = rewriter;\n }\n\n public static toMicroError(httpResponse: HttpErrorResponse): MicroError {\n const res = httpResponse.error;\n if (res && res.__meta && res.__meta.error) {\n return Object.assign(new MicroError(), res.__meta.error);\n }\n return null;\n }\n\n private static staticContentRegExp = new RegExp('[a-zA-Z0-9]://.*(:[0-9]+)?(/.*)*/static(/.*(\\\\?.*)?(#.*)?)?');\n\n public static guessMicroComponentBaseURL(): string {\n const href = window.location.href;\n\n // Last URL-Segement is static\n if (MicroClient.staticContentRegExp.test(href)) {\n return href.replace(new RegExp('/static/.*'), '')\n .replace(new RegExp('/#/.*'), '');\n } else {\n if (window.location.protocol.startsWith('file')) {\n return 'http://localhost:8080';\n } else {\n return window.location.protocol + '//' + window.location.hostname + ':8080';\n }\n }\n }\n\n public static guessMicroComponentAuthorizeURL(): string {\n return this.guessMicroComponentBaseURL() + '/authorize';\n }\n}\n\nexport class MicroClientLoadError {\n private handled = false;\n private doPreventDefault = false;\n\n constructor(private error: any, private defaultHandler: (err: any) => void) {\n\n }\n\n public handleDefault() {\n if (this.defaultHandler) {\n this.defaultHandler(this.error);\n this.handled = true;\n }\n }\n\n public handleError(handler: (error: any) => void) {\n handler(this.error);\n this.handled = true;\n }\n\n public isHandled(): boolean {\n return this.handled;\n }\n\n public shouldPreventDefault(): boolean {\n return this.doPreventDefault;\n }\n\n public preventDefault(): void {\n this.doPreventDefault = true;\n }\n\n public hasDefaultHandler(): boolean {\n return this.defaultHandler != null;\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'mc-loadingindicator',\n template: `\n <div id=\"container\">\n <div id=\"bar\"></div>\n </div>\n `,\n styles: [`\n #container {\n display: block;\n overflow: hidden;\n width: 100%;\n height: 5px;\n -webkit-transform: translate(0, 0) scale(1, 1);\n transform: translate(0, 0) scale(1, 1);\n background-color: #aad1f9;\n }\n #container #bar {\n transition: all .2s linear;\n -webkit-animation: query 0.8s infinite cubic-bezier(0.39, 0.575, 0.565, 1);\n animation: query 0.8s infinite cubic-bezier(0.39, 0.575, 0.565, 1);\n transition: -webkit-transform .2s linear;\n transition: transform .2s linear;\n background-color: #106cc8;\n width: 100%;\n height: 5px;\n }\n @keyframes query {\n 0% {\n opacity: 1;\n transform: translateX(35%) scale(0.3, 1);\n }\n 100% {\n opacity: 0;\n transform: translateX(-50%) scale(0, 1);\n }\n }\n `]\n})\nexport class MicroClientLoadingIndicatorComponent { }\n","import {LinkField} from '../links/linkfield';\nimport {PipeTransform, Pipe, OnDestroy, ChangeDetectorRef} from '@angular/core';\nimport {MicroObject} from '../microobject';\nimport {AsyncPipe} from '@angular/common';\n\n@Pipe({name: 'linkField', pure: false})\nexport class LinkFieldPipe implements OnDestroy, PipeTransform {\n\n private asyncPipe: AsyncPipe;\n\n constructor(changeDetectorRef: ChangeDetectorRef) {\n this.asyncPipe = new AsyncPipe(changeDetectorRef);\n }\n\n ngOnDestroy(): void {\n this.asyncPipe.ngOnDestroy();\n }\n\n transform<T extends (MicroObject | MicroObject[])>(linkField: LinkField<T>): any {\n if (linkField == null) {\n return null;\n }\n if (linkField instanceof LinkField) {\n return this.asyncPipe.transform(linkField.getObs());\n } else {\n // return linkField;\n throw new Error('Can\\'t use the linkField pipe with a value which isn\\'t an instance of LinkField');\n }\n }\n\n}\n","import {Component, Input} from '@angular/core';\nimport {MicroClientLoadError} from '../microclient.service';\n\n@Component({\n selector: 'mc-errorindicator',\n template: `\n <div class=\"blinking-error\" [class.clickable]=\"error.hasDefaultHandler()\" (click)=\"onClick()\"></div>\n `,\n styles: [`\n .blinking-error {\n background-image: linear-gradient(to right, tomato 0%, darkred 50%, tomato 100%);\n animation: blinkingText 0.5s 1;\n height: 5px;\n }\n\n .blinking-error.clickable {\n cursor: pointer;\n }\n\n @keyframes blinkingText {\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n `]\n})\nexport class MicroClientErrorIndicatorComponent {\n @Input()\n error: MicroClientLoadError;\n\n onClick() {\n this.error.handleDefault();\n }\n}\n","import {\n Directive,\n Input,\n TemplateRef,\n ViewContainerRef,\n ComponentFactoryResolver,\n ComponentFactory,\n DoCheck,\n OnDestroy, ChangeDetectorRef, Output, EventEmitter\n} from '@angular/core';\nimport {LinkField} from '../links/linkfield';\nimport {MicroObject} from '../microobject';\nimport {Observable, Subscription} from 'rxjs';\nimport {MicroClientLoadingIndicatorComponent} from '../components/loadingindicator.component';\nimport {MicroClientErrorIndicatorComponent} from '../components/errorindicator.component';\nimport {finalize} from 'rxjs/operators';\nimport {MicroClientLoadError} from '../microclient.service';\n\n@Directive({\n selector: '[linkField][linkFieldFrom]'\n})\nexport class LinkFieldDirective<T> implements DoCheck, OnDestroy {\n\n private _from: LinkField<T> | T;\n private _loadingTemplate: TemplateRef<any>;\n private _errorTemplate: TemplateRef<any>;\n private _defaultLoadingComponent: ComponentFactory<MicroClientLoadingIndicatorComponent>;\n private _defaultErrorComponent: ComponentFactory<MicroClientErrorIndicatorComponent>;\n\n private isDirty = true;\n private isLoading = false;\n private loadedResult: T = null;\n private hasResult = false;\n\n private lastObs: Observable<T>;\n private subscription: Subscription = null;\n\n private currentContext: LinkFieldContext<T>;\n\n constructor(\n private _viewContainer: ViewContainerRef,\n private _template: TemplateRef<LinkFieldContext<T>>,\n private componentResolver: ComponentFactoryResolver,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this._defaultLoadingComponent = componentResolver.resolveComponentFactory(MicroClientLoadingIndicatorComponent);\n this._defaultErrorComponent = componentResolver.resolveComponentFactory(MicroClientErrorIndicatorComponent);\n }\n\n @Input()\n set linkFieldFrom(from: LinkField<T>) {\n this._from = from;\n this.clear();\n this.load();\n }\n\n @Input()\n set linkFieldLoadingTemplate(loadingTemplate: TemplateRef<any>) {\n if (loadingTemplate) {\n this._loadingTemplate = loadingTemplate;\n }\n this.updateIfDirty(true);\n }\n\n @Input()\n set linkFieldErrorTemplate(errorTemplate: TemplateRef<any>) {\n if (errorTemplate) {\n this._errorTemplate = errorTemplate;\n }\n this.updateIfDirty(true);\n }\n\n @Input()\n set linkFieldTemplate(value: TemplateRef<LinkFieldContext<T>>) {\n if (value) {\n this._template = value;\n }\n }\n\n @Input()\n linkFieldDefaultErrorHandling = false;\n\n @Input()\n linkFieldValueChange: (T) => void;\n\n private load() {\n if (this._from) {\n if (this._from instanceof LinkField) {\n this.setLoading(true);\n this.lastObs = this._from.listenObs();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.subscription = this.lastObs.pipe(\n finalize(() => {\n this.setLoading(false);\n })\n ).subscribe((loadedResult: T) => {\n this.setLoadedResult(loadedResult);\n if (this.linkFieldValueChange) {\n this.linkFieldValueChange(loadedResult);\n }\n }, (loadError: MicroClientLoadError) => {\n if (!this.linkFieldDefaultErrorHandling) {\n loadError.preventDefault();\n }\n this.setError(loadError);\n });\n } else {\n this.setLoadedResult(this._from);\n // this.setLoadedResult(this._from);\n // throw new Error('Can\\'t use the linkField directive with a from value which isn\\'t an instance of LinkField');\n }\n }\n }\n\n\n ngDoCheck() {\n this.updateIfDirty();\n if (this._from) {\n if (this._from instanceof LinkField && this.lastObs !== this._from.listenObs()) {\n this.load();\n }\n }\n }\n\n ngOnDestroy() {\n this.clear();\n }\n\n private setError(error: MicroClientLoadError) {\n this._viewContainer.remove();\n if (this._errorTemplate) {\n this._viewContainer.createEmbeddedView(this._errorTemplate, {\n $implicit: error\n });\n } else {\n let errorComponentInstance = this._viewContainer.createComponent(this._defaultErrorComponent);\n errorComponentInstance.instance['error'] = error;\n }\n }\n\n\n private setLoading(loading: boolean) {\n this.isLoading = loading;\n if (this.isLoading) {\n if (this._loadingTemplate) {\n this._viewContainer.remove();\n this._viewContainer.createEmbeddedView(this._loadingTemplate);\n } else {\n this._viewContainer.remove();\n this._viewContainer.createComponent(this._defaultLoadingComponent);\n }\n }\n }\n\n private setLoadedResult(result: T) {\n this.hasResult = true;\n this.loadedResult = result;\n if (this.currentContext == null) {\n this.currentContext = new LinkFieldContext<T>(result);\n this.isDirty = true;\n } else {\n this.currentContext.$implicit = result;\n this.changeDetectorRef.markForCheck();\n }\n if (!this._viewContainer || !this._template) {\n this.isDirty = true;\n } else {\n if (this.isDirty) {\n this._viewContainer.remove();\n this._viewContainer.createEmbeddedView(this._template, this.currentContext);\n }\n }\n }\n\n private updateIfDirty(ignoreDirty: boolean = false) {\n if ((this.isDirty || ignoreDirty) && this._loadingTemplate && this._from && this._template && this._viewContainer) {\n if (this.hasResult) {\n this.setLoadedResult(this.loadedResult);\n }\n this.isDirty = false;\n }\n }\n\n private clear() {\n this.hasResult = false;\n this.loadedResult = null;\n this.isDirty = false;\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = null;\n }\n this.lastObs = null;\n this.currentContext = null;\n }\n}\n\nexport class LinkFieldContext<T> {\n\n constructor(public $implicit: T) {\n }\n}\n","import {\n ComponentFactory,\n ComponentFactoryResolver,\n Directive, ElementRef, EmbeddedViewRef,\n EventEmitter, HostListener,\n Input, OnDestroy, OnInit,\n Output, Renderer2,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport {MicroObject} from '../microobject';\nimport {CallableLink} from '../links/callablelink';\nimport {MicroError} from '../error/microerror';\n\n@Directive({\n selector: '[callLink]'\n})\nexport class CallLinkDirective {\n @Input()\n callLink: CallableLink<MicroObject | MicroObject[]>;\n\n @Output()\n callStatusChange: EventEmitter<CallStatus> = new EventEmitter();\n\n @Output()\n callSucess: EventEmitter<MicroObject | MicroObject[]> = new EventEmitter();\n\n @Output()\n callFinish: EventEmitter<void> = new EventEmitter();\n\n @Output()\n callError: EventEmitter<MicroError> = new EventEmitter();\n\n @Output()\n callStart: EventEmitter<void> = new EventEmitter();\n\n @Input()\n callOptions: object;\n\n @Input()\n callParameters: object;\n\n @HostListener('click')\n onClick() {\n this.callLink.callWithObs(this.callParameters, this.callOptions).subscribe((response) => {\n this.callSucess.emit(response);\n this.callStatusChange.emit(new CallStatus(this.callLink, CallState.SUCCESS, response, null));\n }, (error) => {\n this.callError.emit(error);\n this.callStatusChange.emit(new CallStatus(this.callLink, CallState.ERROR, null, error));\n }, () => {\n this.callFinish.emit();\n });\n this.callStatusChange.emit(new CallStatus(this.callLink, CallState.CALLING, null, null));\n }\n}\n\nexport class CallStatus {\n constructor(\n public link: CallableLink<MicroObject | MicroObject[]>,\n public state: CallState,\n public response: MicroObject | MicroObject[],\n public error: MicroError\n ) {\n }\n}\n\nexport enum CallState {\n CALLING,\n SUCCESS,\n ERROR\n}\n","import {Directive, forwardRef, Input} from '@angular/core';\nimport {\n AbstractControl,\n FormGroup,\n NG_ASYNC_VALIDATORS,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {Observable, timer} from 'rxjs';\nimport {map, switchMap} from 'rxjs/operators';\nimport {CallableLink} from '../links/callablelink';\n\n@Directive({\n selector: '[microLinkValidate]',\n providers: [\n {\n provide: NG_ASYNC_VALIDATORS,\n useExisting: forwardRef(() => MicroLinkValidateDirective),\n multi: true\n }\n ],\n exportAs: 'microValidator'\n})\nexport class MicroLinkValidateDirective implements Validator {\n\n private UNSET = \"\"\n\n @Input()\n microLinkValidate: CallableLink<any>\n\n @Input()\n microLinkValidateField: string = null\n\n @Input()\n microLinkValidateValue: any = this.UNSET\n\n @Input()\n microLinkValidateDebounce = 500;\n\n public result:any;\n\n\n validate(control: AbstractControl): Observable<ValidationErrors | null> {\n return timer(this.microLinkValidateDebounce).pipe(\n switchMap(() => {\n let validateValue = this.microLinkValidateValue\n if (validateValue === this.UNSET) {\n validateValue = control.value\n }\n\n let obj = {}\n if (this.microLinkValidateField) {\n obj[this.microLinkValidateField] = validateValue\n } else {\n obj = validateValue\n }\n\n return this.microLinkValidate.callWithObs(obj, null).pipe(\n map(validationRes => {\n let hasErrors = false\n if (this.microLinkValidateField) {\n if (validationRes[this.microLinkValidateField] != null) {\n hasErrors = true\n }\n } else {\n for (let key in validationRes) {\n if (validationRes[key] != null) {\n hasErrors = true\n }\n }\n }\n if (hasErrors) {\n this.result = validationRes\n return {\n validateMicroLink: this.result\n }\n\n } else {\n this.result = null\n return null\n }\n })\n )\n })\n )\n }\n\n getControlName(control: AbstractControl) {\n let controlName = null;\n let parent = control.parent;\n\n // only such parent, which is FormGroup, has a dictionary\n // with control-names as a key and a form-control as a value\n if (parent instanceof FormGroup) {\n // now we will iterate those keys (i.e. names of controls)\n Object.keys(parent.controls).forEach((name) => {\n // and compare the passed control and\n // a child control of a parent - with provided name (we iterate them all)\n if (control === parent.controls[name]) {\n // both are same: control passed to Validator\n // and this child - are the same references\n controlName = name;\n }\n });\n }\n // we either found a name or simply return null\n return controlName;\n }\n\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {MicroClientLoadingIndicatorComponent} from './components/loadingindicator.component';\nimport {LinkFieldPipe} from './pipes/linkfield.pipe';\nimport {LinkFieldDirective} from './directives/linkfield.directive';\nimport {MicroClient} from './microclient.service';\nimport {HttpClientModule} from '@angular/common/http';\nimport {CallLinkDirective} from './directives/call-link.directive';\nimport {MicroClientErrorIndicatorComponent} from './components/errorindicator.component';\nimport {MicroLinkValidateDirective} from './directives/micro-link-validate.directive';\n\n@NgModule({\n entryComponents: [\n MicroClientLoadingIndicatorComponent,\n MicroClientErrorIndicatorComponent\n ],\n imports: [\n HttpClientModule\n ],\n declarations: [\n LinkFieldPipe,\n LinkFieldDirective,\n CallLinkDirective,\n MicroClientLoadingIndicatorComponent,\n MicroClientErrorIndicatorComponent,\n MicroLinkValidateDirective\n ],\n exports: [\n LinkFieldPipe,\n LinkFieldDirective,\n CallLinkDirective,\n MicroClientErrorIndicatorComponent,\n MicroClientLoadingIndicatorComponent,\n MicroLinkValidateDirective\n ]\n})\nexport class MicroClientModule {\n static forClientRoot(): ModuleWithProviders<MicroClientModule> {\n return {\n ngModule: MicroClientModule,\n providers: [\n MicroClient\n ]\n };\n }\n}\n","import {ChangeDetectorRef} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport {LinkField} from './links/linkfield';\nimport {MicroObject} from './microobject';\n\nexport class LinkFieldPagingSupport {\n\n constructor(\n private pageLink: LinkField<MicroObject[]>,\n private changeDetectorRef: ChangeDetectorRef,\n public pageLimit: number = 200\n ) {\n }\n\n private sorts: SortInfo[] = null;\n\n public isLoading = false;\n private loadedCompletely = false;\n private hasLoaded = false;\n private _rows: any[] = null;\n private loadingSubscription: Subscription = null;\n\n public rowsChangeCallback: (rows: any[]) => void;\n public isLoadingCallback: (isLoading: boolean) => void;\n\n get rows(): any[] {\n if (!this.hasLoaded) {\n this.loadNextPage();\n }\n return this._rows;\n }\n\n public static from(\n pageLink: LinkField<MicroObject[]>,\n changeDetectorRef: ChangeDetectorRef,\n pageLimit: number = 200\n ): LinkFieldPagingSupport {\n return new LinkFieldPagingSupport(pageLink, changeDetectorRef, pageLimit);\n }\n\n public applySort(sorts: SortInfo[], externalSorting = true) {\n this.hasLoaded = false;\n this.sorts = null;\n this._rows = null;\n\n if (externalSorting) {\n this.sorts = sorts;\n this.loadNextPage();\n } else {\n if (!this.loadedCompletely) {\n this.loadNextPage(null);\n } else {\n this.changeDetectorRef.detectChanges();\n }\n }\n\n }\n\n private loadingCallback = () => {\n this.setLoading(false);\n };\n\n public loadNextPage(pageSize: number = this.pageLimit, resultCallback: ((page: any[], all: any[]) => void) = null) {\n if (this.pageLink && !this.isLoading) {\n if (this.loadingSubscription) {\n this.loadingSubscription.unsubscribe();\n this.loadingSubscription = null;\n }\n\n this.hasLoaded = true;\n this.loadedCompletely = false;\n if (this._rows == null) {\n this.setLoading(true);\n\n const reqOptions: any = {};\n if (this.sorts != null) {\n reqOptions.sorting = this.sorts;\n }\n if (pageSize != null) {\n reqOptions.pageSize = pageSize;\n }\n\n\n this.loadingSubscription = this.pageLink.initWithObs(null, reqOptions).subscribe((firstPage) => {\n this.setRows(firstPage, resultCallback);\n }, this.loadingCallback, this.loadingCallback);\n } else {\n const lastRow = this.lastRow();\n if (lastRow) {\n if (lastRow.__meta.nextPage) {\n let reqOptions = null;\n if (pageSize != null) {\n reqOptions = {\n pageSize: pageSize\n };\n }\n\n const nextPageObs: Observable<MicroObject[]> = lastRow.__meta.nextPage.initWithObs(null, reqOptions);\n if (nextPageObs) {\n this.setLoading(true);\n this.loadingSubscription = nextPageObs.subscribe((nextPage) => {\n this.setRows(nextPage, resultCallback);\n }, this.loadingCallback, this.loadingCallback);\n }\n }\n }\n }\n } else if (!this.pageLink) {\n this.clearRows();\n }\n }\n\n public loadEverything() {\n this.loadNextPage(null);\n }\n\n private lastRow(): MicroObject {\n return this._rows[this._rows.length - 1];\n }\n\n private setRows(additionalPage: any[], loadCallback: ((page: any[], all: any[]) => void)) {\n if (this._rows) {\n this._rows = [...this.rows, ...additionalPage];\n } else {\n this._rows = additionalPage;\n }\n if (loadCallback) {\n loadCallback(additionalPage, this._rows);\n }\n this.reflectChanges();\n }\n\n private clearRows() {\n if (this._rows != null) {\n this._rows = null;\n this.reflectChanges();\n }\n }\n\n private reflectChanges() {\n const lastRow = this.lastRow();\n if (lastRow && lastRow.__meta) {\n this.loadedCompletely = lastRow.__meta.nextPage == null;\n } else {\n this.loadedCompletely = false;\n }\n\n if (this.rowsChangeCallback) {\n this.rowsChangeCallback(this._rows);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n private setLoading(isLoading: boolean) {\n this.isLoading = isLoading;\n if (this.isLoadingCallback) {\n this.isLoadingCallback(this.isLoading);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n public dispose() {\n this.rowsChangeCallback = null;\n this.isLoadingCallback = null;\n }\n\n public setPageLink(pageLink: LinkField<MicroObject[]>) {\n this.clearState();\n this.pageLink = pageLink;\n this.loadNextPage();\n }\n\n public hasLoadedCompletely(): boolean {\n return this.loadedCompletely;\n }\n\n public init(rowsChangeCallback: (rows: any[]) => void, isLoadingCallback: ((isLoading: boolean) => void) = null) {\n this.rowsChangeCallback = rowsChangeCallback;\n this.isLoadingCallback = isLoadingCallback;\n }\n\n private clearState() {\n this.isLoading = false;\n this.loadedCompletely = false;\n this.hasLoaded = false;\n this._rows = null;\n if (this.loadingSubscription) {\n this.loadingSubscription.unsubscribe();\n this.loadingSubscription = null;\n }\n }\n}\n\nexport class SortInfo {\n constructor(public field: string, public dir: string) {\n this.dir = dir.toUpperCase();\n if (!(this.dir === 'ASC' || this.dir === 'DESC')) {\n throw Error('dir can only be \\'ASC\\' or \\'DESC\\'');\n }\n }\n}\n","import {LinkField} from './linkfield';\nimport {Observable, of} from 'rxjs';\nimport {delay} from 'rxjs/operators';\n\nexport class MockLinkField<T extends (object | object[])> extends LinkField<T> {\n constructor(private valueToLoad: any, private delay: number) {\n super(null, null);\n }\n\n callWithObs(params: object = null, requestOptions: object = null): Observable<T> {\n return of(this.valueToLoad).pipe(\n delay(this.delay)\n );\n }\n}"],"names":["_.cloneDeep"],"mappings":"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"}
1
+ {"version":3,"file":"micropermit-client-angular.js","sources":["ng://@micropermit/client-angular/lib/paramutils.ts","ng://@micropermit/client-angular/lib/links/callablelink.ts","ng://@micropermit/client-angular/lib/links/linkfield.ts","ng://@micropermit/client-angular/lib/microobject.ts","ng://@micropermit/client-angular/lib/error/microerror.ts","ng://@micropermit/client-angular/lib/microclient.service.ts","ng://@micropermit/client-angular/lib/components/loadingindicator.component.ts","ng://@micropermit/client-angular/lib/pipes/linkfield.pipe.ts","ng://@micropermit/client-angular/lib/components/errorindicator.component.ts","ng://@micropermit/client-angular/lib/directives/linkfield.directive.ts","ng://@micropermit/client-angular/lib/directives/call-link.directive.ts","ng://@micropermit/client-angular/lib/directives/micro-link-validate.directive.ts","ng://@micropermit/client-angular/lib/microclient.module.ts","ng://@micropermit/client-angular/lib/link-field-paging-support.ts","ng://@micropermit/client-angular/lib/links/mock-linkfield.ts"],"sourcesContent":["export class ParamUtils {\n\n private static plusRegex = new RegExp('\\\\+');\n private static slashRegex = new RegExp('/', 'g');\n private static multiEqualRegex = new RegExp('=+$', 'g');\n private static minusRegex = new RegExp('-', 'g');\n private static underscoreRegex = new RegExp('_', 'g');\n\n public static addParam(url: string, key: string, value: string, replaceExisting: boolean = true): string {\n const hasQueryParams = url.indexOf('?') >= 0;\n if (!hasQueryParams) {\n url += '?';\n }\n\n const existingParam: string = ParamUtils.getParam(url, key);\n if (existingParam != null && replaceExisting) {\n url = url.replace(key + '=' + existingParam, key + '=' + value);\n } else {\n if (hasQueryParams) {\n url += '&';\n }\n url += key + '=' + value;\n }\n\n return url;\n }\n\n public static setParams(url: string, params: Object): string {\n const splitted = url.split('?');\n\n let resURL = splitted[0];\n let first = true;\n\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n if (first) {\n resURL += '?';\n first = false;\n }\n\n resURL += key + '=' + params[key];\n }\n }\n return resURL;\n }\n\n public static getParams(url: string): Object {\n const splitted = url.split('?');\n if (splitted.length < 2) {\n return {};\n }\n\n const queryStr = splitted[1];\n const params = {};\n\n const paramsStrs = queryStr.split('&');\n for (const paramStr of paramsStrs) {\n const splittedParamStr = paramStr.split('=', 2);\n const key = splittedParamStr[0];\n\n if (splittedParamStr.length === 2) {\n params[key] = splittedParamStr[1];\n } else {\n params[key] = null;\n }\n }\n return params;\n }\n\n public static base64UrlEncode(toEncode: string): string {\n return btoa(toEncode)\n .replace(ParamUtils.plusRegex, '-')\n .replace(ParamUtils.slashRegex, '_')\n .replace(ParamUtils.multiEqualRegex, '');\n }\n\n public static base64UrlDecode(toDecode: string): string {\n toDecode = (toDecode + '===').slice(0, toDecode.length + (toDecode.length % 4));\n return atob(\n toDecode\n .replace(ParamUtils.minusRegex, '+')\n .replace(ParamUtils.underscoreRegex, '/')\n );\n }\n\n public static needsBase64UrlEncoding(toCheck: any): boolean {\n if (toCheck == null) {\n return false;\n } else {\n return typeof toCheck === 'object';\n }\n }\n\n public static getParam(url: string, name: string, urlDecode: boolean = false): string {\n const paramsQueryIdx = url.indexOf('?');\n url = url.substr(paramsQueryIdx);\n const regExp = (new RegExp('[?&]' + encodeURIComponent(name) + '=([^&]*)'));\n const match = regExp.exec(url);\n if (match) {\n if (urlDecode && match[1]) {\n return this.base64UrlDecode(match[1]);\n } else {\n return match[1];\n }\n } else {\n return null;\n }\n }\n}\n","import {MicroClient} from '../microclient.service';\nimport {Observable} from 'rxjs';\nimport {MicroObject} from '../microobject';\nimport {ParamUtils} from '../paramutils';\n\nexport class CallableLink<T> {\n\n constructor(\n protected link: string,\n protected microClient: MicroClient,\n protected callParams: object = null,\n protected requestOptions: object = null\n ) {\n }\n\n public serializeTo: (link: string, callParams: object, requestOptions: object, value: any, isInitialized: boolean) => any = LinkSerializer.DONT_SERIALIZE;\n\n hasLink(): Boolean {\n return this.link != null;\n }\n\n getLink(): string {\n return this.link;\n }\n\n getQueryParam(key: string, urlDecode: boolean = false) {\n return ParamUtils.getParam(this.link, key, urlDecode);\n }\n\n getSignedParams(): MicroObject | MicroObject[] {\n let params = this.getSignedMicroObjectParam('params');\n if (params == null) {\n params = this.getSignedMicroObjectParam('bParams');\n }\n return params;\n }\n\n getOpenParams(copy: boolean = false): MicroObject | MicroObject[] {\n let params: MicroObject | MicroObject[] = this.getMicroObjectParam('oParams');\n if (params == null) {\n params = this.getMicroObjectParam('bOParams');\n } else {\n if (copy) {\n params = MicroObject.fromString(JSON.stringify(params), this.microClient);\n }\n\n if (this.callParams) {\n params = Object.assign(params, this.callParams);\n }\n }\n return params;\n }\n\n getOptions(): MicroObject {\n let options = this.getMicroObjectParam('options');\n\n if (this.requestOptions) {\n if (options == null) {\n options = new MicroObject();\n }\n options = Object.assign(options, this.requestOptions);\n }\n\n return options;\n }\n\n private getSignedMicroObjectParam(key: string): MicroObject {\n const paramsStr = ParamUtils.getParam(this.link, key, false);\n let params = null;\n if (paramsStr) {\n const splitted = paramsStr.split('.');\n if (splitted.length !== 3) {\n throw new Error('Expected a signed query param to have a JWT like structure');\n }\n params = MicroObject.fromString(atob(splitted[1]), this.microClient);\n }\n return params;\n }\n\n getMicroObjectParam(key: string): MicroObject {\n const paramsStr = ParamUtils.getParam(this.link, key, true);\n let params = null;\n if (paramsStr) {\n params = MicroObject.fromString(paramsStr, this.microClient);\n }\n return params;\n }\n\n call(onNext: (T) => void): Promise<T> {\n return this.callWith(null, null, onNext);\n }\n\n callWith(params: object = null, requestOptions: object = null, onNext: (T) => void): Promise<T> {\n return <Promise<T>>this.callWithObs(params, requestOptions).toPromise().then(onNext);\n }\n\n callWithObs(params: object = null, requestOptions: object = null): Observable<T> {\n if (this.link == null) {\n throw Error('Can\\'t use callWithObs without a provided link');\n }\n if (this.microClient == null) {\n throw Error('Can\\'t use callWithObs without a provided microClient');\n }\n\n let paramsToUse = null;\n if (this.callParams != null) {\n paramsToUse = Object.assign(new MicroObject(), this.callParams);\n }\n if (params) {\n if (paramsToUse == null) {\n paramsToUse = new MicroObject();\n }\n paramsToUse = Object.assign(paramsToUse, params);\n }\n\n let optionsToUse = null;\n if (this.requestOptions != null) {\n optionsToUse = Object.assign(new MicroObject(), this.requestOptions);\n }\n if (requestOptions) {\n if (optionsToUse == null) {\n optionsToUse = new MicroObject();\n }\n optionsToUse = Object.assign(optionsToUse, requestOptions);\n }\n\n return <Observable<T>> this.microClient.load(this.link, paramsToUse, optionsToUse);\n }\n\n copy(): CallableLink<T> {\n return new CallableLink(this.link, this.microClient, this.callParams, this.requestOptions);\n }\n\n withCallParams(callParams: object, requestOptions: object = this.requestOptions) {\n return new CallableLink(this.link, this.microClient, callParams, requestOptions);\n }\n\n toJSON(): any {\n if (this.serializeTo) {\n return this.serializeTo(this.link, this.callParams, this.requestOptions, undefined, undefined);\n } else {\n return undefined;\n }\n }\n}\n\n// @dynamic\nexport class LinkSerializer {\n public static DONT_SERIALIZE = function () {\n return undefined;\n };\n\n public static AS_LINK = function (link: string) {\n return link;\n };\n\n public static AS_VALUE_IF_INITIALIZED = function (link: string, callParams: object, requestOptions: object, value: any, isInitialized: boolean) {\n if (isInitialized) {\n return value;\n } else {\n return undefined;\n }\n };\n}\n","import {defer, Observable, ReplaySubject} from 'rxjs';\nimport {MicroClient, MicroClientLoadError} from '../microclient.service';\nimport {CallableLink, LinkSerializer} from './callablelink';\nimport {map, take} from 'rxjs/operators';\n\nexport class LinkField<T> extends CallableLink<T> {\n private value: T;\n private initialized = false;\n private _getPromise: Promise<T>;\n\n private valueSubj: ReplaySubject<T>;\n\n public serializeTo: (link: string, callParams: object, requestOptions: object, value: T, isInitialized: boolean) => any = LinkSerializer.AS_VALUE_IF_INITIALIZED;\n\n constructor(\n link: string,\n microClient: MicroClient,\n initialValue: T = null,\n initialized: boolean = false,\n callParams: object = null,\n requestOptions: object = null\n ) {\n super(link, microClient, callParams, requestOptions);\n if (initialized) {\n this.set(initialValue);\n }\n }\n\n static from<T extends (object | object[])>(value: T): LinkField<T> {\n return new LinkField(null, null, value, true);\n }\n\n get(callback?: (T) => void): Promise<T> {\n if (callback) {\n this.getObs().subscribe(callback);\n return null;\n }\n return this.getPromise();\n }\n\n getPromise(): Promise<T> {\n if (!this._getPromise) {\n this._getPromise = this.getObs().toPromise();\n }\n return this._getPromise;\n }\n\n private intervalId = null;\n private isRefreshing = false;\n\n refresh(interval?: number, errorHandler?: (error: MicroClientLoadError) => void) {\n if (interval) {\n this.stopRefresh();\n }\n let resCb = () => {\n this.isRefreshing = false;\n };\n this.isRefreshing = true;\n this.initWithObs().subscribe(resCb, (error: MicroClientLoadError) => {\n resCb();\n if (errorHandler) {\n errorHandler(error);\n }\n }, resCb);\n\n if (interval) {\n this.intervalId = setInterval(() => {\n if (!this.isRefreshing) {\n this.isRefreshing = true;\n this.initWithObs().subscribe(resCb, (error: MicroClientLoadError) => {\n resCb();\n if (errorHandler) {\n errorHandler(error);\n }\n }, resCb);\n }\n }, interval);\n }\n }\n\n stopRefresh() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n }\n\n listenObs(): Observable<T> {\n if (this.valueSubj) {\n return this.valueSubj;\n } else {\n this.valueSubj = new ReplaySubject<T>(1);\n return defer(() => {\n this.initWithObs(null, null).subscribe();\n return this.valueSubj;\n });\n }\n }\n\n getObs(): Observable<T> {\n return this.listenObs().pipe(\n take(1)\n );\n }\n\n set(value: T): T {\n const oldValue = this.value;\n this.value = value;\n this.initialized = true;\n if (!this.valueSubj) {\n this.valueSubj = new ReplaySubject<T>(1);\n }\n this.valueSubj.next(value);\n this._getPromise = null;\n\n return oldValue;\n }\n\n isInitialized(): boolean {\n return this.initialized;\n }\n\n uninitialize() {\n this.value = null;\n this.initialized = false;\n this.valueSubj = null;\n this._getPromise = null;\n }\n\n getInitializedValue(): T {\n if (!this.isInitialized()) {\n throw new Error('Can\\'t get the intialized value for a LinkField that hasn\\'t been initialized');\n }\n return this.value;\n }\n\n initWith(parms: object = null, requestOptions: object = null, callback: (T) => void) {\n this.initWithObs(parms, requestOptions).subscribe(callback);\n }\n\n initWithObs(params: object = null, requestOptions: object = null): Observable<T> {\n return this.callWithObs(params, requestOptions).pipe(\n map((value) => {\n this.set(<T>value);\n return value;\n })\n );\n }\n\n withCallParams(callParams: object, requestOptions: object = this.requestOptions): LinkField<T> {\n return new LinkField(this.link, this.microClient, this.value, this.initialized, callParams, requestOptions);\n }\n\n copy(withValue?: T): LinkField<T> {\n if (withValue === undefined) {\n return new LinkField(this.link, this.microClient, this.value, this.initialized, this.callParams, this.requestOptions);\n } else {\n return new LinkField(this.link, this.microClient, withValue, true, this.callParams, this.requestOptions);\n }\n }\n\n toJSON(): any {\n if (this.serializeTo) {\n return this.serializeTo(this.link, this.callParams, this.requestOptions, this.value, this.isInitialized());\n } else {\n return undefined;\n }\n }\n}\n\n","import {MicroClient} from './microclient.service';\nimport {LinkField} from './links/linkfield';\nimport {CallableLink, LinkSerializer} from './links/callablelink';\nimport {MicroError} from './error/microerror';\nimport * as _ from 'lodash';\n\nexport interface MicroObject {\n __meta: MicroObjectMetadata;\n}\n\nexport class MicroObject implements MicroObject {\n public static META_KEY = '__meta';\n\n __meta: MicroObjectMetadata = undefined;\n\n public static deepCopy<T extends object | object[]>(toCopy: T, client?: MicroClient): T {\n return <T>_.cloneDeepWith(toCopy, MicroObject.deepCopyCustomizer);\n }\n\n private static deepCopyCustomizer(value) {\n if (value instanceof MicroClient) {\n return value;\n }\n return undefined;\n }\n\n\n public static fromString<T extends object>(str: string, client: MicroClient, prototype: T = null): T | T[] {\n const obj = JSON.parse(str);\n return this.fromObject(obj, client, prototype);\n }\n\n public static fromObject<T extends object>(obj: any, client: MicroClient, prototype: T = null): T | T[] {\n if (obj === null) {\n return null;\n }\n\n if (Array.isArray(obj)) {\n const objArr: T[] = obj;\n for (let i = 0; i < objArr.length; i++) {\n const elem = objArr[i];\n if (typeof elem === 'object') {\n objArr[i] = <T>MicroObject.fromObject(elem, client, prototype);\n }\n }\n return objArr;\n } else {\n for (const field in obj) {\n if (field !== MicroObject.META_KEY && obj.hasOwnProperty(field)) {\n const fieldValue = obj[field];\n if (fieldValue) {\n if (fieldValue instanceof Object || Array.isArray(fieldValue)) {\n obj[field] = MicroObject.fromObject(fieldValue, client, prototype);\n }\n }\n }\n }\n\n const src = prototype == null ? MicroObject.prototype : prototype;\n const microObject: MicroObject = Object.assign(Object.create(src), obj);\n\n\n MicroObject.attachMetadataObject(microObject, client);\n\n return <T>microObject;\n }\n\n }\n\n private static attachMetadataObject(microObject: MicroObject, client: MicroClient) {\n const rawMeta: MicroObjectMetadata = microObject != null ? microObject[MicroObject.META_KEY] : null;\n if (rawMeta != null) {\n let clientToUse = client;\n if (rawMeta.permitToken) {\n if (client.getEntryPoint() != null) {\n clientToUse = client.createChildClientForEntryPoint(microObject);\n }\n }\n\n microObject.__meta = MicroObjectMetadata.fromObject(microObject.__meta, clientToUse);\n\n MicroObject.attachLinkFields(microObject.__meta, microObject, clientToUse);\n MicroObject.attachCallableLinks(microObject.__meta, microObject, clientToUse);\n\n } else {\n return null;\n }\n }\n\n private static attachLinkFields(meta: MicroObjectMetadata, microObject: MicroObject, client: MicroClient) {\n meta.forEachLink((linkName, linkUrl) => {\n const value = microObject[linkName];\n microObject[linkName] = new LinkField(linkUrl, client, value, value !== undefined);\n });\n }\n\n private static attachCallableLinks(meta: MicroObjectMetadata, microObject: MicroObject, client: MicroClient) {\n meta.forEachAction((linkName, linkUrl) => {\n microObject[linkName] = new CallableLink(linkUrl, client);\n });\n }\n}\n\nexport class MicroObjectMetadata {\n links: any;\n actions: any;\n permitToken: string;\n nextPage: LinkField<any>;\n error: MicroError;\n\n\n static fromObject(obj: object, client: MicroClient): MicroObjectMetadata {\n const objMetadata = Object.assign(new MicroObjectMetadata(), obj);\n\n if (objMetadata.nextPage != null) {\n objMetadata.nextPage = new LinkField(<any>objMetadata.nextPage, client);\n objMetadata.nextPage.serializeTo = LinkSerializer.AS_LINK;\n }\n\n return objMetadata;\n }\n\n public getLinkUrl(key: string): string {\n return this.links[key];\n }\n\n public hasLink(key: string): boolean {\n return this.links[key] != null;\n }\n\n public forEachLink(op: (linkName: string, link: string) => void) {\n for (const link in this.links) {\n if (this.links.hasOwnProperty(link)) {\n op(link, this.links[link]);\n }\n }\n }\n\n public forEachAction(op: (linkName: string, link: string) => void) {\n for (const link in this.actions) {\n if (this.actions.hasOwnProperty(link)) {\n op(link, this.actions[link]);\n }\n }\n }\n\n\n}\n","export class MicroError {\n timestamp: number;\n errorMessage: string;\n atService: string;\n atEndpoint: string;\n instanceID: string;\n httpEquivCode: number;\n cause: MicroError;\n errorID: string;\n errorType: Array<String>;\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClient, HttpErrorResponse, HttpHeaders} from '@angular/common/http';\nimport {MicroObject} from './microobject';\nimport {Observable, ReplaySubject, Subject, throwError} from 'rxjs';\nimport {catchError, finalize, map, take, shareReplay} from 'rxjs/operators';\nimport {ParamUtils} from './paramutils';\nimport {MicroError} from './error/microerror';\n\n@Injectable()\nexport class MicroClient {\n\n private authHeader: string;\n private permitToken: string;\n private entryPoint: MicroObject;\n\n private entryPointSubject: ReplaySubject<MicroObject> = new ReplaySubject<MicroObject>();\n\n private urlRewriter: (string) => string;\n private defaultErrorHandler: (httpError: HttpErrorResponse, microError: MicroObject) => void;\n public usePost = true;\n\n public sendAsPermitTokenHeader = true;\n\n constructor(private httpClient: HttpClient) {\n\n }\n\n public setSendAsPermitTokenHeader(sendAsPermitTokenHeader: boolean) {\n this.sendAsPermitTokenHeader = sendAsPermitTokenHeader;\n }\n\n public setAuthToken(token: string) {\n this.authHeader = 'Bearer ' + token;\n this.permitToken = token;\n }\n\n public setAuthHeader(authHeader: string) {\n this.authHeader = authHeader;\n }\n\n public getEntryPoint(): any {\n return this.entryPoint;\n }\n\n public waitForEntryPoint(cb?: (entryPoint: any) => void): Promise<any> {\n if (cb != null) {\n this.entryPointSubject.subscribe(cb);\n return null;\n }\n return this.entryPointSubject.toPromise();\n }\n\n public copyAuthAndEntrypointOf(other: MicroClient) {\n this.authHeader = other.authHeader;\n this.permitToken = other.permitToken;\n this.entryPoint = other.entryPoint;\n }\n\n public setEntryPoint<T extends MicroObject>(entryPoint: any) {\n if (entryPoint == null) {\n this.authHeader = null;\n this.entryPoint = null;\n this.permitToken = null;\n } else {\n this.entryPoint = entryPoint;\n if (this.entryPoint.__meta && this.entryPoint.__meta.permitToken) {\n this.setAuthToken(this.entryPoint.__meta.permitToken);\n } else {\n throw Error('Expected the entryPoint to contain a \"permitToken\" within the \"__meta\" field');\n }\n this.entryPointSubject.next(entryPoint);\n }\n }\n\n public setDefaultErrorHandler(handler: (httpError: HttpErrorResponse, microError: MicroObject) => void) {\n this.defaultErrorHandler = handler;\n }\n\n public handleError(httpErr: HttpErrorResponse) {\n if (this.defaultErrorHandler) {\n const microError = MicroClient.toMicroError(httpErr);\n if (microError) {\n const microResultObj: MicroObject = <MicroObject>MicroObject.fromObject(httpErr.error, this);\n this.defaultErrorHandler(httpErr, microResultObj);\n } else {\n this.defaultErrorHandler(httpErr, null);\n }\n }\n }\n\n public ignite<T>(\n url: string,\n username: String = null,\n password: String = null,\n headers: object = {}\n ): Observable<T> {\n if (this.urlRewriter) {\n url = this.urlRewriter(url);\n }\n\n let requestHeaders = new HttpHeaders();\n for (const headerKey in headers) {\n if (headers.hasOwnProperty(headerKey)) {\n requestHeaders = requestHeaders.set(headerKey, headers[headerKey]);\n }\n }\n\n if (username != null || password != null) {\n requestHeaders = requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n return this.httpClient.get(url, {\n headers: requestHeaders\n }).pipe(\n map(val => {\n const entryPoint = MicroObject.fromObject(val, this);\n this.setEntryPoint(entryPoint);\n return entryPoint as T;\n }),\n this.catchAndHandleError()\n );\n }\n\n public load<T>(\n url: string,\n params?: object,\n requestOptions?: object\n ): Observable<T> {\n let requestHeaders = new HttpHeaders();\n if (this.authHeader) {\n requestHeaders = requestHeaders.set('Authorization', this.authHeader);\n\n if (this.sendAsPermitTokenHeader) {\n requestHeaders = requestHeaders.set('MicroPermitToken', this.permitToken);\n }\n }\n\n let oParams = params;\n if (params != null || this.usePost) {\n const existingParamsStr = ParamUtils.getParam(url, 'oParams', true);\n let existingParams;\n if (existingParamsStr) {\n existingParams = JSON.parse(existingParamsStr);\n } else {\n existingParams = {};\n }\n oParams = Object.assign(existingParams, params);\n }\n\n let options = requestOptions;\n if (requestOptions != null || this.usePost) {\n const prevOptionsStr = ParamUtils.getParam(url, 'options', true);\n if (prevOptionsStr) {\n options = JSON.parse(prevOptionsStr);\n } else {\n options = {};\n }\n\n options = Object.assign(options, requestOptions);\n }\n\n const queryParams = ParamUtils.getParams(url);\n\n let httpObs = null;\n if (this.usePost) {\n\n let bOParams;\n const encBOParams = queryParams['bOParams'];\n if (encBOParams) {\n bOParams = JSON.parse(ParamUtils.base64UrlDecode(encBOParams));\n }\n const body = {\n params: queryParams['params'],\n oParams: oParams,\n bParams: queryParams['bParams'],\n bOParams: bOParams,\n options: options,\n };\n\n delete queryParams['params'];\n delete queryParams['oParams'];\n delete queryParams['bParams'];\n delete queryParams['bOParams'];\n delete queryParams['options'];\n\n url = ParamUtils.setParams(url, queryParams);\n\n if (this.urlRewriter) {\n url = this.urlRewriter(url);\n }\n\n httpObs = this.httpClient.post(url, body, {\n headers: requestHeaders\n });\n } else {\n if (oParams) {\n queryParams['oParams'] = ParamUtils.base64UrlEncode(JSON.stringify(oParams));\n }\n\n if (options) {\n queryParams['options'] = ParamUtils.base64UrlEncode(JSON.stringify(options));\n }\n url = ParamUtils.setParams(url, queryParams);\n\n if (this.urlRewriter) {\n url = this.urlRewriter(url);\n }\n\n httpObs = this.httpClient.get(url, {\n headers: requestHeaders\n });\n }\n\n httpObs = httpObs.pipe(\n map(val => {\n return MicroObject.fromObject(val, this);\n }),\n this.catchAndHandleError()\n );\n\n return httpObs;\n }\n\n private catchAndHandleError<T>(): ((source: Observable<T>) => Observable<T>) {\n return (source: Observable<T>) => {\n return source.pipe(\n catchError(err => {\n let loadError = new MicroClientLoadError(err, (errToHandle) => {\n this.handleError(errToHandle);\n });\n return throwError(loadError).pipe(\n finalize(() => {\n if (!loadError.shouldPreventDefault()) {\n loadError.handleDefault();\n }\n })\n );\n })\n );\n };\n }\n\n public createChildClientForEntryPoint(entryPoint: MicroObject): MicroClient {\n if (entryPoint.__meta && entryPoint.__meta.permitToken) {\n const childClient: MicroClient = Object.create(this, {\n entryPoint: {\n configurable: true,\n enumerable: true,\n writable: true\n },\n authHeader: {\n configurable: true,\n enumerable: true,\n writable: true\n },\n permitToken: {\n configurable: true,\n enumerable: true,\n writable: true\n }\n });\n childClient.setEntryPoint(entryPoint);\n return childClient;\n } else {\n throw new Error('The supplied value can\\'t be used to construct a child MicroClient because it doesn\\'t contain metadata with a permitToken ');\n }\n }\n\n public setURLRewriter(rewriter: (string) => string) {\n this.urlRewriter = rewriter;\n }\n\n public static toMicroError(httpResponse: HttpErrorResponse): MicroError {\n const res = httpResponse.error;\n if (res && res.__meta && res.__meta.error) {\n return Object.assign(new MicroError(), res.__meta.error);\n }\n return null;\n }\n\n private static staticContentRegExp = new RegExp('[a-zA-Z0-9]://.*(:[0-9]+)?(/.*)*/static(/.*(\\\\?.*)?(#.*)?)?');\n\n public static guessMicroComponentBaseURL(): string {\n const href = window.location.href;\n\n // Last URL-Segement is static\n if (MicroClient.staticContentRegExp.test(href)) {\n return href.replace(new RegExp('/static/.*'), '')\n .replace(new RegExp('/#/.*'), '');\n } else {\n if (window.location.protocol.startsWith('file')) {\n return 'http://localhost:8080';\n } else {\n return window.location.protocol + '//' + window.location.hostname + ':8080';\n }\n }\n }\n\n public static guessMicroComponentAuthorizeURL(): string {\n return this.guessMicroComponentBaseURL() + '/authorize';\n }\n}\n\nexport class MicroClientLoadError {\n private handled = false;\n private doPreventDefault = false;\n\n constructor(private error: any, private defaultHandler: (err: any) => void) {\n\n }\n\n public handleDefault() {\n if (this.defaultHandler) {\n this.defaultHandler(this.error);\n this.handled = true;\n }\n }\n\n public handleError(handler: (error: any) => void) {\n handler(this.error);\n this.handled = true;\n }\n\n public isHandled(): boolean {\n return this.handled;\n }\n\n public shouldPreventDefault(): boolean {\n return this.doPreventDefault;\n }\n\n public preventDefault(): void {\n this.doPreventDefault = true;\n }\n\n public hasDefaultHandler(): boolean {\n return this.defaultHandler != null;\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'mc-loadingindicator',\n template: `\n <div id=\"container\">\n <div id=\"bar\"></div>\n </div>\n `,\n styles: [`\n #container {\n display: block;\n overflow: hidden;\n width: 100%;\n height: 5px;\n -webkit-transform: translate(0, 0) scale(1, 1);\n transform: translate(0, 0) scale(1, 1);\n background-color: #aad1f9;\n }\n #container #bar {\n transition: all .2s linear;\n -webkit-animation: query 0.8s infinite cubic-bezier(0.39, 0.575, 0.565, 1);\n animation: query 0.8s infinite cubic-bezier(0.39, 0.575, 0.565, 1);\n transition: -webkit-transform .2s linear;\n transition: transform .2s linear;\n background-color: #106cc8;\n width: 100%;\n height: 5px;\n }\n @keyframes query {\n 0% {\n opacity: 1;\n transform: translateX(35%) scale(0.3, 1);\n }\n 100% {\n opacity: 0;\n transform: translateX(-50%) scale(0, 1);\n }\n }\n `]\n})\nexport class MicroClientLoadingIndicatorComponent { }\n","import {LinkField} from '../links/linkfield';\nimport {PipeTransform, Pipe, OnDestroy, ChangeDetectorRef} from '@angular/core';\nimport {MicroObject} from '../microobject';\nimport {AsyncPipe} from '@angular/common';\n\n@Pipe({name: 'linkField', pure: false})\nexport class LinkFieldPipe implements OnDestroy, PipeTransform {\n\n private asyncPipe: AsyncPipe;\n\n constructor(changeDetectorRef: ChangeDetectorRef) {\n this.asyncPipe = new AsyncPipe(changeDetectorRef);\n }\n\n ngOnDestroy(): void {\n this.asyncPipe.ngOnDestroy();\n }\n\n transform<T extends (object | object[])>(linkField: LinkField<T>): any {\n if (linkField == null) {\n return null;\n }\n if (linkField instanceof LinkField) {\n return this.asyncPipe.transform(linkField.getObs());\n } else {\n // return linkField;\n throw new Error('Can\\'t use the linkField pipe with a value which isn\\'t an instance of LinkField');\n }\n }\n\n}\n","import {Component, Input} from '@angular/core';\nimport {MicroClientLoadError} from '../microclient.service';\n\n@Component({\n selector: 'mc-errorindicator',\n template: `\n <div class=\"blinking-error\" [class.clickable]=\"error.hasDefaultHandler()\" (click)=\"onClick()\"></div>\n `,\n styles: [`\n .blinking-error {\n background-image: linear-gradient(to right, tomato 0%, darkred 50%, tomato 100%);\n animation: blinkingText 0.5s 1;\n height: 5px;\n }\n\n .blinking-error.clickable {\n cursor: pointer;\n }\n\n @keyframes blinkingText {\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n `]\n})\nexport class MicroClientErrorIndicatorComponent {\n @Input()\n error: MicroClientLoadError;\n\n onClick() {\n this.error.handleDefault();\n }\n}\n","import {\n Directive,\n Input,\n TemplateRef,\n ViewContainerRef,\n ComponentFactoryResolver,\n ComponentFactory,\n DoCheck,\n OnDestroy, ChangeDetectorRef, Output, EventEmitter\n} from '@angular/core';\nimport {LinkField} from '../links/linkfield';\nimport {MicroObject} from '../microobject';\nimport {Observable, Subscription} from 'rxjs';\nimport {MicroClientLoadingIndicatorComponent} from '../components/loadingindicator.component';\nimport {MicroClientErrorIndicatorComponent} from '../components/errorindicator.component';\nimport {finalize} from 'rxjs/operators';\nimport {MicroClientLoadError} from '../microclient.service';\n\n@Directive({\n selector: '[linkField][linkFieldFrom]'\n})\nexport class LinkFieldDirective<T> implements DoCheck, OnDestroy {\n\n private _from: LinkField<T> | T;\n private _loadingTemplate: TemplateRef<any>;\n private _errorTemplate: TemplateRef<any>;\n private _defaultLoadingComponent: ComponentFactory<MicroClientLoadingIndicatorComponent>;\n private _defaultErrorComponent: ComponentFactory<MicroClientErrorIndicatorComponent>;\n\n private isDirty = true;\n private isLoading = false;\n private loadedResult: T = null;\n private hasResult = false;\n\n private lastObs: Observable<T>;\n private subscription: Subscription = null;\n\n private currentContext: LinkFieldContext<T>;\n\n constructor(\n private _viewContainer: ViewContainerRef,\n private _template: TemplateRef<LinkFieldContext<T>>,\n private componentResolver: ComponentFactoryResolver,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this._defaultLoadingComponent = componentResolver.resolveComponentFactory(MicroClientLoadingIndicatorComponent);\n this._defaultErrorComponent = componentResolver.resolveComponentFactory(MicroClientErrorIndicatorComponent);\n }\n\n @Input()\n set linkFieldFrom(from: LinkField<T>) {\n this._from = from;\n this.clear();\n this.load();\n }\n\n @Input()\n set linkFieldLoadingTemplate(loadingTemplate: TemplateRef<any>) {\n if (loadingTemplate) {\n this._loadingTemplate = loadingTemplate;\n }\n this.updateIfDirty(true);\n }\n\n @Input()\n set linkFieldErrorTemplate(errorTemplate: TemplateRef<any>) {\n if (errorTemplate) {\n this._errorTemplate = errorTemplate;\n }\n this.updateIfDirty(true);\n }\n\n @Input()\n set linkFieldTemplate(value: TemplateRef<LinkFieldContext<T>>) {\n if (value) {\n this._template = value;\n }\n }\n\n @Input()\n linkFieldDefaultErrorHandling = false;\n\n @Input()\n linkFieldValueChange: (T) => void;\n\n private load() {\n if (this._from) {\n if (this._from instanceof LinkField) {\n this.setLoading(true);\n this.lastObs = this._from.listenObs();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.subscription = this.lastObs.pipe(\n finalize(() => {\n this.setLoading(false);\n })\n ).subscribe((loadedResult: T) => {\n this.setLoadedResult(loadedResult);\n if (this.linkFieldValueChange) {\n this.linkFieldValueChange(loadedResult);\n }\n }, (loadError: MicroClientLoadError) => {\n if (!this.linkFieldDefaultErrorHandling) {\n loadError.preventDefault();\n }\n this.setError(loadError);\n });\n } else {\n this.setLoadedResult(this._from);\n // this.setLoadedResult(this._from);\n // throw new Error('Can\\'t use the linkField directive with a from value which isn\\'t an instance of LinkField');\n }\n }\n }\n\n\n ngDoCheck() {\n this.updateIfDirty();\n if (this._from) {\n if (this._from instanceof LinkField && this.lastObs !== this._from.listenObs()) {\n this.load();\n }\n }\n }\n\n ngOnDestroy() {\n this.clear();\n }\n\n private setError(error: MicroClientLoadError) {\n this._viewContainer.remove();\n if (this._errorTemplate) {\n this._viewContainer.createEmbeddedView(this._errorTemplate, {\n $implicit: error\n });\n } else {\n let errorComponentInstance = this._viewContainer.createComponent(this._defaultErrorComponent);\n errorComponentInstance.instance['error'] = error;\n }\n }\n\n\n private setLoading(loading: boolean) {\n this.isLoading = loading;\n if (this.isLoading) {\n if (this._loadingTemplate) {\n this._viewContainer.remove();\n this._viewContainer.createEmbeddedView(this._loadingTemplate);\n } else {\n this._viewContainer.remove();\n this._viewContainer.createComponent(this._defaultLoadingComponent);\n }\n }\n }\n\n private setLoadedResult(result: T) {\n this.hasResult = true;\n this.loadedResult = result;\n if (this.currentContext == null) {\n this.currentContext = new LinkFieldContext<T>(result);\n this.isDirty = true;\n } else {\n this.currentContext.$implicit = result;\n this.changeDetectorRef.markForCheck();\n }\n if (!this._viewContainer || !this._template) {\n this.isDirty = true;\n } else {\n if (this.isDirty) {\n this._viewContainer.remove();\n this._viewContainer.createEmbeddedView(this._template, this.currentContext);\n }\n }\n }\n\n private updateIfDirty(ignoreDirty: boolean = false) {\n if ((this.isDirty || ignoreDirty) && this._loadingTemplate && this._from && this._template && this._viewContainer) {\n if (this.hasResult) {\n this.setLoadedResult(this.loadedResult);\n }\n this.isDirty = false;\n }\n }\n\n private clear() {\n this.hasResult = false;\n this.loadedResult = null;\n this.isDirty = false;\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = null;\n }\n this.lastObs = null;\n this.currentContext = null;\n }\n}\n\nexport class LinkFieldContext<T> {\n\n constructor(public $implicit: T) {\n }\n}\n","import {\n ComponentFactory,\n ComponentFactoryResolver,\n Directive, ElementRef, EmbeddedViewRef,\n EventEmitter, HostListener,\n Input, OnDestroy, OnInit,\n Output, Renderer2,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport {MicroObject} from '../microobject';\nimport {CallableLink} from '../links/callablelink';\nimport {MicroError} from '../error/microerror';\n\n@Directive({\n selector: '[callLink]'\n})\nexport class CallLinkDirective {\n @Input()\n callLink: CallableLink<MicroObject | MicroObject[]>;\n\n @Output()\n callStatusChange: EventEmitter<CallStatus> = new EventEmitter();\n\n @Output()\n callSucess: EventEmitter<MicroObject | MicroObject[]> = new EventEmitter();\n\n @Output()\n callFinish: EventEmitter<void> = new EventEmitter();\n\n @Output()\n callError: EventEmitter<MicroError> = new EventEmitter();\n\n @Output()\n callStart: EventEmitter<void> = new EventEmitter();\n\n @Input()\n callOptions: object;\n\n @Input()\n callParameters: object;\n\n @HostListener('click')\n onClick() {\n this.callLink.callWithObs(this.callParameters, this.callOptions).subscribe((response) => {\n this.callSucess.emit(response);\n this.callStatusChange.emit(new CallStatus(this.callLink, CallState.SUCCESS, response, null));\n }, (error) => {\n this.callError.emit(error);\n this.callStatusChange.emit(new CallStatus(this.callLink, CallState.ERROR, null, error));\n }, () => {\n this.callFinish.emit();\n });\n this.callStatusChange.emit(new CallStatus(this.callLink, CallState.CALLING, null, null));\n }\n}\n\nexport class CallStatus {\n constructor(\n public link: CallableLink<MicroObject | MicroObject[]>,\n public state: CallState,\n public response: MicroObject | MicroObject[],\n public error: MicroError\n ) {\n }\n}\n\nexport enum CallState {\n CALLING,\n SUCCESS,\n ERROR\n}\n","import {Directive, forwardRef, Input} from '@angular/core';\nimport {\n AbstractControl,\n FormGroup,\n NG_ASYNC_VALIDATORS,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {Observable, timer} from 'rxjs';\nimport {map, switchMap} from 'rxjs/operators';\nimport {CallableLink} from '../links/callablelink';\n\n@Directive({\n selector: '[microLinkValidate]',\n providers: [\n {\n provide: NG_ASYNC_VALIDATORS,\n useExisting: forwardRef(() => MicroLinkValidateDirective),\n multi: true\n }\n ],\n exportAs: 'microValidator'\n})\nexport class MicroLinkValidateDirective implements Validator {\n\n private UNSET = \"\"\n\n @Input()\n microLinkValidate: CallableLink<any>\n\n @Input()\n microLinkValidateField: string = null\n\n @Input()\n microLinkValidateValue: any = this.UNSET\n\n @Input()\n microLinkValidateDebounce = 500;\n\n public result:any;\n\n\n validate(control: AbstractControl): Observable<ValidationErrors | null> {\n return timer(this.microLinkValidateDebounce).pipe(\n switchMap(() => {\n let validateValue = this.microLinkValidateValue\n if (validateValue === this.UNSET) {\n validateValue = control.value\n }\n\n let obj = {}\n if (this.microLinkValidateField) {\n obj[this.microLinkValidateField] = validateValue\n } else {\n obj = validateValue\n }\n\n return this.microLinkValidate.callWithObs(obj, null).pipe(\n map(validationRes => {\n let hasErrors = false\n if (this.microLinkValidateField) {\n if (validationRes[this.microLinkValidateField] != null) {\n hasErrors = true\n }\n } else {\n for (let key in validationRes) {\n if (validationRes[key] != null) {\n hasErrors = true\n }\n }\n }\n if (hasErrors) {\n this.result = validationRes\n return {\n validateMicroLink: this.result\n }\n\n } else {\n this.result = null\n return null\n }\n })\n )\n })\n )\n }\n\n getControlName(control: AbstractControl) {\n let controlName = null;\n let parent = control.parent;\n\n // only such parent, which is FormGroup, has a dictionary\n // with control-names as a key and a form-control as a value\n if (parent instanceof FormGroup) {\n // now we will iterate those keys (i.e. names of controls)\n Object.keys(parent.controls).forEach((name) => {\n // and compare the passed control and\n // a child control of a parent - with provided name (we iterate them all)\n if (control === parent.controls[name]) {\n // both are same: control passed to Validator\n // and this child - are the same references\n controlName = name;\n }\n });\n }\n // we either found a name or simply return null\n return controlName;\n }\n\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {MicroClientLoadingIndicatorComponent} from './components/loadingindicator.component';\nimport {LinkFieldPipe} from './pipes/linkfield.pipe';\nimport {LinkFieldDirective} from './directives/linkfield.directive';\nimport {MicroClient} from './microclient.service';\nimport {HttpClientModule} from '@angular/common/http';\nimport {CallLinkDirective} from './directives/call-link.directive';\nimport {MicroClientErrorIndicatorComponent} from './components/errorindicator.component';\nimport {MicroLinkValidateDirective} from './directives/micro-link-validate.directive';\n\n@NgModule({\n entryComponents: [\n MicroClientLoadingIndicatorComponent,\n MicroClientErrorIndicatorComponent\n ],\n imports: [\n HttpClientModule\n ],\n declarations: [\n LinkFieldPipe,\n LinkFieldDirective,\n CallLinkDirective,\n MicroClientLoadingIndicatorComponent,\n MicroClientErrorIndicatorComponent,\n MicroLinkValidateDirective\n ],\n exports: [\n LinkFieldPipe,\n LinkFieldDirective,\n CallLinkDirective,\n MicroClientErrorIndicatorComponent,\n MicroClientLoadingIndicatorComponent,\n MicroLinkValidateDirective\n ]\n})\nexport class MicroClientModule {\n static forClientRoot(): ModuleWithProviders<MicroClientModule> {\n return {\n ngModule: MicroClientModule,\n providers: [\n MicroClient\n ]\n };\n }\n}\n","import {ChangeDetectorRef} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport {LinkField} from './links/linkfield';\nimport {MicroObject} from './microobject';\n\nexport class LinkFieldPagingSupport {\n\n constructor(\n private pageLink: LinkField<MicroObject[]>,\n private changeDetectorRef: ChangeDetectorRef,\n public pageLimit: number = 200\n ) {\n }\n\n private sorts: SortInfo[] = null;\n\n public isLoading = false;\n private loadedCompletely = false;\n private hasLoaded = false;\n private _rows: any[] = null;\n private loadingSubscription: Subscription = null;\n\n public rowsChangeCallback: (rows: any[]) => void;\n public isLoadingCallback: (isLoading: boolean) => void;\n\n get rows(): any[] {\n if (!this.hasLoaded) {\n this.loadNextPage();\n }\n return this._rows;\n }\n\n public static from(\n pageLink: LinkField<MicroObject[]>,\n changeDetectorRef: ChangeDetectorRef,\n pageLimit: number = 200\n ): LinkFieldPagingSupport {\n return new LinkFieldPagingSupport(pageLink, changeDetectorRef, pageLimit);\n }\n\n public applySort(sorts: SortInfo[], externalSorting = true) {\n this.hasLoaded = false;\n this.sorts = null;\n this._rows = null;\n\n if (externalSorting) {\n this.sorts = sorts;\n this.loadNextPage();\n } else {\n if (!this.loadedCompletely) {\n this.loadNextPage(null);\n } else {\n this.changeDetectorRef.detectChanges();\n }\n }\n\n }\n\n private loadingCallback = () => {\n this.setLoading(false);\n };\n\n public loadNextPage(pageSize: number = this.pageLimit, resultCallback: ((page: any[], all: any[]) => void) = null) {\n if (this.pageLink && !this.isLoading) {\n if (this.loadingSubscription) {\n this.loadingSubscription.unsubscribe();\n this.loadingSubscription = null;\n }\n\n this.hasLoaded = true;\n this.loadedCompletely = false;\n if (this._rows == null) {\n this.setLoading(true);\n\n const reqOptions: any = {};\n if (this.sorts != null) {\n reqOptions.sorting = this.sorts;\n }\n if (pageSize != null) {\n reqOptions.pageSize = pageSize;\n }\n\n\n this.loadingSubscription = this.pageLink.initWithObs(null, reqOptions).subscribe((firstPage) => {\n this.setRows(firstPage, resultCallback);\n }, this.loadingCallback, this.loadingCallback);\n } else {\n const lastRow = this.lastRow();\n if (lastRow) {\n if (lastRow.__meta.nextPage) {\n let reqOptions = null;\n if (pageSize != null) {\n reqOptions = {\n pageSize: pageSize\n };\n }\n\n const nextPageObs: Observable<MicroObject[]> = lastRow.__meta.nextPage.initWithObs(null, reqOptions);\n if (nextPageObs) {\n this.setLoading(true);\n this.loadingSubscription = nextPageObs.subscribe((nextPage) => {\n this.setRows(nextPage, resultCallback);\n }, this.loadingCallback, this.loadingCallback);\n }\n }\n }\n }\n } else if (!this.pageLink) {\n this.clearRows();\n }\n }\n\n public loadEverything() {\n this.loadNextPage(null);\n }\n\n private lastRow(): MicroObject {\n return this._rows[this._rows.length - 1];\n }\n\n private setRows(additionalPage: any[], loadCallback: ((page: any[], all: any[]) => void)) {\n if (this._rows) {\n this._rows = [...this.rows, ...additionalPage];\n } else {\n this._rows = additionalPage;\n }\n if (loadCallback) {\n loadCallback(additionalPage, this._rows);\n }\n this.reflectChanges();\n }\n\n private clearRows() {\n if (this._rows != null) {\n this._rows = null;\n this.reflectChanges();\n }\n }\n\n private reflectChanges() {\n const lastRow = this.lastRow();\n if (lastRow && lastRow.__meta) {\n this.loadedCompletely = lastRow.__meta.nextPage == null;\n } else {\n this.loadedCompletely = false;\n }\n\n if (this.rowsChangeCallback) {\n this.rowsChangeCallback(this._rows);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n private setLoading(isLoading: boolean) {\n this.isLoading = isLoading;\n if (this.isLoadingCallback) {\n this.isLoadingCallback(this.isLoading);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n public dispose() {\n this.rowsChangeCallback = null;\n this.isLoadingCallback = null;\n }\n\n public setPageLink(pageLink: LinkField<MicroObject[]>) {\n this.clearState();\n this.pageLink = pageLink;\n this.loadNextPage();\n }\n\n public hasLoadedCompletely(): boolean {\n return this.loadedCompletely;\n }\n\n public init(rowsChangeCallback: (rows: any[]) => void, isLoadingCallback: ((isLoading: boolean) => void) = null) {\n this.rowsChangeCallback = rowsChangeCallback;\n this.isLoadingCallback = isLoadingCallback;\n }\n\n private clearState() {\n this.isLoading = false;\n this.loadedCompletely = false;\n this.hasLoaded = false;\n this._rows = null;\n if (this.loadingSubscription) {\n this.loadingSubscription.unsubscribe();\n this.loadingSubscription = null;\n }\n }\n}\n\nexport class SortInfo {\n constructor(public field: string, public dir: string) {\n this.dir = dir.toUpperCase();\n if (!(this.dir === 'ASC' || this.dir === 'DESC')) {\n throw Error('dir can only be \\'ASC\\' or \\'DESC\\'');\n }\n }\n}\n","import {LinkField} from './linkfield';\nimport {Observable, of} from 'rxjs';\nimport {delay} from 'rxjs/operators';\n\nexport class MockLinkField<T extends (object | object[])> extends LinkField<T> {\n constructor(private valueToLoad: any, private delay: number) {\n super(null, null);\n }\n\n callWithObs(params: object = null, requestOptions: object = null): Observable<T> {\n return of(this.valueToLoad).pipe(\n delay(this.delay)\n );\n }\n}"],"names":["_.cloneDeepWith"],"mappings":"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"}