{"version":3,"sources":["../src/Descriptors/ProtocolInformation.ts","../src/Descriptors/ServiceDescription.ts","../src/Metamodel/Enums/AasSubmodelElements.ts","../src/Metamodel/Enums/AssetKind.ts","../src/Metamodel/Enums/DataTypeDefXsd.ts","../src/Metamodel/Enums/DataTypeIec61360.ts","../src/Metamodel/Enums/Direction.ts","../src/Metamodel/Enums/EntityType.ts","../src/Metamodel/Enums/KeyTypes.ts","../src/Metamodel/Enums/ModellingKind.ts","../src/Metamodel/Enums/ModelType.ts","../src/Metamodel/Enums/QualifierKind.ts","../src/Metamodel/Enums/ReferenceTypes.ts","../src/Metamodel/Enums/StateOfEvent.ts","../src/Rest/Client/AasRequestError.ts","../src/Utils/Restutils.ts","../src/Rest/Client/ClientBase.ts","../src/Rest/Client/AasRegistryClient.ts","../src/Rest/Client/AasRepoClient.ts","../src/Rest/Client/ConceptDescriptionClient.ts","../src/Rest/Client/DiscoveryClient.ts","../src/Rest/Client/SubmodelRegistryClient.ts","../src/Rest/Client/SubmodelRepoClient.ts","../src/Rest/Interfaces/ExecutionState.ts","../src/Treemodel/SubmodelElementNode.ts","../src/Treemodel/SubmodelTree.ts","../src/Utils/AasUtils.ts","../src/Utils/IdShortPath.ts","../src/Utils/LeisoftAasId.ts"],"sourcesContent":["export type ProtocolInformation = {\n  href: string;\n  endpointProtocol?: string;\n  endpointProtocolVersion?: Array<string>;\n  subprotocol?: string;\n  subprotocolBody?: string;\n  subprotocolBodyEncoding?: string;\n  securityAttributes?: Array<ProtocolInformationSecurityAttributes>;\n};\n\nexport type ProtocolInformationSecurityAttributes = {\n  type: ProtocolInformationSecurityAttributeTypes;\n  key: string;\n  value: string;\n};\n\nexport enum ProtocolInformationSecurityAttributeTypes {\n  NONE = 'NONE',\n  RFCTLSA = 'RFC_TLSA',\n  W3CDID = 'W3C_DID',\n}\n","export type ServiceDescription = {\n  profiles?: Array<ServiceProfiles>;\n};\n\nexport enum ServiceProfiles {\n  AssetAdministrationShellServiceSpecificationSSP001 = 'https://admin-shell.io/aas/API/3/0/AssetAdministrationShellServiceSpecification/SSP-001',\n  AssetAdministrationShellServiceSpecificationSSP002 = 'https://admin-shell.io/aas/API/3/0/AssetAdministrationShellServiceSpecification/SSP-002',\n  SubmodelServiceSpecificationSSP001 = 'https://admin-shell.io/aas/API/3/0/SubmodelServiceSpecification/SSP-001',\n  SubmodelServiceSpecificationSSP002 = 'https://admin-shell.io/aas/API/3/0/SubmodelServiceSpecification/SSP-002',\n  SubmodelServiceSpecificationSSP003 = 'https://admin-shell.io/aas/API/3/0/SubmodelServiceSpecification/SSP-003',\n  AasxFileServerServiceSpecificationSSP001 = 'https://admin-shell.io/aas/API/3/0/AasxFileServerServiceSpecification/SSP-001',\n  AssetAdministrationShellRegistryServiceSpecificationSSP001 = 'https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRegistryServiceSpecification/SSP-001',\n  AssetAdministrationShellRegistryServiceSpecificationSSP002 = 'https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRegistryServiceSpecification/SSP-002',\n  SubmodelRegistryServiceSpecificationSSP001 = 'https://admin-shell.io/aas/API/3/0/SubmodelRegistryServiceSpecification/SSP-001',\n  SubmodelRegistryServiceSpecificationSSP002 = 'https://admin-shell.io/aas/API/3/0/SubmodelRegistryServiceSpecification/SSP-002',\n  DiscoveryServiceSpecificationSSP001 = 'https://admin-shell.io/aas/API/3/0/DiscoveryServiceSpecification/SSP-001',\n  AssetAdministrationShellRepositoryServiceSpecificationSSP001 = 'https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRepositoryServiceSpecification/SSP-001',\n  AssetAdministrationShellRepositoryServiceSpecificationSSP002 = 'https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRepositoryServiceSpecification/SSP-002',\n  SubmodelRepositoryServiceSpecificationSSP001 = 'https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-001',\n  SubmodelRepositoryServiceSpecificationSSP002 = 'https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-002',\n  SubmodelRepositoryServiceSpecificationSSP003 = 'https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-003',\n  SubmodelRepositoryServiceSpecificationSSP004 = 'https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-004',\n  ConceptDescriptionServiceSpecificationSSP001 = 'https://admin-shell.io/aas/API/3/0/ConceptDescriptionServiceSpecification/SSP-001',\n}\n","export enum AasSubmodelElements {\n  AnnotatedRelationshipElement = 'AnnotatedRelationshipElement',\n  BasicEventElement = 'BasicEventElement',\n  Blob = 'Blob',\n  Capability = 'Capability',\n  DataElement = 'DataElement',\n  Entity = 'Entity',\n  EventElement = 'EventElement',\n  File = 'File',\n  MultiLanguageProperty = 'MultiLanguageProperty',\n  Operation = 'Operation',\n  Property = 'Property',\n  Range = 'Range',\n  ReferenceElement = 'ReferenceElement',\n  RelationshipElement = 'RelationshipElement',\n  SubmodelElement = 'SubmodelElement',\n  SubmodelElementCollection = 'SubmodelElementCollection',\n  SubmodelElementList = 'SubmodelElementList',\n}\n","export enum AssetKind {\n  Instance = 'Instance',\n  NotApplicable = 'NotApplicable',\n  Type = 'Type',\n}\n","export enum DataTypeDefXsd {\n  AnyURI = 'xs:anyURI',\n  Base64Binary = 'xs:base64Binary',\n  Boolean = 'xs:boolean',\n  Byte = 'xs:byte',\n  Date = 'xs:date',\n  DateTime = 'xs:dateTime',\n  Decimal = 'xs:decimal',\n  Double = 'xs:double',\n  Duration = 'xs:duration',\n  Float = 'xs:float',\n  GDay = 'xs:gDay',\n  GMonth = 'xs:gMonth',\n  GMonthDay = 'xs:gMonthDay',\n  GYear = 'xs:gYear',\n  GYearMonth = 'xs:gYearMonth',\n  HexBinary = 'xs:hexBinary',\n  Int = 'xs:int',\n  Integer = 'xs:integer',\n  Long = 'xs:long',\n  NegativeInteger = 'xs:negativeInteger',\n  NonNegativeInteger = 'xs:nonNegativeInteger',\n  NonPositiveInteger = 'xs:nonPositiveInteger',\n  PositiveInteger = 'xs:positiveInteger',\n  Short = 'xs:short',\n  String = 'xs:string',\n  Time = 'xs:time',\n  UnsignedByte = 'xs:unsignedByte',\n  UnsignedInt = 'xs:unsignedInt',\n  UnsignedLong = 'xs:unsignedLong',\n  UnsignedShort = 'xs:unsignedShort',\n}\n","export enum DataTypeIec61360 {\n  BLOB = 'BLOB',\n  BOOLEAN = 'BOOLEAN',\n  DATE = 'DATE',\n  FILE = 'FILE',\n  HTML = 'HTML',\n  INTEGERCOUNT = 'INTEGER_COUNT',\n  INTEGERCURRENCY = 'INTEGER_CURRENCY',\n  INTEGERMEASURE = 'INTEGER_MEASURE',\n  IRDI = 'IRDI',\n  IRI = 'IRI',\n  RATIONAL = 'RATIONAL',\n  RATIONALMEASURE = 'RATIONAL_MEASURE',\n  REALCOUNT = 'REAL_COUNT',\n  REALCURRENCY = 'REAL_CURRENCY',\n  REALMEASURE = 'REAL_MEASURE',\n  STRING = 'STRING',\n  STRINGTRANSLATABLE = 'STRING_TRANSLATABLE',\n  TIME = 'TIME',\n  TIMESTAMP = 'TIMESTAMP',\n}\n","export enum Direction {\n  Input = 'input',\n  Output = 'output',\n}\n","export enum EntityType {\n  CoManagedEntity = 'CoManagedEntity',\n  SelfManagedEntity = 'SelfManagedEntity',\n}\n","export enum KeyTypes {\n  AnnotatedRelationshipElement = 'AnnotatedRelationshipElement',\n  AssetAdministrationShell = 'AssetAdministrationShell',\n  BasicEventElement = 'BasicEventElement',\n  Blob = 'Blob',\n  Capability = 'Capability',\n  ConceptDescription = 'ConceptDescription',\n  DataElement = 'DataElement',\n  Entity = 'Entity',\n  EventElement = 'EventElement',\n  File = 'File',\n  FragmentReference = 'FragmentReference',\n  GlobalReference = 'GlobalReference',\n  Identifiable = 'Identifiable',\n  MultiLanguageProperty = 'MultiLanguageProperty',\n  Operation = 'Operation',\n  Property = 'Property',\n  Range = 'Range',\n  Referable = 'Referable',\n  ReferenceElement = 'ReferenceElement',\n  RelationshipElement = 'RelationshipElement',\n  Submodel = 'Submodel',\n  SubmodelElement = 'SubmodelElement',\n  SubmodelElementCollection = 'SubmodelElementCollection',\n  SubmodelElementList = 'SubmodelElementList',\n}\n","export enum ModellingKind {\n  Instance = 'Instance',\n  Template = 'Template',\n}\n","export enum ModelType {\n  AnnotatedRelationshipElement = 'AnnotatedRelationshipElement',\n  AssetAdministrationShell = 'AssetAdministrationShell',\n  BasicEventElement = 'BasicEventElement',\n  Blob = 'Blob',\n  Capability = 'Capability',\n  ConceptDescription = 'ConceptDescription',\n  DataSpecificationIec61360 = 'DataSpecificationIec61360',\n  Entity = 'Entity',\n  File = 'File',\n  MultiLanguageProperty = 'MultiLanguageProperty',\n  Operation = 'Operation',\n  Property = 'Property',\n  Range = 'Range',\n  ReferenceElement = 'ReferenceElement',\n  RelationshipElement = 'RelationshipElement',\n  Submodel = 'Submodel',\n  SubmodelElementCollection = 'SubmodelElementCollection',\n  SubmodelElementList = 'SubmodelElementList',\n}\n","export enum QualifierKind {\n  ConceptQualifier = 'ConceptQualifier',\n  TemplateQualifier = 'TemplateQualifier',\n  ValueQualifier = 'ValueQualifier',\n}\n","export enum ReferenceTypes {\n  ExternalReference = 'ExternalReference',\n  ModelReference = 'ModelReference',\n}\n","export enum StateOfEvent {\n  Off = 'off',\n  On = 'on',\n}\n","import type { Message } from '../Interfaces/Message';\n\nexport class AasRequestError extends Error {\n  constructor(\n    public readonly request: Request,\n    public readonly response: Response,\n    public readonly messages?: Message[],\n  ) {\n    super(`Request to AAS API at ${request.url} failed with status ${response.status}`);\n  }\n}\n","import type { Reference } from '../Metamodel/SupportTypes/Reference';\nimport type { SpecificAssetId } from '../Metamodel/SupportTypes/SpecificAssetId';\nimport type { PagingParams } from '../Rest/Interfaces/PagingParams';\nimport type { SerializationModifiers } from '../Rest/Interfaces/SerializationModifiers';\nimport { AasRequestError } from '../Rest/Client/AasRequestError';\n\nexport const assignSearchParams = (\n  params: URLSearchParams,\n  assign: Record<string, string | string[] | undefined>,\n): void => {\n  for (const key in assign) {\n    const val = assign[key];\n    if (Array.isArray(val)) {\n      val.forEach(v => params.append(key, v));\n    }\n    else if (typeof val === 'string') {\n      params.set(key, val);\n    }\n  }\n};\n\nexport const assignPagingParams = (\n  params: URLSearchParams,\n  pagingParams?: PagingParams,\n): void => {\n  if (pagingParams) {\n    const paging = {\n      ...pagingParams,\n      limit: pagingParams.limit ? String(pagingParams.limit) : undefined,\n    };\n    assignSearchParams(params, paging);\n  }\n};\n\nexport const assignSerializationModifiers = (\n  params: URLSearchParams,\n  serializationModifiers?: SerializationModifiers,\n): void => {\n  if (serializationModifiers) {\n    assignSearchParams(params, serializationModifiers);\n  }\n};\n\nexport const base64Url = (str: string) => {\n  const base64 = btoa(str);\n  return base64\n    .replaceAll('+', '-')\n    .replaceAll('/', '_')\n    .replaceAll('=', '');\n};\n\nexport const encodeSpecificAssetId = (id: SpecificAssetId): string => {\n  const json = JSON.stringify(id);\n  return base64Url(json);\n};\n\nexport const encodeReference = (ref: Reference): string => {\n  const json = JSON.stringify(ref);\n  return base64Url(json);\n};\n\nexport const assignSemanticId = (\n  params: URLSearchParams,\n  semanticId?: Reference,\n): void => {\n  if (semanticId) {\n    const encoded = encodeReference(semanticId);\n    const assign = {\n      semanticId: encoded,\n    };\n    assignSearchParams(params, assign);\n  }\n};\n\nexport const assertValidAasResponse = async <T>(\n  request: Request,\n  response: Response,\n  converserionType: 'json' | 'blob' | 'text' | 'void' = 'json',\n): Promise<T> => {\n  const status = response.status;\n  if (status > 299) {\n    let messages;\n    try {\n      messages = await response.json();\n    }\n    catch {\n      messages = undefined;\n    }\n    throw new AasRequestError(request, response, messages);\n  }\n  let result;\n  switch (converserionType) {\n    case 'json':\n      result = await response.json();\n      break;\n    case 'blob':\n      result = await response.blob();\n      break;\n    case 'text':\n      result = await response.text();\n      break;\n    default:\n      result = undefined;\n  }\n  return result as T;\n};\n\nexport const assignAssetParams = (\n  params: URLSearchParams,\n  assetIds?: SpecificAssetId[],\n  idShort?: string,\n): void => {\n  const encoded = assetIds?.map(encodeSpecificAssetId);\n  const assign = {\n    assetIds: encoded,\n    idShort,\n  };\n  assignSearchParams(params, assign);\n};\n\nexport const assignReferences = (\n  params: URLSearchParams,\n  referencesMapping: Record<string, Reference | undefined>,\n) => {\n  const assign: Record<string, string | string[] | undefined> = {};\n  for (const key in referencesMapping) {\n    const ref = referencesMapping[key];\n    if (ref) {\n      const encoded = encodeReference(ref);\n      assign[key] = encoded;\n    }\n  }\n  assignSearchParams(params, assign);\n};\n\n/**\n * Safely joins URL segments, ensuring that there are no double slashes or missing slashes.\n * @param args URL segments to join\n * @returns joined URL\n */\nexport function urljoin(...args: string[]): string {\n  let url = '';\n  for (const arg of args) {\n    if (url === '') {\n      url = arg;\n    }\n    else {\n      if (url.endsWith('/')) {\n        url = url.slice(0, -1);\n      }\n      if (arg.startsWith('/')) {\n        url += arg;\n      }\n      else {\n        url += `/${arg}`;\n      }\n    }\n  }\n  return url;\n}\n\nexport type HTTP_VERBS = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'OPTIONS' | 'HEAD';\n\nexport const headersLength = (headers: Headers): number => {\n  let count = 0;\n  headers.forEach(() => {\n    count++;\n  });\n  return count;\n};\n\nexport const LEISOFT_DOMAIN = 'leisoft.de';\nexport const LEISOFT_WWW_DOMAIN = 'www.leisoft.de';\nexport const LEISOFT_API_DOMAIN = 'api.leisoft.de';\nexport const LEISOFT_CLIENT_DOMAIN = 'client.leisoft.de';\n\nexport const IDTA_DOMAIN = 'admin-shell.io';\n","import type { ServiceDescription } from '../../Descriptors/ServiceDescription';\nimport type { ClientConfigParams } from '../Interfaces/ConfigParams';\nimport type { HttpVerb } from '../Interfaces/Http';\nimport { assertValidAasResponse, headersLength } from '../../Utils/Restutils';\n\nexport abstract class ClientBase {\n  public readonly baseUrl: URL;\n  protected headers: Headers = new Headers();\n\n  constructor(\n    protected readonly configParams: ClientConfigParams,\n  ) {\n    const protocol = configParams.protocol ?? 'https';\n    const port = configParams.port ? `:${configParams.port}` : '';\n    const basePath = configParams.basePath\n      ? `${configParams.basePath.replace(/\\/+$/, '')}/`\n      : '';\n    const url = `${protocol}://${configParams.host}${port}`;\n    this.baseUrl = new URL(basePath, url);\n  }\n\n  public async request(\n    method: HttpVerb,\n    path: string,\n    params?: URLSearchParams,\n    body?: BodyInit,\n    signal?: AbortSignal,\n  ): Promise<[Request, Response]> {\n    const url = new URL(path.replace(/^\\/+/, ''), this.baseUrl);\n    url.search = params?.toString() ?? '';\n    const headers = this.getHeaders();\n    if (headersLength(this.headers) === 0) {\n      // if no headers were set, then edit the default headers\n      if (['get', 'delete'].includes(method)) {\n        // get and delete requests should not have a body\n        headers.delete('Content-Type');\n      }\n      if (['put', 'patch', 'delete'].includes(method)) {\n        // put, patch and delete usually don't get a response body\n        headers.delete('Accept');\n      }\n      // post by default usually has a body and gets a response body\n    }\n    const request = new Request(url, {\n      headers,\n      method,\n      body,\n      signal,\n    });\n    const response = await fetch(request);\n    // reset the headers\n    this.headers = new Headers();\n    return [request, response];\n  }\n\n  protected getHeaders(): Headers {\n    let headers: Headers;\n    if (headersLength(this.headers) > 0) {\n      // use the supplied headers\n      headers = new Headers(this.headers);\n    }\n    else {\n      // use default headers\n      headers = new Headers({\n        'Content-Type': 'application/json',\n        'Accept': 'application/json',\n      });\n    }\n    const auth = this.configParams.auth;\n    if (auth) {\n      switch (auth.type) {\n        case 'basic':\n        {\n          const credentials = btoa(`${auth.username}:${auth.password}`);\n          headers.set('Authorization', `Basic ${credentials}`);\n          break;\n        }\n        case 'token':\n          headers.set('Authorization', `Bearer ${auth.token}`);\n          break;\n        case 'cert': // TODO: is this common\n          headers.set('X-Client-Cert', auth.cert);\n          break;\n        default: // TODO: specific error\n          throw new Error('Unsupported auth type');\n      }\n    }\n    return headers;\n  };\n\n  public async getServiceDescription(\n    signal?: AbortSignal,\n  ): Promise<ServiceDescription> {\n    const [request, response] = await this.request(\n      'get',\n      '/description',\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n};\n","import type { AssetAdministrationShellDescriptor } from '../../Descriptors/AssetAdministrationShellDescriptor';\nimport type { AssetKind } from '../../Metamodel/Enums/AssetKind';\nimport type { PagedResult } from '../Interfaces/PagedResult';\nimport type { PagingParams } from '../Interfaces/PagingParams';\nimport { assertValidAasResponse, assignPagingParams, assignSearchParams } from '../../Utils/Restutils';\nimport { ClientBase } from './ClientBase';\n\nexport class AasRegistryClient extends ClientBase {\n  public async getShellDescriptors(\n    assetKind?: AssetKind,\n    assetType?: string,\n    pagingParams?: PagingParams,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<AssetAdministrationShellDescriptor>> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      assetKind,\n      assetType,\n    });\n    assignPagingParams(params, pagingParams);\n    const [request, response] = await this.request(\n      'get',\n      '/shell-descriptors',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async createShellDescriptor(\n    descriptor: AssetAdministrationShellDescriptor,\n    signal?: AbortSignal,\n  ): Promise<AssetAdministrationShellDescriptor> {\n    const [request, response] = await this.request(\n      'post',\n      '/shell-descriptors',\n      undefined,\n      JSON.stringify(descriptor),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getShellDescriptor(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<AssetAdministrationShellDescriptor> {\n    const [request, response] = await this.request(\n      'get',\n      `/shell-descriptors/${id}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async replaceShellDescriptor(\n    id: string,\n    descriptor: AssetAdministrationShellDescriptor,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'put',\n      `/shell-descriptors/${id}`,\n      undefined,\n      JSON.stringify(descriptor),\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async deleteShellDescriptor(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'delete',\n      `/shell-descriptors/${id}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n}\n","import type { AssetAdministrationShell } from '../../Metamodel/AssetAdministrationShell';\nimport type { AssetInformation } from '../../Metamodel/SupportTypes/AssetInformation';\nimport type { Reference } from '../../Metamodel/SupportTypes/Reference';\nimport type { SpecificAssetId } from '../../Metamodel/SupportTypes/SpecificAssetId';\nimport type { PagedResult } from '../Interfaces/PagedResult';\nimport type { PagingParams } from '../Interfaces/PagingParams';\nimport { assertValidAasResponse, assignAssetParams, assignPagingParams, base64Url } from '../../Utils/Restutils';\nimport { ClientBase } from './ClientBase';\n\nexport class AasRepoClient extends ClientBase {\n  public async getShells(\n    assetIds?: SpecificAssetId[],\n    idShort?: string,\n    pagingParams?: PagingParams,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<AssetAdministrationShell>> {\n    const params = new URLSearchParams();\n    assignAssetParams(params, assetIds, idShort);\n    assignPagingParams(params, pagingParams);\n    const [request, response] = await this.request(\n      'get',\n      '/shells',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async createShell(\n    shell: AssetAdministrationShell,\n    signal?: AbortSignal,\n  ): Promise<AssetAdministrationShell> {\n    const [request, response] = await this.request(\n      'post',\n      '/shells',\n      undefined,\n      JSON.stringify(shell),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getShell(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<AssetAdministrationShell> {\n    const [request, response] = await this.request(\n      'get',\n      `/shells/${base64Url(id)}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async deleteShell(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'delete',\n      `/shells/${base64Url(id)}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async replaceShell(\n    id: string,\n    shell: AssetAdministrationShell,\n    signal?: AbortSignal,\n  ): Promise<AssetAdministrationShell> {\n    const [request, response] = await this.request(\n      'put',\n      `/shells/${base64Url(id)}`,\n      undefined,\n      JSON.stringify(shell),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getShellReferences(\n    assetIds?: SpecificAssetId[],\n    idShort?: string,\n    pagingParams?: PagingParams,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<Reference>> {\n    const params = new URLSearchParams();\n    assignAssetParams(params, assetIds, idShort);\n    assignPagingParams(params, pagingParams);\n    const [request, response] = await this.request(\n      'get',\n      '/shells/$reference',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getShellReference(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<Reference> {\n    const [request, response] = await this.request(\n      'get',\n      `/shells/${base64Url(id)}/$reference`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getAssetInformation(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<AssetInformation> {\n    const [request, response] = await this.request(\n      'get',\n      `/shells/${base64Url(id)}/asset-information`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async replaceAssetInformation(\n    id: string,\n    assetInformation: AssetInformation,\n    signal?: AbortSignal,\n  ): Promise<AssetInformation> {\n    const [request, response] = await this.request(\n      'put',\n      `/shells/${base64Url(id)}/asset-information`,\n      undefined,\n      JSON.stringify(assetInformation),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getShellThumbnail(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<Blob> {\n    this.headers.set(\n      'Accept',\n      'application/octet-stream, image/*, image/svg+xml',\n    );\n    const [request, response] = await this.request(\n      'get',\n      `/shells/${base64Url(id)}/thumbnail`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'blob');\n  }\n\n  public async replaceShellThumbnail(\n    id: string,\n    thumbnail: Blob,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    if (thumbnail.type) {\n      this.headers.set('Content-Type', thumbnail.type);\n    }\n    else {\n      // Fallback to a default Content-Type if the Blob type is not set\n      this.headers.set('Content-Type', 'application/octet-stream');\n    }\n    const [request, response] = await this.request(\n      'put',\n      `/shells/${base64Url(id)}/thumbnail`,\n      undefined,\n      thumbnail,\n      signal,\n    );\n    await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async deleteShellThumbnail(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'delete',\n      `/shells/${base64Url(id)}/thumbnail`,\n      undefined,\n      undefined,\n      signal,\n    );\n    await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async getShellSubmodelRefs(\n    id: string,\n    pagingParams?: PagingParams,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<Reference>> {\n    const params = new URLSearchParams();\n    assignPagingParams(params, pagingParams);\n    const [request, response] = await this.request(\n      'get',\n      `/shells/${base64Url(id)}/submodel-refs`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async createShellSubmodelRef(\n    id: string,\n    submodelRef: Reference,\n    signal?: AbortSignal,\n  ): Promise<Reference> {\n    const [request, response] = await this.request(\n      'post',\n      `/shells/${base64Url(id)}/submodel-refs`,\n      undefined,\n      JSON.stringify(submodelRef),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async deleteShellSubmodelRef(\n    id: string,\n    submodelRefId: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'delete',\n      `/shells/${base64Url(id)}/submodel-refs/${submodelRefId}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    await assertValidAasResponse(request, response, 'void');\n  }\n};\n","import type { ConceptDescription } from '../../Metamodel/ConceptDescription';\nimport type { Reference } from '../../Metamodel/SupportTypes/Reference';\nimport type { PagedResult } from '../Interfaces/PagedResult';\nimport type { PagingParams } from '../Interfaces/PagingParams';\nimport { assertValidAasResponse, assignPagingParams, assignReferences, assignSearchParams } from '../../Utils/Restutils';\nimport { ClientBase } from './ClientBase';\n\nexport class ConceptDescriptionClient extends ClientBase {\n  public async getConceptDescriptions(\n    idShort?: string,\n    isCaseOf?: Reference,\n    dataSpecificationRef?: Reference,\n    pagingParams?: PagingParams,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<ConceptDescription>> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      idShort,\n    });\n    assignReferences(params, {\n      isCaseOf,\n      dataSpecificationRef,\n    });\n    assignPagingParams(params, pagingParams);\n    const [request, response] = await this.request(\n      'get',\n      '/concept-descriptions',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async createConceptDescription(\n    conceptDescription: ConceptDescription,\n    signal?: AbortSignal,\n  ): Promise<ConceptDescription> {\n    const [request, response] = await this.request(\n      'post',\n      '/concept-descriptions',\n      undefined,\n      JSON.stringify(conceptDescription),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getConceptDescription(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<ConceptDescription> {\n    const [request, response] = await this.request(\n      'get',\n      `/concept-descriptions/${id}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async replaceConceptDescription(\n    id: string,\n    conceptDescription: ConceptDescription,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'put',\n      `/concept-descriptions/${id}`,\n      undefined,\n      JSON.stringify(conceptDescription),\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async deleteConceptDescription(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'delete',\n      `/concept-descriptions/${id}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n}\n","import type { SpecificAssetId } from '../../Metamodel/SupportTypes/SpecificAssetId';\nimport type { PagedResult } from '../Interfaces/PagedResult';\nimport type { PagingParams } from '../Interfaces/PagingParams';\nimport { assertValidAasResponse, assignAssetParams, assignPagingParams } from '../../Utils/Restutils';\nimport { ClientBase } from './ClientBase';\n\nexport class DiscoveryClient extends ClientBase {\n  public async lookupShells(\n    assetIds?: SpecificAssetId[],\n    pagingParams?: PagingParams,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<string>> {\n    const params = new URLSearchParams();\n    assignAssetParams(params, assetIds);\n    assignPagingParams(params, pagingParams);\n    const [request, response] = await this.request(\n      'get',\n      '/lookup/shells',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async lookupAssetIds(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<SpecificAssetId[]> {\n    const [request, response] = await this.request(\n      'get',\n      `/lookup/shells/${id}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async createAssetLink(\n    id: string,\n    assetIds: SpecificAssetId[],\n    signal?: AbortSignal,\n  ): Promise<SpecificAssetId[]> {\n    const [request, response] = await this.request(\n      'post',\n      `/lookup/shells/${id}`,\n      undefined,\n      JSON.stringify(assetIds),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async deleteAssetLink(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'delete',\n      `/lookup/shells/${id}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n}\n","import type { SubmodelDescriptor } from '../../Descriptors/SubmodelDescriptor';\nimport type { PagedResult } from '../Interfaces/PagedResult';\nimport type { PagingParams } from '../Interfaces/PagingParams';\nimport { assertValidAasResponse, assignPagingParams } from '../../Utils/Restutils';\nimport { ClientBase } from './ClientBase';\n\nexport class SubmodelRegistryClient extends ClientBase {\n  public async getSubmodelDescriptors(\n    pagingParams?: PagingParams,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<SubmodelDescriptor>> {\n    const params = new URLSearchParams();\n    assignPagingParams(params, pagingParams);\n    const [request, response] = await this.request(\n      'get',\n      '/submodel-descriptors',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async createSubmodelDescriptor(\n    descriptor: SubmodelDescriptor,\n    signal?: AbortSignal,\n  ): Promise<SubmodelDescriptor> {\n    const [request, response] = await this.request(\n      'post',\n      '/submodel-descriptors',\n      undefined,\n      JSON.stringify(descriptor),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelDescriptor(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<SubmodelDescriptor> {\n    const [request, response] = await this.request(\n      'get',\n      `/submodel-descriptors/${id}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async replaceSubmodelDescriptor(\n    id: string,\n    descriptor: SubmodelDescriptor,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'put',\n      `/submodel-descriptors/${id}`,\n      undefined,\n      JSON.stringify(descriptor),\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async deleteSubmodelDescriptor(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'delete',\n      `/submodel-descriptors/${id}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n}\n","import type { SubmodelElementMetadata } from '../../Metadata/SubmodelElementMetadata';\nimport type { SubmodelMetadata } from '../../Metadata/SubmodelMetadata';\nimport type { Submodel } from '../../Metamodel/Submodel';\nimport type { SubmodelElement } from '../../Metamodel/SubmodelElements/SubmodelElement';\nimport type { Reference } from '../../Metamodel/SupportTypes/Reference';\nimport type { OperationRequestValue } from '../../ValueOnly/OperationRequestValue';\nimport type { OperationResultValue } from '../../ValueOnly/OperationResultValue';\nimport type { SubmodelElementValue } from '../../ValueOnly/SubmodelElementValue';\nimport type { ValueOnly } from '../../ValueOnly/ValueOnly';\nimport type { BaseOperationResult } from '../Interfaces/BaseOperationResult';\nimport type { OperationRequest } from '../Interfaces/OperationRequest';\nimport type { OperationResult } from '../Interfaces/OperationResult';\nimport type { PagedResult } from '../Interfaces/PagedResult';\nimport type { PagingParams } from '../Interfaces/PagingParams';\nimport type { SerializationModifiers } from '../Interfaces/SerializationModifiers';\nimport { assertValidAasResponse, assignPagingParams, assignSearchParams, assignSemanticId, assignSerializationModifiers, base64Url } from '../../Utils/Restutils';\nimport { ClientBase } from './ClientBase';\n\nexport class SubmodelRepoClient extends ClientBase {\n  public async getSubmodels(\n    semanticId?: Reference,\n    idShort?: string,\n    pagingParams?: PagingParams,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<Submodel>> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      idShort,\n    });\n    assignSemanticId(params, semanticId);\n    assignPagingParams(params, pagingParams);\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      '/submodels',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async createSubmodel(\n    submodel: Submodel,\n    signal?: AbortSignal,\n  ): Promise<Submodel> {\n    const [request, response] = await this.request(\n      'post',\n      '/submodels',\n      undefined,\n      JSON.stringify(submodel),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelsMetadata(\n    semanticId?: Reference,\n    idShort?: string,\n    pagingParams?: PagingParams,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<SubmodelMetadata>> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      idShort,\n    });\n    assignSemanticId(params, semanticId);\n    assignPagingParams(params, pagingParams);\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      '/submodels/$metadata',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelsValue(\n    semanticId?: Reference,\n    idShort?: string,\n    pagingParams?: PagingParams,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<ValueOnly>> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      idShort,\n    });\n    assignSemanticId(params, semanticId);\n    assignPagingParams(params, pagingParams);\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      '/submodels/$value',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelReferences(\n    semanticId?: Reference,\n    idShort?: string,\n    pagingParams?: PagingParams,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<Reference>> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      idShort,\n    });\n    assignSemanticId(params, semanticId);\n    assignPagingParams(params, pagingParams);\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      '/submodels/$reference',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelsPaths(\n    semanticId?: Reference,\n    idShort?: string,\n    pagingParams?: PagingParams,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<string[]>> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      idShort,\n    });\n    assignSemanticId(params, semanticId);\n    assignPagingParams(params, pagingParams);\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      '/submodels/$path',\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodel(\n    id: string,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<Submodel> {\n    const params = new URLSearchParams();\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(id)}`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async replaceSubmodel(\n    id: string,\n    submodel: Submodel,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'put',\n      `/submodels/${base64Url(id)}`,\n      undefined,\n      JSON.stringify(submodel),\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async updateSubmodel(\n    id: string,\n    submodel: Submodel,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level,\n    });\n    const [request, response] = await this.request(\n      'patch',\n      `/submodels/${base64Url(id)}`,\n      params,\n      JSON.stringify(submodel),\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async deleteSubmodel(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'delete',\n      `/submodels/${base64Url(id)}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async getSubmodelMetadata(\n    id: string,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<SubmodelMetadata> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level,\n    });\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(id)}/$metadata`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async updateSubmodelMetadata(\n    id: string,\n    metadata: SubmodelMetadata,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level,\n    });\n    const [request, response] = await this.request(\n      'patch',\n      `/submodels/${base64Url(id)}`,\n      params,\n      JSON.stringify(metadata),\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async getSubmodelValue(\n    id: string,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<ValueOnly> {\n    const params = new URLSearchParams();\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(id)}/$value`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelReference(\n    id: string,\n    signal?: AbortSignal,\n  ): Promise<Reference> {\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(id)}/$reference`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelPaths(\n    id: string,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<string[]> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level,\n    });\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(id)}/$path`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelElements(\n    submodelId: string,\n    pagingParams?: PagingParams,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<SubmodelElement>> {\n    const params = new URLSearchParams();\n    assignPagingParams(params, pagingParams);\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async createSubmodelElement(\n    submodelId: string,\n    element: SubmodelElement,\n    signal?: AbortSignal,\n  ): Promise<SubmodelElement> {\n    const [request, response] = await this.request(\n      'post',\n      `/submodels/${base64Url(submodelId)}/submodel-elements`,\n      undefined,\n      JSON.stringify(element),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelElementsMetadata(\n    submodelId: string,\n    pagingParams?: PagingParams,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<SubmodelElementMetadata>> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level,\n    });\n    assignPagingParams(params, pagingParams);\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/$metadata`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelElementsValue(\n    submodelId: string,\n    pagingParams?: PagingParams,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<SubmodelElementValue>> {\n    const params = new URLSearchParams();\n    assignPagingParams(params, pagingParams);\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/$value`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelElementReferences(\n    submodelId: string,\n    pagingParams?: PagingParams,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<Reference>> {\n    const params = new URLSearchParams();\n    assignPagingParams(params, pagingParams);\n    assignSearchParams(params, {\n      level: 'core', // only core is allowed for Content=Reference\n    });\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/$reference`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelElementsPaths(\n    submodelId: string,\n    pagingParams?: PagingParams,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<PagedResult<string[]>> {\n    const params = new URLSearchParams();\n    assignPagingParams(params, pagingParams);\n    assignSearchParams(params, {\n      level,\n    });\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/$path`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelElement(\n    submodelId: string,\n    idShortPath: string,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<SubmodelElement> {\n    const params = new URLSearchParams();\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async createSubmodelElementAtPath(\n    submodelId: string,\n    idShortPath: string,\n    element: SubmodelElement,\n    signal?: AbortSignal,\n  ): Promise<SubmodelElement> {\n    const [request, response] = await this.request(\n      'post',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}`,\n      undefined,\n      JSON.stringify(element),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async replaceSubmodelElement(\n    submodelId: string,\n    idShortPath: string,\n    element: SubmodelElement,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level,\n    });\n    const [request, response] = await this.request(\n      'put',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}`,\n      params,\n      JSON.stringify(element),\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async updateSubmodelElement(\n    submodelId: string,\n    idShortPath: string,\n    element: SubmodelElement,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level,\n    });\n    const [request, response] = await this.request(\n      'patch',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}`,\n      params,\n      JSON.stringify(element),\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async deleteSubmodelElement(\n    submodelId: string,\n    idShortPath: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'delete',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async getSubmodelElementMetadata(\n    submodelId: string,\n    idShortPath: string,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<SubmodelElementMetadata> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level,\n    });\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/$metadata`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async updateSubmodelElementMetadata(\n    submodelId: string,\n    idShortPath: string,\n    metadata: SubmodelElementMetadata,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level,\n    });\n    const [request, response] = await this.request(\n      'patch',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/$metadata`,\n      params,\n      JSON.stringify(metadata),\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async getSubmodelElementValue(\n    submodelId: string,\n    idShortPath: string,\n    serializationModifiers?: SerializationModifiers,\n    signal?: AbortSignal,\n  ): Promise<SubmodelElementValue> {\n    const params = new URLSearchParams();\n    assignSerializationModifiers(params, serializationModifiers);\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/$value`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelElementReference(\n    submodelId: string,\n    idShortPath: string,\n    signal?: AbortSignal,\n  ): Promise<Reference> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level: 'core', // only core is allowed for Content=Reference\n    });\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/$reference`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelElementPaths(\n    submodelId: string,\n    idShortPath: string,\n    level?: string,\n    signal?: AbortSignal,\n  ): Promise<string[]> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      level,\n    });\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/$path`,\n      params,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getSubmodelElementFile(\n    submodelId: string,\n    idShortPath: string,\n    signal?: AbortSignal,\n  ): Promise<Blob> {\n    this.headers.set('Accept', 'application/octet-stream');\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/attachment`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'blob');\n  }\n\n  public async setSubmodelElementFile(\n    submodelId: string,\n    idShortPath: string,\n    file: Blob,\n    fileName: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const formData = new FormData();\n    formData.append('file', file);\n    formData.append('fileName', fileName);\n    this.headers.set('Content-Type', 'multipart/form-data');\n    const [request, response] = await this.request(\n      'put',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/attachment`,\n      undefined,\n      formData,\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async deleteSubmodelElementFile(\n    submodelId: string,\n    idShortPath: string,\n    signal?: AbortSignal,\n  ): Promise<void> {\n    const [request, response] = await this.request(\n      'delete',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/attachment`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response, 'void');\n  }\n\n  public async invokeOperation(\n    submodelId: string,\n    idShortPath: string,\n    operationRequest: OperationRequest,\n    invokeAsync?: boolean,\n    signal?: AbortSignal,\n  ): Promise<OperationResult> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      async: String(invokeAsync),\n    });\n    const [request, response] = await this.request(\n      'post',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/invoke`,\n      params,\n      JSON.stringify(operationRequest),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async invokeOperationValue(\n    submodelId: string,\n    idShortPath: string,\n    operationRequest: OperationRequestValue,\n    invokeAsync?: boolean,\n    signal?: AbortSignal,\n  ): Promise<OperationResultValue> {\n    const params = new URLSearchParams();\n    assignSearchParams(params, {\n      async: String(invokeAsync),\n    });\n    const [request, response] = await this.request(\n      'post',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/invoke/$value`,\n      params,\n      JSON.stringify(operationRequest),\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async invokeOperationAsync(\n    submodelId: string,\n    idShortPath: string,\n    operationRequest: OperationRequest,\n    signal?: AbortSignal,\n  ): Promise<string> {\n    const [request, response] = await this.request(\n      'post',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/invoke-async`,\n      undefined,\n      JSON.stringify(operationRequest),\n      signal,\n    );\n    await assertValidAasResponse(request, response, 'void');\n    return response.headers.get('Location') ?? '';\n  }\n\n  public async invokeOperationAsyncValue(\n    submodelId: string,\n    idShortPath: string,\n    operationRequest: OperationRequestValue,\n    signal?: AbortSignal,\n  ): Promise<string> {\n    const [request, response] = await this.request(\n      'post',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/invoke-async/$value`,\n      undefined,\n      JSON.stringify(operationRequest),\n      signal,\n    );\n    await assertValidAasResponse(request, response, 'void');\n    return response.headers.get('Location') ?? '';\n  }\n\n  public async getOperationStatus(\n    submodelId: string,\n    idShortPath: string,\n    handleId: string,\n    signal?: AbortSignal,\n  ): Promise<BaseOperationResult> {\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/operation-status/${base64Url(handleId)}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getOperationResults(\n    submodelId: string,\n    idShortPath: string,\n    handleId: string,\n    signal?: AbortSignal,\n  ): Promise<OperationResult> {\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/operation-results/${base64Url(handleId)}`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n\n  public async getOperationResultsValue(\n    submodelId: string,\n    idShortPath: string,\n    handleId: string,\n    signal?: AbortSignal,\n  ): Promise<OperationResultValue> {\n    const [request, response] = await this.request(\n      'get',\n      `/submodels/${base64Url(submodelId)}/submodel-elements/${idShortPath}/operation-results/${base64Url(handleId)}/$value`,\n      undefined,\n      undefined,\n      signal,\n    );\n    return await assertValidAasResponse(request, response);\n  }\n}\n","export enum ExecutionState {\n  Initiated = 'Initiated',\n  Running = 'Running',\n  Completed = 'Completed',\n  Canceled = 'Canceled',\n  Failed = 'Failed',\n  Timeout = 'Timeout',\n}\n","import type { AnnotatedRelationshipElement } from '../Metamodel/SubmodelElements/AnnotatedRelationshipElement';\nimport type { Entity } from '../Metamodel/SubmodelElements/Entity';\nimport type { SubmodelElement } from '../Metamodel/SubmodelElements/SubmodelElement';\nimport type { SubmodelElementCollection } from '../Metamodel/SubmodelElements/SubmodelElementCollection';\nimport type { SubmodelElementList } from '../Metamodel/SubmodelElements/SubmodelElementList';\nimport type { SubmodelTree } from './SubmodelTree';\n\nexport class SubmodelElementNode {\n  protected _submodel?: SubmodelTree;\n  protected _parent?: SubmodelElementNode;\n\n  constructor(\n    public element: SubmodelElement,\n  ) { }\n\n  get submodel(): SubmodelTree | undefined {\n    return this._submodel ?? this.parent?.submodel;\n  }\n\n  get parent(): SubmodelElementNode | undefined {\n    return this._parent;\n  }\n\n  addToSubmodel(submodel: SubmodelTree) {\n    if (this._parent) {\n      throw new Error('Only root nodes can be added to a submodel.');\n    }\n    this._submodel = submodel;\n  }\n\n  removeFromSubmodel() {\n    if (!this._parent) {\n      throw new Error('Only root nodes can be removed from a submodel.');\n    }\n    this._submodel = undefined;\n  }\n\n  get isList(): boolean {\n    return false;\n  }\n\n  get isCollection(): boolean {\n    return false;\n  }\n\n  get idShortPath(): string {\n    let path = this.element.idShort;\n    if (this.parent) {\n      if (this.parent.isList) {\n        const index = this.parent.indexOf(this.element);\n        path += `[${index}]`;\n      }\n      else {\n        path = `${this.parent.idShortPath}.${path}`;\n      }\n    }\n    return path;\n  }\n\n  indexOf(_child: SubmodelElement): number {\n    return -1;\n  }\n\n  /**\n   * Must be static because child class can't access protected _parent field\n   * for other instance\n   */\n  protected static setParent(parent: SubmodelElementNode, child: SubmodelElementNode) {\n    child._parent = parent;\n  }\n\n  protected static removeParent(child: SubmodelElementNode) {\n    child._parent = undefined;\n  }\n\n  static from(element: SubmodelElement): SubmodelElementNode {\n    let childNode: SubmodelElementNode;\n    switch (element.modelType) {\n      case 'AnnotatedRelationshipElement':\n      case 'Entity':\n      case 'SubmodelElementCollection':\n      {\n        childNode = new SubmodelElementCollectionNode(element as SubmodelElementCollection);\n        const elements: SubmodelElement[] | undefined\n            = (element as AnnotatedRelationshipElement).annotations\n              ?? (element as Entity).statements\n              ?? (element as SubmodelElementCollection).value;\n        if (elements) {\n          for (const childElement of elements) {\n            (childNode as SubmodelElementCollectionNode).set(childElement);\n          }\n        }\n        break;\n      }\n      case 'SubmodelElementList':\n      {\n        childNode = new SubmodelElementNodeList(element as SubmodelElementList);\n        const sel = element as SubmodelElementList;\n        if (sel.value) {\n          for (const childElement of sel.value) {\n            (childNode as SubmodelElementNodeList).add(childElement);\n          }\n        }\n        break;\n      }\n      default:\n        childNode = new SubmodelElementNode(element);\n        break;\n    }\n    return childNode;\n  }\n\n  get children(): SubmodelElementNode[] {\n    return [];\n  }\n\n  deepSearch(\n    predicate?: (element: SubmodelElement) => boolean,\n    action?: (element: SubmodelElement) => void,\n    maxDepth?: number,\n  ): SubmodelElementNode[] {\n    const results: SubmodelElementNode[] = [];\n    if (!predicate || predicate(this.element)) {\n      results.push(this);\n      action?.(this.element);\n    }\n    if (!maxDepth || maxDepth > 0) {\n      for (const child of this.children) {\n        const childResults = child.deepSearch(predicate, action, maxDepth ? maxDepth - 1 : undefined);\n        results.push(...childResults);\n      }\n    }\n    return results;\n  }\n\n  breadthFirstSearch(\n    predicate?: (element: SubmodelElement) => boolean,\n    action?: (element: SubmodelElement) => void,\n    maxDepth?: number,\n  ): SubmodelElementNode[] {\n    const results: SubmodelElementNode[] = [];\n    // queue of tuple of [node, depth]\n    const queue: [SubmodelElementNode, number][] = [[this, 0]];\n\n    while (queue.length > 0) {\n      const [node, depth] = queue.shift()!;\n      if (!maxDepth || depth <= maxDepth) {\n        if (!predicate || predicate(node.element)) {\n          results.push(node);\n          action?.(node.element);\n        }\n        for (const child of node.children) {\n          queue.push([child, depth + 1]);\n        }\n      }\n    }\n    return results;\n  }\n\n  toSubmodelElement(): SubmodelElement {\n    return this.element;\n  }\n}\n\nexport class SubmodelElementNodeList extends SubmodelElementNode {\n  private _elements: SubmodelElementNode[] = [];\n  private _elementNodeMap: Map<SubmodelElement, SubmodelElementNode> = new Map();\n\n  constructor(\n    public element: SubmodelElementList,\n  ) {\n    super(element);\n  }\n\n  get isList(): boolean {\n    return true;\n  }\n\n  indexOf(child: SubmodelElement): number {\n    let index = -1;\n    const node = this._elementNodeMap.get(child);\n    if (node) {\n      index = this._elements.indexOf(node);\n    }\n    return index;\n  }\n\n  includes(element: SubmodelElement): boolean {\n    return this._elementNodeMap.has(element);\n  }\n\n  private addElementToMap(element: SubmodelElement): SubmodelElementNode {\n    const childNode: SubmodelElementNode = SubmodelElementNode.from(element);\n    this._elementNodeMap.set(element, childNode);\n    SubmodelElementNode.setParent(this, childNode);\n    return childNode;\n  }\n\n  add(element: SubmodelElement) {\n    if (this.includes(element)) {\n      throw new Error('Element already exists in the list.');\n    }\n    const childNode = this.addElementToMap(element);\n    this._elements.push(childNode);\n  }\n\n  replaceAt(index: number, element: SubmodelElement) {\n    if (index < 0 || index >= this._elements.length) {\n      throw new Error('Index out of bounds.');\n    }\n    const childNode = this.addElementToMap(element);\n    this._elements[index] = childNode;\n  }\n\n  removeAt(index: number) {\n    if (index < 0 || index >= this._elements.length) {\n      throw new Error('Index out of bounds.');\n    }\n    const elementNode = this._elements[index];\n    this._elementNodeMap.delete(elementNode.element);\n    this._elements.splice(index, 1);\n    SubmodelElementNode.removeParent(elementNode);\n  }\n\n  remove(element: SubmodelElement): boolean {\n    let removed: boolean = false;\n    const index = this.indexOf(element);\n    if (index !== -1) {\n      this.removeAt(index);\n      removed = true;\n    }\n    return removed;\n  }\n\n  clear() {\n    this._elements.forEach((elementNode) => {\n      SubmodelElementNode.removeParent(elementNode);\n    });\n    this._elements = [];\n    this._elementNodeMap.clear();\n  }\n\n  get length(): number {\n    return this._elements.length;\n  }\n\n  values(): SubmodelElement[] {\n    return this._elements.map(node => node.element);\n  }\n\n  entries(): [number, SubmodelElement][] {\n    return this._elements.map((node, index) => [index, node.element]);\n  }\n\n  get(index: number): SubmodelElement {\n    if (index < 0 || index >= this._elements.length) {\n      throw new Error('Index out of bounds.');\n    }\n    return this._elements[index].element;\n  }\n\n  [Symbol.iterator](): Iterator<SubmodelElement> {\n    return this._elements.map(node => node.element)[Symbol.iterator]();\n  }\n\n  get children(): SubmodelElementNode[] {\n    return Array.from(this._elements);\n  }\n\n  toSubmodelElement(): SubmodelElement {\n    const sel: SubmodelElementList = this.element;\n    sel.value = this._elements.map(node => node.toSubmodelElement());\n    return sel;\n  }\n}\n\nexport class SubmodelElementCollectionNode extends SubmodelElementNode {\n  private _elementMap: Map<string, SubmodelElementNode> = new Map();\n\n  constructor(\n    public element: SubmodelElementCollection | AnnotatedRelationshipElement | Entity,\n  ) {\n    super(element);\n  }\n\n  get isCollection(): boolean {\n    return true;\n  }\n\n  set(element: SubmodelElement): SubmodelElementCollectionNode {\n    if (!element.idShort) {\n      throw new Error('Element must have an idShort.');\n    }\n    if (this._elementMap.has(element.idShort)) {\n      this.delete(element.idShort);\n    }\n    const childNode: SubmodelElementNode = SubmodelElementNode.from(element);\n    this._elementMap.set(element.idShort, childNode);\n    SubmodelElementNode.setParent(this, childNode);\n    return this;\n  }\n\n  get(idShort: string): SubmodelElement | undefined {\n    return this._elementMap.get(idShort)?.element;\n  }\n\n  delete(idShort: string): boolean {\n    let deleted = false;\n    const node = this._elementMap.get(idShort);\n    if (node) {\n      this._elementMap.delete(idShort);\n      SubmodelElementNode.removeParent(node);\n      deleted = true;\n    }\n    return deleted;\n  }\n\n  has(idShort: string): boolean {\n    return this._elementMap.has(idShort);\n  }\n\n  clear() {\n    this._elementMap.forEach((elementNode) => {\n      SubmodelElementNode.removeParent(elementNode);\n    });\n    this._elementMap.clear();\n  }\n\n  keys(): string[] {\n    return Array.from(this._elementMap.keys());\n  }\n\n  values(): SubmodelElement[] {\n    return Array.from(this._elementMap.values()).map(node => node.element);\n  }\n\n  entries(): [string, SubmodelElement][] {\n    return Array.from(this._elementMap.entries()).map(([key, node]) => [key, node.element]);\n  }\n\n  forEach(callback: (element: SubmodelElement, idShort: string) => void): void {\n    this._elementMap.forEach((node, idShort) => {\n      callback(node.element, idShort);\n    });\n  }\n\n  get size(): number {\n    return this._elementMap.size;\n  }\n\n  [Symbol.iterator](): Iterator<[string, SubmodelElement]> {\n    return this.entries()[Symbol.iterator]();\n  }\n\n  get children(): SubmodelElementNode[] {\n    return Array.from(this._elementMap.values());\n  }\n\n  toSubmodelElement(): SubmodelElement {\n    const values = [...this._elementMap.values()].map(node => node.toSubmodelElement());\n    if (this.element.modelType === 'AnnotatedRelationshipElement') {\n      (this.element as AnnotatedRelationshipElement).annotations = values;\n    }\n    else if (this.element.modelType === 'Entity') {\n      (this.element as Entity).statements = values;\n    }\n    else {\n      (this.element as SubmodelElementCollection).value = values;\n    }\n    return this.element;\n  }\n}\n","import type { Submodel } from '../Metamodel/Submodel';\nimport type { SubmodelElement } from '../Metamodel/SubmodelElements/SubmodelElement';\nimport { SubmodelElementNode } from './SubmodelElementNode';\n\nexport class SubmodelTree {\n  private _elementMap: Map<string, SubmodelElementNode> = new Map();\n\n  constructor(\n    public submodel: Submodel,\n  ) { }\n\n  delete(idShort: string): SubmodelElementNode | undefined {\n    const element = this._elementMap.get(idShort);\n    if (element) {\n      this._elementMap.delete(idShort);\n      element.removeFromSubmodel();\n    }\n    return element;\n  }\n\n  set(element: SubmodelElement): SubmodelTree {\n    if (!element.idShort) {\n      throw new Error('Element must have an idShort.');\n    }\n    if (this._elementMap.has(element.idShort)) {\n      this.delete(element.idShort);\n    }\n    const childNode: SubmodelElementNode = SubmodelElementNode.from(element);\n    this._elementMap.set(element.idShort, childNode);\n    childNode.addToSubmodel(this);\n    return this;\n  }\n\n  has(idShort: string): boolean {\n    return this._elementMap.has(idShort);\n  }\n\n  get(idShort: string): SubmodelElement | undefined {\n    return this._elementMap.get(idShort)?.element;\n  }\n\n  clear() {\n    this._elementMap.forEach((elementNode) => {\n      elementNode.removeFromSubmodel();\n    });\n    this._elementMap.clear();\n  }\n\n  keys(): string[] {\n    return Array.from(this._elementMap.keys());\n  }\n\n  values(): SubmodelElement[] {\n    return Array.from(this._elementMap.values()).map(node => node.element);\n  }\n\n  entries(): [string, SubmodelElement][] {\n    return Array.from(this._elementMap.entries()).map(([key, node]) => [key, node.element]);\n  }\n\n  forEach(callback: (element: SubmodelElement, idShort: string) => void): void {\n    this._elementMap.forEach((node, idShort) => {\n      callback(node.element, idShort);\n    });\n  }\n\n  get size(): number {\n    return this._elementMap.size;\n  }\n\n  [Symbol.iterator](): IterableIterator<[string, SubmodelElement]> {\n    return this.entries()[Symbol.iterator]();\n  }\n\n  deepSearch(\n    predicate?: (element: SubmodelElement) => boolean,\n    action?: (element: SubmodelElement) => void,\n    maxDepth?: number,\n  ): SubmodelElementNode[] {\n    const result: SubmodelElementNode[] = [];\n    this._elementMap.forEach((node) => {\n      node.deepSearch(predicate, action, maxDepth).forEach((foundNode) => {\n        result.push(foundNode);\n      });\n    });\n    return result;\n  }\n\n  breadthFirstSearch(\n    predicate?: (element: SubmodelElement) => boolean,\n    action?: (element: SubmodelElement) => void,\n    maxDepth?: number,\n  ): SubmodelElementNode[] {\n    const result: SubmodelElementNode[] = [];\n    this._elementMap.forEach((node) => {\n      node.breadthFirstSearch(predicate, action, maxDepth).forEach((foundNode) => {\n        result.push(foundNode);\n      });\n    });\n    return result;\n  }\n\n  toSubmodel(): Submodel {\n    const submodel = this.submodel;\n    submodel.submodelElements = Array.from(this._elementMap.values()).map(node => node.toSubmodelElement());\n    return submodel;\n  }\n}\n","import type { AssetAdministrationShell } from '../Metamodel/AssetAdministrationShell';\nimport type { ConceptDescription } from '../Metamodel/ConceptDescription';\nimport type { Submodel } from '../Metamodel/Submodel';\nimport type { SubmodelElement } from '../Metamodel/SubmodelElements/SubmodelElement';\nimport type { LangString } from '../Metamodel/SupportTypes/LangString';\nimport type { Reference } from '../Metamodel/SupportTypes/Reference';\nimport { KeyTypes } from '../Metamodel/Enums/KeyTypes';\nimport { ModelType } from '../Metamodel/Enums/ModelType';\nimport { ReferenceTypes } from '../Metamodel/Enums/ReferenceTypes';\n\n/**\n * Represents an IdShort pattern somewhere in a\n * string and contains the group \"idShort\".\n */\nexport const ID_SHORT_REGEX = /(?<idShort>[a-z]\\w*)/i;\n\n/**\n * Pattern to test whether a string is a valid IdShort.\n * It applies to the full string.\n */\nexport const JUST_ID_SHORT_REGEX = /^[a-z]\\w*$/i;\n\n/**\n * Represents an index pattern somewhere in a string and contains the\n * group \"index\".\n */\nexport const INDEX_REGEX = /\\[(?<index>\\d+)\\]/;\n\n/**\n * Represents an index pattern at the end of a string and contains the\n * group \"index\".\n */\nexport const LAST_INDEX_REGEX = /\\[(?<index>\\d+)\\]$/;\n\nexport const langStringsToMap = (langString: LangString[]): Map<string, string> => {\n  const map = new Map<string, string>();\n  langString.forEach((lang) => {\n    map.set(lang.language, lang.text);\n  });\n  return map;\n};\n\nexport const mapToLangStrings = (map: Map<string, string>): LangString[] => {\n  const langStrings: LangString[] = [];\n  map.forEach((text, language) => {\n    langStrings.push({ language, text });\n  });\n  return langStrings;\n};\n\nexport const modelTypeToKeyType = (modelType: ModelType): KeyTypes => {\n  let keyType: KeyTypes;\n  switch (modelType) {\n    case ModelType.AssetAdministrationShell:\n      keyType = KeyTypes.AssetAdministrationShell;\n      break;\n    case ModelType.Submodel:\n      keyType = KeyTypes.Submodel;\n      break;\n    case ModelType.ConceptDescription:\n      keyType = KeyTypes.ConceptDescription;\n      break;\n    case ModelType.AnnotatedRelationshipElement:\n      keyType = KeyTypes.AnnotatedRelationshipElement;\n      break;\n    case ModelType.Capability:\n      keyType = KeyTypes.Capability;\n      break;\n    case ModelType.BasicEventElement:\n      keyType = KeyTypes.BasicEventElement;\n      break;\n    case ModelType.Blob:\n      keyType = KeyTypes.Blob;\n      break;\n    case ModelType.File:\n      keyType = KeyTypes.File;\n      break;\n    case ModelType.MultiLanguageProperty:\n      keyType = KeyTypes.MultiLanguageProperty;\n      break;\n    case ModelType.Property:\n      keyType = KeyTypes.Property;\n      break;\n    case ModelType.Range:\n      keyType = KeyTypes.Range;\n      break;\n    case ModelType.ReferenceElement:\n      keyType = KeyTypes.ReferenceElement;\n      break;\n    case ModelType.RelationshipElement:\n      keyType = KeyTypes.RelationshipElement;\n      break;\n    case ModelType.SubmodelElementCollection:\n      keyType = KeyTypes.SubmodelElementCollection;\n      break;\n    case ModelType.SubmodelElementList:\n      keyType = KeyTypes.SubmodelElementList;\n      break;\n    case ModelType.Operation:\n      keyType = KeyTypes.Operation;\n      break;\n    case ModelType.Entity:\n      keyType = KeyTypes.Entity;\n      break;\n    default:\n      throw new Error(`Model type '${modelType}' can't be converted to a key type.`);\n  }\n  return keyType;\n};\n\nexport const referenceFrom = (data: AssetAdministrationShell | Submodel | ConceptDescription | SubmodelElement): Reference => {\n  const ref: Reference = {\n    type: ReferenceTypes.ModelReference,\n    keys: [],\n    referredSemanticId: undefined,\n  };\n  switch (data.modelType) {\n    case ModelType.AssetAdministrationShell:\n      ref.keys.push({\n        type: KeyTypes.AssetAdministrationShell,\n        value: (data as AssetAdministrationShell).id,\n      });\n      break;\n    case ModelType.Submodel:\n      ref.keys.push({\n        type: KeyTypes.Submodel,\n        value: (data as Submodel).id,\n      });\n      ref.referredSemanticId = (data as Submodel).semanticId;\n      break;\n    case ModelType.ConceptDescription:\n      ref.keys.push({\n        type: KeyTypes.ConceptDescription,\n        value: (data as ConceptDescription).id,\n      });\n      break;\n    default:\n    {\n      const se = data as SubmodelElement;\n      if (!se.idShort) {\n        throw new Error('SubmodelElement does not have an idShort.');\n      }\n      ref.keys.push({\n        type: modelTypeToKeyType(data.modelType),\n        value: se.idShort,\n      });\n      ref.referredSemanticId = se.semanticId;\n    }\n  }\n  return ref;\n};\n","import { ID_SHORT_REGEX, JUST_ID_SHORT_REGEX, LAST_INDEX_REGEX } from './AasUtils';\n\n/**\n * Pattern for a valid IdShortPath. It applies to the full string.\n */\nexport const ID_SHORT_PATH_REGEX = /^[a-z]\\w*(\\[\\d+\\])*(\\.[a-z]\\w*(\\[\\d+\\])*)*$/i;\n\n/**\n * Pattern for a valid IdShortPath segment. It is used to find the segments in\n * a string and contains the group \"segment\".\n */\nexport const ID_SHORT_PATH_SEGMENT_REGEX = /(?<segment>[a-z]\\w*)(\\[\\d+\\])*/i;\n\n/**\n * Utility class for working with IdShortPaths.\n */\nexport class IdShortPath {\n  private _path: string;\n\n  static validatePath(path: string): boolean {\n    return ID_SHORT_PATH_REGEX.test(path);\n  }\n\n  static validatePathOrThrow(path: string): void {\n    if (!IdShortPath.validatePath(path)) {\n      throw new Error(`Invalid IdShortPath: ${path}`);\n    }\n  }\n\n  constructor(\n    path: string,\n  ) {\n    IdShortPath.validatePathOrThrow(path);\n    this._path = path;\n  }\n\n  get path(): string {\n    return this._path;\n  }\n\n  isValid(): boolean {\n    return IdShortPath.validatePath(this._path);\n  }\n\n  isListItem(): boolean {\n    return this._path.endsWith(']');\n  }\n\n  hasIdShort(): boolean {\n    return !this.isListItem();\n  }\n\n  hasParent(): boolean {\n    return this._path.includes('.') || this.isListItem();\n  }\n\n  isRoot(): boolean {\n    return !this.hasParent();\n  }\n\n  joinPath(path: string) {\n    this._path = `${this._path}.${path}`;\n    IdShortPath.validatePathOrThrow(this._path);\n  }\n\n  joinIdShort(idShort: string) {\n    if (JUST_ID_SHORT_REGEX.test(idShort)) {\n      this.joinPath(idShort);\n    }\n    else {\n      throw new Error(`${idShort} is not a valid IdShort.`);\n    }\n  }\n\n  joinIndex(index: number) {\n    this._path = `${this._path}[${index}]`;\n    IdShortPath.validatePathOrThrow(this._path);\n  }\n\n  get index(): number {\n    let index = -1;\n    const match = this._path.match(LAST_INDEX_REGEX);\n    if (match && match.groups && match.groups.index) {\n      index = Number.parseInt(match.groups.index, 10);\n    }\n    else {\n      throw new Error(`${this._path} is not an index element.`);\n    }\n    return index;\n  }\n\n  get segments(): string[] {\n    return this._path.split('.');\n  }\n\n  get lastSegment(): string {\n    return this.segments[this.segments.length - 1];\n  }\n\n  get firstSegment(): string {\n    return this.segments[0];\n  }\n\n  get idShort(): string {\n    const lastSegment = this.lastSegment;\n    if (JUST_ID_SHORT_REGEX.test(lastSegment)) {\n      return lastSegment;\n    }\n    else {\n      throw new Error(`${this._path} is an index element.`);\n    }\n  }\n\n  get parent(): IdShortPath {\n    let parentPath: IdShortPath;\n    if (this.hasParent()) {\n      if (this.isListItem()) {\n        // remove the last index\n        const parentPathString = this._path.substring(0, this._path.lastIndexOf('['));\n        parentPath = new IdShortPath(parentPathString);\n      }\n      else {\n        // remove the last segment\n        const parentPathString = this._path.substring(0, this._path.lastIndexOf('.'));\n        parentPath = new IdShortPath(parentPathString);\n      }\n    }\n    else {\n      throw new Error(`${this._path} has no parent.`);\n    }\n    return parentPath;\n  }\n\n  get root(): string {\n    let idsp = new IdShortPath(this.firstSegment);\n    while (idsp.hasParent()) {\n      idsp = idsp.parent;\n    }\n    return idsp.path;\n  }\n\n  changeIndex(newIndex: number) {\n    if (this.isListItem()) {\n      const parentPath = this.parent;\n      this._path = `${parentPath._path}[${newIndex}]`;\n      IdShortPath.validatePathOrThrow(this._path);\n    }\n    else {\n      throw new Error(`${this._path} is not an index element.`);\n    }\n  }\n\n  changeIdShort(newIdShort: string) {\n    if (JUST_ID_SHORT_REGEX.test(newIdShort)) {\n      if (this.hasIdShort()) {\n        const parentPath = this.parent;\n        this._path = `${parentPath._path}.${newIdShort}`;\n        IdShortPath.validatePathOrThrow(this._path);\n      }\n      else {\n        throw new Error(`${this._path} is a list item and has no idShort.`);\n      }\n    }\n    else {\n      throw new Error(`${newIdShort} is not a valid IdShort.`);\n    }\n  }\n\n  get allIdShorts(): string[] {\n    const match = this._path.match(ID_SHORT_REGEX);\n    let idShorts: string[];\n    if (match) {\n      idShorts = match.map(m => m[0]);\n    }\n    else {\n      idShorts = [];\n    }\n    return idShorts;\n  }\n\n  removeIndex() {\n    if (this.isListItem()) {\n      const parentPath = this.parent;\n      this._path = parentPath._path;\n      IdShortPath.validatePathOrThrow(this._path);\n    }\n    else {\n      throw new Error(`${this._path} is not an index element.`);\n    }\n  }\n\n  get allIdShortPaths(): string[] {\n    const idShortPaths: string[] = [];\n    // eslint-disable-next-line ts/no-this-alias\n    let idsp: IdShortPath = this;\n    while (idsp.hasParent()) {\n      idShortPaths.push(idsp.path);\n      idsp = idsp.parent;\n    }\n    idShortPaths.push(idsp.path);\n    return idShortPaths.reverse();\n  }\n}\n","export const VALID_ID_SEGMENT_REGEX = /^[\\w.-]+$/;\n\nexport const validateIdSegmentOrThrow = (idSegment: string): void => {\n  if (!VALID_ID_SEGMENT_REGEX.test(idSegment)) {\n    throw new Error(\n      `Invalid ID segment: ${idSegment}. It must match the regex ${VALID_ID_SEGMENT_REGEX}.`,\n    );\n  }\n};\n\nexport const uuidv4 = (): string => {\n  if (typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function') {\n    // Use crypto.getRandomValues() if available\n    const array = new Uint8Array(16);\n    crypto.getRandomValues(array);\n\n    // Set the version (4) and variant (10xx)\n    array[6] = (array[6] & 0x0F) | 0x40; // Version 4\n    array[8] = (array[8] & 0x3F) | 0x80; // Variant 10xx\n\n    // Convert to UUID format\n    return [...array]\n      .map((byte, index) => {\n        const hex = byte.toString(16).padStart(2, '0');\n        return [4, 6, 8, 10].includes(index) ? `-${hex}` : hex;\n      })\n      .join('');\n  }\n  else {\n    // Fallback to Math.random() if crypto is not available\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n      const random = Math.random() * 16 | 0; // Generate a random number between 0 and 15\n      const value = char === 'x' ? random : (random & 0x3) | 0x8; // Set the correct bits for 'y'\n      return value.toString(16); // Convert to hexadecimal\n    });\n  }\n};\n\nexport class LeisoftAasId {\n  domain?: string;\n  idType?: 'asset' | 'shell' | 'submodel' | 'concept-description';\n  id?: string;\n  units?: string[];\n\n  toUrn(): string {\n    let urn = 'urn:';\n    if (this.domain) {\n      validateIdSegmentOrThrow(this.domain);\n      urn += `${this.domain}:`;\n    }\n    else {\n      urn += 'client.leisoft.de:';\n    }\n    if (this.units) {\n      this.units.forEach((unit) => {\n        validateIdSegmentOrThrow(unit);\n        urn += `${unit}:`;\n      });\n    }\n    switch (this.idType) {\n      case 'asset':\n        urn += 'assets';\n        break;\n      case 'shell':\n        urn += 'shells';\n        break;\n      case 'submodel':\n        urn += 'submodels';\n        break;\n      case 'concept-description':\n        urn += 'concept_descriptions';\n        break;\n      default:\n        urn += 'entities';\n        break;\n    }\n    urn += ':ids:';\n    if (this.id) {\n      validateIdSegmentOrThrow(this.id);\n      urn += this.id;\n    }\n    else {\n      urn += uuidv4();\n    }\n    return urn;\n  }\n\n  toUrl(protocol: 'http' | 'https' | 'ftp' | 'ftps' | 'sftp' | 'file'): string {\n    let url = `${protocol}://`;\n    if (this.domain) {\n      validateIdSegmentOrThrow(this.domain);\n      url += `${this.domain}/`;\n    }\n    else if (protocol === 'file') {\n      url += '/';\n    }\n    else {\n      url += 'client.leisoft.de/';\n    }\n    if (this.units) {\n      this.units.forEach((unit) => {\n        validateIdSegmentOrThrow(unit);\n        url += `${unit}/`;\n      });\n    }\n    switch (this.idType) {\n      case 'asset':\n        url += 'assets';\n        break;\n      case 'shell':\n        url += 'shells';\n        break;\n      case 'submodel':\n        url += 'submodels';\n        break;\n      case 'concept-description':\n        url += 'concept_descriptions';\n        break;\n      default:\n        url += 'entities';\n        break;\n    }\n    url += '/ids/';\n    if (this.id) {\n      validateIdSegmentOrThrow(this.id);\n      url += this.id;\n    }\n    else {\n      url += uuidv4();\n    }\n    return url;\n  }\n\n  static from(other: LeisoftAasId): LeisoftAasId {\n    const newId = new LeisoftAasId();\n    newId.domain = other.domain;\n    newId.idType = other.idType;\n    newId.id = other.id;\n    newId.units = other.units ? [...other.units] : undefined;\n    return newId;\n  }\n}\n"],"mappings":"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","names":["ProtocolInformationSecurityAttributeTypes","ServiceProfiles","AasSubmodelElements","AssetKind","DataTypeDefXsd","DataTypeIec61360","Direction","EntityType","KeyTypes","ModellingKind","ModelType","QualifierKind","ReferenceTypes","StateOfEvent","AasRequestError","request","response","messages","assignSearchParams","params","assign","key","val","v","assignPagingParams","pagingParams","paging","assignSerializationModifiers","serializationModifiers","base64Url","str","encodeSpecificAssetId","id","json","encodeReference","ref","assignSemanticId","semanticId","assertValidAasResponse","request","response","converserionType","messages","AasRequestError","result","assignAssetParams","assetIds","idShort","assignReferences","referencesMapping","encoded","headersLength","headers","count","ClientBase","configParams","protocol","port","basePath","url","method","path","params","body","signal","headers","headersLength","request","response","auth","credentials","assertValidAasResponse","AasRegistryClient","ClientBase","assetKind","assetType","pagingParams","signal","params","assignSearchParams","assignPagingParams","request","response","assertValidAasResponse","descriptor","id","AasRepoClient","ClientBase","assetIds","idShort","pagingParams","signal","params","assignAssetParams","assignPagingParams","request","response","assertValidAasResponse","shell","id","base64Url","assetInformation","thumbnail","submodelRef","submodelRefId","ConceptDescriptionClient","ClientBase","idShort","isCaseOf","dataSpecificationRef","pagingParams","signal","params","assignSearchParams","assignReferences","assignPagingParams","request","response","assertValidAasResponse","conceptDescription","id","DiscoveryClient","ClientBase","assetIds","pagingParams","signal","params","assignAssetParams","assignPagingParams","request","response","assertValidAasResponse","id","SubmodelRegistryClient","ClientBase","pagingParams","signal","params","assignPagingParams","request","response","assertValidAasResponse","descriptor","id","SubmodelRepoClient","ClientBase","semanticId","idShort","pagingParams","serializationModifiers","signal","params","assignSearchParams","assignSemanticId","assignPagingParams","assignSerializationModifiers","request","response","assertValidAasResponse","submodel","id","base64Url","level","metadata","submodelId","element","idShortPath","file","fileName","formData","operationRequest","invokeAsync","handleId","ExecutionState","SubmodelElementNode","_SubmodelElementNode","element","submodel","path","index","_child","parent","child","childNode","SubmodelElementCollectionNode","elements","childElement","SubmodelElementNodeList","sel","predicate","action","maxDepth","results","childResults","queue","node","depth","elementNode","removed","idShort","deleted","key","callback","values","SubmodelTree","submodel","idShort","element","childNode","SubmodelElementNode","elementNode","node","key","callback","predicate","action","maxDepth","result","foundNode","ID_SHORT_REGEX","JUST_ID_SHORT_REGEX","INDEX_REGEX","LAST_INDEX_REGEX","langStringsToMap","langString","map","lang","mapToLangStrings","langStrings","text","language","modelTypeToKeyType","modelType","keyType","referenceFrom","data","ref","se","ID_SHORT_PATH_REGEX","ID_SHORT_PATH_SEGMENT_REGEX","IdShortPath","_IdShortPath","path","idShort","JUST_ID_SHORT_REGEX","index","match","LAST_INDEX_REGEX","lastSegment","parentPath","parentPathString","idsp","newIndex","newIdShort","ID_SHORT_REGEX","idShorts","m","idShortPaths","VALID_ID_SEGMENT_REGEX","validateIdSegmentOrThrow","idSegment","uuidv4","array","byte","index","hex","char","random","LeisoftAasId","_LeisoftAasId","urn","unit","protocol","url","other","newId"]}