@epistola.app/valtimo-plugin 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/fesm2022/epistola.app-valtimo-plugin.mjs +1514 -456
  2. package/fesm2022/epistola.app-valtimo-plugin.mjs.map +1 -1
  3. package/lib/assets/epistola-logo.d.ts +1 -1
  4. package/lib/components/check-job-status-configuration/check-job-status-configuration.component.d.ts +4 -1
  5. package/lib/components/download-document-configuration/download-document-configuration.component.d.ts +8 -1
  6. package/lib/components/epistola-admin-page/epistola-admin-page.component.d.ts +17 -1
  7. package/lib/components/epistola-document/epistola-document.component.d.ts +65 -0
  8. package/lib/components/{epistola-download/epistola-download.formio.d.ts → epistola-document/epistola-document.formio.d.ts} +2 -2
  9. package/lib/components/epistola-document-preview/epistola-document-preview.component.d.ts +29 -18
  10. package/lib/components/epistola-document-preview/preview-utils.d.ts +18 -0
  11. package/lib/components/epistola-retry-form/epistola-retry-form.component.d.ts +3 -7
  12. package/lib/components/generate-document-configuration/generate-document-configuration.component.d.ts +20 -1
  13. package/lib/components/override-builder/override-builder.component.d.ts +42 -0
  14. package/lib/components/override-builder/override-builder.formio.d.ts +4 -0
  15. package/lib/components/process-link-selector/process-link-selector.component.d.ts +31 -0
  16. package/lib/components/process-link-selector/process-link-selector.formio.d.ts +4 -0
  17. package/lib/epistola-enabled.guard.d.ts +2 -0
  18. package/lib/epistola-runtime-config.d.ts +28 -0
  19. package/lib/epistola.module.d.ts +4 -5
  20. package/lib/models/admin.d.ts +28 -0
  21. package/lib/models/config.d.ts +27 -12
  22. package/lib/services/epistola-admin.service.d.ts +14 -1
  23. package/lib/services/epistola-plugin.service.d.ts +51 -7
  24. package/lib/services/epistola-task-context.interceptor.d.ts +29 -0
  25. package/lib/services/epistola-task-context.matcher.d.ts +19 -0
  26. package/lib/services/epistola-task-context.service.d.ts +26 -0
  27. package/lib/services/index.d.ts +2 -0
  28. package/package.json +4 -2
  29. package/public_api.d.ts +7 -4
  30. package/sbom.json +1 -0
  31. package/lib/components/epistola-download/epistola-download.component.d.ts +0 -24
  32. package/lib/components/epistola-preview-button/epistola-preview-button.component.d.ts +0 -35
  33. package/lib/components/epistola-preview-button/epistola-preview-button.formio.d.ts +0 -4
@@ -1,8 +1,38 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { ConfigService } from '@valtimo/shared';
3
3
  import { Observable } from 'rxjs';
4
- import { AttributeDefinition, CatalogInfo, EnvironmentInfo, ExpressionFunctionInfo, PreviewSource, TemplateDetails, TemplateInfo, EvaluationResult, VariableSuggestions, VariantInfo } from '../models';
4
+ import { AttributeDefinition, CatalogInfo, EnvironmentInfo, ExpressionFunctionInfo, JsonataValidationResult, TemplateDetails, TemplateInfo, EvaluationResult, ValidateJsonataRequest, VariableSuggestions, VariantInfo } from '../models';
5
5
  import * as i0 from "@angular/core";
6
+ /**
7
+ * Body of a {@link EpistolaPluginService.previewToBlob} call. Mirrors the
8
+ * backend {@code PreviewRequest} record. {@code processInstanceId},
9
+ * {@code processDefinitionKey} and {@code sourceActivityId} together identify
10
+ * the {@code generate-document} process link being previewed; {@code overrides}
11
+ * and {@code inputOverrides} let the caller substitute data before the
12
+ * JSONata mapping runs.
13
+ */
14
+ export interface PreviewBlobRequest {
15
+ taskId: string;
16
+ documentId: string;
17
+ processDefinitionKey?: string | null;
18
+ sourceActivityId?: string | null;
19
+ processInstanceId?: string | null;
20
+ inputOverrides?: Record<string, unknown> | null;
21
+ overrides?: Record<string, unknown> | null;
22
+ }
23
+ /**
24
+ * Query-string parameters for {@link EpistolaPluginService.downloadDocumentBlob}.
25
+ * The backend resolves the Epistola PDF id and tenant id from the named process
26
+ * variables on the caller's task — no raw PDF id is sent on the wire.
27
+ */
28
+ export interface DownloadDocumentRequest {
29
+ taskId: string;
30
+ caseDocumentId: string;
31
+ documentVariable: string;
32
+ tenantIdVariable: string;
33
+ filename: string;
34
+ disposition: 'attachment' | 'inline';
35
+ }
6
36
  /**
7
37
  * Service for interacting with Epistola plugin API endpoints.
8
38
  * Provides methods to fetch templates, environments, variants,
@@ -51,21 +81,35 @@ export declare class EpistolaPluginService {
51
81
  evaluateMapping(expression: string, documentId: string, processInstanceId?: string): Observable<EvaluationResult>;
52
82
  /**
53
83
  * Get a dynamically generated Formio form for retrying a failed document generation.
84
+ *
85
+ * @param taskId Operaton user task id (required — backend authorizes via OperatonTask:VIEW)
54
86
  */
