@ppwcode/ng-async
Advanced tools
@@ -18,3 +18,3 @@ import * as i0 from '@angular/core'; | ||
| constructor() { | ||
| this.contextTyper = input.required(...(ngDevMode ? [{ debugName: "contextTyper" }] : [])); | ||
| this.contextTyper = input.required(...(ngDevMode ? [{ debugName: "contextTyper" }] : /* istanbul ignore next */ [])); | ||
| } | ||
@@ -26,6 +26,6 @@ static ngTemplateContextGuard(dir, | ||
| } | ||
| static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PpwAsyncResultInitialDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } | ||
| static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: PpwAsyncResultInitialDirective, isStandalone: false, selector: "[ppw-async-result-initial]", inputs: { contextTyper: { classPropertyName: "contextTyper", publicName: "contextTyper", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); } | ||
| static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PpwAsyncResultInitialDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } | ||
| static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: PpwAsyncResultInitialDirective, isStandalone: false, selector: "[ppw-async-result-initial]", inputs: { contextTyper: { classPropertyName: "contextTyper", publicName: "contextTyper", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); } | ||
| } | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PpwAsyncResultInitialDirective, decorators: [{ | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PpwAsyncResultInitialDirective, decorators: [{ | ||
| type: Directive, | ||
@@ -41,3 +41,3 @@ args: [{ | ||
| constructor() { | ||
| this.contextTyper = input.required(...(ngDevMode ? [{ debugName: "contextTyper" }] : [])); | ||
| this.contextTyper = input.required(...(ngDevMode ? [{ debugName: "contextTyper" }] : /* istanbul ignore next */ [])); | ||
| } | ||
@@ -49,6 +49,6 @@ static ngTemplateContextGuard(dir, | ||
| } | ||
| static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PpwAsyncResultSuccessDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } | ||
| static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: PpwAsyncResultSuccessDirective, isStandalone: false, selector: "[ppw-async-result-success]", inputs: { contextTyper: { classPropertyName: "contextTyper", publicName: "contextTyper", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); } | ||
| static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PpwAsyncResultSuccessDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } | ||
| static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: PpwAsyncResultSuccessDirective, isStandalone: false, selector: "[ppw-async-result-success]", inputs: { contextTyper: { classPropertyName: "contextTyper", publicName: "contextTyper", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); } | ||
| } | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PpwAsyncResultSuccessDirective, decorators: [{ | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PpwAsyncResultSuccessDirective, decorators: [{ | ||
| type: Directive, | ||
@@ -63,6 +63,6 @@ args: [{ | ||
| class PpwAsyncResultEmptyDirective { | ||
| static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PpwAsyncResultEmptyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } | ||
| static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: PpwAsyncResultEmptyDirective, isStandalone: false, selector: "[ppw-async-result-empty]", ngImport: i0 }); } | ||
| static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PpwAsyncResultEmptyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } | ||
| static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: PpwAsyncResultEmptyDirective, isStandalone: false, selector: "[ppw-async-result-empty]", ngImport: i0 }); } | ||
| } | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PpwAsyncResultEmptyDirective, decorators: [{ | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PpwAsyncResultEmptyDirective, decorators: [{ | ||
| type: Directive, | ||
@@ -84,4 +84,4 @@ args: [{ | ||
| // Inputs | ||
| this.asyncResult = input.required(...(ngDevMode ? [{ debugName: "asyncResult" }] : [])); | ||
| this.pending = input(null, ...(ngDevMode ? [{ debugName: "pending" }] : [])); | ||
| this.asyncResult = input.required(...(ngDevMode ? [{ debugName: "asyncResult" }] : /* istanbul ignore next */ [])); | ||
| this.pending = input(null, ...(ngDevMode ? [{ debugName: "pending" }] : /* istanbul ignore next */ [])); | ||
| // Content children | ||
@@ -91,4 +91,4 @@ this.successTemplate = contentChild.required(PpwAsyncResultSuccessDirective, { | ||
| }); | ||
| this.initialTemplate = contentChild(PpwAsyncResultInitialDirective, { ...(ngDevMode ? { debugName: "initialTemplate" } : {}), read: TemplateRef }); | ||
| this.emptyTemplate = contentChild(PpwAsyncResultEmptyDirective, { ...(ngDevMode ? { debugName: "emptyTemplate" } : {}), read: TemplateRef }); | ||
| this.initialTemplate = contentChild(PpwAsyncResultInitialDirective, { ...(ngDevMode ? { debugName: "initialTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef }); | ||
| this.emptyTemplate = contentChild(PpwAsyncResultEmptyDirective, { ...(ngDevMode ? { debugName: "emptyTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef }); | ||
| this.errorSeverity = Severity.error; | ||
@@ -102,6 +102,6 @@ } | ||
| } | ||
| static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AsyncResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } | ||
| static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: AsyncResultComponent, isStandalone: false, selector: "ppw-async-result", inputs: { asyncResult: { classPropertyName: "asyncResult", publicName: "asyncResult", isSignal: true, isRequired: true, transformFunction: null }, pending: { classPropertyName: "pending", publicName: "pending", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "successTemplate", first: true, predicate: PpwAsyncResultSuccessDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "initialTemplate", first: true, predicate: PpwAsyncResultInitialDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "emptyTemplate", first: true, predicate: PpwAsyncResultEmptyDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<ppw-loader [loading]=\"pending()\">\n @if (asyncResult(); as result) {\n @switch (result.status) {\n @case ('failed') {\n <ng-container *ngTemplateOutlet=\"failed; context: { $implicit: result }\"></ng-container>\n }\n @case ('success') {\n @if (result.entity === null) {\n @if (emptyTemplate(); as empty) {\n <ng-container *ngTemplateOutlet=\"empty; context: { $implicit: result }\"></ng-container>\n } @else if (asyncResultDefaultEmptyComponent) {\n <ng-container *ngComponentOutlet=\"asyncResultDefaultEmptyComponent\"></ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"successTemplate(); context: { $implicit: result, entity: result.entity }\"\n ></ng-container>\n }\n }\n @case ('initial') {\n <ng-container\n *ngTemplateOutlet=\"initialTemplate() ?? null; context: { $implicit: result, entity: result.entity }\"\n ></ng-container>\n }\n }\n }\n</ppw-loader>\n\n<ng-template #failed>\n <ppw-message-bar\n [message]=\"asyncResult()!.error?.message ?? '' | translate\"\n [severity]=\"errorSeverity\"\n ></ppw-message-bar>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MessageBarComponent, selector: "ppw-message-bar", inputs: ["severity", "message"] }, { kind: "component", type: i2.LoaderComponent, selector: "ppw-loader", inputs: ["loading"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } | ||
| static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AsyncResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } | ||
| static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: AsyncResultComponent, isStandalone: false, selector: "ppw-async-result", inputs: { asyncResult: { classPropertyName: "asyncResult", publicName: "asyncResult", isSignal: true, isRequired: true, transformFunction: null }, pending: { classPropertyName: "pending", publicName: "pending", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "successTemplate", first: true, predicate: PpwAsyncResultSuccessDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "initialTemplate", first: true, predicate: PpwAsyncResultInitialDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "emptyTemplate", first: true, predicate: PpwAsyncResultEmptyDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<ppw-loader [loading]=\"pending()\">\n @if (asyncResult(); as result) {\n @switch (result.status) {\n @case ('failed') {\n <ng-container *ngTemplateOutlet=\"failed; context: { $implicit: result }\"></ng-container>\n }\n @case ('success') {\n @if (result.entity === null) {\n @if (emptyTemplate(); as empty) {\n <ng-container *ngTemplateOutlet=\"empty; context: { $implicit: result }\"></ng-container>\n } @else if (asyncResultDefaultEmptyComponent) {\n <ng-container *ngComponentOutlet=\"asyncResultDefaultEmptyComponent\"></ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"successTemplate(); context: { $implicit: result, entity: result.entity }\"\n ></ng-container>\n }\n }\n @case ('initial') {\n <ng-container\n *ngTemplateOutlet=\"initialTemplate() ?? null; context: { $implicit: result, entity: result.entity }\"\n ></ng-container>\n }\n }\n }\n</ppw-loader>\n\n<ng-template #failed>\n <ppw-message-bar\n [message]=\"asyncResult()!.error?.message ?? '' | translate\"\n [severity]=\"errorSeverity\"\n ></ppw-message-bar>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.MessageBarComponent, selector: "ppw-message-bar", inputs: ["severity", "message"] }, { kind: "component", type: i2.LoaderComponent, selector: "ppw-loader", inputs: ["loading"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } | ||
| } | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AsyncResultComponent, decorators: [{ | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AsyncResultComponent, decorators: [{ | ||
| type: Component, | ||
@@ -118,4 +118,4 @@ args: [{ selector: 'ppw-async-result', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ppw-loader [loading]=\"pending()\">\n @if (asyncResult(); as result) {\n @switch (result.status) {\n @case ('failed') {\n <ng-container *ngTemplateOutlet=\"failed; context: { $implicit: result }\"></ng-container>\n }\n @case ('success') {\n @if (result.entity === null) {\n @if (emptyTemplate(); as empty) {\n <ng-container *ngTemplateOutlet=\"empty; context: { $implicit: result }\"></ng-container>\n } @else if (asyncResultDefaultEmptyComponent) {\n <ng-container *ngComponentOutlet=\"asyncResultDefaultEmptyComponent\"></ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"successTemplate(); context: { $implicit: result, entity: result.entity }\"\n ></ng-container>\n }\n }\n @case ('initial') {\n <ng-container\n *ngTemplateOutlet=\"initialTemplate() ?? null; context: { $implicit: result, entity: result.entity }\"\n ></ng-container>\n }\n }\n }\n</ppw-loader>\n\n<ng-template #failed>\n <ppw-message-bar\n [message]=\"asyncResult()!.error?.message ?? '' | translate\"\n [severity]=\"errorSeverity\"\n ></ppw-message-bar>\n</ng-template>\n" }] | ||
| class AsyncResultModule { | ||
| static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AsyncResultModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } | ||
| static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: AsyncResultModule, declarations: [AsyncResultComponent, | ||
| static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AsyncResultModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } | ||
| static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: AsyncResultModule, declarations: [AsyncResultComponent, | ||
| PpwAsyncResultInitialDirective, | ||
@@ -127,5 +127,5 @@ PpwAsyncResultSuccessDirective, | ||
| PpwAsyncResultEmptyDirective] }); } | ||
| static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AsyncResultModule, imports: [CommonModule, MessageBarComponent, LoaderComponent] }); } | ||
| static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AsyncResultModule, imports: [CommonModule, MessageBarComponent, LoaderComponent] }); } | ||
| } | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AsyncResultModule, decorators: [{ | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AsyncResultModule, decorators: [{ | ||
| type: NgModule, | ||
@@ -132,0 +132,0 @@ args: [{ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"ppwcode-ng-async.mjs","sources":["../../../../projects/ppwcode/ng-async/src/lib/options/ppw-async-result-default-options.ts","../../../../projects/ppwcode/ng-async/src/lib/async-result/async-result-directives.ts","../../../../projects/ppwcode/ng-async/src/lib/async-result/async-result.component.ts","../../../../projects/ppwcode/ng-async/src/lib/async-result/async-result.component.html","../../../../projects/ppwcode/ng-async/src/lib/async-result/async-result.module.ts","../../../../projects/ppwcode/ng-async/src/lib/constants/error-codes.ts","../../../../projects/ppwcode/ng-async/src/lib/downloads/save-downloaded-file.ts","../../../../projects/ppwcode/ng-async/src/lib/models/async-result.ts","../../../../projects/ppwcode/ng-async/src/lib/models/paged-entities.ts","../../../../projects/ppwcode/ng-async/src/lib/models/paged-entities.mock.ts","../../../../projects/ppwcode/ng-async/src/lib/models/paged-async-result.ts","../../../../projects/ppwcode/ng-async/src/lib/models/file-download.ts","../../../../projects/ppwcode/ng-async/src/lib/error-handling.ts","../../../../projects/ppwcode/ng-async/src/lib/default-handling.ts","../../../../projects/ppwcode/ng-async/src/lib/error-extractors.ts","../../../../projects/ppwcode/ng-async/src/lib/api-calls/request-data.ts","../../../../projects/ppwcode/ng-async/src/public-api.ts","../../../../projects/ppwcode/ng-async/src/ppwcode-ng-async.ts"],"sourcesContent":["import { InjectionToken, Type } from '@angular/core'\n\nexport interface PpwAsyncResultDefaultOptions {\n emptyResultComponent?: Type<unknown>\n}\n\nexport const PPW_ASYNC_RESULT_DEFAULT_OPTIONS = new InjectionToken<PpwAsyncResultDefaultOptions>(\n 'PPW_ASYNC_RESULT_DEFAULT_OPTIONS'\n)\n","import { Directive, input, InputSignal, Signal } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { AsyncResult } from '../models/async-result'\nimport { PpwAsyncResultSuccessContext } from './async-result-success-context'\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ppw-async-result-initial]',\n /* eslint-disable @angular-eslint/prefer-standalone */\n standalone: false\n})\nexport class PpwAsyncResultInitialDirective<TResult, TFilters> {\n public contextTyper: InputSignal<\n | Observable<AsyncResult<TResult, TFilters> | null>\n | Signal<AsyncResult<TResult, TFilters> | null>\n | AsyncResult<TResult, TFilters>\n | null\n > = input.required()\n\n static ngTemplateContextGuard<TResult, TFilters>(\n dir: PpwAsyncResultSuccessDirective<TResult, TFilters>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ctx: unknown\n ): dir is PpwAsyncResultSuccessContext<TResult, TFilters> {\n return true\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ppw-async-result-success]',\n /* eslint-disable @angular-eslint/prefer-standalone */\n standalone: false\n})\nexport class PpwAsyncResultSuccessDirective<T, U> {\n public contextTyper: InputSignal<\n Observable<AsyncResult<T, U> | null> | Signal<AsyncResult<T, U> | null> | AsyncResult<T, U> | null\n > = input.required()\n\n static ngTemplateContextGuard<TResult, TFilters>(\n dir: PpwAsyncResultSuccessDirective<TResult, TFilters>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ctx: unknown\n ): dir is PpwAsyncResultSuccessContext<TResult, TFilters> {\n return true\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ppw-async-result-empty]',\n /* eslint-disable @angular-eslint/prefer-standalone */\n standalone: false\n})\nexport class PpwAsyncResultEmptyDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n inject,\n input,\n InputSignal,\n Signal,\n TemplateRef,\n Type\n} from '@angular/core'\nimport { Severity } from '@ppwcode/ng-common-components'\nimport { AsyncResult } from '../models/async-result'\nimport {\n PPW_ASYNC_RESULT_DEFAULT_OPTIONS,\n PpwAsyncResultDefaultOptions\n} from '../options/ppw-async-result-default-options'\nimport {\n PpwAsyncResultEmptyDirective,\n PpwAsyncResultInitialDirective,\n PpwAsyncResultSuccessDirective\n} from './async-result-directives'\n\n@Component({\n selector: 'ppw-async-result',\n templateUrl: './async-result.component.html',\n /* eslint-disable @angular-eslint/prefer-standalone */\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AsyncResultComponent {\n // Dependencies\n #asyncResultDefaultOptions: PpwAsyncResultDefaultOptions | null = inject(PPW_ASYNC_RESULT_DEFAULT_OPTIONS, {\n optional: true\n })\n\n // Inputs\n public asyncResult: InputSignal<AsyncResult<unknown, unknown> | null> = input.required<AsyncResult<\n unknown,\n unknown\n > | null>()\n public pending: InputSignal<boolean | null> = input<boolean | null>(null)\n\n // Content children\n public successTemplate: Signal<TemplateRef<unknown>> = contentChild.required(PpwAsyncResultSuccessDirective, {\n read: TemplateRef\n })\n public initialTemplate: Signal<TemplateRef<unknown> | undefined> = contentChild(PpwAsyncResultInitialDirective, {\n read: TemplateRef\n })\n public emptyTemplate: Signal<TemplateRef<unknown> | undefined> = contentChild(PpwAsyncResultEmptyDirective, {\n read: TemplateRef\n })\n\n // Getters\n public get asyncResultDefaultEmptyComponent(): Type<unknown> | undefined {\n return this.#asyncResultDefaultOptions?.emptyResultComponent\n }\n\n public readonly errorSeverity: Severity = Severity.error\n}\n","<ppw-loader [loading]=\"pending()\">\n @if (asyncResult(); as result) {\n @switch (result.status) {\n @case ('failed') {\n <ng-container *ngTemplateOutlet=\"failed; context: { $implicit: result }\"></ng-container>\n }\n @case ('success') {\n @if (result.entity === null) {\n @if (emptyTemplate(); as empty) {\n <ng-container *ngTemplateOutlet=\"empty; context: { $implicit: result }\"></ng-container>\n } @else if (asyncResultDefaultEmptyComponent) {\n <ng-container *ngComponentOutlet=\"asyncResultDefaultEmptyComponent\"></ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"successTemplate(); context: { $implicit: result, entity: result.entity }\"\n ></ng-container>\n }\n }\n @case ('initial') {\n <ng-container\n *ngTemplateOutlet=\"initialTemplate() ?? null; context: { $implicit: result, entity: result.entity }\"\n ></ng-container>\n }\n }\n }\n</ppw-loader>\n\n<ng-template #failed>\n <ppw-message-bar\n [message]=\"asyncResult()!.error?.message ?? '' | translate\"\n [severity]=\"errorSeverity\"\n ></ppw-message-bar>\n</ng-template>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { TranslateDirective, TranslatePipe } from '@ngx-translate/core'\nimport { LoaderComponent, MessageBarComponent } from '@ppwcode/ng-common-components'\nimport {\n PpwAsyncResultEmptyDirective,\n PpwAsyncResultInitialDirective,\n PpwAsyncResultSuccessDirective\n} from './async-result-directives'\nimport { AsyncResultComponent } from './async-result.component'\n\n@NgModule({\n declarations: [\n AsyncResultComponent,\n PpwAsyncResultInitialDirective,\n PpwAsyncResultSuccessDirective,\n PpwAsyncResultEmptyDirective\n ],\n exports: [\n AsyncResultComponent,\n PpwAsyncResultInitialDirective,\n PpwAsyncResultSuccessDirective,\n PpwAsyncResultEmptyDirective\n ],\n imports: [CommonModule, MessageBarComponent, TranslatePipe, TranslateDirective, LoaderComponent]\n})\nexport class AsyncResultModule {}\n","import { HttpStatusCode } from '@angular/common/http'\n\nexport const DEFAULT_HTTP_ERROR_CODES: Array<number> = [\n HttpStatusCode.BadRequest,\n HttpStatusCode.Forbidden,\n HttpStatusCode.NotFound,\n HttpStatusCode.MethodNotAllowed,\n HttpStatusCode.InternalServerError,\n HttpStatusCode.PreconditionFailed,\n HttpStatusCode.Conflict\n]\n\nexport const STATUS_CODE_MAP = new Map<number, string>([\n [400, 'Bad Request'],\n [401, 'Unauthorized'],\n [402, 'Payment Required'],\n [403, 'Forbidden'],\n [404, 'Not Found'],\n [405, 'Method Not Allowed'],\n [406, 'Not Acceptable'],\n [407, 'Proxy Authentication Required'],\n [408, 'Request Timeout'],\n [409, 'Conflict'],\n [410, 'Gone'],\n [411, 'Length Required'],\n [412, 'Precondition Failed'],\n [413, 'Payload Too Large'],\n [414, 'URI Too Long'],\n [415, 'Unsupported Media Type'],\n [416, 'Range Not Satisfiable'],\n [417, 'Expectation Failed'],\n [418, \"I'm a teapot\"],\n [421, 'Misdirected Request'],\n [422, 'Unprocessable Entity'],\n [423, 'Locked'],\n [424, 'Failed Dependency'],\n [425, 'Too Early'],\n [426, 'Upgrade Required'],\n [428, 'Precondition Required'],\n [429, 'Too Many Requests'],\n [431, 'Request Header Fields Too Large'],\n [451, 'Unavailable For Legal Reasons'],\n [500, 'Internal Server Error'],\n [501, 'Not Implemented'],\n [502, 'Bad Gateway'],\n [503, 'Service Unavailable'],\n [504, 'Gateway Timeout'],\n [505, 'HTTP Version Not Supported'],\n [506, 'Variant Also Negotiates'],\n [507, 'Insufficient Storage'],\n [508, 'Loop Detected'],\n [510, 'Not Extended'],\n [511, 'Network Authentication Required']\n])\n","import { saveAs } from 'file-saver-es'\nimport { notNull } from '@ppwcode/ng-utils'\nimport { AsyncResult } from '../models/async-result'\nimport { FileDownload } from '../models/file-download'\n\nexport const saveDownloadedFile =\n (fileName: string) =>\n (asyncResult: AsyncResult<Blob | null>): void => {\n saveAs(notNull(asyncResult.entity), fileName)\n }\n\n/**\n * Can be used to save file that comes with a filename in the response from the back-end.\n */\nexport const saveFileDownload =\n () =>\n (asyncResult: AsyncResult<FileDownload | null>): void => {\n saveAs(notNull(asyncResult.entity).blob, notNull(asyncResult.entity).fileName)\n }\n","import { BehaviorSubject, firstValueFrom, Observable } from 'rxjs'\n\nexport type AsyncResultStatus = 'pending' | 'failed' | 'success' | 'initial'\n\nexport interface AsyncResult<TResult, TFilter = null> {\n status: AsyncResultStatus\n error?: Error\n entity: TResult\n filters: TFilter | null\n}\n\nexport const isAsyncResult = <TResult, TFilter = null>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n possibleAsyncResult: any\n): possibleAsyncResult is AsyncResult<TResult, TFilter> => {\n return (\n typeof possibleAsyncResult === 'object' &&\n possibleAsyncResult !== null &&\n 'status' in possibleAsyncResult &&\n 'entity' in possibleAsyncResult\n )\n}\n\nexport const createSuccessAsyncResult = <TResult, TFilter = null>(\n entities: TResult,\n filters: TFilter | null = null\n): AsyncResult<TResult, TFilter> => {\n return {\n status: 'success',\n entity: entities,\n filters\n }\n}\n\nexport const createFailedAsyncResult = <TResult, TFilter = null>(\n error: Error,\n entities: TResult,\n filters: TFilter | null = null\n): AsyncResult<TResult, TFilter> => {\n return {\n status: 'failed',\n error,\n entity: entities,\n filters\n }\n}\n\nexport const executeAsyncOperation = async <TAsyncResult, TAsyncFilter, TSubject>(\n operation$: Observable<AsyncResult<TAsyncResult, TAsyncFilter>>,\n handlers: {\n success: (result: AsyncResult<TAsyncResult, TAsyncFilter>) => void\n error: (result: AsyncResult<TAsyncResult, TAsyncFilter>) => void\n },\n isExecuting$: BehaviorSubject<TSubject>,\n executingStartedValue?: TSubject,\n executingFinishedValue?: TSubject\n): Promise<AsyncResult<TAsyncResult, TAsyncFilter>> => {\n isExecuting$.next(executingStartedValue ?? (true as TSubject))\n const result = await firstValueFrom(operation$)\n isExecuting$.next(executingFinishedValue ?? (false as TSubject))\n\n if (result.status === 'success') {\n handlers.success(result)\n } else if (result.status === 'failed') {\n handlers.error(result)\n }\n\n return result\n}\n","import { notUndefined } from '@ppwcode/ng-utils'\n\nexport interface PagedEntitiesDto<T> {\n /** The current page number (1-based). */\n pageIndex?: number\n /** The current page number (1-based). */\n page?: number\n pageSize: number\n totalCount: number\n totalPages: number\n hasPreviousPage: boolean\n hasNextPage: boolean\n items: Array<T>\n}\n\nexport interface PagedEntities<T> {\n /**\n * @deprecated Use `page` instead. The value is 1-based, but the naming suggested 0-based. Will be removed in v22.\n */\n pageIndex: number\n /** The current page number (1-based). */\n page: number\n pageSize: number\n totalCount: number\n totalPages: number\n hasPreviousPage: boolean\n hasNextPage: boolean\n items: Array<T>\n}\n\nexport const pagedEntitiesFromDto = <TDto, TModel>(\n pagedEntitiesDto: PagedEntitiesDto<TDto>,\n entityMapper: (dto: TDto) => TModel\n): PagedEntities<TModel> => {\n // Prefer 'page' over 'pageIndex' as 'pageIndex' is deprecated\n const page = notUndefined(pagedEntitiesDto.page ?? pagedEntitiesDto.pageIndex)\n return {\n page,\n pageIndex: page, // deprecated\n pageSize: pagedEntitiesDto.pageSize,\n totalCount: pagedEntitiesDto.totalCount,\n totalPages: pagedEntitiesDto.totalPages,\n hasPreviousPage: pagedEntitiesDto.hasPreviousPage,\n hasNextPage: pagedEntitiesDto.hasNextPage,\n items: pagedEntitiesDto.items.map(entityMapper)\n }\n}\n\nexport const createEmptyPagedEntities = <T>(): PagedEntities<T> => {\n return {\n pageIndex: 1, // deprecated\n page: 1,\n pageSize: 20,\n totalCount: 0,\n totalPages: 1,\n hasPreviousPage: false,\n hasNextPage: false,\n items: []\n }\n}\n","import { PagedEntities, PagedEntitiesDto } from './paged-entities'\n\nexport const createPagedEntitiesDtoMock = <TDto>(dtoEntities: Array<TDto>): PagedEntitiesDto<TDto> => {\n return {\n pageIndex: 1,\n pageSize: dtoEntities.length ?? 20,\n totalCount: dtoEntities.length,\n totalPages: 1,\n hasPreviousPage: false,\n hasNextPage: false,\n items: dtoEntities\n }\n}\n\nexport const createPagedEntitiesMock = <TModel>(models: Array<TModel>): PagedEntities<TModel> => {\n return {\n pageIndex: 1,\n page: 1,\n pageSize: models.length ?? 20,\n totalCount: models.length,\n totalPages: 1,\n hasPreviousPage: false,\n hasNextPage: false,\n items: models\n }\n}\n","import { AsyncResult, createFailedAsyncResult, createSuccessAsyncResult } from './async-result'\nimport { PagedEntities } from './paged-entities'\n\nexport type PagedAsyncResult<TEntity, TFilter = object | null | undefined> = AsyncResult<\n PagedEntities<TEntity>,\n TFilter\n>\n\nexport const createSuccessPagedAsyncResult = <TEntity, TFilter = object | null | undefined>(\n entities: PagedEntities<TEntity>,\n filters?: TFilter\n): PagedAsyncResult<TEntity, TFilter> => {\n return createSuccessAsyncResult<PagedEntities<TEntity>, TFilter>(entities, filters)\n}\n\nexport const createFailedPagedAsyncResult = <TEntity, TFilter = object | null | undefined>(\n error: Error,\n entities: PagedEntities<TEntity>,\n filters?: TFilter\n): PagedAsyncResult<TEntity, TFilter> => {\n return createFailedAsyncResult<PagedEntities<TEntity>, TFilter>(error, entities, filters)\n}\n","import { HttpResponse } from '@angular/common/http'\nimport { notUndefined } from '@ppwcode/ng-utils'\n\nexport interface FileDownload {\n blob: Blob\n fileName?: string\n}\n\nexport const httpResponseToFileDownload = (response: HttpResponse<Blob>): FileDownload => {\n const contentDisposition = response.headers.get('Content-Disposition')\n const fileName = getFileNameFromContentDisposition(contentDisposition)\n return {\n blob: notUndefined(response.body || undefined),\n fileName\n }\n}\n\nexport const getFileNameFromContentDisposition = (contentDisposition?: string | null): string | undefined => {\n if (!(contentDisposition && contentDisposition.length && contentDisposition.indexOf('filename=') > -1)) {\n return undefined\n }\n const filenameStart = contentDisposition.split('filename=')[1]\n const filename =\n filenameStart?.length && filenameStart.indexOf(';') > -1 ? filenameStart.split(';')[0] : filenameStart\n return filename?.length ? filename.trim().replace(/['\"]/g, '') : undefined\n}\n","import { HttpErrorResponse } from '@angular/common/http'\nimport { map, Observable, Subscriber } from 'rxjs'\nimport { STATUS_CODE_MAP } from './constants/error-codes'\nimport { createFailedAsyncResult } from './models/async-result'\nimport { createFailedPagedAsyncResult, createSuccessPagedAsyncResult } from './models/paged-async-result'\nimport { createEmptyPagedEntities, PagedEntities } from './models/paged-entities'\n\ndeclare global {\n interface Window {\n ppwcodeHttpErrorExtractor?: (httpError: HttpErrorResponse) => Error\n }\n}\n\n// Required for the above global to work with ng-packagr\nexport {}\n\nexport const extractHttpError = (httpError: HttpErrorResponse, skipCustomExtractor: boolean = false): Error => {\n // When a global error handler has been defined in the application itself, we should use that one instead of the\n // default implementation that we provided here in the SDK.\n if (window.ppwcodeHttpErrorExtractor && !skipCustomExtractor) {\n return window.ppwcodeHttpErrorExtractor(httpError)\n }\n\n if (typeof httpError.error === 'object' && httpError.error !== null) {\n if (typeof httpError.error.errors === 'object') {\n const errorKeys = Object.keys(httpError.error.errors)\n return new Error(httpError.error.errors[errorKeys[0]])\n }\n\n if (Array.isArray(httpError.error.messages) && httpError.error.messages.length > 0) {\n const firstErrorMessage = httpError.error.messages[0]\n if (firstErrorMessage.text === 'DB_UQ_CONSTRAINT_VIOLATION') {\n const parameter = firstErrorMessage.parameters.length > 0 ? firstErrorMessage.parameters[0] : null\n if (parameter) {\n return new Error(parameter)\n } else {\n return new Error(firstErrorMessage.text)\n }\n } else {\n return new Error(firstErrorMessage.text ?? firstErrorMessage.code)\n }\n }\n\n if (typeof httpError.error.title === 'string') {\n return new Error(httpError.error.title)\n }\n }\n\n return new Error(httpError.error ?? STATUS_CODE_MAP.get(httpError.status) ?? httpError.statusText)\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const expectAsyncResultHttpError = <TEntity>(\n statusCodes: Array<number>,\n fallbackValue: TEntity,\n completeOnError = true\n) =>\n expectHttpError(\n statusCodes,\n (httpError: HttpErrorResponse) => {\n const error = extractHttpError(httpError)\n return createFailedAsyncResult(error, fallbackValue, null)\n },\n completeOnError\n )\n\nexport const expectPagedAsyncResultHttpSuccess = <TEntity, TFilters>(filters?: TFilters) =>\n map((entities: PagedEntities<TEntity>) => createSuccessPagedAsyncResult<TEntity, TFilters>(entities, filters))\n\nexport const expectPagedAsyncResultHttpError = <TEntity, TFilters = object | null | undefined>(\n statusCodes: Array<number>,\n filters?: TFilters,\n completeOnError = true\n) =>\n function <T>(source: Observable<T>): Observable<T> {\n // This is syntactic sugar for handling the error case of a paged async result. It will create a failed paged async\n // result, meaning that the result type of the handler is actually the same as the value received in the source.\n // That's the reason why T is used twice in the generics of createHttpErrorResponseOperatorObservable.\n return createHttpErrorResponseOperatorObservable<T, T>(\n source,\n statusCodes,\n (httpError: HttpErrorResponse) => {\n const error = extractHttpError(httpError)\n return createFailedPagedAsyncResult<TEntity, TFilters>(\n error,\n createEmptyPagedEntities<TEntity>(),\n filters\n ) as T // Cast to T because we are creating a PagedEntities<T> in the handler but the \"item type\" can't be inferred.\n },\n completeOnError\n )\n }\n\nexport const expectHttpError = <TResult>(\n statusCodes: Array<number>,\n handler: (httpError: HttpErrorResponse) => TResult,\n complete = false\n) =>\n function <T>(source: Observable<T>): Observable<T | TResult> {\n return createHttpErrorResponseOperatorObservable(source, statusCodes, handler, complete)\n }\n\nconst createHttpErrorResponseOperatorObservable = <T, TResult>(\n source: Observable<T>,\n statusCodes: Array<number>,\n handler: (httpError: HttpErrorResponse) => TResult,\n complete = false\n) => {\n return new Observable((subscriber: Subscriber<T | TResult>) =>\n source.subscribe({\n next(value: T) {\n subscriber.next(value)\n },\n error(error: HttpErrorResponse | unknown) {\n if (error instanceof HttpErrorResponse && statusCodes.indexOf(error.status) > -1) {\n const continueWithValue: TResult = handler(error)\n subscriber.next(continueWithValue)\n if (complete) {\n subscriber.complete()\n }\n } else {\n subscriber.error(error)\n }\n },\n complete() {\n subscriber.complete()\n }\n })\n )\n}\n","import { map, Observable } from 'rxjs'\nimport { DEFAULT_HTTP_ERROR_CODES } from './constants/error-codes'\nimport { expectAsyncResultHttpError, expectPagedAsyncResultHttpError } from './error-handling'\nimport { createSuccessAsyncResult } from './models/async-result'\nimport { createSuccessPagedAsyncResult } from './models/paged-async-result'\nimport { PagedEntities } from './models/paged-entities'\n\n/**\n * Default handling for observables that return a single result.\n * Converts the result to an AsyncResult and handles http errors thrown for the given http error codes.\n *\n * The returned observable will emit with an AsyncResult that is either in status \"success\" or \"failed\".\n * The filters property of the async result will be `null`.\n *\n * @param serviceCall$ The observable that returns the result.\n * @param httpErrorCodes The http error codes that should be handled as an error. Defaults to `DEFAULT_HTTP_ERROR_CODES`.\n */\nexport const handleAsyncResult = <T>(\n serviceCall$: Observable<T>,\n httpErrorCodes: Array<number> = DEFAULT_HTTP_ERROR_CODES\n) => {\n return serviceCall$.pipe(\n map((result: T) => createSuccessAsyncResult<T | null>(result)),\n expectAsyncResultHttpError<T | null>(httpErrorCodes, null)\n )\n}\n\n/**\n * Default handling for observables that return a single result but the returned entity is ignored.\n * Converts the result to an AsyncResult and handles http errors thrown for the given http error codes.\n *\n * The returned observable will emit with an AsyncResult that is either in status \"success\" or \"failed\".\n * The filters property of the async result will be `null`.\n *\n * The entity in the AsyncResult will always be `undefined` because the result of the service call is ignored.\n * @param serviceCall$ The observable that returns the result.\n * @param httpErrorCodes The http error codes that should be handled as an error. Defaults to `DEFAULT_HTTP_ERROR_CODES`.\n */\nexport const handleAsyncResultIgnoreEntity = <T>(\n serviceCall$: Observable<T>,\n httpErrorCodes: Array<number> = DEFAULT_HTTP_ERROR_CODES\n) => {\n return serviceCall$.pipe(\n map(() => createSuccessAsyncResult(void 0)),\n expectAsyncResultHttpError(httpErrorCodes, void 0)\n )\n}\n\n/**\n * Default handling for observables that return a paged result.\n * Converts the result to a PagedAsyncResult and handles http errors thrown for the given http error codes.\n *\n * The returned observable will emit with a PagedAsyncResult that is either in status \"success\" or \"failed\".\n * The filters property of the async result will be the filters that were passed to this function or `null`.\n * @param serviceCall$ The observable that returns the result.\n * @param httpErrorCodes The http error codes that should be handled as an error. Defaults to `DEFAULT_HTTP_ERROR_CODES`.\n * @param filters The filters that were used to request the paged result.\n */\nexport const handlePagedAsyncResult = <\n TEntity,\n TFilters extends object | null | undefined,\n T extends PagedEntities<TEntity> = PagedEntities<TEntity>\n>(\n serviceCall$: Observable<T>,\n httpErrorCodes: Array<number> = DEFAULT_HTTP_ERROR_CODES,\n filters?: TFilters\n) => {\n return serviceCall$.pipe(\n map((r) => createSuccessPagedAsyncResult<TEntity, TFilters>(r, filters)),\n expectPagedAsyncResultHttpError<T, TFilters>(httpErrorCodes, filters)\n )\n}\n","import { HttpErrorResponse } from '@angular/common/http'\nimport { PpwErrorMessage } from './models/error-message'\nimport { extractHttpError } from './error-handling'\n\nexport const ppwHttpErrorExtractorWithTranslatedMessages = (response: HttpErrorResponse): Error => {\n if (response.status === 400) {\n const messages: PpwErrorMessage[] = (response.error.messages ?? []).filter(\n (msg: PpwErrorMessage) => msg.translated\n )\n if (messages?.length) {\n return new Error(messages.map((msg) => msg.text).join('\\n'))\n } else {\n return extractHttpError(response, true)\n }\n } else {\n return extractHttpError(response, true)\n }\n}\n","declare type RequestDataValueType = string | number | boolean | readonly (string | number | boolean)[]\n\nexport const cleanupRequestData = (data: { [key: string]: unknown }) => {\n const dataKeys: Array<string> = Object.keys(data)\n const cleanedData: { [param: string]: RequestDataValueType } = {}\n\n dataKeys.forEach((dataKey) => {\n if (data[dataKey] !== undefined && data[dataKey] !== null) {\n cleanedData[dataKey] = data[dataKey] as RequestDataValueType\n }\n })\n\n return cleanedData\n}\n","/*\n * Public API Surface of ng-async\n */\n\nexport * from './lib/async-result/async-result.component'\nexport * from './lib/async-result/async-result.module'\nexport * from './lib/async-result/async-result-directives'\nexport * from './lib/constants/error-codes'\nexport * from './lib/downloads/save-downloaded-file'\nexport * from './lib/models/async-result'\nexport * from './lib/models/paged-entities'\nexport * from './lib/models/paged-entities.mock'\nexport * from './lib/models/paged-async-result'\nexport * from './lib/models/file-download'\nexport * from './lib/options/ppw-async-result-default-options'\nexport * from './lib/default-handling'\nexport * from './lib/error-handling'\nexport * from './lib/error-extractors'\nexport * from './lib/api-calls/request-data'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"ppwcode-ng-async.mjs","sources":["../../../../projects/ppwcode/ng-async/src/lib/options/ppw-async-result-default-options.ts","../../../../projects/ppwcode/ng-async/src/lib/async-result/async-result-directives.ts","../../../../projects/ppwcode/ng-async/src/lib/async-result/async-result.component.ts","../../../../projects/ppwcode/ng-async/src/lib/async-result/async-result.component.html","../../../../projects/ppwcode/ng-async/src/lib/async-result/async-result.module.ts","../../../../projects/ppwcode/ng-async/src/lib/constants/error-codes.ts","../../../../projects/ppwcode/ng-async/src/lib/downloads/save-downloaded-file.ts","../../../../projects/ppwcode/ng-async/src/lib/models/async-result.ts","../../../../projects/ppwcode/ng-async/src/lib/models/paged-entities.ts","../../../../projects/ppwcode/ng-async/src/lib/models/paged-entities.mock.ts","../../../../projects/ppwcode/ng-async/src/lib/models/paged-async-result.ts","../../../../projects/ppwcode/ng-async/src/lib/models/file-download.ts","../../../../projects/ppwcode/ng-async/src/lib/error-handling.ts","../../../../projects/ppwcode/ng-async/src/lib/default-handling.ts","../../../../projects/ppwcode/ng-async/src/lib/error-extractors.ts","../../../../projects/ppwcode/ng-async/src/lib/api-calls/request-data.ts","../../../../projects/ppwcode/ng-async/src/public-api.ts","../../../../projects/ppwcode/ng-async/src/ppwcode-ng-async.ts"],"sourcesContent":["import { InjectionToken, Type } from '@angular/core'\n\nexport interface PpwAsyncResultDefaultOptions {\n emptyResultComponent?: Type<unknown>\n}\n\nexport const PPW_ASYNC_RESULT_DEFAULT_OPTIONS = new InjectionToken<PpwAsyncResultDefaultOptions>(\n 'PPW_ASYNC_RESULT_DEFAULT_OPTIONS'\n)\n","import { Directive, input, InputSignal, Signal } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { AsyncResult } from '../models/async-result'\nimport { PpwAsyncResultSuccessContext } from './async-result-success-context'\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ppw-async-result-initial]',\n /* eslint-disable @angular-eslint/prefer-standalone */\n standalone: false\n})\nexport class PpwAsyncResultInitialDirective<TResult, TFilters> {\n public contextTyper: InputSignal<\n | Observable<AsyncResult<TResult, TFilters> | null>\n | Signal<AsyncResult<TResult, TFilters> | null>\n | AsyncResult<TResult, TFilters>\n | null\n > = input.required()\n\n static ngTemplateContextGuard<TResult, TFilters>(\n dir: PpwAsyncResultSuccessDirective<TResult, TFilters>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ctx: unknown\n ): dir is PpwAsyncResultSuccessContext<TResult, TFilters> {\n return true\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ppw-async-result-success]',\n /* eslint-disable @angular-eslint/prefer-standalone */\n standalone: false\n})\nexport class PpwAsyncResultSuccessDirective<T, U> {\n public contextTyper: InputSignal<\n Observable<AsyncResult<T, U> | null> | Signal<AsyncResult<T, U> | null> | AsyncResult<T, U> | null\n > = input.required()\n\n static ngTemplateContextGuard<TResult, TFilters>(\n dir: PpwAsyncResultSuccessDirective<TResult, TFilters>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ctx: unknown\n ): dir is PpwAsyncResultSuccessContext<TResult, TFilters> {\n return true\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ppw-async-result-empty]',\n /* eslint-disable @angular-eslint/prefer-standalone */\n standalone: false\n})\nexport class PpwAsyncResultEmptyDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n inject,\n input,\n InputSignal,\n Signal,\n TemplateRef,\n Type\n} from '@angular/core'\nimport { Severity } from '@ppwcode/ng-common-components'\nimport { AsyncResult } from '../models/async-result'\nimport {\n PPW_ASYNC_RESULT_DEFAULT_OPTIONS,\n PpwAsyncResultDefaultOptions\n} from '../options/ppw-async-result-default-options'\nimport {\n PpwAsyncResultEmptyDirective,\n PpwAsyncResultInitialDirective,\n PpwAsyncResultSuccessDirective\n} from './async-result-directives'\n\n@Component({\n selector: 'ppw-async-result',\n templateUrl: './async-result.component.html',\n /* eslint-disable @angular-eslint/prefer-standalone */\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AsyncResultComponent {\n // Dependencies\n #asyncResultDefaultOptions: PpwAsyncResultDefaultOptions | null = inject(PPW_ASYNC_RESULT_DEFAULT_OPTIONS, {\n optional: true\n })\n\n // Inputs\n public asyncResult: InputSignal<AsyncResult<unknown, unknown> | null> = input.required<AsyncResult<\n unknown,\n unknown\n > | null>()\n public pending: InputSignal<boolean | null> = input<boolean | null>(null)\n\n // Content children\n public successTemplate: Signal<TemplateRef<unknown>> = contentChild.required(PpwAsyncResultSuccessDirective, {\n read: TemplateRef\n })\n public initialTemplate: Signal<TemplateRef<unknown> | undefined> = contentChild(PpwAsyncResultInitialDirective, {\n read: TemplateRef\n })\n public emptyTemplate: Signal<TemplateRef<unknown> | undefined> = contentChild(PpwAsyncResultEmptyDirective, {\n read: TemplateRef\n })\n\n // Getters\n public get asyncResultDefaultEmptyComponent(): Type<unknown> | undefined {\n return this.#asyncResultDefaultOptions?.emptyResultComponent\n }\n\n public readonly errorSeverity: Severity = Severity.error\n}\n","<ppw-loader [loading]=\"pending()\">\n @if (asyncResult(); as result) {\n @switch (result.status) {\n @case ('failed') {\n <ng-container *ngTemplateOutlet=\"failed; context: { $implicit: result }\"></ng-container>\n }\n @case ('success') {\n @if (result.entity === null) {\n @if (emptyTemplate(); as empty) {\n <ng-container *ngTemplateOutlet=\"empty; context: { $implicit: result }\"></ng-container>\n } @else if (asyncResultDefaultEmptyComponent) {\n <ng-container *ngComponentOutlet=\"asyncResultDefaultEmptyComponent\"></ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"successTemplate(); context: { $implicit: result, entity: result.entity }\"\n ></ng-container>\n }\n }\n @case ('initial') {\n <ng-container\n *ngTemplateOutlet=\"initialTemplate() ?? null; context: { $implicit: result, entity: result.entity }\"\n ></ng-container>\n }\n }\n }\n</ppw-loader>\n\n<ng-template #failed>\n <ppw-message-bar\n [message]=\"asyncResult()!.error?.message ?? '' | translate\"\n [severity]=\"errorSeverity\"\n ></ppw-message-bar>\n</ng-template>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { TranslateDirective, TranslatePipe } from '@ngx-translate/core'\nimport { LoaderComponent, MessageBarComponent } from '@ppwcode/ng-common-components'\nimport {\n PpwAsyncResultEmptyDirective,\n PpwAsyncResultInitialDirective,\n PpwAsyncResultSuccessDirective\n} from './async-result-directives'\nimport { AsyncResultComponent } from './async-result.component'\n\n@NgModule({\n declarations: [\n AsyncResultComponent,\n PpwAsyncResultInitialDirective,\n PpwAsyncResultSuccessDirective,\n PpwAsyncResultEmptyDirective\n ],\n exports: [\n AsyncResultComponent,\n PpwAsyncResultInitialDirective,\n PpwAsyncResultSuccessDirective,\n PpwAsyncResultEmptyDirective\n ],\n imports: [CommonModule, MessageBarComponent, TranslatePipe, TranslateDirective, LoaderComponent]\n})\nexport class AsyncResultModule {}\n","import { HttpStatusCode } from '@angular/common/http'\n\nexport const DEFAULT_HTTP_ERROR_CODES: Array<number> = [\n HttpStatusCode.BadRequest,\n HttpStatusCode.Forbidden,\n HttpStatusCode.NotFound,\n HttpStatusCode.MethodNotAllowed,\n HttpStatusCode.InternalServerError,\n HttpStatusCode.PreconditionFailed,\n HttpStatusCode.Conflict\n]\n\nexport const STATUS_CODE_MAP = new Map<number, string>([\n [400, 'Bad Request'],\n [401, 'Unauthorized'],\n [402, 'Payment Required'],\n [403, 'Forbidden'],\n [404, 'Not Found'],\n [405, 'Method Not Allowed'],\n [406, 'Not Acceptable'],\n [407, 'Proxy Authentication Required'],\n [408, 'Request Timeout'],\n [409, 'Conflict'],\n [410, 'Gone'],\n [411, 'Length Required'],\n [412, 'Precondition Failed'],\n [413, 'Payload Too Large'],\n [414, 'URI Too Long'],\n [415, 'Unsupported Media Type'],\n [416, 'Range Not Satisfiable'],\n [417, 'Expectation Failed'],\n [418, \"I'm a teapot\"],\n [421, 'Misdirected Request'],\n [422, 'Unprocessable Entity'],\n [423, 'Locked'],\n [424, 'Failed Dependency'],\n [425, 'Too Early'],\n [426, 'Upgrade Required'],\n [428, 'Precondition Required'],\n [429, 'Too Many Requests'],\n [431, 'Request Header Fields Too Large'],\n [451, 'Unavailable For Legal Reasons'],\n [500, 'Internal Server Error'],\n [501, 'Not Implemented'],\n [502, 'Bad Gateway'],\n [503, 'Service Unavailable'],\n [504, 'Gateway Timeout'],\n [505, 'HTTP Version Not Supported'],\n [506, 'Variant Also Negotiates'],\n [507, 'Insufficient Storage'],\n [508, 'Loop Detected'],\n [510, 'Not Extended'],\n [511, 'Network Authentication Required']\n])\n","import { saveAs } from 'file-saver-es'\nimport { notNull } from '@ppwcode/ng-utils'\nimport { AsyncResult } from '../models/async-result'\nimport { FileDownload } from '../models/file-download'\n\nexport const saveDownloadedFile =\n (fileName: string) =>\n (asyncResult: AsyncResult<Blob | null>): void => {\n saveAs(notNull(asyncResult.entity), fileName)\n }\n\n/**\n * Can be used to save file that comes with a filename in the response from the back-end.\n */\nexport const saveFileDownload =\n () =>\n (asyncResult: AsyncResult<FileDownload | null>): void => {\n saveAs(notNull(asyncResult.entity).blob, notNull(asyncResult.entity).fileName)\n }\n","import { BehaviorSubject, firstValueFrom, Observable } from 'rxjs'\n\nexport type AsyncResultStatus = 'pending' | 'failed' | 'success' | 'initial'\n\nexport interface AsyncResult<TResult, TFilter = null> {\n status: AsyncResultStatus\n error?: Error\n entity: TResult\n filters: TFilter | null\n}\n\nexport const isAsyncResult = <TResult, TFilter = null>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n possibleAsyncResult: any\n): possibleAsyncResult is AsyncResult<TResult, TFilter> => {\n return (\n typeof possibleAsyncResult === 'object' &&\n possibleAsyncResult !== null &&\n 'status' in possibleAsyncResult &&\n 'entity' in possibleAsyncResult\n )\n}\n\nexport const createSuccessAsyncResult = <TResult, TFilter = null>(\n entities: TResult,\n filters: TFilter | null = null\n): AsyncResult<TResult, TFilter> => {\n return {\n status: 'success',\n entity: entities,\n filters\n }\n}\n\nexport const createFailedAsyncResult = <TResult, TFilter = null>(\n error: Error,\n entities: TResult,\n filters: TFilter | null = null\n): AsyncResult<TResult, TFilter> => {\n return {\n status: 'failed',\n error,\n entity: entities,\n filters\n }\n}\n\nexport const executeAsyncOperation = async <TAsyncResult, TAsyncFilter, TSubject>(\n operation$: Observable<AsyncResult<TAsyncResult, TAsyncFilter>>,\n handlers: {\n success: (result: AsyncResult<TAsyncResult, TAsyncFilter>) => void\n error: (result: AsyncResult<TAsyncResult, TAsyncFilter>) => void\n },\n isExecuting$: BehaviorSubject<TSubject>,\n executingStartedValue?: TSubject,\n executingFinishedValue?: TSubject\n): Promise<AsyncResult<TAsyncResult, TAsyncFilter>> => {\n isExecuting$.next(executingStartedValue ?? (true as TSubject))\n const result = await firstValueFrom(operation$)\n isExecuting$.next(executingFinishedValue ?? (false as TSubject))\n\n if (result.status === 'success') {\n handlers.success(result)\n } else if (result.status === 'failed') {\n handlers.error(result)\n }\n\n return result\n}\n","import { notUndefined } from '@ppwcode/ng-utils'\n\nexport interface PagedEntitiesDto<T> {\n /** The current page number (1-based). */\n pageIndex?: number\n /** The current page number (1-based). */\n page?: number\n pageSize: number\n totalCount: number\n totalPages: number\n hasPreviousPage: boolean\n hasNextPage: boolean\n items: Array<T>\n}\n\nexport interface PagedEntities<T> {\n /**\n * @deprecated Use `page` instead. The value is 1-based, but the naming suggested 0-based. Will be removed in v22.\n */\n pageIndex: number\n /** The current page number (1-based). */\n page: number\n pageSize: number\n totalCount: number\n totalPages: number\n hasPreviousPage: boolean\n hasNextPage: boolean\n items: Array<T>\n}\n\nexport const pagedEntitiesFromDto = <TDto, TModel>(\n pagedEntitiesDto: PagedEntitiesDto<TDto>,\n entityMapper: (dto: TDto) => TModel\n): PagedEntities<TModel> => {\n // Prefer 'page' over 'pageIndex' as 'pageIndex' is deprecated\n const page = notUndefined(pagedEntitiesDto.page ?? pagedEntitiesDto.pageIndex)\n return {\n page,\n pageIndex: page, // deprecated\n pageSize: pagedEntitiesDto.pageSize,\n totalCount: pagedEntitiesDto.totalCount,\n totalPages: pagedEntitiesDto.totalPages,\n hasPreviousPage: pagedEntitiesDto.hasPreviousPage,\n hasNextPage: pagedEntitiesDto.hasNextPage,\n items: pagedEntitiesDto.items.map(entityMapper)\n }\n}\n\nexport const createEmptyPagedEntities = <T>(): PagedEntities<T> => {\n return {\n pageIndex: 1, // deprecated\n page: 1,\n pageSize: 20,\n totalCount: 0,\n totalPages: 1,\n hasPreviousPage: false,\n hasNextPage: false,\n items: []\n }\n}\n","import { PagedEntities, PagedEntitiesDto } from './paged-entities'\n\nexport const createPagedEntitiesDtoMock = <TDto>(dtoEntities: Array<TDto>): PagedEntitiesDto<TDto> => {\n return {\n pageIndex: 1,\n pageSize: dtoEntities.length ?? 20,\n totalCount: dtoEntities.length,\n totalPages: 1,\n hasPreviousPage: false,\n hasNextPage: false,\n items: dtoEntities\n }\n}\n\nexport const createPagedEntitiesMock = <TModel>(models: Array<TModel>): PagedEntities<TModel> => {\n return {\n pageIndex: 1,\n page: 1,\n pageSize: models.length ?? 20,\n totalCount: models.length,\n totalPages: 1,\n hasPreviousPage: false,\n hasNextPage: false,\n items: models\n }\n}\n","import { AsyncResult, createFailedAsyncResult, createSuccessAsyncResult } from './async-result'\nimport { PagedEntities } from './paged-entities'\n\nexport type PagedAsyncResult<TEntity, TFilter = object | null | undefined> = AsyncResult<\n PagedEntities<TEntity>,\n TFilter\n>\n\nexport const createSuccessPagedAsyncResult = <TEntity, TFilter = object | null | undefined>(\n entities: PagedEntities<TEntity>,\n filters?: TFilter\n): PagedAsyncResult<TEntity, TFilter> => {\n return createSuccessAsyncResult<PagedEntities<TEntity>, TFilter>(entities, filters)\n}\n\nexport const createFailedPagedAsyncResult = <TEntity, TFilter = object | null | undefined>(\n error: Error,\n entities: PagedEntities<TEntity>,\n filters?: TFilter\n): PagedAsyncResult<TEntity, TFilter> => {\n return createFailedAsyncResult<PagedEntities<TEntity>, TFilter>(error, entities, filters)\n}\n","import { HttpResponse } from '@angular/common/http'\nimport { notUndefined } from '@ppwcode/ng-utils'\n\nexport interface FileDownload {\n blob: Blob\n fileName?: string\n}\n\nexport const httpResponseToFileDownload = (response: HttpResponse<Blob>): FileDownload => {\n const contentDisposition = response.headers.get('Content-Disposition')\n const fileName = getFileNameFromContentDisposition(contentDisposition)\n return {\n blob: notUndefined(response.body || undefined),\n fileName\n }\n}\n\nexport const getFileNameFromContentDisposition = (contentDisposition?: string | null): string | undefined => {\n if (!(contentDisposition && contentDisposition.length && contentDisposition.indexOf('filename=') > -1)) {\n return undefined\n }\n const filenameStart = contentDisposition.split('filename=')[1]\n const filename =\n filenameStart?.length && filenameStart.indexOf(';') > -1 ? filenameStart.split(';')[0] : filenameStart\n return filename?.length ? filename.trim().replace(/['\"]/g, '') : undefined\n}\n","import { HttpErrorResponse } from '@angular/common/http'\nimport { map, Observable, Subscriber } from 'rxjs'\nimport { STATUS_CODE_MAP } from './constants/error-codes'\nimport { createFailedAsyncResult } from './models/async-result'\nimport { createFailedPagedAsyncResult, createSuccessPagedAsyncResult } from './models/paged-async-result'\nimport { createEmptyPagedEntities, PagedEntities } from './models/paged-entities'\n\ndeclare global {\n interface Window {\n ppwcodeHttpErrorExtractor?: (httpError: HttpErrorResponse) => Error\n }\n}\n\n// Required for the above global to work with ng-packagr\nexport {}\n\nexport const extractHttpError = (httpError: HttpErrorResponse, skipCustomExtractor: boolean = false): Error => {\n // When a global error handler has been defined in the application itself, we should use that one instead of the\n // default implementation that we provided here in the SDK.\n if (window.ppwcodeHttpErrorExtractor && !skipCustomExtractor) {\n return window.ppwcodeHttpErrorExtractor(httpError)\n }\n\n if (typeof httpError.error === 'object' && httpError.error !== null) {\n if (typeof httpError.error.errors === 'object') {\n const errorKeys = Object.keys(httpError.error.errors)\n return new Error(httpError.error.errors[errorKeys[0]])\n }\n\n if (Array.isArray(httpError.error.messages) && httpError.error.messages.length > 0) {\n const firstErrorMessage = httpError.error.messages[0]\n if (firstErrorMessage.text === 'DB_UQ_CONSTRAINT_VIOLATION') {\n const parameter = firstErrorMessage.parameters.length > 0 ? firstErrorMessage.parameters[0] : null\n if (parameter) {\n return new Error(parameter)\n } else {\n return new Error(firstErrorMessage.text)\n }\n } else {\n return new Error(firstErrorMessage.text ?? firstErrorMessage.code)\n }\n }\n\n if (typeof httpError.error.title === 'string') {\n return new Error(httpError.error.title)\n }\n }\n\n return new Error(httpError.error ?? STATUS_CODE_MAP.get(httpError.status) ?? httpError.statusText)\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const expectAsyncResultHttpError = <TEntity>(\n statusCodes: Array<number>,\n fallbackValue: TEntity,\n completeOnError = true\n) =>\n expectHttpError(\n statusCodes,\n (httpError: HttpErrorResponse) => {\n const error = extractHttpError(httpError)\n return createFailedAsyncResult(error, fallbackValue, null)\n },\n completeOnError\n )\n\nexport const expectPagedAsyncResultHttpSuccess = <TEntity, TFilters>(filters?: TFilters) =>\n map((entities: PagedEntities<TEntity>) => createSuccessPagedAsyncResult<TEntity, TFilters>(entities, filters))\n\nexport const expectPagedAsyncResultHttpError = <TEntity, TFilters = object | null | undefined>(\n statusCodes: Array<number>,\n filters?: TFilters,\n completeOnError = true\n) =>\n function <T>(source: Observable<T>): Observable<T> {\n // This is syntactic sugar for handling the error case of a paged async result. It will create a failed paged async\n // result, meaning that the result type of the handler is actually the same as the value received in the source.\n // That's the reason why T is used twice in the generics of createHttpErrorResponseOperatorObservable.\n return createHttpErrorResponseOperatorObservable<T, T>(\n source,\n statusCodes,\n (httpError: HttpErrorResponse) => {\n const error = extractHttpError(httpError)\n return createFailedPagedAsyncResult<TEntity, TFilters>(\n error,\n createEmptyPagedEntities<TEntity>(),\n filters\n ) as T // Cast to T because we are creating a PagedEntities<T> in the handler but the \"item type\" can't be inferred.\n },\n completeOnError\n )\n }\n\nexport const expectHttpError = <TResult>(\n statusCodes: Array<number>,\n handler: (httpError: HttpErrorResponse) => TResult,\n complete = false\n) =>\n function <T>(source: Observable<T>): Observable<T | TResult> {\n return createHttpErrorResponseOperatorObservable(source, statusCodes, handler, complete)\n }\n\nconst createHttpErrorResponseOperatorObservable = <T, TResult>(\n source: Observable<T>,\n statusCodes: Array<number>,\n handler: (httpError: HttpErrorResponse) => TResult,\n complete = false\n) => {\n return new Observable((subscriber: Subscriber<T | TResult>) =>\n source.subscribe({\n next(value: T) {\n subscriber.next(value)\n },\n error(error: HttpErrorResponse | unknown) {\n if (error instanceof HttpErrorResponse && statusCodes.indexOf(error.status) > -1) {\n const continueWithValue: TResult = handler(error)\n subscriber.next(continueWithValue)\n if (complete) {\n subscriber.complete()\n }\n } else {\n subscriber.error(error)\n }\n },\n complete() {\n subscriber.complete()\n }\n })\n )\n}\n","import { map, Observable } from 'rxjs'\nimport { DEFAULT_HTTP_ERROR_CODES } from './constants/error-codes'\nimport { expectAsyncResultHttpError, expectPagedAsyncResultHttpError } from './error-handling'\nimport { createSuccessAsyncResult } from './models/async-result'\nimport { createSuccessPagedAsyncResult } from './models/paged-async-result'\nimport { PagedEntities } from './models/paged-entities'\n\n/**\n * Default handling for observables that return a single result.\n * Converts the result to an AsyncResult and handles http errors thrown for the given http error codes.\n *\n * The returned observable will emit with an AsyncResult that is either in status \"success\" or \"failed\".\n * The filters property of the async result will be `null`.\n *\n * @param serviceCall$ The observable that returns the result.\n * @param httpErrorCodes The http error codes that should be handled as an error. Defaults to `DEFAULT_HTTP_ERROR_CODES`.\n */\nexport const handleAsyncResult = <T>(\n serviceCall$: Observable<T>,\n httpErrorCodes: Array<number> = DEFAULT_HTTP_ERROR_CODES\n) => {\n return serviceCall$.pipe(\n map((result: T) => createSuccessAsyncResult<T | null>(result)),\n expectAsyncResultHttpError<T | null>(httpErrorCodes, null)\n )\n}\n\n/**\n * Default handling for observables that return a single result but the returned entity is ignored.\n * Converts the result to an AsyncResult and handles http errors thrown for the given http error codes.\n *\n * The returned observable will emit with an AsyncResult that is either in status \"success\" or \"failed\".\n * The filters property of the async result will be `null`.\n *\n * The entity in the AsyncResult will always be `undefined` because the result of the service call is ignored.\n * @param serviceCall$ The observable that returns the result.\n * @param httpErrorCodes The http error codes that should be handled as an error. Defaults to `DEFAULT_HTTP_ERROR_CODES`.\n */\nexport const handleAsyncResultIgnoreEntity = <T>(\n serviceCall$: Observable<T>,\n httpErrorCodes: Array<number> = DEFAULT_HTTP_ERROR_CODES\n) => {\n return serviceCall$.pipe(\n map(() => createSuccessAsyncResult(void 0)),\n expectAsyncResultHttpError(httpErrorCodes, void 0)\n )\n}\n\n/**\n * Default handling for observables that return a paged result.\n * Converts the result to a PagedAsyncResult and handles http errors thrown for the given http error codes.\n *\n * The returned observable will emit with a PagedAsyncResult that is either in status \"success\" or \"failed\".\n * The filters property of the async result will be the filters that were passed to this function or `null`.\n * @param serviceCall$ The observable that returns the result.\n * @param httpErrorCodes The http error codes that should be handled as an error. Defaults to `DEFAULT_HTTP_ERROR_CODES`.\n * @param filters The filters that were used to request the paged result.\n */\nexport const handlePagedAsyncResult = <\n TEntity,\n TFilters extends object | null | undefined,\n T extends PagedEntities<TEntity> = PagedEntities<TEntity>\n>(\n serviceCall$: Observable<T>,\n httpErrorCodes: Array<number> = DEFAULT_HTTP_ERROR_CODES,\n filters?: TFilters\n) => {\n return serviceCall$.pipe(\n map((r) => createSuccessPagedAsyncResult<TEntity, TFilters>(r, filters)),\n expectPagedAsyncResultHttpError<T, TFilters>(httpErrorCodes, filters)\n )\n}\n","import { HttpErrorResponse } from '@angular/common/http'\nimport { PpwErrorMessage } from './models/error-message'\nimport { extractHttpError } from './error-handling'\n\nexport const ppwHttpErrorExtractorWithTranslatedMessages = (response: HttpErrorResponse): Error => {\n if (response.status === 400) {\n const messages: PpwErrorMessage[] = (response.error.messages ?? []).filter(\n (msg: PpwErrorMessage) => msg.translated\n )\n if (messages?.length) {\n return new Error(messages.map((msg) => msg.text).join('\\n'))\n } else {\n return extractHttpError(response, true)\n }\n } else {\n return extractHttpError(response, true)\n }\n}\n","declare type RequestDataValueType = string | number | boolean | readonly (string | number | boolean)[]\n\nexport const cleanupRequestData = (data: { [key: string]: unknown }) => {\n const dataKeys: Array<string> = Object.keys(data)\n const cleanedData: { [param: string]: RequestDataValueType } = {}\n\n dataKeys.forEach((dataKey) => {\n if (data[dataKey] !== undefined && data[dataKey] !== null) {\n cleanedData[dataKey] = data[dataKey] as RequestDataValueType\n }\n })\n\n return cleanedData\n}\n","/*\n * Public API Surface of ng-async\n */\n\nexport * from './lib/async-result/async-result.component'\nexport * from './lib/async-result/async-result.module'\nexport * from './lib/async-result/async-result-directives'\nexport * from './lib/constants/error-codes'\nexport * from './lib/downloads/save-downloaded-file'\nexport * from './lib/models/async-result'\nexport * from './lib/models/paged-entities'\nexport * from './lib/models/paged-entities.mock'\nexport * from './lib/models/paged-async-result'\nexport * from './lib/models/file-download'\nexport * from './lib/options/ppw-async-result-default-options'\nexport * from './lib/default-handling'\nexport * from './lib/error-handling'\nexport * from './lib/error-extractors'\nexport * from './lib/api-calls/request-data'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} |
+3
-3
| { | ||
| "name": "@ppwcode/ng-async", | ||
| "version": "21.3.1", | ||
| "version": "21.4.0", | ||
| "repository": { | ||
@@ -12,4 +12,4 @@ "url": "https://github.com/peopleware/angular-sdk" | ||
| "file-saver-es": "^2.0.5", | ||
| "@ppwcode/ng-common-components": "^21.3.1", | ||
| "@ppwcode/ng-utils": "^21.3.1" | ||
| "@ppwcode/ng-common-components": "^21.4.0", | ||
| "@ppwcode/ng-utils": "^21.4.0" | ||
| }, | ||
@@ -16,0 +16,0 @@ "dependencies": { |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
86227
0.19%