{"version":3,"file":"valtimo-resource.mjs","sources":["../../../../projects/valtimo/resource/src/lib/models/upload.model.ts","../../../../projects/valtimo/resource/src/lib/models/uploader.model.ts","../../../../projects/valtimo/resource/src/lib/models/open-zaak.model.ts","../../../../projects/valtimo/resource/src/lib/models/index.ts","../../../../projects/valtimo/resource/src/lib/services/open-zaak.service.ts","../../../../projects/valtimo/resource/src/lib/services/open-zaak-upload.service.ts","../../../../projects/valtimo/resource/src/lib/services/s3.service.ts","../../../../projects/valtimo/resource/src/lib/services/s3-upload.service.ts","../../../../projects/valtimo/resource/src/lib/services/upload-provider.service.ts","../../../../projects/valtimo/resource/src/lib/services/download.service.ts","../../../../projects/valtimo/resource/src/lib/resource.module.ts","../../../../projects/valtimo/resource/src/lib/resource-permissions.ts","../../../../projects/valtimo/resource/src/public-api.ts","../../../../projects/valtimo/resource/src/valtimo-resource.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Observable} from 'rxjs';\nimport {ResourceDto, ResourceReference} from './uploader.model';\n\ninterface ResourceFile {\n  customUpload?: boolean;\n  originalName: string;\n  size: number;\n  storage: string;\n  type?: string;\n  isLast?: boolean;\n  url?: string;\n  data: {\n    baseUrl?: string;\n    bucketName?: string;\n    createdOn: string;\n    extension?: string;\n    form?: string;\n    key?: string;\n    name: string;\n    project?: string;\n    resourceId: string;\n    sizeInBytes: number;\n  };\n}\n\ninterface UploadService {\n  uploadFile(file: File, caseDefinitionKey?: string, documentId?: string): Observable<ResourceFile>;\n  getResource(resourceId: string): Observable<ResourceDto>;\n  getResources(documentId: string): Observable<Array<ResourceReference>>;\n  checkUploadProcessLink?(caseDefinitionKey: string): Observable<boolean>;\n  uploadFileWithMetadata?(\n    file: File,\n    documentId: string,\n    metadata: {[key: string]: any}\n  ): Observable<void>;\n  uploadTempFileWithMetadata?(\n    file: File,\n    metadata: {[key: string]: any}\n  ): Observable<DocumentenApiFileReference>;\n}\n\ninterface DocumentenApiFileReference {\n  filename: string;\n  sizeInBytes: number;\n  id: string;\n}\n\nexport {ResourceFile, UploadService, DocumentenApiFileReference};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ResourceDto {\n  url: string;\n  resource: Resource;\n  originalName?: string;\n}\n\nexport interface Resource {\n  id?: string;\n  key: string;\n  name: string;\n  sizeInBytes: number;\n  extension?: string;\n  createdOn?: Date;\n}\n\nexport interface ResourceReference {\n  filename: string;\n  id: string;\n}\n\nexport class S3Resource implements Resource {\n  id?: string = null;\n  key: string;\n  name: string;\n  sizeInBytes: number;\n  extension?: string = null;\n  createdOn?: Date = null;\n  documentId?: string;\n\n  constructor(file: File, preSignedUrl: URL, documentId?: string) {\n    // Extract key from URL pathname\n    // Path-style URL: /bucket-name/key -> extract key after bucket\n    // Virtual-hosted URL: /key -> extract key directly\n    const pathParts = preSignedUrl.pathname.substring(1).split('/');\n    // If path has multiple segments, first is bucket name (path-style), rest is key\n    // If path has single segment, it's the key directly (virtual-hosted)\n    const key = pathParts.length > 1 ? pathParts.slice(1).join('/') : pathParts[0];\n    this.key = decodeURIComponent(key);\n    this.name = file.name;\n    this.sizeInBytes = file.size;\n    if (!documentId) {\n      return;\n    }\n    this.documentId = documentId;\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ZaakType {\n  url: string;\n  omschrijving: string;\n  omschrijvingGeneriek?: string;\n  beginGeldigheid?: string;\n  eindeGeldigheid?: string;\n}\n\nexport interface InformatieObjectType {\n  url: string;\n  omschrijving: string;\n}\n\nexport interface ZaakTypeLink {\n  id: string;\n  documentDefinitionName: string;\n  zaakTypeUrl: string;\n  zaakInstanceLinks: ZaakInstanceLink[];\n  createWithDossier: boolean;\n  zakenApiPluginConfigurationId: string;\n  rsin: string;\n}\n\nexport interface ZaakTypeRequest {\n  zaaktype: string;\n}\n\nexport interface CreateZaakTypeLinkRequest {\n  caseDefinitionKey: string;\n  caseVersionTag: string;\n  zaakTypeUrl?: string;\n  createWithDossier: boolean;\n  zakenApiPluginConfigurationId?: string;\n  rsin?: string;\n}\n\nexport interface CreateInformatieObjectTypeLinkRequest {\n  documentDefinitionName: string;\n  zaakType: string;\n  informatieObjectType: string;\n}\n\nexport interface ZaakInstanceLink {\n  zaakInstanceUrl: string;\n  zaakInstanceId: string;\n  documentId: string;\n}\n\nexport interface PreviousSelectedZaak {\n  zaakTypeLink: ZaakTypeLink;\n  zaakType: ZaakType;\n}\n\nexport interface ZaakOperation {\n  type: string;\n  label: string;\n}\n\nexport interface ZaakStatusType {\n  url?: string;\n  omschrijving: string;\n  omschrijvingGeneriek?: string;\n  statustekst?: string;\n  zaakType: string;\n  volgnummer: number;\n  isEindStatus?: boolean;\n  informeren?: boolean;\n}\n\nexport interface ZaakResultType {\n  url?: string;\n  zaaktype: string;\n  omschrijving: string;\n  resultaattypeomschrijving: string;\n  omschrijvingGeneriek?: string;\n  selectielijstklasse: string;\n  toelichting?: string;\n  archiefnominatie?: Archiefnominatie;\n  archiefactietermijn?: string;\n  brondatumArchiefprocedure?: BrondatumArchiefprocedure;\n}\n\nexport interface ZaakBesluitType {\n  url?: string;\n  omschrijving: string;\n}\n\nexport interface BrondatumArchiefprocedure {\n  afleidingswijze: Afleidingswijze;\n  datumkenmerk?: string;\n  einddatumBekend?: boolean;\n  objecttype?: Objecttype;\n  registratie?: string;\n  procestermijn?: string;\n}\n\nexport enum Archiefnominatie {\n  blijvend_bewaren = 'blijven_bewaren',\n  vernietigen = 'vernietigen',\n}\n\nexport enum Afleidingswijze {\n  afgehandeld = 'afgehandeld',\n  ander_datumkenmerk = 'ander_datumkenmerk',\n  eigenschap = 'eigenschap',\n  gerelateerde_zaak = 'gerelateerde_zaak',\n  hoofdzaak = 'hoofdzaak',\n  ingangsdatum_besluit = 'ingangsdatum_besluit',\n  termijn = 'termijn',\n  vervaldatum_besluit = 'vervaldatum_besluit',\n  zaakobject = 'zaakobject',\n}\n\nexport enum Objecttype {\n  adres = 'adres',\n  besluit = 'besluit',\n  buurt = 'buurt',\n  enkelvoudig_document = 'enkelvoudig_document',\n  gemeente = 'gemeente',\n  gemeentelijke_openbare_ruimte = 'gemeentelijke_openbare_ruimte',\n  huishouden = 'huishouden',\n  inrichtingselement = 'inrichtingselement',\n  kadastrale_onroerende_zaak = 'kadastrale_onroerende_zaak',\n  kunstwerkdeel = 'kunstwerkdeel',\n  maatschappelijke_activiteit = 'maatschappelijke_activiteit',\n  medewerker = 'medewerker',\n  natuurlijk_persoon = 'natuurlijk_persoon',\n  niet_natuurlijk_persoon = 'niet_natuurlijk_persoon',\n  openbare_ruimte = 'openbare_ruimte',\n  organisatorische_eenheid = 'organisatorische_eenheid',\n  pand = 'pand',\n  spoorbaandeel = 'spoorbaandeel',\n  status = 'status',\n  terreindeel = 'terreindeel',\n  terrein_gebouwd_object = 'terrein_gebouwd_object',\n  vestiging = 'vestiging',\n  waterdeel = 'waterdeel',\n  wegdeel = 'wegdeel',\n  wijk = 'wijk',\n  woonplaats = 'woonplaats',\n  woz_deelobject = 'woz_deelobject',\n  woz_object = 'woz_object',\n  woz_waarde = 'woz_waarde',\n  zakelijk_recht = 'zakelijk_recht',\n  overige = 'overige',\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './upload.model';\nexport * from './uploader.model';\nexport * from './open-zaak.model';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {ConfigService, InterceptorSkip, Page} from '@valtimo/shared';\nimport {catchError, map, Observable, of, switchMap, throwError} from 'rxjs';\nimport {\n  CreateZaakTypeLinkRequest,\n  DocumentenApiFileReference,\n  ResourceDto,\n  ResourceReference,\n  ZaakType,\n  ZaakTypeLink,\n} from '../models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class OpenZaakService {\n  private valtimoApiConfig: any;\n\n  constructor(\n    private http: HttpClient,\n    private configService: ConfigService\n  ) {\n    this.valtimoApiConfig = this.configService.config.valtimoApi;\n  }\n\n  public getResource(resourceId: string): Observable<ResourceDto> {\n    return this.getResourceMetadata(resourceId, 'downloadUrl').pipe(\n      switchMap(downloadUrl => {\n        if (!downloadUrl) {\n          return throwError(() => new Error(`No download URL found for resource ${resourceId}`));\n        }\n        return of({\n          url: `${this.valtimoApiConfig.endpointUri}${downloadUrl.replace(/^\\/api\\//, '')}`,\n          resource: {\n            key: resourceId,\n            name: resourceId,\n            sizeInBytes: 0,\n          },\n        });\n      })\n    );\n  }\n\n  private getResourceMetadata(resourceId: string, metadataKey: string): Observable<string> {\n    return this.http\n      .get<{value: string}>(`${this.valtimoApiConfig.endpointUri}v1/resource-storage/${resourceId}/metadata/${metadataKey}`)\n      .pipe(\n        map(response => response?.value || ''),\n        catchError(() => of(''))\n      );\n  }\n\n  public getResources(documentId: string): Observable<Array<ResourceReference>> {\n    return this.http\n      .get<\n        Page<any>\n      >(`${this.valtimoApiConfig.endpointUri}v2/zaken-api/document/${documentId}/files`)\n      .pipe(\n        map(page =>\n          page.content.map(file => ({\n            filename: file.bestandsnaam,\n            id: file.fileId,\n          }))\n        )\n      );\n  }\n\n  public getZaakTypes(): Observable<ZaakType[]> {\n    return this.http.get<ZaakType[]>(\n      `${this.valtimoApiConfig.endpointUri}management/v1/zgw/zaaktype`\n    );\n  }\n\n  public getZaakTypeLink(\n    caseDefinitionKey: string,\n    caseVersionTag: string\n  ): Observable<ZaakTypeLink> {\n    return this.http.get<ZaakTypeLink>(\n      `${this.valtimoApiConfig.endpointUri}management/v1/case-definition/${caseDefinitionKey}/version/${caseVersionTag}/zaak-type-link`\n    );\n  }\n\n  public createZaakTypeLink(request: CreateZaakTypeLinkRequest): Observable<any> {\n    return this.http.post<any>(\n      `${this.valtimoApiConfig.endpointUri}management/v1/case-definition/${request.caseDefinitionKey}/version/${request.caseVersionTag}/zaak-type-link`,\n      request\n    );\n  }\n  public deleteZaakTypeLink(caseDefinitionKey: string, caseVersionTag: string): Observable<any> {\n    return this.http.delete<any>(\n      `${this.valtimoApiConfig.endpointUri}management/v1/case-definition/${caseDefinitionKey}/version/${caseVersionTag}/zaak-type-link`\n    );\n  }\n\n  public getZaakTypeLinkListByProcess(\n    processDefinitionKey: string\n  ): Observable<Array<ZaakTypeLink>> {\n    return this.http.get<Array<ZaakTypeLink>>(\n      `${this.valtimoApiConfig.endpointUri}management/v1/zaak-type-link/process/${processDefinitionKey}`\n    );\n  }\n\n  public upload(file: File, caseDefinitionKey: string): Observable<DocumentenApiFileReference> {\n    return this.uploadTempFileWithMetadata(file, {caseDefinitionKey});\n  }\n\n  public uploadWithMetadata(\n    file: File,\n    documentId: string,\n    metadata: {[key: string]: any}\n  ): Observable<void> {\n    const formData: FormData = new FormData();\n    formData.append('file', file);\n    formData.append('documentId', documentId);\n\n    Object.keys(metadata).forEach(metaDataKey => {\n      const metadataValue = metadata[metaDataKey];\n\n      if (metadataValue) {\n        formData.append(metaDataKey, metadataValue);\n      }\n    });\n\n    return this.http.post<void>(`${this.valtimoApiConfig.endpointUri}v1/resource/temp`, formData, {\n      reportProgress: true,\n      responseType: 'json',\n      headers: new HttpHeaders().set(InterceptorSkip, '403'),\n    });\n  }\n\n  public uploadTempFileWithMetadata(\n    file: File,\n    metadata: {[key: string]: any}\n  ): Observable<DocumentenApiFileReference> {\n    const formData: FormData = new FormData();\n    formData.append('file', file);\n\n    Object.keys(metadata).forEach(metaDataKey => {\n      const metadataValue = metadata[metaDataKey];\n\n      if (metadataValue) {\n        formData.append(metaDataKey, metadataValue);\n      }\n    });\n\n    return this.http.post<DocumentenApiFileReference>(\n      `${this.valtimoApiConfig.endpointUri}v1/resource/temp`,\n      formData,\n      {\n        reportProgress: true,\n        responseType: 'json',\n        headers: new HttpHeaders().set(InterceptorSkip, '403'),\n      }\n    );\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\nimport {\n  DocumentenApiFileReference,\n  ResourceDto,\n  ResourceFile,\n  ResourceReference,\n  UploadService,\n} from '../models';\nimport {OpenZaakService} from './open-zaak.service';\nimport {map} from 'rxjs/operators';\n\n@Injectable()\nexport class OpenZaakUploadService implements UploadService {\n  private valtimoApiConfig: any;\n\n  constructor(\n    private readonly openZaakService: OpenZaakService,\n    private http: HttpClient,\n    private configService: ConfigService\n  ) {\n    this.valtimoApiConfig = configService.config.valtimoApi;\n  }\n\n  uploadFile(file: File, caseDefinitionKey: string): Observable<ResourceFile> {\n    return this.openZaakService\n      .upload(new File([file], file.name, {type: file.type}), caseDefinitionKey)\n      .pipe(map(result => this.getResourceFile(result)));\n  }\n\n  uploadFileWithMetadata(\n    file: File,\n    documentId: string,\n    metadata: {[key: string]: any}\n  ): Observable<void> {\n    return this.openZaakService.uploadWithMetadata(\n      new File([file], metadata?.bestandsnaam || file.name, {type: file.type}),\n      documentId,\n      metadata\n    );\n  }\n\n  uploadTempFileWithMetadata(\n    file: File,\n    metadata: {[key: string]: any}\n  ): Observable<DocumentenApiFileReference> {\n    return this.openZaakService.uploadTempFileWithMetadata(\n      new File([file], metadata?.bestandsnaam || file.name, {type: file.type}),\n      metadata\n    );\n  }\n\n  getResource(resourceId: string): Observable<ResourceDto> {\n    return this.openZaakService.getResource(resourceId);\n  }\n\n  getResources(documentId: string): Observable<Array<ResourceReference>> {\n    return this.openZaakService.getResources(documentId);\n  }\n\n  checkUploadProcessLink(caseDefinitionKey: string): Observable<boolean> {\n    return this.http\n      .get<{\n        processCaseLinkExists: boolean;\n      }>(\n        `${this.valtimoApiConfig.endpointUri}v1/uploadprocess/case/${caseDefinitionKey}/check-link`\n      )\n      .pipe(map(res => res.processCaseLinkExists));\n  }\n\n  private getResourceFile(result: DocumentenApiFileReference): ResourceFile {\n    const extension =\n      result.filename && result.filename.includes('.')\n        ? result.filename.split('.').pop() || ''\n        : '';\n    return {\n      customUpload: true,\n      originalName: result.filename,\n      size: result.sizeInBytes,\n      url: `/api/v1/resource/${result.id}/download`,\n      storage: 'openZaak',\n      type: extension,\n      data: {\n        createdOn: Date(),\n        name: result.filename,\n        sizeInBytes: result.sizeInBytes,\n        resourceId: result.id,\n        extension: extension,\n      },\n    };\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {ConfigService} from '@valtimo/shared';\nimport {Resource, S3Resource, ResourceDto} from '../models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class S3Service {\n  private valtimoApiConfig: any;\n\n  constructor(\n    private http: HttpClient,\n    private configService: ConfigService\n  ) {\n    this.valtimoApiConfig = configService.config.valtimoApi;\n  }\n\n  public getPreSignedUrl(fileName: string): Observable<string> {\n    const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');\n    const options = {headers, responseType: 'text' as 'text'};\n    return this.http.get(\n      `${this.valtimoApiConfig.endpointUri}v1/resource/pre-signed-url/${fileName}`,\n      options\n    );\n  }\n\n  public upload(url: URL, file: File): Observable<any> {\n    const headers = new HttpHeaders().set('Content-Type', file.type);\n    return this.http.put(url.toString(), file, {headers});\n  }\n\n  public registerResource(s3ResourceDTO: S3Resource): Observable<Resource> {\n    return this.http.put<Resource>(\n      `${this.valtimoApiConfig.endpointUri}v1/resource`,\n      s3ResourceDTO\n    );\n  }\n\n  public get(resourceId: string): Observable<ResourceDto> {\n    const headers = new HttpHeaders().set('Content-Type', 'application/json;charset=UTF-8');\n    return this.http.get<ResourceDto>(\n      `${this.valtimoApiConfig.endpointUri}v1/resource/${resourceId}`,\n      {headers}\n    );\n  }\n\n  public delete(resourceId: string): Observable<any> {\n    const headers = new HttpHeaders().set('Content-Type', 'application/json;charset=UTF-8');\n    return this.http.delete(`${this.valtimoApiConfig.endpointUri}v1/resource/${resourceId}`, {\n      headers,\n    });\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Observable} from 'rxjs';\nimport {map, switchMap, tap} from 'rxjs/operators';\nimport {ResourceDto, ResourceFile, ResourceReference, S3Resource, UploadService} from '../models';\nimport {Injectable} from '@angular/core';\nimport {v4 as uuidv4} from 'uuid';\nimport {S3Service} from './s3.service';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/shared';\n\n@Injectable()\nexport class S3UploadService implements UploadService {\n  private readonly valtimoEndpointUri!: string;\n\n  constructor(\n    private readonly s3Service: S3Service,\n    private readonly configService: ConfigService,\n    private readonly http: HttpClient\n  ) {\n    this.valtimoEndpointUri = this.configService.config.valtimoApi.endpointUri;\n  }\n\n  uploadFile(file: File, _, documentId?: string): Observable<ResourceFile> {\n    let resourceUrl: URL;\n    const fileName = file.name;\n    const splitFileName = fileName.split('.');\n    const fileNameWithUUID = `${splitFileName[0]}-${uuidv4()}.${splitFileName[1]}`;\n    const renamedFile = new File([file], fileNameWithUUID, {type: file.type});\n\n    return this.s3Service.getPreSignedUrl(renamedFile.name).pipe(\n      map(url => new URL(url)),\n      tap(url => (resourceUrl = url)),\n      switchMap(url => this.s3Service.upload(url, renamedFile)),\n      map(() => new S3Resource(file, resourceUrl, documentId)),\n      switchMap(s3Resource => this.s3Service.registerResource(s3Resource)),\n      switchMap(s3Resource => this.s3Service.get(s3Resource.id)),\n      map(result => ({...result, originalName: file.name})),\n      map(result => this.getResourceFile(result))\n    );\n  }\n\n  getResource(resourceId: string): Observable<ResourceDto> {\n    return this.s3Service.get(resourceId);\n  }\n\n  getResources(documentId: string): Observable<Array<ResourceReference>> {\n    return this.http.get<any>(`${this.valtimoEndpointUri}v1/document/${documentId}`).pipe(\n      map(document => document.relatedFiles ?? []),\n      map(resources =>\n        resources.map(relatedFile => ({\n          filename: relatedFile.fileName,\n          id: relatedFile.fileId,\n        }))\n      )\n    );\n  }\n\n  private getResourceFile(result: ResourceDto): ResourceFile {\n    return {\n      customUpload: true,\n      originalName: result.originalName,\n      url: result.url,\n      size: result.resource.sizeInBytes,\n      storage: 'url',\n      type: result.resource.extension,\n      data: {\n        key: result.resource.key,\n        bucketName: result.resource.name,\n        createdOn: result.resource.createdOn as any as string,\n        name: result.originalName,\n        sizeInBytes: result.resource.sizeInBytes,\n        resourceId: result.resource.id.split('ResourceId(id=')[1].slice(0, -1),\n      },\n    };\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, Injector} from '@angular/core';\nimport {NGXLogger} from 'ngx-logger';\nimport {\n  DocumentenApiFileReference,\n  ResourceDto,\n  ResourceFile,\n  ResourceReference,\n  UploadService,\n} from '../models';\nimport {ConfigService, UploadProvider} from '@valtimo/shared';\nimport {Observable, of} from 'rxjs';\nimport {OpenZaakUploadService} from './open-zaak-upload.service';\nimport {S3UploadService} from './s3-upload.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UploadProviderService implements UploadService {\n  private readonly uploadService: UploadService;\n\n  constructor(\n    private configService: ConfigService,\n    private injector: Injector,\n    private logger: NGXLogger\n  ) {\n    let uploadService: UploadService;\n\n    // If ZGW features disabled, force S3; otherwise use environment config\n    const zgwEnabled = configService.featureToggles?.enableZgwFeatures !== false;\n    const uploadProvider = zgwEnabled\n      ? configService.config.uploadProvider\n      : UploadProvider.S3;\n\n    switch (uploadProvider) {\n      case UploadProvider.S3:\n        uploadService = injector.get<UploadService>(S3UploadService);\n        break;\n      case UploadProvider.OPEN_ZAAK:\n        uploadService = injector.get<UploadService>(OpenZaakUploadService);\n        break;\n      case UploadProvider.DOCUMENTEN_API:\n        uploadService = injector.get<UploadService>(OpenZaakUploadService);\n        break;\n    }\n\n    this.uploadService = uploadService;\n    this.logger.debug('Loading UploadService as', this.uploadService);\n  }\n\n  uploadFile(\n    file: File,\n    caseDefinitionKey?: string,\n    documentId?: string\n  ): Observable<ResourceFile> {\n    return this.uploadService.uploadFile(file, caseDefinitionKey, documentId);\n  }\n\n  getResource(resourceId: string): Observable<ResourceDto> {\n    return this.uploadService.getResource(resourceId);\n  }\n\n  getResources(documentId: string): Observable<Array<ResourceReference>> {\n    return this.uploadService.getResources(documentId);\n  }\n\n  checkUploadProcessLink(caseDefinitionKey: string): Observable<boolean> {\n    if (this.uploadService.checkUploadProcessLink) {\n      return this.uploadService.checkUploadProcessLink(caseDefinitionKey);\n    }\n\n    return of(false);\n  }\n\n  uploadFileWithMetadata(\n    file: File,\n    documentId: string,\n    metadata: {[key: string]: any}\n  ): Observable<void> {\n    if (this.uploadService.uploadFileWithMetadata) {\n      return this.uploadService.uploadFileWithMetadata(file, documentId, metadata);\n    }\n\n    return of(null);\n  }\n\n  uploadTempFileWithMetadata(\n    file: File,\n    metadata: {[key: string]: any}\n  ): Observable<DocumentenApiFileReference> {\n    if (this.uploadService.uploadTempFileWithMetadata) {\n      return this.uploadService.uploadTempFileWithMetadata(file, metadata);\n    }\n\n    return of(null);\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable, Subject} from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DownloadService {\n  constructor(\n    private http: HttpClient,\n    private configService: ConfigService\n  ) {}\n\n  downloadFile(url: string, name: string, forceDownload?: boolean): Observable<null> {\n    const finishedSubject$ = new Subject<null>();\n\n    if (\n      url.startsWith(this.configService.config.valtimoApi.endpointUri) ||\n      url.startsWith(window.location.origin) ||\n      url.startsWith('/api/')\n    ) {\n      // if download url is on backend use angular to get the content so access token is used\n      this.http.get(url, {responseType: 'blob'}).subscribe(content => {\n        const downloadUrl = window.URL.createObjectURL(content);\n        if (!this.isFileTypeSupportedForNewWindow(name) || forceDownload) {\n          this.openDownloadLink(downloadUrl, name);\n        } else {\n          this.openBlobInNewTab(downloadUrl, name);\n        }\n        finishedSubject$.next(null);\n      });\n    } else {\n      // download links to external services (like amazon s3) open in a new window\n      this.openDownloadLink(url, name);\n      finishedSubject$.next(null);\n    }\n\n    return finishedSubject$;\n  }\n\n  /**\n   * A window.open won't work for blobs because ad blocker extensions will immediately\n   * close the tab again. The method used below will prevent this from happening.\n   */\n  private openBlobInNewTab(url: string, name: string) {\n    const newWindow = window.open('/');\n\n    // newWindow will be null if the browser blocks the opening of a new tab.\n    if (newWindow != null) {\n      newWindow.location = url;\n    } else {\n      // In case the tab is blocked it will just download the file.\n      this.openDownloadLink(url, name);\n    }\n  }\n\n  private openDownloadLink(url: string, name: string) {\n    const link = document.createElement('a');\n    link.href = url;\n    link.download = name;\n    link.target = '_blank';\n    link.click();\n    link.remove();\n  }\n\n  private isFileTypeSupportedForNewWindow(name: string): boolean {\n    const supportedFileTypes = this.configService?.config\n      ?.supportedDocumentFileTypesToViewInBrowser || ['pdf', 'jpg', 'png', 'svg'];\n\n    return supportedFileTypes.some(function (suffix) {\n      return name.toUpperCase().endsWith(suffix.toUpperCase());\n    });\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {OpenZaakUploadService} from './services/open-zaak-upload.service';\nimport {S3UploadService} from './services/s3-upload.service';\nimport {UploadProviderService} from './services/upload-provider.service';\nimport {OpenZaakService} from './services/open-zaak.service';\nimport {S3Service} from './services/s3.service';\nimport {DownloadService} from './services/download.service';\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  exports: [],\n  providers: [\n    OpenZaakUploadService,\n    S3UploadService,\n    UploadProviderService,\n    OpenZaakService,\n    S3Service,\n    DownloadService,\n  ],\n})\nexport class ResourceModule {}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n  view = 'view',\n  view_list = 'view_list',\n  create = 'create',\n  modify = 'modify',\n  delete = 'delete',\n}\n\nenum RESOURCE_PERMISSION_RESOURCE {\n  // Kept as an alias of zgwDocument for transition; old code referencing resourcePermission\n  // will transparently carry the new FQCN.\n  resourcePermission = 'com.ritense.documentenapi.authorization.ZgwDocument',\n  zgwDocument = 'com.ritense.documentenapi.authorization.ZgwDocument',\n  jsonSchemaDocument = 'com.ritense.document.domain.impl.JsonSchemaDocument',\n}\n\nconst CAN_VIEW_RESOURCE_PERMISSION: PermissionRequest = {\n  action: PERMISSION_ACTION.view,\n  resource: RESOURCE_PERMISSION_RESOURCE.zgwDocument,\n};\n\nconst CAN_VIEW_LIST_RESOURCE_PERMISSION: PermissionRequest = {\n  action: PERMISSION_ACTION.view_list,\n  resource: RESOURCE_PERMISSION_RESOURCE.zgwDocument,\n};\n\nconst CAN_CREATE_RESOURCE_PERMISSION: PermissionRequest = {\n  action: PERMISSION_ACTION.create,\n  resource: RESOURCE_PERMISSION_RESOURCE.zgwDocument,\n};\n\nconst CAN_MODIFY_RESOURCE_PERMISSION: PermissionRequest = {\n  action: PERMISSION_ACTION.modify,\n  resource: RESOURCE_PERMISSION_RESOURCE.zgwDocument,\n};\n\nconst CAN_DELETE_RESOURCE_PERMISSION: PermissionRequest = {\n  action: PERMISSION_ACTION.delete,\n  resource: RESOURCE_PERMISSION_RESOURCE.zgwDocument,\n};\n\nexport {\n  CAN_VIEW_RESOURCE_PERMISSION,\n  CAN_VIEW_LIST_RESOURCE_PERMISSION,\n  CAN_CREATE_RESOURCE_PERMISSION,\n  CAN_MODIFY_RESOURCE_PERMISSION,\n  CAN_DELETE_RESOURCE_PERMISSION,\n  RESOURCE_PERMISSION_RESOURCE,\n};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of upload\n */\n\nexport * from './lib/models';\nexport * from './lib/resource.module';\nexport * from './lib/services/open-zaak.service';\nexport * from './lib/services/upload-provider.service';\nexport * from './lib/services/s3.service';\nexport * from './lib/services/download.service';\nexport * from './lib/resource-permissions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","i1.OpenZaakService","i2","i3","uuidv4","switchMap","i1.S3Service","i1"],"mappings":"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"}