55
- getRetryForm(processInstanceId: string, documentId?: string, sourceActivityId?: string): Observable<any>;
87
+ getRetryForm(taskId: string, processInstanceId: string, documentId?: string, sourceActivityId?: string): Observable<any>;
56
88
  /**
57
89
  * List all available expression functions for expr: data mapping values.
58
90
  */
59
91
  getExpressionFunctions(): Observable<ExpressionFunctionInfo[]>;
60
92
  /**
61
- * Discover all previewable document sources for a given Valtimo document.
93
+ * Validate the JSONata syntax of action-config expressions before save.
94
+ * Parse-only; runtime errors (missing variables, type mismatches) are not detected.
95
+ */
96
+ validateJsonata(request: ValidateJsonataRequest): Observable<JsonataValidationResult>;
97
+ /**
98
+ * Preview a document by dry-running the {@code generate-document} process
99
+ * link. Returns the rendered PDF as a {@link Blob}.
100
+ *
101
+ * <p>The {@code X-Skip-Interceptor: 422} header tells the global Valtimo
102
+ * error interceptor to skip its toast for validation failures so the
103
+ * caller can render an inline error message.
62
104
  */
63
- getPreviewSources(documentId: string): Observable<PreviewSource[]>;
105
+ previewToBlob(request: PreviewBlobRequest): Observable<Blob>;
64
106
  /**
65
- * Preview a document by dry-running the generate-document process link.
66
- * Returns the resolved data as a mock preview (Phase 1).
107
+ * Stream an already-generated Epistola PDF for the caller's task. The
108
+ * backend resolves the Epistola document id and tenant id from the named
109
+ * process variables on the task's process instance, so the wire never
110
+ * carries a raw PDF id.
67
111
  */
68
- previewDocument(documentId: string, processDefinitionKey: string, sourceActivityId: string, processInstanceId?: string, overrides?: Record<string, any>): Observable<any>;
112
+ downloadDocumentBlob(request: DownloadDocumentRequest): Observable<Blob>;
69
113
  static ɵfac: i0.ɵɵFactoryDeclaration<EpistolaPluginService, never>;
70
114
  static ɵprov: i0.ɵɵInjectableDeclaration<EpistolaPluginService>;
71
115
  }
@@ -0,0 +1,29 @@
1
+ import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { EpistolaTaskContextService } from './epistola-task-context.service';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Sniffs Valtimo's task-open signal and pushes the active taskInstanceId into
7
+ * {@link EpistolaTaskContextService}. The signal is the canonical
8
+ * {@code GET /api/v2/process-link/task/{taskId}} call that
9
+ * {@code TaskDetailContentComponent.loadTaskDetails(...)} fires unconditionally
10
+ * before any task form is rendered (see @valtimo/task internals).
11
+ *
12
+ * <p>This interceptor does <b>not</b> modify the outgoing request. It only
13
+ * captures the taskId from the URL.
14
+ *
15
+ * <p>Workaround for Valtimo 13.21 not exposing taskInstanceId through any
16
+ * injectable service. Remove once upstream adds e.g.
17
+ * {@code FormIoStateService.setTaskInstanceId(...)}.
18
+ *
19
+ * <p>The actual URL-matching logic lives in
20
+ * {@link extractTaskInstanceIdFromUrl} so it can be unit-tested without an
21
+ * Angular harness.
22
+ */
23
+ export declare class EpistolaTaskContextInterceptor implements HttpInterceptor {
24
+ private readonly taskContext;
25
+ constructor(taskContext: EpistolaTaskContextService);
26
+ intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<EpistolaTaskContextInterceptor, never>;
28
+ static ɵprov: i0.ɵɵInjectableDeclaration<EpistolaTaskContextInterceptor>;
29
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Pure helpers for {@link EpistolaTaskContextInterceptor}, extracted so they
3
+ * can be unit-tested without pulling in {@code @angular/core} (which ts-jest
4
+ * cannot transform without {@code jest-preset-angular}).
5
+ */
6
+ /**
7
+ * Pattern Valtimo uses for the canonical task-open call:
8
+ * {@code GET /api/v2/process-link/task/{taskInstanceId}}.
9
+ *
10
+ * Captures the {@code taskInstanceId} (UUID v4-style 36-character hyphenated
11
+ * hex string). Anchored at the end of the URL or at a query-string delimiter
12
+ * so we don't accidentally match a longer trailing segment.
13
+ */
14
+ export declare const TASK_PROCESS_LINK_PATTERN: RegExp;
15
+ /**
16
+ * Returns the captured {@code taskInstanceId} from a Valtimo task-open
17
+ * request URL, or {@code null} if the request does not match.
18
+ */
19
+ export declare function extractTaskInstanceIdFromUrl(method: string, url: string): string | null;
@@ -0,0 +1,26 @@
1
+ import { Observable } from 'rxjs';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Holds the currently-open Operaton user task instance id so that custom
5
+ * Formio components rendered inside a Valtimo task form (preview, download,
6
+ * retry-form) can include it in backend requests for PBAC.
7
+ *
8
+ * Populated by {@link EpistolaTaskContextInterceptor}, which sniffs Valtimo's
9
+ * canonical "load process link for task" GET (`/api/v2/process-link/task/{taskId}`)
10
+ * — the request always fires when a task opens, before the form renders.
11
+ *
12
+ * <p><b>Why this exists:</b> Valtimo 13.21 does not expose the active task
13
+ * instance id through any service that custom Formio components can inject
14
+ * (`FormIoStateService` carries documentId and processInstanceId only;
15
+ * `TaskDetailContentComponent.taskInstanceId$` is private to that component
16
+ * and Formio elements live in their own injector tree). This service is a
17
+ * workaround until upstream exposes `taskInstanceId` via `FormIoStateService`.
18
+ */
19
+ export declare class EpistolaTaskContextService {
20
+ private readonly _taskInstanceId$;
21
+ readonly taskInstanceId$: Observable<string | null>;
22
+ get taskInstanceId(): string | null;
23
+ setTaskInstanceId(id: string | null): void;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<EpistolaTaskContextService, never>;
25
+ static ɵprov: i0.ɵɵInjectableDeclaration<EpistolaTaskContextService>;
26
+ }
@@ -1,3 +1,5 @@
1
1
  export * from './epistola-admin.service';
2
2
  export * from './epistola-menu.service';
3
3
  export * from './epistola-plugin.service';
4
+ export * from './epistola-task-context.service';
5
+ export * from './epistola-task-context.interceptor';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epistola.app/valtimo-plugin",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Epistola document generation plugin for Valtimo",
5
5
  "license": "EUPL-1.2",
6
6
  "repository": {
@@ -31,6 +31,8 @@
31
31
  "@valtimo/plugin": "^13.21.0",
32
32
  "@valtimo/process-link": "^13.21.0",
33
33
  "@valtimo/security": "^13.21.0",
34
- "@valtimo/shared": "^13.21.0"
34
+ "@valtimo/shared": "^13.21.0",
35
+ "jsonata": "^2.1.0",
36
+ "monaco-editor": ">=0.40.0"
35
37
  }
36
38
  }
