@micropermit/client-angular 0.4.5-alpha2 → 0.5.0-alpha.1
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.
- package/fesm2022/micropermit-client-angular.mjs +105 -148
- package/fesm2022/micropermit-client-angular.mjs.map +1 -1
- package/lib/directives/linkfield.directive.d.ts +1 -1
- package/lib/directives/micro-link-validate.directive.d.ts +1 -1
- package/lib/link-field-paging-support.d.ts +3 -4
- package/lib/links/callablelink.d.ts +3 -3
- package/lib/links/linkfield.d.ts +2 -2
- package/lib/links/mock-linkfield.d.ts +2 -2
- package/lib/microclient.service.d.ts +4 -2
- package/lib/paramutils.d.ts +3 -1
- package/package.json +1 -1
|
@@ -9,11 +9,11 @@ import { AsyncPipe } from '@angular/common';
|
|
|
9
9
|
import { FormGroup, NG_ASYNC_VALIDATORS } from '@angular/forms';
|
|
10
10
|
|
|
11
11
|
class ParamUtils {
|
|
12
|
-
static plusRegex = new RegExp('\\+');
|
|
13
|
-
static slashRegex = new RegExp('/', 'g');
|
|
14
|
-
static multiEqualRegex = new RegExp('=+$', 'g');
|
|
15
|
-
static minusRegex = new RegExp('-', 'g');
|
|
16
|
-
static underscoreRegex = new RegExp('_', 'g');
|
|
12
|
+
static { this.plusRegex = new RegExp('\\+'); }
|
|
13
|
+
static { this.slashRegex = new RegExp('/', 'g'); }
|
|
14
|
+
static { this.multiEqualRegex = new RegExp('=+$', 'g'); }
|
|
15
|
+
static { this.minusRegex = new RegExp('-', 'g'); }
|
|
16
|
+
static { this.underscoreRegex = new RegExp('_', 'g'); }
|
|
17
17
|
static addParam(url, key, value, replaceExisting = true) {
|
|
18
18
|
const hasQueryParams = url.indexOf('?') >= 0;
|
|
19
19
|
if (!hasQueryParams) {
|
|
@@ -106,17 +106,13 @@ class ParamUtils {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
class CallableLink {
|
|
109
|
-
link;
|
|
110
|
-
microClient;
|
|
111
|
-
callParams;
|
|
112
|
-
requestOptions;
|
|
113
109
|
constructor(link, microClient, callParams = null, requestOptions = null) {
|
|
114
110
|
this.link = link;
|
|
115
111
|
this.microClient = microClient;
|
|
116
112
|
this.callParams = callParams;
|
|
117
113
|
this.requestOptions = requestOptions;
|
|
114
|
+
this.serializeTo = LinkSerializer.DONT_SERIALIZE;
|
|
118
115
|
}
|
|
119
|
-
serializeTo = LinkSerializer.DONT_SERIALIZE;
|
|
120
116
|
hasLink() {
|
|
121
117
|
return this.link != null;
|
|
122
118
|
}
|
|
@@ -230,30 +226,29 @@ class CallableLink {
|
|
|
230
226
|
}
|
|
231
227
|
// @dynamic
|
|
232
228
|
class LinkSerializer {
|
|
233
|
-
static DONT_SERIALIZE = function () {
|
|
229
|
+
static { this.DONT_SERIALIZE = function () {
|
|
234
230
|
return undefined;
|
|
235
|
-
};
|
|
236
|
-
static AS_LINK = function (link) {
|
|
231
|
+
}; }
|
|
232
|
+
static { this.AS_LINK = function (link) {
|
|
237
233
|
return link;
|
|
238
|
-
};
|
|
239
|
-
static AS_VALUE_IF_INITIALIZED = function (link, callParams, requestOptions, value, isInitialized) {
|
|
234
|
+
}; }
|
|
235
|
+
static { this.AS_VALUE_IF_INITIALIZED = function (link, callParams, requestOptions, value, isInitialized) {
|
|
240
236
|
if (isInitialized) {
|
|
241
237
|
return value;
|
|
242
238
|
}
|
|
243
239
|
else {
|
|
244
240
|
return undefined;
|
|
245
241
|
}
|
|
246
|
-
};
|
|
242
|
+
}; }
|
|
247
243
|
}
|
|
248
244
|
|
|
249
245
|
class LinkField extends CallableLink {
|
|
250
|
-
value;
|
|
251
|
-
initialized = false;
|
|
252
|
-
_getPromise;
|
|
253
|
-
valueSubj;
|
|
254
|
-
serializeTo = LinkSerializer.AS_VALUE_IF_INITIALIZED;
|
|
255
246
|
constructor(link, microClient, initialValue = null, initialized = false, callParams = null, requestOptions = null) {
|
|
256
247
|
super(link, microClient, callParams, requestOptions);
|
|
248
|
+
this.initialized = false;
|
|
249
|
+
this.serializeTo = LinkSerializer.AS_VALUE_IF_INITIALIZED;
|
|
250
|
+
this.intervalId = null;
|
|
251
|
+
this.isRefreshing = false;
|
|
257
252
|
if (initialized) {
|
|
258
253
|
this.set(initialValue);
|
|
259
254
|
}
|
|
@@ -274,8 +269,6 @@ class LinkField extends CallableLink {
|
|
|
274
269
|
}
|
|
275
270
|
return this._getPromise;
|
|
276
271
|
}
|
|
277
|
-
intervalId = null;
|
|
278
|
-
isRefreshing = false;
|
|
279
272
|
refresh(interval, errorHandler) {
|
|
280
273
|
if (interval) {
|
|
281
274
|
this.stopRefresh();
|
|
@@ -393,8 +386,10 @@ class LinkField extends CallableLink {
|
|
|
393
386
|
}
|
|
394
387
|
|
|
395
388
|
class MicroObject {
|
|
396
|
-
|
|
397
|
-
|
|
389
|
+
constructor() {
|
|
390
|
+
this.__meta = undefined;
|
|
391
|
+
}
|
|
392
|
+
static { this.META_KEY = '__meta'; }
|
|
398
393
|
static deepCopy(toCopy, client) {
|
|
399
394
|
return _.cloneDeepWith(toCopy, MicroObject.deepCopyCustomizer);
|
|
400
395
|
}
|
|
@@ -440,6 +435,7 @@ class MicroObject {
|
|
|
440
435
|
}
|
|
441
436
|
}
|
|
442
437
|
static attachMetadataObject(microObject, client) {
|
|
438
|
+
// @ts-ignore
|
|
443
439
|
const rawMeta = microObject != null ? microObject[MicroObject.META_KEY] : null;
|
|
444
440
|
if (rawMeta != null) {
|
|
445
441
|
let clientToUse = client;
|
|
@@ -453,7 +449,7 @@ class MicroObject {
|
|
|
453
449
|
MicroObject.attachCallableLinks(microObject.__meta, microObject, clientToUse);
|
|
454
450
|
}
|
|
455
451
|
else {
|
|
456
|
-
return
|
|
452
|
+
return;
|
|
457
453
|
}
|
|
458
454
|
}
|
|
459
455
|
static attachLinkFields(meta, microObject, client) {
|
|
@@ -469,11 +465,6 @@ class MicroObject {
|
|
|
469
465
|
}
|
|
470
466
|
}
|
|
471
467
|
class MicroObjectMetadata {
|
|
472
|
-
links;
|
|
473
|
-
actions;
|
|
474
|
-
permitToken;
|
|
475
|
-
nextPage;
|
|
476
|
-
error;
|
|
477
468
|
static fromObject(obj, client) {
|
|
478
469
|
const objMetadata = Object.assign(new MicroObjectMetadata(), obj);
|
|
479
470
|
if (objMetadata.nextPage != null) {
|
|
@@ -505,30 +496,15 @@ class MicroObjectMetadata {
|
|
|
505
496
|
}
|
|
506
497
|
|
|
507
498
|
class MicroError {
|
|
508
|
-
timestamp;
|
|
509
|
-
errorMessage;
|
|
510
|
-
atService;
|
|
511
|
-
atEndpoint;
|
|
512
|
-
instanceID;
|
|
513
|
-
httpEquivCode;
|
|
514
|
-
cause;
|
|
515
|
-
errorID;
|
|
516
|
-
errorType;
|
|
517
499
|
}
|
|
518
500
|
|
|
519
501
|
class MicroClient {
|
|
520
|
-
httpClient;
|
|
521
|
-
authHeader;
|
|
522
|
-
permitToken;
|
|
523
|
-
entryPoint;
|
|
524
|
-
entryPointSubject = new ReplaySubject();
|
|
525
|
-
urlRewriter;
|
|
526
|
-
defaultErrorHandler;
|
|
527
|
-
usePost = true;
|
|
528
|
-
sendAsPermitTokenHeader = true;
|
|
529
|
-
sendAsMultipartFormData = false;
|
|
530
502
|
constructor(httpClient) {
|
|
531
503
|
this.httpClient = httpClient;
|
|
504
|
+
this.entryPointSubject = new ReplaySubject();
|
|
505
|
+
this.usePost = true;
|
|
506
|
+
this.sendAsPermitTokenHeader = true;
|
|
507
|
+
this.sendAsMultipartFormData = false;
|
|
532
508
|
}
|
|
533
509
|
setSendAsPermitTokenHeader(sendAsPermitTokenHeader) {
|
|
534
510
|
this.sendAsPermitTokenHeader = sendAsPermitTokenHeader;
|
|
@@ -690,7 +666,7 @@ class MicroClient {
|
|
|
690
666
|
encodeBody(body) {
|
|
691
667
|
if (this.sendAsMultipartFormData) {
|
|
692
668
|
let formData = new FormData();
|
|
693
|
-
let paramBlob = new Blob([JSON.stringify(body)], { type:
|
|
669
|
+
let paramBlob = new Blob([JSON.stringify(body)], { type: 'application/json' });
|
|
694
670
|
formData.append('*', paramBlob);
|
|
695
671
|
return formData;
|
|
696
672
|
}
|
|
@@ -748,7 +724,7 @@ class MicroClient {
|
|
|
748
724
|
}
|
|
749
725
|
return null;
|
|
750
726
|
}
|
|
751
|
-
static staticContentRegExp = new RegExp('[a-zA-Z0-9]://.*(:[0-9]+)?(/.*)*/static(/.*(\\?.*)?(#.*)?)?');
|
|
727
|
+
static { this.staticContentRegExp = new RegExp('[a-zA-Z0-9]://.*(:[0-9]+)?(/.*)*/static(/.*(\\?.*)?(#.*)?)?'); }
|
|
752
728
|
static guessMicroComponentBaseURL() {
|
|
753
729
|
const href = window.location.href;
|
|
754
730
|
// Last URL-Segement is static
|
|
@@ -768,20 +744,18 @@ class MicroClient {
|
|
|
768
744
|
static guessMicroComponentAuthorizeURL() {
|
|
769
745
|
return this.guessMicroComponentBaseURL() + '/authorize';
|
|
770
746
|
}
|
|
771
|
-
static
|
|
772
|
-
static
|
|
747
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroClient, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
748
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroClient }); }
|
|
773
749
|
}
|
|
774
750
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroClient, decorators: [{
|
|
775
751
|
type: Injectable
|
|
776
752
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
777
753
|
class MicroClientLoadError {
|
|
778
|
-
error;
|
|
779
|
-
defaultHandler;
|
|
780
|
-
handled = false;
|
|
781
|
-
doPreventDefault = false;
|
|
782
754
|
constructor(error, defaultHandler) {
|
|
783
755
|
this.error = error;
|
|
784
756
|
this.defaultHandler = defaultHandler;
|
|
757
|
+
this.handled = false;
|
|
758
|
+
this.doPreventDefault = false;
|
|
785
759
|
}
|
|
786
760
|
handleDefault() {
|
|
787
761
|
if (this.defaultHandler) {
|
|
@@ -808,12 +782,12 @@ class MicroClientLoadError {
|
|
|
808
782
|
}
|
|
809
783
|
|
|
810
784
|
class MicroClientLoadingIndicatorComponent {
|
|
811
|
-
static
|
|
812
|
-
static
|
|
785
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroClientLoadingIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
786
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: MicroClientLoadingIndicatorComponent, isStandalone: false, selector: "mc-loadingindicator", ngImport: i0, template: `
|
|
813
787
|
<div id="container">
|
|
814
788
|
<div id="bar"></div>
|
|
815
789
|
</div>
|
|
816
|
-
`, isInline: true, styles: ["#container{display:block;overflow:hidden;width:100%;height:5px;-webkit-transform:translate(0,0) scale(1,1);transform:translate(0) scale(1);background-color:#aad1f9}#container #bar{transition:all .2s linear;-webkit-animation:query .8s infinite cubic-bezier(.39,.575,.565,1);animation:query .8s infinite cubic-bezier(.39,.575,.565,1);transition:-webkit-transform .2s linear;transition:transform .2s linear;background-color:#106cc8;width:100%;height:5px}@keyframes query{0%{opacity:1;transform:translate(35%) scaleX(.3)}to{opacity:0;transform:translate(-50%) scaleX(0)}}\n"] });
|
|
790
|
+
`, isInline: true, styles: ["#container{display:block;overflow:hidden;width:100%;height:5px;-webkit-transform:translate(0,0) scale(1,1);transform:translate(0) scale(1);background-color:#aad1f9}#container #bar{transition:all .2s linear;-webkit-animation:query .8s infinite cubic-bezier(.39,.575,.565,1);animation:query .8s infinite cubic-bezier(.39,.575,.565,1);transition:-webkit-transform .2s linear;transition:transform .2s linear;background-color:#106cc8;width:100%;height:5px}@keyframes query{0%{opacity:1;transform:translate(35%) scaleX(.3)}to{opacity:0;transform:translate(-50%) scaleX(0)}}\n"] }); }
|
|
817
791
|
}
|
|
818
792
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroClientLoadingIndicatorComponent, decorators: [{
|
|
819
793
|
type: Component,
|
|
@@ -825,7 +799,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
825
799
|
}] });
|
|
826
800
|
|
|
827
801
|
class LinkFieldPipe {
|
|
828
|
-
asyncPipe;
|
|
829
802
|
constructor(changeDetectorRef) {
|
|
830
803
|
this.asyncPipe = new AsyncPipe(changeDetectorRef);
|
|
831
804
|
}
|
|
@@ -844,8 +817,8 @@ class LinkFieldPipe {
|
|
|
844
817
|
throw new Error('Can\'t use the linkField pipe with a value which isn\'t an instance of LinkField');
|
|
845
818
|
}
|
|
846
819
|
}
|
|
847
|
-
static
|
|
848
|
-
static
|
|
820
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: LinkFieldPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
821
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: LinkFieldPipe, isStandalone: false, name: "linkField", pure: false }); }
|
|
849
822
|
}
|
|
850
823
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: LinkFieldPipe, decorators: [{
|
|
851
824
|
type: Pipe,
|
|
@@ -857,14 +830,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
857
830
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
858
831
|
|
|
859
832
|
class MicroClientErrorIndicatorComponent {
|
|
860
|
-
error;
|
|
861
833
|
onClick() {
|
|
862
834
|
this.error.handleDefault();
|
|
863
835
|
}
|
|
864
|
-
static
|
|
865
|
-
static
|
|
836
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroClientErrorIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
837
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: MicroClientErrorIndicatorComponent, isStandalone: false, selector: "mc-errorindicator", inputs: { error: "error" }, ngImport: i0, template: `
|
|
866
838
|
<div class="blinking-error" [class.clickable]="error.hasDefaultHandler()" (click)="onClick()"></div>
|
|
867
|
-
`, isInline: true, styles: [".blinking-error{background-image:linear-gradient(to right,tomato,#8b0000,tomato);animation:blinkingText .5s 1;height:5px}.blinking-error.clickable{cursor:pointer}@keyframes blinkingText{0%{opacity:0}50%{opacity:1}to{opacity:0}}\n"] });
|
|
839
|
+
`, isInline: true, styles: [".blinking-error{background-image:linear-gradient(to right,tomato,#8b0000,tomato);animation:blinkingText .5s 1;height:5px}.blinking-error.clickable{cursor:pointer}@keyframes blinkingText{0%{opacity:0}50%{opacity:1}to{opacity:0}}\n"] }); }
|
|
868
840
|
}
|
|
869
841
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroClientErrorIndicatorComponent, decorators: [{
|
|
870
842
|
type: Component,
|
|
@@ -876,27 +848,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
876
848
|
}] } });
|
|
877
849
|
|
|
878
850
|
class LinkFieldDirective {
|
|
879
|
-
_viewContainer;
|
|
880
|
-
_template;
|
|
881
|
-
componentResolver;
|
|
882
|
-
changeDetectorRef;
|
|
883
|
-
_from;
|
|
884
|
-
_loadingTemplate;
|
|
885
|
-
_errorTemplate;
|
|
886
|
-
_defaultLoadingComponent;
|
|
887
|
-
_defaultErrorComponent;
|
|
888
|
-
isDirty = true;
|
|
889
|
-
isLoading = false;
|
|
890
|
-
loadedResult = null;
|
|
891
|
-
hasResult = false;
|
|
892
|
-
lastObs;
|
|
893
|
-
subscription = null;
|
|
894
|
-
currentContext;
|
|
895
851
|
constructor(_viewContainer, _template, componentResolver, changeDetectorRef) {
|
|
896
852
|
this._viewContainer = _viewContainer;
|
|
897
853
|
this._template = _template;
|
|
898
854
|
this.componentResolver = componentResolver;
|
|
899
855
|
this.changeDetectorRef = changeDetectorRef;
|
|
856
|
+
this.isDirty = true;
|
|
857
|
+
this.isLoading = false;
|
|
858
|
+
this.loadedResult = null;
|
|
859
|
+
this.hasResult = false;
|
|
860
|
+
this.subscription = null;
|
|
861
|
+
this.linkFieldDefaultErrorHandling = false;
|
|
862
|
+
this.linkFieldParams = null;
|
|
900
863
|
this._defaultLoadingComponent = componentResolver.resolveComponentFactory(MicroClientLoadingIndicatorComponent);
|
|
901
864
|
this._defaultErrorComponent = componentResolver.resolveComponentFactory(MicroClientErrorIndicatorComponent);
|
|
902
865
|
}
|
|
@@ -920,9 +883,6 @@ class LinkFieldDirective {
|
|
|
920
883
|
this._template = value;
|
|
921
884
|
}
|
|
922
885
|
}
|
|
923
|
-
linkFieldDefaultErrorHandling = false;
|
|
924
|
-
linkFieldValueChange;
|
|
925
|
-
linkFieldParams = null;
|
|
926
886
|
load() {
|
|
927
887
|
if (this._from) {
|
|
928
888
|
if (this._from instanceof LinkField) {
|
|
@@ -959,16 +919,16 @@ class LinkFieldDirective {
|
|
|
959
919
|
this.clear();
|
|
960
920
|
}
|
|
961
921
|
ngOnChanges(changes) {
|
|
962
|
-
if (changes
|
|
922
|
+
if (changes['linkFieldFrom']) {
|
|
963
923
|
if (!(this._from instanceof LinkField)) {
|
|
964
924
|
this._from = LinkField.from(this._from);
|
|
965
925
|
}
|
|
966
|
-
if (changes
|
|
926
|
+
if (changes['linkFieldFrom'].previousValue !== changes['linkFieldFrom'].currentValue) {
|
|
967
927
|
this.clear();
|
|
968
928
|
this.load();
|
|
969
929
|
}
|
|
970
930
|
}
|
|
971
|
-
if (changes
|
|
931
|
+
if (changes['linkFieldParams'] && this.linkFieldParams) {
|
|
972
932
|
let link = this._from;
|
|
973
933
|
this._from = link.withCallParams(this.linkFieldParams);
|
|
974
934
|
}
|
|
@@ -1039,8 +999,8 @@ class LinkFieldDirective {
|
|
|
1039
999
|
this.lastObs = null;
|
|
1040
1000
|
this.currentContext = null;
|
|
1041
1001
|
}
|
|
1042
|
-
static
|
|
1043
|
-
static
|
|
1002
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: LinkFieldDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1003
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: LinkFieldDirective, isStandalone: false, selector: "[linkField][linkFieldFrom]", inputs: { linkFieldFrom: "linkFieldFrom", linkFieldLoadingTemplate: "linkFieldLoadingTemplate", linkFieldErrorTemplate: "linkFieldErrorTemplate", linkFieldTemplate: "linkFieldTemplate", linkFieldDefaultErrorHandling: "linkFieldDefaultErrorHandling", linkFieldValueChange: "linkFieldValueChange", linkFieldParams: "linkFieldParams" }, usesOnChanges: true, ngImport: i0 }); }
|
|
1044
1004
|
}
|
|
1045
1005
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: LinkFieldDirective, decorators: [{
|
|
1046
1006
|
type: Directive,
|
|
@@ -1064,21 +1024,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
1064
1024
|
type: Input
|
|
1065
1025
|
}] } });
|
|
1066
1026
|
class LinkFieldContext {
|
|
1067
|
-
$implicit;
|
|
1068
1027
|
constructor($implicit) {
|
|
1069
1028
|
this.$implicit = $implicit;
|
|
1070
1029
|
}
|
|
1071
1030
|
}
|
|
1072
1031
|
|
|
1073
1032
|
class CallLinkDirective {
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
callParameters;
|
|
1033
|
+
constructor() {
|
|
1034
|
+
this.callStatusChange = new EventEmitter();
|
|
1035
|
+
this.callSucess = new EventEmitter();
|
|
1036
|
+
this.callFinish = new EventEmitter();
|
|
1037
|
+
this.callError = new EventEmitter();
|
|
1038
|
+
this.callStart = new EventEmitter();
|
|
1039
|
+
}
|
|
1082
1040
|
onClick() {
|
|
1083
1041
|
this.callLink.callWithObs(this.callParameters, this.callOptions).subscribe((response) => {
|
|
1084
1042
|
this.callSucess.emit(response);
|
|
@@ -1091,8 +1049,8 @@ class CallLinkDirective {
|
|
|
1091
1049
|
});
|
|
1092
1050
|
this.callStatusChange.emit(new CallStatus(this.callLink, CallState.CALLING, null, null));
|
|
1093
1051
|
}
|
|
1094
|
-
static
|
|
1095
|
-
static
|
|
1052
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CallLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1053
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: CallLinkDirective, isStandalone: false, selector: "[callLink]", inputs: { callLink: "callLink", callOptions: "callOptions", callParameters: "callParameters" }, outputs: { callStatusChange: "callStatusChange", callSucess: "callSucess", callFinish: "callFinish", callError: "callError", callStart: "callStart" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
|
|
1096
1054
|
}
|
|
1097
1055
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CallLinkDirective, decorators: [{
|
|
1098
1056
|
type: Directive,
|
|
@@ -1121,10 +1079,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
1121
1079
|
args: ['click']
|
|
1122
1080
|
}] } });
|
|
1123
1081
|
class CallStatus {
|
|
1124
|
-
link;
|
|
1125
|
-
state;
|
|
1126
|
-
response;
|
|
1127
|
-
error;
|
|
1128
1082
|
constructor(link, state, response, error) {
|
|
1129
1083
|
this.link = link;
|
|
1130
1084
|
this.state = state;
|
|
@@ -1140,12 +1094,12 @@ var CallState;
|
|
|
1140
1094
|
})(CallState || (CallState = {}));
|
|
1141
1095
|
|
|
1142
1096
|
class MicroLinkValidateDirective {
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1097
|
+
constructor() {
|
|
1098
|
+
this.UNSET = '';
|
|
1099
|
+
this.microLinkValidateField = null;
|
|
1100
|
+
this.microLinkValidateValue = this.UNSET;
|
|
1101
|
+
this.microLinkValidateDebounce = 500;
|
|
1102
|
+
}
|
|
1149
1103
|
validate(control) {
|
|
1150
1104
|
return timer(this.microLinkValidateDebounce).pipe(switchMap(() => {
|
|
1151
1105
|
let validateValue = this.microLinkValidateValue;
|
|
@@ -1206,14 +1160,14 @@ class MicroLinkValidateDirective {
|
|
|
1206
1160
|
// we either found a name or simply return null
|
|
1207
1161
|
return controlName;
|
|
1208
1162
|
}
|
|
1209
|
-
static
|
|
1210
|
-
static
|
|
1163
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroLinkValidateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1164
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: MicroLinkValidateDirective, isStandalone: false, selector: "[microLinkValidate]", inputs: { microLinkValidate: "microLinkValidate", microLinkValidateField: "microLinkValidateField", microLinkValidateValue: "microLinkValidateValue", microLinkValidateDebounce: "microLinkValidateDebounce" }, providers: [
|
|
1211
1165
|
{
|
|
1212
1166
|
provide: NG_ASYNC_VALIDATORS,
|
|
1213
|
-
useExisting: forwardRef(() => MicroLinkValidateDirective),
|
|
1167
|
+
useExisting: forwardRef((() => MicroLinkValidateDirective)),
|
|
1214
1168
|
multi: true
|
|
1215
1169
|
}
|
|
1216
|
-
], exportAs: ["microValidator"], ngImport: i0 });
|
|
1170
|
+
], exportAs: ["microValidator"], ngImport: i0 }); }
|
|
1217
1171
|
}
|
|
1218
1172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroLinkValidateDirective, decorators: [{
|
|
1219
1173
|
type: Directive,
|
|
@@ -1222,7 +1176,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
1222
1176
|
providers: [
|
|
1223
1177
|
{
|
|
1224
1178
|
provide: NG_ASYNC_VALIDATORS,
|
|
1225
|
-
useExisting: forwardRef(() => MicroLinkValidateDirective),
|
|
1179
|
+
useExisting: forwardRef((() => MicroLinkValidateDirective)),
|
|
1226
1180
|
multi: true
|
|
1227
1181
|
}
|
|
1228
1182
|
],
|
|
@@ -1248,8 +1202,8 @@ class MicroClientModule {
|
|
|
1248
1202
|
]
|
|
1249
1203
|
};
|
|
1250
1204
|
}
|
|
1251
|
-
static
|
|
1252
|
-
static
|
|
1205
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1206
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: MicroClientModule, declarations: [LinkFieldPipe,
|
|
1253
1207
|
LinkFieldDirective,
|
|
1254
1208
|
CallLinkDirective,
|
|
1255
1209
|
MicroClientLoadingIndicatorComponent,
|
|
@@ -1259,10 +1213,10 @@ class MicroClientModule {
|
|
|
1259
1213
|
CallLinkDirective,
|
|
1260
1214
|
MicroClientErrorIndicatorComponent,
|
|
1261
1215
|
MicroClientLoadingIndicatorComponent,
|
|
1262
|
-
MicroLinkValidateDirective] });
|
|
1263
|
-
static
|
|
1216
|
+
MicroLinkValidateDirective] }); }
|
|
1217
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroClientModule, providers: [
|
|
1264
1218
|
provideHttpClient()
|
|
1265
|
-
] });
|
|
1219
|
+
] }); }
|
|
1266
1220
|
}
|
|
1267
1221
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: MicroClientModule, decorators: [{
|
|
1268
1222
|
type: NgModule,
|
|
@@ -1291,22 +1245,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
1291
1245
|
}] });
|
|
1292
1246
|
|
|
1293
1247
|
class LinkFieldPagingSupport {
|
|
1294
|
-
pageLink;
|
|
1295
|
-
changeDetectorRef;
|
|
1296
|
-
pageLimit;
|
|
1297
1248
|
constructor(pageLink, changeDetectorRef, pageLimit = 200) {
|
|
1298
1249
|
this.pageLink = pageLink;
|
|
1299
1250
|
this.changeDetectorRef = changeDetectorRef;
|
|
1300
1251
|
this.pageLimit = pageLimit;
|
|
1252
|
+
this.sorts = null;
|
|
1253
|
+
this.isLoading = false;
|
|
1254
|
+
this.loadedCompletely = false;
|
|
1255
|
+
this.hasLoaded = false;
|
|
1256
|
+
this._rows = null;
|
|
1257
|
+
this.loadingSubscription = null;
|
|
1258
|
+
this.loadingCallback = () => {
|
|
1259
|
+
this.setLoading(false);
|
|
1260
|
+
};
|
|
1301
1261
|
}
|
|
1302
|
-
sorts = null;
|
|
1303
|
-
isLoading = false;
|
|
1304
|
-
loadedCompletely = false;
|
|
1305
|
-
hasLoaded = false;
|
|
1306
|
-
_rows = null;
|
|
1307
|
-
loadingSubscription = null;
|
|
1308
|
-
rowsChangeCallback;
|
|
1309
|
-
isLoadingCallback;
|
|
1310
1262
|
get rows() {
|
|
1311
1263
|
if (!this.hasLoaded) {
|
|
1312
1264
|
this.loadNextPage();
|
|
@@ -1333,9 +1285,6 @@ class LinkFieldPagingSupport {
|
|
|
1333
1285
|
}
|
|
1334
1286
|
}
|
|
1335
1287
|
}
|
|
1336
|
-
loadingCallback = () => {
|
|
1337
|
-
this.setLoading(false);
|
|
1338
|
-
};
|
|
1339
1288
|
loadNextPage(pageSize = this.pageLimit, resultCallback = null) {
|
|
1340
1289
|
if (this.pageLink && !this.isLoading) {
|
|
1341
1290
|
if (this.loadingSubscription) {
|
|
@@ -1353,9 +1302,13 @@ class LinkFieldPagingSupport {
|
|
|
1353
1302
|
if (pageSize != null) {
|
|
1354
1303
|
reqOptions.pageSize = pageSize;
|
|
1355
1304
|
}
|
|
1356
|
-
this.loadingSubscription = this.pageLink.initWithObs(null, reqOptions).subscribe(
|
|
1357
|
-
|
|
1358
|
-
|
|
1305
|
+
this.loadingSubscription = this.pageLink.initWithObs(null, reqOptions).subscribe({
|
|
1306
|
+
next: (firstPage) => {
|
|
1307
|
+
this.setRows(firstPage, resultCallback);
|
|
1308
|
+
},
|
|
1309
|
+
error: this.loadingCallback,
|
|
1310
|
+
complete: this.loadingCallback
|
|
1311
|
+
});
|
|
1359
1312
|
}
|
|
1360
1313
|
else {
|
|
1361
1314
|
const lastRow = this.lastRow();
|
|
@@ -1370,9 +1323,13 @@ class LinkFieldPagingSupport {
|
|
|
1370
1323
|
const nextPageObs = lastRow.__meta.nextPage.initWithObs(null, reqOptions);
|
|
1371
1324
|
if (nextPageObs) {
|
|
1372
1325
|
this.setLoading(true);
|
|
1373
|
-
this.loadingSubscription = nextPageObs.subscribe(
|
|
1374
|
-
|
|
1375
|
-
|
|
1326
|
+
this.loadingSubscription = nextPageObs.subscribe({
|
|
1327
|
+
next: (nextPage) => {
|
|
1328
|
+
this.setRows(nextPage, resultCallback);
|
|
1329
|
+
},
|
|
1330
|
+
error: this.loadingCallback,
|
|
1331
|
+
complete: this.loadingCallback
|
|
1332
|
+
});
|
|
1376
1333
|
}
|
|
1377
1334
|
}
|
|
1378
1335
|
}
|
|
@@ -1454,8 +1411,6 @@ class LinkFieldPagingSupport {
|
|
|
1454
1411
|
}
|
|
1455
1412
|
}
|
|
1456
1413
|
class SortInfo {
|
|
1457
|
-
field;
|
|
1458
|
-
dir;
|
|
1459
1414
|
constructor(field, dir) {
|
|
1460
1415
|
this.field = field;
|
|
1461
1416
|
this.dir = dir;
|
|
@@ -1467,15 +1422,17 @@ class SortInfo {
|
|
|
1467
1422
|
}
|
|
1468
1423
|
|
|
1469
1424
|
class MockLinkField extends LinkField {
|
|
1470
|
-
valueToLoad;
|
|
1471
|
-
delay;
|
|
1472
1425
|
constructor(valueToLoad, delay) {
|
|
1473
1426
|
super(null, null);
|
|
1474
1427
|
this.valueToLoad = valueToLoad;
|
|
1475
1428
|
this.delay = delay;
|
|
1476
1429
|
}
|
|
1477
1430
|
callWithObs(params = null, requestOptions = null) {
|
|
1478
|
-
|
|
1431
|
+
let value = this.valueToLoad;
|
|
1432
|
+
if (typeof value === 'function') {
|
|
1433
|
+
value = value();
|
|
1434
|
+
}
|
|
1435
|
+
return of(value).pipe(delay(this.delay));
|
|
1479
1436
|
}
|
|
1480
1437
|
}
|
|
1481
1438
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"micropermit-client-angular.mjs","sources":["../../../../projects/micropermit/client-angular/src/lib/paramutils.ts","../../../../projects/micropermit/client-angular/src/lib/links/callablelink.ts","../../../../projects/micropermit/client-angular/src/lib/links/linkfield.ts","../../../../projects/micropermit/client-angular/src/lib/microobject.ts","../../../../projects/micropermit/client-angular/src/lib/error/microerror.ts","../../../../projects/micropermit/client-angular/src/lib/microclient.service.ts","../../../../projects/micropermit/client-angular/src/lib/components/loadingindicator.component.ts","../../../../projects/micropermit/client-angular/src/lib/pipes/linkfield.pipe.ts","../../../../projects/micropermit/client-angular/src/lib/components/errorindicator.component.ts","../../../../projects/micropermit/client-angular/src/lib/directives/linkfield.directive.ts","../../../../projects/micropermit/client-angular/src/lib/directives/call-link.directive.ts","../../../../projects/micropermit/client-angular/src/lib/directives/micro-link-validate.directive.ts","../../../../projects/micropermit/client-angular/src/lib/microclient.module.ts","../../../../projects/micropermit/client-angular/src/lib/link-field-paging-support.ts","../../../../projects/micropermit/client-angular/src/lib/links/mock-linkfield.ts","../../../../projects/micropermit/client-angular/src/public_api.ts","../../../../projects/micropermit/client-angular/src/micropermit-client-angular.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): CallableLink<T> {\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 //TODO handle listeners in case of intermidiate uninitialize (new valueSubj)\n if (this.valueSubj) {\n return this.valueSubj;\n } else {\n let valueSubj = new ReplaySubject<T>(1);\n this.valueSubj = valueSubj;\n return defer(() => {\n this.initWithObs(null, null).subscribe((value: T) => {\n if (this.valueSubj !== valueSubj) {\n valueSubj.next(value);\n valueSubj.complete();\n }\n });\n return 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 copyUninitialized(): LinkField<T> {\n let copy = this.copy();\n copy.uninitialize();\n return copy;\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 public sendAsPermitTokenHeader = true;\n public sendAsMultipartFormData = false;\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, this.encodeBody(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 encodeBody(body: any): any {\n if (this.sendAsMultipartFormData) {\n let formData = new FormData();\n let paramBlob = new Blob([JSON.stringify(body)], {type: \"application/json\"})\n formData.append('*', paramBlob);\n return formData;\n } else {\n return body;\n }\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 standalone: false,\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({\n name: 'linkField',\n pure: false,\n standalone: false\n})\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 standalone: false\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, OnChanges, SimpleChanges\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 standalone: false\n})\nexport class LinkFieldDirective<T> implements DoCheck, OnDestroy, OnChanges {\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> | T) {\n this._from = from;\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 @Input()\n linkFieldParams: object = null;\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 }\n\n ngOnDestroy() {\n this.clear();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.linkFieldFrom) {\n if (!(this._from instanceof LinkField)) {\n this._from = LinkField.from(this._from as any);\n }\n if (changes.linkFieldFrom.previousValue !== changes.linkFieldFrom.currentValue) {\n this.clear();\n this.load();\n }\n }\n\n if (changes.linkFieldParams && this.linkFieldParams) {\n let link = this._from as LinkField<T>;\n this._from = link.withCallParams(this.linkFieldParams);\n }\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 this.isDirty = false;\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 standalone: false\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 standalone: false\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, provideHttpClient} 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 imports: [],\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 providers: [\n provideHttpClient()\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}","/*\n * Public API Surface of micropermit\n */\nexport * from './lib/microclient.service';\nexport * from './lib/error/microerror';\n\nexport * from './lib/microobject';\nexport * from './lib/microclient.module';\nexport * from './lib/paramutils';\nexport * from './lib/link-field-paging-support';\n\nexport * from './lib/components/loadingindicator.component';\nexport * from './lib/components/errorindicator.component';\n\nexport * from './lib/directives/call-link.directive';\nexport * from './lib/directives/linkfield.directive';\nexport * from './lib/directives/micro-link-validate.directive';\n\nexport * from './lib/links/callablelink';\nexport * from './lib/links/linkfield';\nexport * from './lib/links/mock-linkfield';\n\nexport * from './lib/pipes/linkfield.pipe';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"micropermit-client-angular.mjs","sources":["../../../../projects/micropermit/client-angular/src/lib/paramutils.ts","../../../../projects/micropermit/client-angular/src/lib/links/callablelink.ts","../../../../projects/micropermit/client-angular/src/lib/links/linkfield.ts","../../../../projects/micropermit/client-angular/src/lib/microobject.ts","../../../../projects/micropermit/client-angular/src/lib/error/microerror.ts","../../../../projects/micropermit/client-angular/src/lib/microclient.service.ts","../../../../projects/micropermit/client-angular/src/lib/components/loadingindicator.component.ts","../../../../projects/micropermit/client-angular/src/lib/pipes/linkfield.pipe.ts","../../../../projects/micropermit/client-angular/src/lib/components/errorindicator.component.ts","../../../../projects/micropermit/client-angular/src/lib/directives/linkfield.directive.ts","../../../../projects/micropermit/client-angular/src/lib/directives/call-link.directive.ts","../../../../projects/micropermit/client-angular/src/lib/directives/micro-link-validate.directive.ts","../../../../projects/micropermit/client-angular/src/lib/microclient.module.ts","../../../../projects/micropermit/client-angular/src/lib/link-field-paging-support.ts","../../../../projects/micropermit/client-angular/src/lib/links/mock-linkfield.ts","../../../../projects/micropermit/client-angular/src/public_api.ts","../../../../projects/micropermit/client-angular/src/micropermit-client-angular.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: {[index: string]: any}): 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:{[index: string]: any} = {};\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: any = 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: any = null;\n if (paramsStr) {\n params = MicroObject.fromString(paramsStr, this.microClient);\n }\n return params;\n }\n\n call(onNext: (value:T) => void): Promise<T> {\n return this.callWith(null, null, onNext);\n }\n\n callWith(params: object = null, requestOptions: object = null, onNext: (value: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): CallableLink<T> {\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(): string {\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 override 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?: (value: 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: any = 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 //TODO handle listeners in case of intermidiate uninitialize (new valueSubj)\n if (this.valueSubj) {\n return this.valueSubj;\n } else {\n let valueSubj = new ReplaySubject<T>(1);\n this.valueSubj = valueSubj;\n return defer(() => {\n this.initWithObs(null, null).subscribe((value: T) => {\n if (this.valueSubj !== valueSubj) {\n valueSubj.next(value);\n valueSubj.complete();\n }\n });\n return 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 copyUninitialized(): LinkField<T> {\n let copy = this.copy();\n copy.uninitialize();\n return copy;\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: (value: 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 override 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 override 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 override 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: any) {\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 // @ts-ignore\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;\n }\n }\n\n private static attachLinkFields(meta: MicroObjectMetadata, microObject: {[index:string]:any}, 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: {[index:string]:any}, 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: (url: string) => string;\n private defaultErrorHandler: (httpError: HttpErrorResponse, microError: MicroObject) => void;\n public usePost = true;\n public sendAsPermitTokenHeader = true;\n public sendAsMultipartFormData = false;\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: { [index: string]: any } = {}\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: { [index: string]: any } = 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, this.encodeBody(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 as Observable<T>;\n }\n\n private encodeBody(body: any): any {\n if (this.sendAsMultipartFormData) {\n let formData = new FormData();\n let paramBlob = new Blob([JSON.stringify(body)], {type: 'application/json'});\n formData.append('*', paramBlob);\n return formData;\n } else {\n return body;\n }\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: (url: 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 standalone: false,\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({\n name: 'linkField',\n pure: false,\n standalone: false\n})\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 standalone: false\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, OnChanges, SimpleChanges\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 standalone: false\n})\nexport class LinkFieldDirective<T> implements DoCheck, OnDestroy, OnChanges {\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> | T) {\n this._from = from;\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: (value: T) => void;\n\n @Input()\n linkFieldParams: object = null;\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 }\n\n ngOnDestroy() {\n this.clear();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['linkFieldFrom']) {\n if (!(this._from instanceof LinkField)) {\n this._from = LinkField.from(this._from as any);\n }\n if (changes['linkFieldFrom'].previousValue !== changes['linkFieldFrom'].currentValue) {\n this.clear();\n this.load();\n }\n }\n\n if (changes['linkFieldParams'] && this.linkFieldParams) {\n let link = this._from as LinkField<T>;\n this._from = link.withCallParams(this.linkFieldParams);\n }\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 this.isDirty = false;\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 standalone: false\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 standalone: false\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: { [index: string]: any } = {};\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): string {\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, provideHttpClient} 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 imports: [],\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 providers: [\n provideHttpClient()\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<object[]>,\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<object[]>,\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({\n next: (firstPage) => {\n this.setRows(firstPage, resultCallback);\n },\n error: this.loadingCallback,\n complete: this.loadingCallback\n });\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({\n next: (nextPage) => {\n this.setRows(nextPage, resultCallback);\n },\n error: this.loadingCallback,\n complete: this.loadingCallback\n });\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<object[]>) {\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[]> extends LinkField<T> {\n constructor(private valueToLoad: any | (() => any), private delay: number) {\n super(null, null);\n }\n\n override callWithObs(params: object = null, requestOptions: object = null): Observable<T> {\n let value = this.valueToLoad\n if(typeof value === 'function') {\n value = value()\n }\n\n return of(value).pipe(\n delay(this.delay)\n );\n }\n}\n","/*\n * Public API Surface of micropermit\n */\nexport * from './lib/microclient.service';\nexport * from './lib/error/microerror';\n\nexport * from './lib/microobject';\nexport * from './lib/microclient.module';\nexport * from './lib/paramutils';\nexport * from './lib/link-field-paging-support';\n\nexport * from './lib/components/loadingindicator.component';\nexport * from './lib/components/errorindicator.component';\n\nexport * from './lib/directives/call-link.directive';\nexport * from './lib/directives/linkfield.directive';\nexport * from './lib/directives/micro-link-validate.directive';\n\nexport * from './lib/links/callablelink';\nexport * from './lib/links/linkfield';\nexport * from './lib/links/mock-linkfield';\n\nexport * from './lib/pipes/linkfield.pipe';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export declare class LinkFieldDirective<T> implements DoCheck, OnDestroy, OnChan
|
|
|
24
24
|
set linkFieldErrorTemplate(errorTemplate: TemplateRef<any>);
|
|
25
25
|
set linkFieldTemplate(value: TemplateRef<LinkFieldContext<T>>);
|
|
26
26
|
linkFieldDefaultErrorHandling: boolean;
|
|
27
|
-
linkFieldValueChange: (
|
|
27
|
+
linkFieldValueChange: (value: T) => void;
|
|
28
28
|
linkFieldParams: object;
|
|
29
29
|
private load;
|
|
30
30
|
ngDoCheck(): void;
|
|
@@ -10,7 +10,7 @@ export declare class MicroLinkValidateDirective implements Validator {
|
|
|
10
10
|
microLinkValidateDebounce: number;
|
|
11
11
|
result: any;
|
|
12
12
|
validate(control: AbstractControl): Observable<ValidationErrors | null>;
|
|
13
|
-
getControlName(control: AbstractControl):
|
|
13
|
+
getControlName(control: AbstractControl): string;
|
|
14
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<MicroLinkValidateDirective, never>;
|
|
15
15
|
static ɵdir: i0.ɵɵDirectiveDeclaration<MicroLinkValidateDirective, "[microLinkValidate]", ["microValidator"], { "microLinkValidate": { "alias": "microLinkValidate"; "required": false; }; "microLinkValidateField": { "alias": "microLinkValidateField"; "required": false; }; "microLinkValidateValue": { "alias": "microLinkValidateValue"; "required": false; }; "microLinkValidateDebounce": { "alias": "microLinkValidateDebounce"; "required": false; }; }, {}, never, never, false, never>;
|
|
16
16
|
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ChangeDetectorRef } from '@angular/core';
|
|
2
2
|
import { LinkField } from './links/linkfield';
|
|
3
|
-
import { MicroObject } from './microobject';
|
|
4
3
|
export declare class LinkFieldPagingSupport {
|
|
5
4
|
private pageLink;
|
|
6
5
|
private changeDetectorRef;
|
|
7
6
|
pageLimit: number;
|
|
8
|
-
constructor(pageLink: LinkField<
|
|
7
|
+
constructor(pageLink: LinkField<object[]>, changeDetectorRef: ChangeDetectorRef, pageLimit?: number);
|
|
9
8
|
private sorts;
|
|
10
9
|
isLoading: boolean;
|
|
11
10
|
private loadedCompletely;
|
|
@@ -15,7 +14,7 @@ export declare class LinkFieldPagingSupport {
|
|
|
15
14
|
rowsChangeCallback: (rows: any[]) => void;
|
|
16
15
|
isLoadingCallback: (isLoading: boolean) => void;
|
|
17
16
|
get rows(): any[];
|
|
18
|
-
static from(pageLink: LinkField<
|
|
17
|
+
static from(pageLink: LinkField<object[]>, changeDetectorRef: ChangeDetectorRef, pageLimit?: number): LinkFieldPagingSupport;
|
|
19
18
|
applySort(sorts: SortInfo[], externalSorting?: boolean): void;
|
|
20
19
|
private loadingCallback;
|
|
21
20
|
loadNextPage(pageSize?: number, resultCallback?: ((page: any[], all: any[]) => void)): void;
|
|
@@ -26,7 +25,7 @@ export declare class LinkFieldPagingSupport {
|
|
|
26
25
|
private reflectChanges;
|
|
27
26
|
private setLoading;
|
|
28
27
|
dispose(): void;
|
|
29
|
-
setPageLink(pageLink: LinkField<
|
|
28
|
+
setPageLink(pageLink: LinkField<object[]>): void;
|
|
30
29
|
hasLoadedCompletely(): boolean;
|
|
31
30
|
init(rowsChangeCallback: (rows: any[]) => void, isLoadingCallback?: ((isLoading: boolean) => void)): void;
|
|
32
31
|
private clearState;
|
|
@@ -16,15 +16,15 @@ export declare class CallableLink<T> {
|
|
|
16
16
|
getOptions(): MicroObject;
|
|
17
17
|
private getSignedMicroObjectParam;
|
|
18
18
|
getMicroObjectParam(key: string): MicroObject;
|
|
19
|
-
call(onNext: (
|
|
20
|
-
callWith(params: object, requestOptions: object, onNext: (
|
|
19
|
+
call(onNext: (value: T) => void): Promise<T>;
|
|
20
|
+
callWith(params: object, requestOptions: object, onNext: (value: T) => void): Promise<T>;
|
|
21
21
|
callWithObs(params?: object, requestOptions?: object): Observable<T>;
|
|
22
22
|
copy(): CallableLink<T>;
|
|
23
23
|
withCallParams(callParams: object, requestOptions?: object): CallableLink<T>;
|
|
24
24
|
toJSON(): any;
|
|
25
25
|
}
|
|
26
26
|
export declare class LinkSerializer {
|
|
27
|
-
static DONT_SERIALIZE: () =>
|
|
27
|
+
static DONT_SERIALIZE: () => string;
|
|
28
28
|
static AS_LINK: (link: string) => string;
|
|
29
29
|
static AS_VALUE_IF_INITIALIZED: (link: string, callParams: object, requestOptions: object, value: any, isInitialized: boolean) => any;
|
|
30
30
|
}
|
package/lib/links/linkfield.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare class LinkField<T> extends CallableLink<T> {
|
|
|
9
9
|
serializeTo: (link: string, callParams: object, requestOptions: object, value: T, isInitialized: boolean) => any;
|
|
10
10
|
constructor(link: string, microClient: MicroClient, initialValue?: T, initialized?: boolean, callParams?: object, requestOptions?: object);
|
|
11
11
|
static from<T extends (object | object[])>(value: T): LinkField<T>;
|
|
12
|
-
get(callback?: (
|
|
12
|
+
get(callback?: (value: T) => void): Promise<T>;
|
|
13
13
|
getPromise(): Promise<T>;
|
|
14
14
|
private intervalId;
|
|
15
15
|
private isRefreshing;
|
|
@@ -22,7 +22,7 @@ export declare class LinkField<T> extends CallableLink<T> {
|
|
|
22
22
|
uninitialize(): void;
|
|
23
23
|
copyUninitialized(): LinkField<T>;
|
|
24
24
|
getInitializedValue(): T;
|
|
25
|
-
initWith(parms: object, requestOptions: object, callback: (
|
|
25
|
+
initWith(parms: object, requestOptions: object, callback: (value: T) => void): void;
|
|
26
26
|
initWithObs(params?: object, requestOptions?: object): Observable<T>;
|
|
27
27
|
withCallParams(callParams: object, requestOptions?: object): LinkField<T>;
|
|
28
28
|
copy(withValue?: T): LinkField<T>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { LinkField } from './linkfield';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
-
export declare class MockLinkField<T extends
|
|
3
|
+
export declare class MockLinkField<T extends object[]> extends LinkField<T> {
|
|
4
4
|
private valueToLoad;
|
|
5
5
|
private delay;
|
|
6
|
-
constructor(valueToLoad: any, delay: number);
|
|
6
|
+
constructor(valueToLoad: any | (() => any), delay: number);
|
|
7
7
|
callWithObs(params?: object, requestOptions?: object): Observable<T>;
|
|
8
8
|
}
|
|
@@ -24,12 +24,14 @@ export declare class MicroClient {
|
|
|
24
24
|
setEntryPoint<T extends MicroObject>(entryPoint: any): void;
|
|
25
25
|
setDefaultErrorHandler(handler: (httpError: HttpErrorResponse, microError: MicroObject) => void): void;
|
|
26
26
|
handleError(httpErr: HttpErrorResponse): void;
|
|
27
|
-
ignite<T>(url: string, username?: String, password?: String, headers?:
|
|
27
|
+
ignite<T>(url: string, username?: String, password?: String, headers?: {
|
|
28
|
+
[index: string]: any;
|
|
29
|
+
}): Observable<T>;
|
|
28
30
|
load<T>(url: string, params?: object, requestOptions?: object): Observable<T>;
|
|
29
31
|
private encodeBody;
|
|
30
32
|
private catchAndHandleError;
|
|
31
33
|
createChildClientForEntryPoint(entryPoint: MicroObject): MicroClient;
|
|
32
|
-
setURLRewriter(rewriter: (
|
|
34
|
+
setURLRewriter(rewriter: (url: string) => string): void;
|
|
33
35
|
static toMicroError(httpResponse: HttpErrorResponse): MicroError;
|
|
34
36
|
private static staticContentRegExp;
|
|
35
37
|
static guessMicroComponentBaseURL(): string;
|
package/lib/paramutils.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ export declare class ParamUtils {
|
|
|
5
5
|
private static minusRegex;
|
|
6
6
|
private static underscoreRegex;
|
|
7
7
|
static addParam(url: string, key: string, value: string, replaceExisting?: boolean): string;
|
|
8
|
-
static setParams(url: string, params:
|
|
8
|
+
static setParams(url: string, params: {
|
|
9
|
+
[index: string]: any;
|
|
10
|
+
}): string;
|
|
9
11
|
static getParams(url: string): Object;
|
|
10
12
|
static base64UrlEncode(toEncode: string): string;
|
|
11
13
|
static base64UrlDecode(toDecode: string): string;
|