package/public_api.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from './lib/models';
2
2
  export * from './lib/services';
3
3
  export * from './lib/epistola.module';
4
4
  export * from './lib/epistola.specification';
5
+ export * from './lib/epistola-runtime-config';
5
6
  export * from './lib/epistola-admin-routing.module';
6
7
  export * from './lib/components/epistola-admin-page/epistola-admin-page.component';
7
8
  export * from './lib/components/epistola-configuration/epistola-configuration.component';
@@ -10,11 +11,13 @@ export * from './lib/components/check-job-status-configuration/check-job-status-
10
11
  export * from './lib/components/download-document-configuration/download-document-configuration.component';
11
12
  export * from './lib/components/jsonata-editor/jsonata-editor.component';
12
13
  export * from './lib/components/mapping-builder/mapping-builder.component';
13
- export * from './lib/components/epistola-download/epistola-download.component';
14
- export * from './lib/components/epistola-download/epistola-download.formio';
14
+ export * from './lib/components/epistola-document/epistola-document.component';
15
+ export * from './lib/components/epistola-document/epistola-document.formio';
15
16
  export * from './lib/components/epistola-retry-form/epistola-retry-form.component';
16
17
  export * from './lib/components/epistola-retry-form/epistola-retry-form.formio';
17
- export * from './lib/components/epistola-preview-button/epistola-preview-button.component';
18
- export * from './lib/components/epistola-preview-button/epistola-preview-button.formio';
19
18
  export * from './lib/components/epistola-document-preview/epistola-document-preview.component';
20
19
  export * from './lib/components/epistola-document-preview/epistola-document-preview.formio';
20
+ export * from './lib/components/override-builder/override-builder.component';
21
+ export * from './lib/components/override-builder/override-builder.formio';
22
+ export * from './lib/components/process-link-selector/process-link-selector.component';
23
+ export * from './lib/components/process-link-selector/process-link-selector.formio';
package/sbom.json ADDED
@@ -0,0 +1 @@
1
+ {"bomFormat":"CycloneDX","specVersion":"1.6","serialNumber":"urn:uuid:2c2aa3ae-f71d-4fce-a95b-884659127c41","version":1,"metadata":{"timestamp":"2026-05-08T19:01:24Z","tools":{"components":[{"group":"@cyclonedx","name":"cdxgen","version":"11.4.0","purl":"pkg:npm/%40cyclonedx/cdxgen@11.4.0","type":"application","bom-ref":"pkg:npm/@cyclonedx/cdxgen@11.4.0","publisher":"OWASP Foundation","authors":[{"name":"OWASP Foundation"}]}]},"authors":[{"name":"OWASP Foundation"}],"lifecycles":[{"phase":"build"}],"component":{"name":"valtimo-plugin","group":"@epistola.app","version":"1.0.0","description":"Epistola document generation plugin for Valtimo","purl":"pkg:npm/%40epistola.app/valtimo-plugin@1.0.0","bom-ref":"pkg:npm/@epistola.app/valtimo-plugin@1.0.0","type":"application","licenses":[{"license":{"id":"EUPL-1.2","url":"https://opensource.org/licenses/EUPL-1.2"}}],"externalReferences":[{"type":"vcs","url":"https://github.com/epistola-app/valtimo-epistola-plugin"}]},"properties":[{"name":"cdx:bom:componentTypes","value":"npm"},{"name":"cdx:bom:componentNamespaces","value":"@angular\\n@types\\n@valtimo"},{"name":"cdx:bom:componentSrcFiles","value":"frontend/plugin/node_modules/@angular/common/package.json\\nfrontend/plugin/node_modules/@angular/core/package.json\\nfrontend/plugin/node_modules/@angular/forms/package.json\\nfrontend/plugin/node_modules/@angular/router/package.json\\nfrontend/plugin/node_modules/@types/jest/package.json\\nfrontend/plugin/node_modules/@valtimo/components/package.json\\nfrontend/plugin/node_modules/@valtimo/plugin/package.json\\nfrontend/plugin/node_modules/@valtimo/process-link/package.json\\nfrontend/plugin/node_modules/@valtimo/security/package.json\\nfrontend/plugin/node_modules/@valtimo/shared/package.json\\nfrontend/plugin/node_modules/jest/package.json\\nfrontend/plugin/node_modules/jsonata/package.json\\nfrontend/plugin/node_modules/monaco-editor/package.json\\nfrontend/plugin/node_modules/ng-packagr/package.json\\nfrontend/plugin/node_modules/ts-jest/package.json\\nfrontend/plugin/node_modules/tslib/package.json"}]},"components":[{"authors":[{"name":"Microsoft Corp."}],"group":"","name":"tslib","version":"2.8.1","description":"Runtime library for TypeScript helper functions","scope":"optional","licenses":[{"license":{"id":"0BSD","url":"https://opensource.org/licenses/0BSD"}}],"purl":"pkg:npm/tslib@2.8.1","externalReferences":[{"type":"website","url":"https://www.typescriptlang.org/"},{"type":"vcs","url":"https://github.com/Microsoft/tslib.git"}],"type":"library","bom-ref":"pkg:npm/tslib@2.8.1","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/tslib/package.json"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/tslib/package.json"}],"concludedValue":"frontend/plugin/node_modules/tslib/package.json"}]}},{"authors":[{"name":"Kulshekhar Kabra <kulshekhar@users.noreply.github.com> (https://github.com/kulshekhar)"}],"group":"","name":"ts-jest","version":"29.4.9","description":"A Jest transformer with source map support that lets you use Jest to test projects written in TypeScript","scope":"optional","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/ts-jest@29.4.9","externalReferences":[{"type":"vcs","url":"https://kulshekhar.github.io/ts-jest"},{"type":"vcs","url":"git+https://github.com/kulshekhar/ts-jest.git"}],"type":"library","bom-ref":"pkg:npm/ts-jest@29.4.9","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/ts-jest/package.json"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/ts-jest/package.json"}],"concludedValue":"frontend/plugin/node_modules/ts-jest/package.json"}]},"tags":["test"]},{"authors":[{"name":"David Herges <david@spektrakel.de>"}],"group":"","name":"ng-packagr","version":"19.2.2","description":"Compile and package Angular libraries in Angular Package Format (APF)","scope":"optional","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/ng-packagr@19.2.2","externalReferences":[{"type":"vcs","url":"https://github.com/ng-packagr/ng-packagr"},{"type":"vcs","url":"https://github.com/ng-packagr/ng-packagr.git"}],"type":"library","bom-ref":"pkg:npm/ng-packagr@19.2.2","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/ng-packagr/package.json"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/ng-packagr/package.json"}],"concludedValue":"frontend/plugin/node_modules/ng-packagr/package.json"}]}},{"authors":[{"name":"Microsoft Corporation"}],"group":"","name":"monaco-editor","version":"0.50.0","description":"A browser based code editor","scope":"optional","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/monaco-editor@0.50.0","externalReferences":[{"type":"vcs","url":"https://github.com/microsoft/monaco-editor"},{"type":"vcs","url":"https://github.com/microsoft/monaco-editor"}],"type":"library","bom-ref":"pkg:npm/monaco-editor@0.50.0","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/monaco-editor/package.json"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/monaco-editor/package.json"}],"concludedValue":"frontend/plugin/node_modules/monaco-editor/package.json"}]}},{"group":"","name":"jsonata","version":"2.1.0","description":"JSON query and transformation language","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/jsonata@2.1.0","externalReferences":[{"type":"website","url":"http://jsonata.org/"},{"type":"vcs","url":"https://github.com/jsonata-js/jsonata.git"}],"type":"library","bom-ref":"pkg:npm/jsonata@2.1.0","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/jsonata/package.json"},{"name":"ImportedModules","value":"jsonata"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/jsonata/package.json"}],"concludedValue":"frontend/plugin/node_modules/jsonata/package.json"}],"occurrences":[{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#17"},{"location":"src/lib/components/jsonata-editor/jsonata-editor.component.ts#17"},{"location":"src/lib/utils/jsonata-converter.ts#1"}]}},{"group":"","name":"jest","version":"30.3.0","description":"Delightful JavaScript Testing.","scope":"optional","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/jest@30.3.0","externalReferences":[{"type":"website","url":"https://jestjs.io/"},{"type":"vcs","url":"https://github.com/jestjs/jest.git"}],"type":"library","bom-ref":"pkg:npm/jest@30.3.0","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/jest/package.json"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/jest/package.json"}],"concludedValue":"frontend/plugin/node_modules/jest/package.json"}]},"tags":["test"]},{"group":"@valtimo","name":"shared","version":"13.21.0","scope":"required","licenses":[{"license":{"id":"EUPL-1.2","url":"https://opensource.org/licenses/EUPL-1.2"}}],"purl":"pkg:npm/%40valtimo/shared@13.21.0","type":"library","bom-ref":"pkg:npm/@valtimo/shared@13.21.0","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/@valtimo/shared/package.json"},{"name":"ImportedModules","value":"@valtimo/shared,ROLE_ADMIN,@valtimo/shared/ROLE_ADMIN,CaseManagementParams,@valtimo/shared/CaseManagementParams,ManagementContext,@valtimo/shared/ManagementContext,ConfigService,@valtimo/shared/ConfigService,MenuItem,@valtimo/shared/MenuItem"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/@valtimo/shared/package.json"}],"concludedValue":"frontend/plugin/node_modules/@valtimo/shared/package.json"}],"occurrences":[{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#5"},{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#6"},{"location":"src/lib/components/generate-document-configuration/generate-document-configuration.component.ts#19"},{"location":"src/lib/services/epistola-admin.service.ts#3"},{"location":"src/lib/services/epistola-menu.service.ts#3"},{"location":"src/lib/services/epistola-plugin.service.ts#3"}]}},{"group":"@valtimo","name":"security","version":"13.21.0","scope":"required","licenses":[{"license":{"id":"EUPL-1.2","url":"https://opensource.org/licenses/EUPL-1.2"}}],"purl":"pkg:npm/%40valtimo/security@13.21.0","type":"library","bom-ref":"pkg:npm/@valtimo/security@13.21.0","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/@valtimo/security/package.json"},{"name":"ImportedModules","value":"@valtimo/security,AuthGuardService,@valtimo/security/AuthGuardService"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/@valtimo/security/package.json"}],"concludedValue":"frontend/plugin/node_modules/@valtimo/security/package.json"}],"occurrences":[{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#28"},{"location":"src/lib/epistola-admin-routing.module.ts#3"}]}},{"group":"@valtimo","name":"process-link","version":"13.21.0","scope":"required","licenses":[{"license":{"id":"EUPL-1.2","url":"https://opensource.org/licenses/EUPL-1.2"}}],"purl":"pkg:npm/%40valtimo/process-link@13.21.0","type":"library","bom-ref":"pkg:npm/@valtimo/process-link@13.21.0","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/@valtimo/process-link/package.json"},{"name":"ImportedModules","value":"@valtimo/process-link,ProcessLinkStateService,@valtimo/process-link/ProcessLinkStateService"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/@valtimo/process-link/package.json"}],"concludedValue":"frontend/plugin/node_modules/@valtimo/process-link/package.json"}],"occurrences":[{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#18"},{"location":"src/lib/components/generate-document-configuration/generate-document-configuration.component.ts#20"}]}},{"group":"@valtimo","name":"plugin","version":"13.21.0","scope":"required","licenses":[{"license":{"id":"EUPL-1.2","url":"https://opensource.org/licenses/EUPL-1.2"}}],"purl":"pkg:npm/%40valtimo/plugin@13.21.0","type":"library","bom-ref":"pkg:npm/@valtimo/plugin@13.21.0","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/@valtimo/plugin/package.json"},{"name":"ImportedModules","value":"@valtimo/plugin,PluginTranslatePipeModule,@valtimo/plugin/PluginTranslatePipeModule,FunctionConfigurationComponent,@valtimo/plugin/FunctionConfigurationComponent,PluginConfigurationComponent,@valtimo/plugin/PluginConfigurationComponent,PluginConfigurationData,@valtimo/plugin/PluginConfigurationData,PluginSpecification,@valtimo/plugin/PluginSpecification"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/@valtimo/plugin/package.json"}],"concludedValue":"frontend/plugin/node_modules/@valtimo/plugin/package.json"}],"occurrences":[{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#12"},{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#13"},{"location":"src/lib/components/check-job-status-configuration/check-job-status-configuration.component.ts#3"},{"location":"src/lib/components/download-document-configuration/download-document-configuration.component.ts#3"},{"location":"src/lib/components/epistola-admin-page/epistola-admin-page.component.ts#4"},{"location":"src/lib/components/epistola-configuration/epistola-configuration.component.ts#3"},{"location":"src/lib/components/expected-structure/expected-structure.component.ts#3"},{"location":"src/lib/components/generate-document-configuration/generate-document-configuration.component.ts#17"},{"location":"src/lib/components/jsonata-editor/jsonata-editor.component.ts#11"},{"location":"src/lib/components/mapping-builder/mapping-builder.component.ts#4"},{"location":"src/lib/components/mapping-preview/mapping-preview.component.ts#12"},{"location":"src/lib/epistola.module.ts#10"},{"location":"src/lib/epistola.specification.ts#1"}]}},{"group":"@valtimo","name":"components","version":"13.21.0","scope":"required","licenses":[{"license":{"id":"EUPL-1.2","url":"https://opensource.org/licenses/EUPL-1.2"}}],"purl":"pkg:npm/%40valtimo/components@13.21.0","type":"library","bom-ref":"pkg:npm/@valtimo/components@13.21.0","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/@valtimo/components/package.json"},{"name":"ImportedModules","value":"@valtimo/components,FormModule,@valtimo/components/FormModule,InputModule,@valtimo/components/InputModule,EditorModule,@valtimo/components/EditorModule,SelectModule,@valtimo/components/SelectModule,registerCustomFormioComponent,@valtimo/components/registerCustomFormioComponent,FormOutput,@valtimo/components/FormOutput,FormioCustomComponent,@valtimo/components/FormioCustomComponent,FormIoStateService,@valtimo/components/FormIoStateService,FormioCustomComponentInfo,@valtimo/components/FormioCustomComponentInfo,SelectItem,@valtimo/components/SelectItem,MenuService,@valtimo/components/MenuService"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/@valtimo/components/package.json"}],"concludedValue":"frontend/plugin/node_modules/@valtimo/components/package.json"}],"occurrences":[{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#8"},{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#9"},{"location":"src/lib/components/check-job-status-configuration/check-job-status-configuration.component.ts#4"},{"location":"src/lib/components/download-document-configuration/download-document-configuration.component.ts#4"},{"location":"src/lib/components/epistola-configuration/epistola-configuration.component.ts#4"},{"location":"src/lib/components/epistola-document/epistola-document.component.ts#13"},{"location":"src/lib/components/epistola-document/epistola-document.formio.ts#2"},{"location":"src/lib/components/epistola-document-preview/epistola-document-preview.component.ts#14"},{"location":"src/lib/components/epistola-document-preview/epistola-document-preview.formio.ts#2"},{"location":"src/lib/components/epistola-retry-form/epistola-retry-form.component.ts#14"},{"location":"src/lib/components/epistola-retry-form/epistola-retry-form.formio.ts#2"},{"location":"src/lib/components/generate-document-configuration/generate-document-configuration.component.ts#18"},{"location":"src/lib/components/jsonata-editor/jsonata-editor.component.ts#12"},{"location":"src/lib/components/override-builder/override-builder.component.ts#11"},{"location":"src/lib/components/override-builder/override-builder.formio.ts#2"},{"location":"src/lib/components/process-link-selector/process-link-selector.component.ts#14"},{"location":"src/lib/components/process-link-selector/process-link-selector.formio.ts#2"},{"location":"src/lib/epistola.module.ts#11"},{"location":"src/lib/services/epistola-menu.service.ts#2"}]}},{"group":"@types","name":"jest","version":"30.0.0","description":"TypeScript definitions for jest","scope":"optional","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40types/jest@30.0.0","externalReferences":[{"type":"vcs","url":"https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jest"},{"type":"vcs","url":"https://github.com/DefinitelyTyped/DefinitelyTyped.git"}],"type":"library","bom-ref":"pkg:npm/@types/jest@30.0.0","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/@types/jest/package.json"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/@types/jest/package.json"}],"concludedValue":"frontend/plugin/node_modules/@types/jest/package.json"}]},"tags":["test"]},{"authors":[{"name":"angular"}],"group":"@angular","name":"router","version":"19.2.20","description":"Angular - the routing library","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40angular/router@19.2.20","externalReferences":[{"type":"vcs","url":"https://github.com/angular/angular/tree/main/packages/router"},{"type":"vcs","url":"git+https://github.com/angular/angular.git"}],"type":"framework","bom-ref":"pkg:npm/@angular/router@19.2.20","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/@angular/router/package.json"},{"name":"ImportedModules","value":"@angular/router,RouterModule,@angular/router/RouterModule,Router,@angular/router/Router,ActivatedRoute,@angular/router/ActivatedRoute,Routes,@angular/router/Routes,CanActivateFn,@angular/router/CanActivateFn"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/@angular/router/package.json"}],"concludedValue":"frontend/plugin/node_modules/@angular/router/package.json"}],"occurrences":[{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#22"},{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#23"},{"location":"src/lib/components/epistola-admin-page/epistola-admin-page.component.ts#3"},{"location":"src/lib/epistola-admin-routing.module.ts#2"},{"location":"src/lib/epistola-enabled.guard.ts#2"}]},"tags":["framework"]},{"authors":[{"name":"angular"}],"group":"@angular","name":"forms","version":"19.2.20","description":"Angular - directives and services for creating forms","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40angular/forms@19.2.20","externalReferences":[{"type":"vcs","url":"https://github.com/angular/angular.git"}],"type":"framework","bom-ref":"pkg:npm/@angular/forms@19.2.20","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/@angular/forms/package.json"},{"name":"ImportedModules","value":"@angular/forms,FormsModule,@angular/forms/FormsModule"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/@angular/forms/package.json"}],"concludedValue":"frontend/plugin/node_modules/@angular/forms/package.json"}],"occurrences":[{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#15"},{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#16"},{"location":"src/lib/components/generate-document-configuration/generate-document-configuration.component.ts#12"},{"location":"src/lib/components/mapping-builder/builder-field/builder-field.component.ts#3"},{"location":"src/lib/components/mapping-builder/mapping-builder.component.ts#3"},{"location":"src/lib/components/mapping-preview/mapping-preview.component.ts#11"},{"location":"src/lib/components/override-builder/override-builder.component.ts#10"},{"location":"src/lib/components/process-link-selector/process-link-selector.component.ts#13"}]},"tags":["framework"]},{"authors":[{"name":"angular"}],"group":"@angular","name":"core","version":"19.2.20","description":"Angular - the core framework","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40angular/core@19.2.20","externalReferences":[{"type":"vcs","url":"https://github.com/angular/angular.git"}],"type":"framework","bom-ref":"pkg:npm/@angular/core@19.2.20","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/@angular/core/package.json"},{"name":"ImportedModules","value":"@angular/core,Injectable,@angular/core/Injectable,EventEmitter,@angular/core/EventEmitter,Output,@angular/core/Output,Input,@angular/core/Input,Component,@angular/core/Component,ChangeDetectionStrategy,@angular/core/ChangeDetectionStrategy,inject,@angular/core/inject,NgModule,@angular/core/NgModule,ENVIRONMENT_INITIALIZER,@angular/core/ENVIRONMENT_INITIALIZER,Injector,@angular/core/Injector,OnDestroy,@angular/core/OnDestroy,OnInit,@angular/core/OnInit,ChangeDetectorRef,@angular/core/ChangeDetectorRef,OnChanges,@angular/core/OnChanges,SimpleChanges,@angular/core/SimpleChanges,ModuleWithProviders,@angular/core/ModuleWithProviders"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/@angular/core/package.json"}],"concludedValue":"frontend/plugin/node_modules/@angular/core/package.json"}],"occurrences":[{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#1"},{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#2"},{"location":"src/lib/components/check-job-status-configuration/check-job-status-configuration.component.ts#1"},{"location":"src/lib/components/download-document-configuration/download-document-configuration.component.ts#1"},{"location":"src/lib/components/epistola-admin-page/epistola-admin-page.component.ts#1"},{"location":"src/lib/components/epistola-configuration/epistola-configuration.component.ts#1"},{"location":"src/lib/components/epistola-document/epistola-document.component.ts#10"},{"location":"src/lib/components/epistola-document/epistola-document.formio.ts#1"},{"location":"src/lib/components/epistola-document-preview/epistola-document-preview.component.ts#11"},{"location":"src/lib/components/epistola-document-preview/epistola-document-preview.formio.ts#1"},{"location":"src/lib/components/epistola-retry-form/epistola-retry-form.component.ts#11"},{"location":"src/lib/components/epistola-retry-form/epistola-retry-form.formio.ts#1"},{"location":"src/lib/components/expected-structure/expected-structure.component.ts#1"},{"location":"src/lib/components/generate-document-configuration/generate-document-configuration.component.ts#10"},{"location":"src/lib/components/jsonata-editor/jsonata-editor.component.ts#9"},{"location":"src/lib/components/mapping-builder/builder-field/builder-field.component.ts#1"},{"location":"src/lib/components/mapping-builder/mapping-builder.component.ts#1"},{"location":"src/lib/components/mapping-preview/mapping-preview.component.ts#9"},{"location":"src/lib/components/override-builder/override-builder.component.ts#8"},{"location":"src/lib/components/override-builder/override-builder.formio.ts#1"},{"location":"src/lib/components/process-link-selector/process-link-selector.component.ts#11"},{"location":"src/lib/components/process-link-selector/process-link-selector.formio.ts#1"},{"location":"src/lib/epistola-admin-routing.module.ts#1"},{"location":"src/lib/epistola-enabled.guard.ts#1"},{"location":"src/lib/epistola.module.ts#7"},{"location":"src/lib/services/epistola-admin.service.ts#1"},{"location":"src/lib/services/epistola-menu.service.ts#1"},{"location":"src/lib/services/epistola-plugin.service.ts#1"},{"location":"src/lib/services/epistola-task-context.interceptor.ts#1"},{"location":"src/lib/services/epistola-task-context.service.ts#1"}]},"tags":["framework"]},{"authors":[{"name":"angular"}],"group":"@angular","name":"common","version":"19.2.20","description":"Angular - commonly needed directives and services","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40angular/common@19.2.20","externalReferences":[{"type":"vcs","url":"https://github.com/angular/angular.git"}],"type":"framework","bom-ref":"pkg:npm/@angular/common@19.2.20","properties":[{"name":"SrcFile","value":"frontend/plugin/node_modules/@angular/common/package.json"},{"name":"ImportedModules","value":"@angular/common/http,HttpHeaders,@angular/common/http/HttpHeaders,HTTP_INTERCEPTORS,@angular/common/http/HTTP_INTERCEPTORS,HttpClientModule,@angular/common/http/HttpClientModule,HttpClient,@angular/common/http/HttpClient,HttpEvent,@angular/common/http/HttpEvent,HttpHandler,@angular/common/http/HttpHandler,HttpInterceptor,@angular/common/http/HttpInterceptor,HttpRequest,@angular/common/http/HttpRequest,@angular/common,CommonModule,@angular/common/CommonModule"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"frontend/plugin/node_modules/@angular/common/package.json"}],"concludedValue":"frontend/plugin/node_modules/@angular/common/package.json"}],"occurrences":[{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#3"},{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#4"},{"location":"src/lib/epistola.module.ts#9"},{"location":"src/lib/services/epistola-admin.service.ts#2"},{"location":"src/lib/services/epistola-plugin.service.ts#2"},{"location":"src/lib/services/epistola-task-context.interceptor.ts#2"},{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#10"},{"location":"dist/fesm2022/epistola.app-valtimo-plugin.mjs#11"},{"location":"src/lib/components/check-job-status-configuration/check-job-status-configuration.component.ts#2"},{"location":"src/lib/components/download-document-configuration/download-document-configuration.component.ts#2"},{"location":"src/lib/components/epistola-admin-page/epistola-admin-page.component.ts#2"},{"location":"src/lib/components/epistola-configuration/epistola-configuration.component.ts#2"},{"location":"src/lib/components/epistola-document/epistola-document.component.ts#11"},{"location":"src/lib/components/epistola-document-preview/epistola-document-preview.component.ts#12"},{"location":"src/lib/components/epistola-retry-form/epistola-retry-form.component.ts#12"},{"location":"src/lib/components/expected-structure/expected-structure.component.ts#2"},{"location":"src/lib/components/generate-document-configuration/generate-document-configuration.component.ts#11"},{"location":"src/lib/components/jsonata-editor/jsonata-editor.component.ts#10"},{"location":"src/lib/components/mapping-builder/builder-field/builder-field.component.ts#2"},{"location":"src/lib/components/mapping-builder/mapping-builder.component.ts#2"},{"location":"src/lib/components/mapping-preview/mapping-preview.component.ts#10"},{"location":"src/lib/components/override-builder/override-builder.component.ts#9"},{"location":"src/lib/components/process-link-selector/process-link-selector.component.ts#12"},{"location":"src/lib/epistola.module.ts#8"}]},"tags":["framework"]}],"dependencies":[],"annotations":[{"bom-ref":"metadata-annotations","subjects":["pkg:npm/@epistola.app/valtimo-plugin@1.0.0"],"annotator":{"component":{"group":"@cyclonedx","name":"cdxgen","version":"11.4.0","purl":"pkg:npm/%40cyclonedx/cdxgen@11.4.0","type":"application","bom-ref":"pkg:npm/@cyclonedx/cdxgen@11.4.0","publisher":"OWASP Foundation","authors":[{"name":"OWASP Foundation"}]}},"timestamp":"2026-05-08T19:01:24Z","text":"This Software Bill-of-Materials (SBOM) document was created on Friday, May 8, 2026 with cdxgen. The data was captured during the build lifecycle phase. The document describes an application named 'valtimo-plugin' with version '1.0.0'. There are 16 components. The package type in this SBOM is npm with 3 purl namespaces described under components. The components were identified from 16 source files."}]}
@@ -1,24 +0,0 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { HttpClient } from '@angular/common/http';
3
- import { FormioCustomComponent } from '@valtimo/components';
4
- import * as i0 from "@angular/core";
5
- export interface DownloadData {
6
- documentId: string;
7
- tenantId: string;
8
- }
9
- export declare class EpistolaDownloadComponent implements FormioCustomComponent<DownloadData> {
10
- private readonly http;
11
- value: DownloadData;
12
- valueChange: EventEmitter<DownloadData>;
13
- disabled: boolean;
14
- filename: string;
15
- label: string;
16
- downloading: boolean;
17
- error: string | null;
18
- get buttonLabel(): string;
19
- constructor(http: HttpClient);
20
- hasRequiredData(): boolean;
21
- download(): void;
22
- static ɵfac: i0.ɵɵFactoryDeclaration<EpistolaDownloadComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<EpistolaDownloadComponent, "epistola-download-component", never, { "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "filename": { "alias": "filename"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
24
- }
@@ -1,35 +0,0 @@
1
- import { EventEmitter, OnDestroy } from '@angular/core';
2
- import { HttpClient } from '@angular/common/http';
3
- import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
4
- import { FormioCustomComponent } from '@valtimo/components';
5
- import { ConfigService } from '@valtimo/shared';
6
- import * as i0 from "@angular/core";
7
- export interface PreviewButtonData {
8
- documentId: string;
9
- tenantId: string;
10
- }
11
- export declare class EpistolaPreviewButtonComponent implements FormioCustomComponent<PreviewButtonData>, OnDestroy {
12
- private readonly http;
13
- private readonly sanitizer;
14
- private readonly configService;
15
- value: PreviewButtonData;
16
- valueChange: EventEmitter<PreviewButtonData>;
17
- disabled: boolean;
18
- label: string;
19
- modalOpen: boolean;
20
- loading: boolean;
21
- previewLoading: boolean;
22
- previewError: string | null;
23
- previewUrl: SafeResourceUrl | null;
24
- private currentBlobUrl;
25
- private readonly apiEndpoint;
26
- get buttonLabel(): string;
27
- constructor(http: HttpClient, sanitizer: DomSanitizer, configService: ConfigService);
28
- ngOnDestroy(): void;
29
- hasRequiredData(): boolean;
30
- openPreview(): void;
31
- closePreview(): void;
32
- private revokeBlobUrl;
33
- static ɵfac: i0.ɵɵFactoryDeclaration<EpistolaPreviewButtonComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<EpistolaPreviewButtonComponent, "epistola-preview-button-component", never, { "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
35
- }
@@ -1,4 +0,0 @@
1
- import { Injector } from '@angular/core';
2
- import { FormioCustomComponentInfo } from '@valtimo/components';
3
- export declare const EPISTOLA_PREVIEW_BUTTON_OPTIONS: FormioCustomComponentInfo;
4
- export declare function registerEpistolaPreviewButtonComponent(injector: Injector): void;