@inweb/client 25.6.5 → 25.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sources":["../src/Api/FetchError.ts","../src/Api/Model.ts","../src/Api/Utils.ts","../src/Api/ClashTest.ts","../src/Api/Assembly.ts","../../eventemitter2/dist/eventemitter2.module.js","../src/Api/Fetch.ts","../src/Api/XMLHttp.ts","../src/Api/HttpClient.ts","../src/Api/Permission.ts","../src/Api/Job.ts","../src/Api/File.ts","../src/Api/Role.ts","../src/Api/Member.ts","../src/Api/Project.ts","../src/Api/User.ts","../src/Api/Client.ts","../src/index.ts"],"sourcesContent":["///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nconst STATUS_CODES = {\n 100: \"Continue\",\n 101: \"Switching Protocols\",\n 102: \"Processing\",\n 103: \"Early Hints\",\n 200: \"OK\",\n 201: \"Created\",\n 202: \"Accepted\",\n 203: \"Non-Authoritative Information\",\n 204: \"No Content\",\n 205: \"Reset Content\",\n 206: \"Partial Content\",\n 207: \"Multi-Status\",\n 208: \"Already Reported\",\n 226: \"IM Used\",\n 300: \"Multiple Choices\",\n 301: \"Moved Permanently\",\n 302: \"Found\",\n 303: \"See Other\",\n 304: \"Not Modified\",\n 305: \"Use Proxy\",\n 307: \"Temporary Redirect\",\n 308: \"Permanent Redirect\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 402: \"Payment Required\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 406: \"Not Acceptable\",\n 407: \"Proxy Authentication Required\",\n 408: \"Request Time-out\",\n 409: \"Conflict\",\n 410: \"Gone\",\n 411: \"Length Required\",\n 412: \"Precondition Failed\",\n 413: \"Payload Too Large\",\n 414: \"URI Too Long\",\n 415: \"Unsupported Media Type\",\n 416: \"Range Not Satisfiable\",\n 417: \"Expectation Failed\",\n 418: \"I'm a teapot\",\n 421: \"Misdirected Request\",\n 422: \"Unprocessable Entity\",\n 423: \"Locked\",\n 424: \"Failed Dependency\",\n 425: \"Too Early\",\n 426: \"Upgrade Required\",\n 428: \"Precondition Required\",\n 429: \"Too Many Requests\",\n 431: \"Header Fields Too Large\",\n 451: \"Unavailable For Legal Reasons\",\n 500: \"Internal Server Error\",\n 501: \"Not Implemented\",\n 502: \"Bad Gateway\",\n 503: \"Service Unavailable\",\n 504: \"Gateway Timeout\",\n 505: \"HTTP Version Not Supported\",\n 506: \"Variant Also Negotiates\",\n 507: \"Insufficient Storage\",\n 508: \"Loop Detected\",\n 509: \"Bandwidth Limit Exceeded\",\n 510: \"Not Extended\",\n 511: \"Network Authentication Required\",\n};\n\nexport function statusText(status: number): string {\n return STATUS_CODES[status] || `Error ${status}`;\n}\n\nexport function error400(text: string, _default = \"400\"): string {\n try {\n return JSON.parse(text).description;\n } catch {\n return _default;\n }\n}\n\n/**\n * The `FetchError` object indicates an error when request to Open Cloud Server could not be\n * performed. A `FetchError` is typically (but not exclusively) thrown when a network error\n * occurs, access denied, or object not found.\n */\n\nexport class FetchError extends Error {\n protected status: number;\n protected statusText: string;\n\n /**\n * @property status - The <a href=\"https://developer.mozilla.org/docs/Web/HTTP/Status\" target\n * =\"_blank\">HTTP status code</a> of the response.\n * @property message - Error message. Inherited from <a\n * href=\"https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Error\"\n * target =\"_blank\">Error</a>.\n */\n constructor(status: number, message?: string) {\n super(message || statusText(status));\n this.name = \"FetchError\";\n this.status = status;\n this.statusText = statusText(status);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport type { File } from \"./File\";\nimport type { Assembly } from \"./Assembly\";\n\n/**\n * The class representing the is a description of view of the file or assembly. For example,\n * for `dwg` it is a `Model` space or layout, and for `rvt` files it is a `3D` view.\n */\nexport class Model {\n private _data: any;\n private _file: File | Assembly;\n public httpClient: IHttpClient;\n public path: string;\n\n /**\n * @param data - An object that implements model data storage.\n * @param file - The `File` of 'Assembly' instance that owns the model.\n */\n constructor(data: any, file: File | Assembly) {\n this.path = `${file.path}/downloads`;\n this.httpClient = file.httpClient;\n this._file = file;\n this._data = data;\n }\n\n /**\n * The `Assembly` instance that owns the model.\n *\n * @readonly\n */\n get assembly(): Assembly {\n return this._file as Assembly;\n }\n\n /**\n * Raw model data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n }\n\n /**\n * Scene description resource file name. Use {@link Model.downloadResource()} to download\n * scene description file.\n *\n * @readonly\n */\n get database(): string {\n return this.data.database;\n }\n\n /**\n * `true` if this is default model.\n *\n * @readonly\n */\n get default(): boolean {\n return this.data.default;\n }\n\n /**\n * The `File` instance that owns the model.\n *\n * @readonly\n */\n get file(): File {\n return this._file as File;\n }\n\n /**\n * The ID of the file that owns the model.\n *\n * @readonly\n */\n get fileId(): string {\n return this.data.fileId;\n }\n\n /**\n * The list of geometry data resource files. Use {@link Model.downloadResource()} to download\n * geometry data files.\n *\n * @readonly\n */\n get geometry(): string[] {\n return this.data.geometry;\n }\n\n /**\n * Unique model ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Model name.\n *\n * @readonly\n */\n get name(): string {\n return this.data.name;\n }\n\n /**\n * Model owner type, matches the file extension this is model of the file, or `assembly` for\n * assemblies.\n *\n * @readonly\n */\n get type(): string {\n return this.file.type;\n }\n\n // Reserved for future use.\n get version(): string {\n return this.data.version;\n }\n\n /**\n * Returns model list with one item `self`.\n *\n * @async\n */\n getModels(): Promise<Model[]> {\n return Promise.resolve([this]);\n }\n\n /**\n * Returns a model transformation.\n *\n * @param handle - Model handle.\n */\n getModelTransformMatrix(handle: string): any {\n return this.file.getModelTransformMatrix(handle);\n }\n\n /**\n * Set or delete a model transformation.\n *\n * @async\n * @param handle - Model handle.\n * @param transform - Transformation matrix. To delete transformation provide this to `undefined`.\n */\n setModelTransformMatrix(handle: string, transform: any): Promise<this> {\n return this.file.setModelTransformMatrix(handle, transform).then(() => this);\n }\n\n /**\n * Returns model viewpoint list.\n *\n * @async\n */\n getViewpoints(): Promise<any[]> {\n return this._file\n .getViewpoints()\n .then((array) =>\n array.filter(\n ({ custom_fields = {} }) => custom_fields.modelId === this.id || custom_fields.modelName === this.name\n )\n );\n }\n\n /**\n * Add new model viewpoint. To create a new viewpoint use `Viewer.createViewpoint()`.\n *\n * @async\n * @param viewpoint - Viewpoint.\n */\n saveViewpoint(viewpoint: any): Promise<any> {\n return this._file.saveViewpoint({\n ...viewpoint,\n custom_fields: { ...viewpoint.custom_fields, modelId: this.id, modelName: this.name },\n });\n }\n\n /**\n * Delete model viewpoint.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @returns Returns the raw data of a deleted viewpoint.\n */\n deleteViewpoint(guid: string): Promise<any> {\n return this._file.deleteViewpoint(guid);\n }\n\n /**\n * Returns viewpoint preview image as\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}.\n *\n * @async\n * @param guid - Viewpoint GIID.\n */\n getSnapshot(guid: string): Promise<string> {\n return this._file.getSnapshot(guid);\n }\n\n /**\n * Returns snapshot data.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @param bitmapGuid - Bitmap GUID.\n */\n getSnapshotData(guid: string, bitmapGuid: string): Promise<string> {\n return this._file.getSnapshotData(guid, bitmapGuid);\n }\n\n /**\n * Download model resource file. Resource files are files that contain model scene\n * descriptions, or geometry data.\n *\n * @async\n * @param dataId - Resource file name.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResource(\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n return this._file.downloadResource(dataId, onProgress, signal);\n }\n\n /**\n * Download a part of model resource file. Resource files are files that contain model scene\n * descriptions, or geometry data.\n *\n * @param dataId - Resource file name.\n * @param ranges - A range of resource file contents to download.\n * @param requestId - Request ID for download progress callback.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResourceRange(\n dataId: string,\n requestId: number,\n ranges: Array<{ begin: number; end: number; requestId: number }>,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n return this._file.downloadResourceRange(dataId, requestId, ranges, onProgress, signal);\n }\n\n /**\n * Deprecated since `25.3`. Use {@link Model.downloadResource()} instead.\n */\n partialDownloadResource(\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n console.warn(\n \"Model.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use Model.downloadResource() instead.\"\n );\n return this.downloadResource(dataId, onProgress, signal);\n }\n\n /**\n * Deprecated since `25.3`. Use {@link Model.downloadResourceRange()} instead.\n */\n async downloadFileRange(\n requestId: number,\n records: any | null,\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<void> {\n if (!records) return;\n\n let ranges = [];\n if (records.length) {\n ranges = records.map((record) => ({\n begin: Number(record.begin),\n end: Number(record.end),\n requestId: record.reqId,\n }));\n } else {\n for (let i = 0; i < records.size(); i++) {\n const record = records.get(i);\n ranges.push({ begin: Number(record.begin), end: Number(record.end), requestId });\n record.delete();\n }\n }\n\n await this.downloadResourceRange(dataId, requestId, ranges, onProgress, signal);\n }\n\n /**\n * Returns a list of references to files used to extract geometry data.\n *\n * @async\n * @param [signal] - An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n */\n getReferences(signal?: AbortSignal): Promise<any> {\n return this._file.getReferences(signal);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nfunction delay(ms: number, signal: AbortSignal): Promise<boolean> {\n return new Promise((resolve) => {\n let timeoutId = 0;\n\n const abortHandler = () => {\n clearTimeout(timeoutId);\n resolve(true);\n };\n\n timeoutId = window.setTimeout(() => {\n signal.removeEventListener(\"abort\", abortHandler);\n resolve(false);\n }, ms);\n\n signal.addEventListener(\"abort\", abortHandler, { once: true });\n });\n}\n\nexport async function waitFor(\n func: (params: any) => Promise<boolean>,\n params: {\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n abortError?: DOMException;\n timeoutError?: DOMException;\n result?: any;\n } = {}\n): Promise<any> {\n const timeout = params.timeout || 600000;\n const interval = params.interval || 3000;\n const signal = params.signal ?? new AbortController().signal;\n const abortError = params.abortError ?? new DOMException(\"Aborted\", \"AbortError\");\n const timeoutError = params.timeoutError ?? new DOMException(\"Timeout\", \"TimeoutError\");\n\n const end = performance.now() + timeout;\n let count = timeout / interval;\n\n do {\n if (await func(params)) return Promise.resolve(params.result);\n if ((await delay(interval, signal)) || signal.aborted) return Promise.reject(abortError);\n } while (performance.now() < end && --count > 0);\n\n return Promise.reject(timeoutError);\n}\n\nexport function parseArgs(args?: string | object): object {\n if (typeof args === \"string\") {\n const firstArg = args.indexOf(\"--\");\n if (firstArg !== -1) args = args.slice(firstArg);\n const argArray = args\n .split(\"--\")\n .map((x) =>\n x\n .split(\"=\")\n .map((y) => y.split(\" \"))\n .flat()\n )\n .filter((x) => x[0])\n .map((x) => x.concat([\"\"]));\n return Object.fromEntries(argArray);\n }\n return args || {};\n}\n\nexport function userFullName(firstName: string | any, lastName = \"\", userName = \"\"): string {\n if (firstName && typeof firstName !== \"string\") {\n return userFullName(firstName.firstName ?? firstName.name, firstName.lastName, firstName.userName);\n }\n return `${firstName ?? \"\"} ${lastName ?? \"\"}`.trim() || userName;\n}\n\nexport function userInitials(fullName = \"\"): string {\n const names = fullName.split(\" \").filter((x) => x);\n return names\n .reduce((initials, name, index) => {\n if (index === 0 || index === names.length - 1) initials += name.charAt(0);\n return initials;\n }, \"\")\n .toUpperCase();\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { IShortUserDescription } from \"./IUser\";\nimport { waitFor, userFullName, userInitials } from \"./Utils\";\n\n/**\n * The base class provides information about the file/assembly clash detection test and test results.\n */\nexport class ClashTest {\n private _data: any;\n public basePath: string;\n public httpClient: IHttpClient;\n\n /**\n * @param data - Raw test data.\n * @param basePath - Clash tests API base path for the owner file/assembly.\n * @param httpClient - Http client.\n */\n constructor(data: any, basePath: string, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.basePath = basePath;\n this.data = data;\n }\n\n protected internalGet(relativePath: string): Promise<Response> {\n return this.httpClient.get(`${this.basePath}/clashes/${this.id}${relativePath}`);\n }\n\n protected internalPut(relativePath: string, body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`${this.basePath}/clashes/${this.id}${relativePath}`, body);\n }\n\n protected internalDelete(relativePath: string): Promise<Response> {\n return this.httpClient.delete(`${this.basePath}/clashes/${this.id}${relativePath}`);\n }\n\n /**\n * The type of the clashes that the test detects:\n *\n * - `Сlearance clash` (true) - a clash in which the entity A may or may not intersect with\n * entity B, but comes within a distance of less than the `tolerance`.\n * - `Hard clash` (false) - a clash in which the entity A intersects with entity B by a\n * distance of more than the `tolerance`.\n *\n * @readonly\n */\n get clearance(): boolean {\n return this.data.clearance;\n }\n\n /**\n * Test creation time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get createdAt(): string {\n return this.data.createdAt;\n }\n\n /**\n * Raw test data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\n this._data.owner.fullName = userFullName(this._data.owner);\n this._data.owner.initials = userInitials(this._data.owner.fullName);\n }\n\n /**\n * Unique test ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Test last update (UTC) time in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get lastModifiedAt(): string {\n return this.data.lastModifiedAt;\n }\n\n /**\n * Test name.\n */\n get name(): string {\n return this.data.name;\n }\n\n set name(value: string) {\n this.data.name = value;\n }\n\n /**\n * Test owner information.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get owner(): IShortUserDescription {\n return this.data.owner;\n }\n\n /**\n * First selection set for clash detection. Entities from `selectionSetA` will be tested\n * against each others by entities from the `selectionSetB` during the test.\n *\n * @readonly\n */\n get selectionSetA(): string[] {\n return this.data.selectionSetA;\n }\n\n /**\n * The type of first selection set for clash detection. Can be one of:\n *\n * - `all` - All file/assembly entities.\n * - `handle` - Entities with handles specified in the `selectionSetA`.\n * - `models` - Entities of file/assembly models specified in `selectionSetA`.\n * - `searchquery` - Entities retrieved by the search queries specified in `selectionSetA`.\n *\n * @readonly\n */\n get selectionTypeA(): string {\n return this.data.selectionTypeA;\n }\n\n /**\n * Second selection set for clash detection. Entities from `selectionSetB` will be tested\n * against each others by entities from the `selectionSetA` during the test.\n *\n * @readonly\n */\n get selectionSetB(): string[] {\n return this.data.selectionSetB;\n }\n\n /**\n * The type of second selection set for clash detection. Can be one of:\n *\n * - `all` - All file/assembly entities.\n * - `handle` - Entities with handles specified in the `selectionSetB`.\n * - `models` - Entities of file/assembly models specified in `selectionSetB`.\n * - `searchquery` - Entities retrieved by the search queries specified in `selectionSetB`.\n *\n * @readonly\n */\n get selectionTypeB(): string {\n return this.data.selectionTypeB;\n }\n\n /**\n * Test status. Can be `none`, `waiting`, `inprogress`, `done` or `failed`.\n *\n * @readonly\n */\n get status(): string {\n return this.data.status;\n }\n\n /**\n * The distance of separation between entities at which test begins detecting clashes.\n *\n * @readonly\n */\n get tolerance(): number {\n return this.data.tolerance;\n }\n\n /**\n * Refresh test data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet(\"\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update test data on the server.\n *\n * @async\n * @param data - Raw test data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(\"\", data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Remove a test from a file.\n *\n * @async\n * @returns Returns the raw data of a deleted test.\n */\n delete(): Promise<any> {\n return this.internalDelete(\"\").then((response) => response.json());\n }\n\n /**\n * Save test data changes to the server. Call this method to update test data on the server\n * after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n\n /**\n * Wait for test to complete. Test is done when it changes to `done` or `failed` status.\n *\n * @async\n * @param params - An object containing waiting parameters.\n * @param params.timeout - The time, in milliseconds that the function should wait test. If\n * test is not complete during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking test status.\n * @param params.signal- An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n */\n waitForDone(params?: { timeout?: number; interval?: number; signal?: AbortSignal }): Promise<this> {\n const checkDone = () => this.checkout().then((test) => [\"done\", \"failed\"].includes(test.status));\n return waitFor(checkDone, params).then(() => this);\n }\n\n /**\n * Returns a report with the clash detection results for this test.\n *\n * @async\n */\n getReport(): Promise<any> {\n return this.internalGet(\"/report\").then((response) => response.json());\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { FetchError } from \"./FetchError\";\nimport { IAssociatedFileData, IAssemblyVersionInfo } from \"./IAssembly\";\nimport { IShortUserDescription } from \"./IUser\";\nimport { Model } from \"./Model\";\nimport { ClashTest } from \"./ClashTest\";\nimport { waitFor, userFullName, userInitials } from \"./Utils\";\n\n/**\n * The class representing a `assembly` entity.\n */\nexport class Assembly {\n private _data: any;\n private _useVersion: number | undefined;\n public httpClient: IHttpClient;\n public path: string;\n\n /**\n * @param data - An object that implements assembly data storage.\n * @param httpClient - Http client.\n */\n constructor(data: any, httpClient: IHttpClient) {\n this.path = `/assemblies/${data.id}`;\n this.httpClient = httpClient;\n this.data = data;\n }\n\n public appendVersionParam(relativePath: string): string {\n if (this._useVersion === undefined) return relativePath;\n const delimiter = relativePath.includes(\"?\") ? \"&\" : \"?\";\n return `${relativePath}${delimiter}version=${this._useVersion}`;\n }\n\n protected internalGet(relativePath: string, signal?: AbortSignal): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.get(`${this.path}${relativePath}`, signal);\n }\n\n protected internalPost(relativePath: string, body?: BodyInit | object): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.post(`${this.path}${relativePath}`, body);\n }\n\n protected internalPut(relativePath: string, body?: BodyInit | object): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.put(`${this.path}${relativePath}`, body);\n }\n\n protected internalDelete(relativePath: string): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.delete(`${this.path}${relativePath}`);\n }\n\n // Reserved for future use\n\n get activeVersion(): number {\n return this.data.activeVersion;\n }\n\n /**\n * List of unique files from which the assembly was created.\n *\n * @readonly\n */\n get associatedFiles(): IAssociatedFileData[] {\n return this.data.associatedFiles;\n }\n\n /**\n * Assembly creation time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get created(): string {\n return this.data.created;\n }\n\n /**\n * Raw assembly data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\n this._data.owner.fullName = userFullName(this._data.owner);\n this._data.owner.initials = userInitials(this._data.owner.fullName);\n // associatedFiles since 23.12\n this._data.associatedFiles ??= [];\n this._data.associatedFiles.forEach((file) => (file.link = `${this.httpClient.serverUrl}/files/${file.fileId}`));\n }\n\n /**\n * List of file IDs from which the assembly was created.\n *\n * @readonly\n */\n get files(): string[] {\n return this.data.files;\n }\n\n /**\n * Assembly geometry data type:\n *\n * - `vsfx` - VSFX, assembly can be opened in `VisualizeJS` viewer.\n *\n * Returns an empty string if geometry data has not yet been extracted.\n */\n get geometryType(): string {\n return this.status === \"done\" ? \"vsfx\" : \"\";\n }\n\n /**\n * Unique assembly ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Assembly name.\n */\n get name(): string {\n return this.data.name;\n }\n\n set name(value: string) {\n this.data.name = value;\n }\n\n // Reserved for future use\n\n get originalAssemblyId(): string {\n return this.data.originalAssemblyId;\n }\n\n /**\n * Assembly owner information.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get owner(): IShortUserDescription {\n return this.data.owner;\n }\n\n // Reserved for future use\n\n get previewUrl(): string {\n return this.data.previewUrl || \"\";\n }\n\n /**\n * List of assembly related job IDs.\n *\n * @readonly\n */\n get relatedJobs(): string[] {\n return this.data.relatedJobs;\n }\n\n /**\n * Assembly geometry data and properties status. Can be `waiting`, `inprogress`, `done` or `failed`.\n *\n * An assemblies without geometry data cannot be opened in viewer.\n *\n * @readonly\n */\n get status(): string {\n return this.data.status;\n }\n\n /**\n * Assembly type. Returns an `assembly` string.\n *\n * @readonly\n */\n get type(): string {\n return \"assembly\";\n }\n\n // Reserved for future use\n\n get version(): number {\n return this.data.version;\n }\n\n get versions(): IAssemblyVersionInfo[] {\n return this.data.versions;\n }\n\n /**\n * Refresh assembly data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet(\"\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Updates assembly data on the server.\n *\n * @async\n * @param data - Raw assembly data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(\"\", data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Delete the assembly from the server.\n *\n * @async\n * @returns Returns the raw data of a deleted assembly.\n */\n delete(): Promise<any> {\n return this.internalDelete(\"\").then((response) => response.json());\n }\n\n /**\n * Save assembly data changes to the server. Call this method to update assembly data on the\n * server after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n\n // Reserved for future use\n\n setPreview(image?: BodyInit | null): Promise<this> {\n console.warn(\"Assembly does not support preview\");\n return Promise.resolve(this);\n }\n\n deletePreview(): Promise<this> {\n console.warn(\"Assembly does not support preview\");\n return Promise.resolve(this);\n }\n\n /**\n * Returns list of assembly models.\n *\n * @async\n */\n getModels(): Promise<Model[]> {\n return this.internalGet(\"/geometry\")\n .then((response) => response.json())\n .then((array) => array.map((data: any) => new Model(data, this)));\n }\n\n /**\n * Transformation matrix.\n *\n * @typedef {any} Transform\n * @property {any} translate - Translation part, move along the X, Y, Z axes.\n * @property {number} translate.x - The value for substruct for X axes.\n * @property {number} translate.y - The value for substruct for Y axes.\n * @property {number} translate.z - The value for substruct for Z axes.\n * @property {any} rotation - Rotation part, rotate by the specified angle, around the\n * specified vector.\n * @property {number} rotation.x - X coordinate of the rotation vector.\n * @property {number} rotation.y - Y coordinate of the rotation vector.\n * @property {number} rotation.z - Z coordinate of the rotation vector.\n * @property {number} rotation.angle - The angle of rotation.\n * @property {number} scale - Scaling part, scale with multiplier, from center of extends.\n */\n\n /**\n * Returns a model transformation.\n *\n * @param handle - Model handle.\n */\n getModelTransformMatrix(handle: string): any {\n return this.data.transform[handle];\n }\n\n /**\n * Set or delete a model transformation.\n *\n * @async\n * @param handle - Model handle.\n * @param transform - Transformation matrix. To delete transformation provide this to `undefined`.\n */\n setModelTransformMatrix(handle: string, transform: any): Promise<this> {\n const obj = { ...this.data.transform };\n obj[handle] = transform;\n return this.update({ transform: obj });\n }\n\n /**\n * Returns the properties for an objects in the assembly.\n *\n * @async\n * @param handles - Object original handle or handles array. Leave this parameter undefined\n * to get properties for all objects in the assembly.\n * @returns {Promise<any>}\n */\n getProperties(handles?: string | string[]): Promise<any[]> {\n const relativePath = handles !== undefined ? `/properties?handles=${handles}` : \"/properties\";\n return this.internalGet(relativePath).then((response) => response.json());\n }\n\n /**\n * Returns the list of original handles for an objects in the file that match the specified\n * patterns. Search patterns may be combined using query operators.\n *\n * @async\n * @example <caption>Simple search pattern.</caption>\n * searchPattern = {\n * key: \"Category\",\n * value: \"OST_Stairs\",\n * };\n *\n * @example <caption>Search patterns combination.</caption>\n * searchPattern = {\n * $or: [\n * {\n * $and: [\n * { key: \"Category\", value: \"OST_GenericModel\" },\n * { key: \"Level\", value: \"03 - Floor\" },\n * ],\n * },\n * { key: \"Category\", value: \"OST_Stairs\" },\n * ],\n * };\n *\n * @param searchPattern - Search pattern or combination of the patterns, see example below.\n */\n searchProperties(searchPattern: any): Promise<any[]> {\n return this.internalPost(\"/properties/search\", searchPattern).then((response) => response.json());\n }\n\n /**\n * Returns the cda.json for an assembly.\n *\n * @async\n */\n getCdaTree(): Promise<any[]> {\n return this.internalGet(`/properties/tree`).then((response) => response.json());\n }\n\n /**\n * Returns a list of assembly viewpoints.\n *\n * @async\n */\n getViewpoints(): Promise<any[]> {\n return this.internalGet(\"/viewpoints\")\n .then((response) => response.json())\n .then((viewpoints) => viewpoints.result);\n }\n\n /**\n * Add new assembly viewpoint. To create a new viewpoint use {@link Viewer.createViewpoint()}.\n *\n * @async\n * @param viewpoint - Viewpoint.\n */\n saveViewpoint(viewpoint: any): Promise<any> {\n return this.internalPost(\"/viewpoints\", viewpoint).then((response) => response.json());\n }\n\n /**\n * Delete assembly viewpoint.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @returns Returns the raw data of a deleted viewpoint.\n */\n deleteViewpoint(guid: any): Promise<any> {\n return this.internalDelete(`/viewpoints/${guid}`).then((response) => response.json());\n }\n\n /**\n * Returns viewpoint preview image as\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}.\n *\n * @async\n * @param guid - Viewpoint GUID.\n */\n getSnapshot(guid: any): Promise<any> {\n return this.internalGet(`/viewpoints/${guid}/snapshot`).then((response) => response.text());\n }\n\n /**\n * Returns viewpoint preview data.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @param bitmapGuid - Bitmap GUID.\n */\n getSnapshotData(guid: any, bitmapGuid: any): Promise<string> {\n return this.internalGet(`/viewpoints/${guid}/bitmaps/${bitmapGuid}`).then((response) => response.text());\n }\n\n /**\n * Download assembly resource file. Resource files are files that contain model scene\n * descriptions, or geometry data.\n *\n * @async\n * @param dataId - Resource file name.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResource(\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n const relativePath = this.appendVersionParam(`/downloads/${dataId}`);\n return this.httpClient\n .downloadFile(`${this.path}${relativePath}`, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Download a part of assembly resource file. Resource files are files that contain model\n * scene descriptions, or geometry data.\n *\n * @param dataId - Resource file name.\n * @param ranges - A range of resource file contents to download.\n * @param requestId - Request ID for download progress callback.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResourceRange(\n dataId: string,\n requestId: number,\n ranges: Array<{ begin: number; end: number; requestId: number }>,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n const relativePath = this.appendVersionParam(`/downloads/${dataId}?requestId=${requestId}`);\n return this.httpClient\n .downloadFileRange(`${this.path}${relativePath}`, requestId, ranges, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Deprecated since `25.3`. Use {@link Assembly.downloadResource()} instead.\n */\n partialDownloadResource(\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n console.warn(\n \"Assembly.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use Assembly.downloadResource() instead.\"\n );\n return this.downloadResource(dataId, onProgress, signal);\n }\n\n /**\n * Deprecated since `25.3`. Use {@link Assembly.downloadResourceRange()} instead.\n */\n async downloadFileRange(\n requestId: number,\n records: any | null,\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<void> {\n await this.downloadResourceRange(dataId, requestId, records, onProgress, signal);\n }\n\n // Reserved for future use\n\n getReferences(signal?: AbortSignal): Promise<any> {\n return Promise.resolve({ fileId: \"\", references: [] });\n }\n\n /**\n * Wait for assembly to be created. Assembly is created when it changes to `done` or `failed` status.\n *\n * @async\n * @param params - An object containing waiting parameters.\n * @param params.timeout - The time, in milliseconds that the function should wait assembly.\n * If assembly is not created during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking assembly status.\n * @param params.signal- An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n * @param params.onCheckout - Waiting progress callback. Return `true` to cancel waiting.\n */\n waitForDone(params?: {\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onCheckout?: (assembly: Assembly, ready: boolean) => boolean;\n }): Promise<this> {\n const checkDone = () =>\n this.checkout().then((assembly) => {\n const ready = [\"done\", \"failed\"].includes(assembly.status);\n const cancel = params?.onCheckout?.(assembly, ready);\n return cancel || ready;\n });\n\n return waitFor(checkDone, params).then(() => this);\n }\n\n /**\n * Returns a list of assembly clash tests.\n *\n * @async\n * @param {number} start - The starting index in the test list. Used for paging.\n * @param {number} limit - The maximum number of tests that should be returned per request.\n * Used for paging.\n * @param {string} name - Filter the tests by part of the name.\n * @param {string | string[]} ids - List of tests IDs to return. You can specify multiple IDs\n * on one `string` by separating them with a \"|\".\n * @param {bool} sortByDesc - Allows to specify the descending order of the result. By\n * default tests are sorted by name in ascending order.\n * @param {string} sortField - Allows to specify sort field.\n */\n getClashTests(\n start?: number,\n limit?: number,\n name?: string,\n ids?: string | string[],\n sortByDesc?: boolean,\n sortField?: string\n ): Promise<{ allSize: number; start: number; limit: number; result: ClashTest[]; size: number }> {\n const searchParams = new URLSearchParams();\n if (start > 0) searchParams.set(\"start\", start.toString());\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\n if (name) searchParams.set(\"name\", name);\n if (ids) {\n if (Array.isArray(ids)) ids = ids.join(\"|\");\n if (typeof ids === \"string\") ids = ids.trim();\n if (ids) searchParams.set(\"id\", ids);\n }\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\n if (sortField) searchParams.set(\"sortField\", sortField);\n\n let queryString = searchParams.toString();\n if (queryString) queryString = \"?\" + queryString;\n\n return this.internalGet(`/clashes${queryString}`)\n .then((response) => response.json())\n .then((tests) => {\n return {\n ...tests,\n result: tests.result.map((data) => new ClashTest(data, this.path, this.httpClient)),\n };\n });\n }\n\n /**\n * Returns the assembly clash test information.\n *\n * @async\n * @param testId - Test ID.\n */\n getClashTest(testId: string): Promise<ClashTest> {\n return this.internalGet(`/clashes/${testId}`)\n .then((response) => response.json())\n .then((data) => new ClashTest(data, this.path, this.httpClient));\n }\n\n /**\n * Create assembly clash test. Assembly must be in a `done` state, otherwise the test will fail.\n *\n * @async\n * @param name - Test name.\n * @param selectionTypeA - The type of first selection set for clash detection. Can be `all`,\n * `handles`, `models` or `searchquery`.\n * @param selectionTypeB - The type of second selection set for clash detection. Can be\n * `all`, `handles`, `models` or `searchquery`.\n * @param selectionSetA - First selection set for clash detection.\n * @param selectionSetB - Second selection set for clash detection.\n * @param params - An object containing test parameters.\n * @param params.tolerance - The distance of separation between entities at which test begins\n * detecting clashes.\n * @param params.clearance - The type of the clashes that the test detects: `true` for\n * `Сlearance clash` or `false` for `Hard clash`.\n * @param params.waitForDone - Wait for test to complete.\n * @param params.timeout - The time, in milliseconds that the function should wait test. If\n * test is not complete during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking test status.\n * @param params.signal- An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n */\n createClashTest(\n name: string,\n selectionTypeA: string,\n selectionTypeB: string,\n selectionSetA?: string | string[],\n selectionSetB?: string | string[],\n params?: {\n tolerance?: number | string;\n clearance?: boolean;\n waitForDone?: boolean;\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n }\n ): Promise<ClashTest> {\n const { tolerance, clearance, waitForDone } = params ?? {};\n if (!Array.isArray(selectionSetA)) selectionSetA = [selectionSetA];\n if (!Array.isArray(selectionSetB)) selectionSetB = [selectionSetB];\n\n return this.internalPost(\"/clashes\", {\n name,\n selectionTypeA,\n selectionTypeB,\n selectionSetA,\n selectionSetB,\n tolerance,\n clearance,\n })\n .then((response) => response.json())\n .then((data) => new ClashTest(data, this.path, this.httpClient))\n .then((result) => (waitForDone ? result.waitForDone(params) : result));\n }\n\n /**\n * Delete assembly clash test.\n *\n * @async\n * @param testId - Test ID.\n * @returns Returns the raw data of a deleted test.\n */\n deleteClashTest(testId: string): Promise<any> {\n return this.internalDelete(`/clashes/${testId}`).then((response) => response.json());\n }\n\n // Reserved for future use\n\n updateVersion(\n files?: string[],\n params: {\n waitForDone?: boolean;\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onProgress?: (progress: number, file: globalThis.File) => void;\n } = {\n waitForDone: false,\n }\n ): Promise<Assembly> {\n return Promise.reject(new Error(\"Assembly version support will be implemeted in a future release\"));\n }\n\n getVersions(): Promise<Assembly[] | undefined> {\n return Promise.resolve(undefined);\n }\n\n getVersion(version: number): Promise<Assembly> {\n return Promise.reject(new FetchError(404));\n }\n\n deleteVersion(version: number): Promise<any> {\n return Promise.reject(new FetchError(404));\n }\n\n setActiveVersion(version: number): Promise<this> {\n return this.update({ activeVersion: version });\n }\n\n useVersion(version?: number): this {\n this._useVersion = undefined;\n return this;\n }\n}\n","class EventEmitter2 {\n constructor() {\n this._listeners = {};\n }\n addEventListener(type, listener) {\n if (this._listeners[type] === undefined) this._listeners[type] = [];\n this._listeners[type].push(listener);\n return this;\n }\n removeEventListener(type, listener) {\n if (this._listeners[type] === undefined) return this;\n const listeners = this._listeners[type].filter((x => x !== listener));\n if (listeners.length !== 0) this._listeners[type] = listeners; else delete this._listeners[type];\n return this;\n }\n removeAllListeners(type) {\n if (type) delete this._listeners[type]; else this._listeners = {};\n return this;\n }\n emitEvent(event) {\n if (this._listeners[event.type] === undefined) return false;\n const invoke = this._listeners[event.type].slice();\n invoke.forEach((listener => listener.call(this, event)));\n return true;\n }\n on(type, listener) {\n return this.addEventListener(type, listener);\n }\n off(type, listener) {\n return this.removeEventListener(type, listener);\n }\n emit(event, ...args) {\n if (typeof event === \"string\") return this.emitEvent({\n type: event,\n args: args\n }); else if (typeof event === \"object\") return this.emitEvent(event); else return false;\n }\n}\n\nexport { EventEmitter2 };\n//# sourceMappingURL=eventemitter2.module.js.map\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { FetchError, error400 } from \"./FetchError\";\n\nfunction handleFetchError(response: Response): Promise<Response> {\n if (!response.ok) {\n switch (response.status) {\n case 400: {\n return response.text().then((text) => {\n console.error(text);\n return Promise.reject(new FetchError(400, error400(text)));\n });\n }\n case 500: {\n return response.text().then((text) => {\n console.error(error400(text, text));\n return Promise.reject(new FetchError(500));\n });\n }\n default:\n return Promise.reject(new FetchError(response.status));\n }\n }\n return Promise.resolve(response);\n}\n\nexport function $fetch(\n url: string,\n params: {\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n headers?: HeadersInit;\n body?: BodyInit | object;\n signal?: AbortSignal;\n } = { method: \"GET\" }\n): Promise<Response> {\n const headers = { ...params.headers };\n delete headers[\"Content-Type\"];\n\n let body: FormData | string | undefined = undefined;\n if (params.method === \"POST\" || params.method === \"PUT\") {\n if (params.body instanceof FormData) {\n body = params.body;\n } else if (params.body instanceof Blob) {\n body = new FormData();\n body.append(\"file\", params.body);\n } else if (params.body instanceof ArrayBuffer) {\n body = new FormData();\n body.append(\"file\", new Blob([params.body]));\n } else if (typeof params.body === \"object\") {\n body = JSON.stringify(params.body);\n headers[\"Content-Type\"] = \"application/json\";\n } else if (typeof params.body === \"string\") {\n body = params.body;\n headers[\"Content-Type\"] = \"text/plain\";\n }\n }\n\n const init: RequestInit = { method: params.method, headers };\n if (body) init.body = body;\n if (params.signal) init.signal = params.signal;\n\n return fetch(url, init).then(handleFetchError);\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { FetchError, error400 } from \"./FetchError\";\n\nfunction handleXMLHttpError(xhr: XMLHttpRequest): Promise<XMLHttpRequest> {\n if (xhr.status === 0) {\n return Promise.reject(new FetchError(0, \"Network error\"));\n }\n if (xhr.status < 200 || xhr.status > 299) {\n switch (xhr.status) {\n case 400: {\n console.error(xhr.responseText);\n return Promise.reject(new FetchError(400, error400(xhr.responseText)));\n }\n case 500: {\n console.error(error400(xhr.responseText, xhr.responseText));\n return Promise.reject(new FetchError(500));\n }\n default: {\n return Promise.reject(new FetchError(xhr.status));\n }\n }\n }\n return Promise.resolve(xhr);\n}\n\nexport function $xmlhttp(\n url: string,\n params: {\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n headers?: HeadersInit;\n body?: XMLHttpRequestBodyInit;\n uploadProgress?: (progress: number) => void;\n downloadProgress?: (progress: number) => void;\n } = { method: \"GET\" }\n): Promise<XMLHttpRequest> {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(params.method, url, true);\n for (const key in params.headers) {\n xhr.setRequestHeader(key, params.headers[key]);\n }\n function calcProgress(event: ProgressEvent): number {\n return event.lengthComputable ? event.loaded / event.total : 1;\n }\n xhr.upload.onprogress = (event) => params.uploadProgress && params.uploadProgress(calcProgress(event));\n xhr.onprogress = (event) => params.downloadProgress && params.downloadProgress(calcProgress(event));\n xhr.onloadend = (event) => handleXMLHttpError(event.target as XMLHttpRequest).then(resolve, reject);\n xhr.send(params.body);\n });\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { $fetch } from \"./Fetch\";\nimport { $xmlhttp } from \"./XMLHttp\";\n\nexport class HttpClient implements IHttpClient {\n public serverUrl: string;\n public headers: HeadersInit = {};\n public signInUserId = \"\";\n public signInUserIsAdmin = false;\n\n constructor(serverUrl: string) {\n this.serverUrl = serverUrl;\n }\n\n get(relativePath: string, signal?: AbortSignal): Promise<Response> {\n return $fetch(`${this.serverUrl}${relativePath}`, { method: \"GET\", headers: this.headers, signal });\n }\n\n post(relativePath: string, body?: BodyInit | object): Promise<Response> {\n return $fetch(`${this.serverUrl}${relativePath}`, { method: \"POST\", headers: this.headers, body });\n }\n\n put(relativePath: string, body?: BodyInit | object): Promise<Response> {\n return $fetch(`${this.serverUrl}${relativePath}`, { method: \"PUT\", headers: this.headers, body });\n }\n\n delete(relativePath: string): Promise<Response> {\n return $fetch(`${this.serverUrl}${relativePath}`, { method: \"DELETE\", headers: this.headers });\n }\n\n uploadFile(relativePath: string, file: File, onProgress?: (progress: number) => void): Promise<XMLHttpRequest> {\n const data = new FormData();\n data.append(\"file\", file);\n return $xmlhttp(`${this.serverUrl}${relativePath}`, {\n method: \"POST\",\n headers: this.headers,\n body: data,\n uploadProgress: onProgress,\n });\n }\n\n // async downloadFile(\n // relativePath: string,\n // onProgress?: (progress: number, chunk: Uint8Array) => void,\n // signal?: AbortSignal\n // ): Promise<Response> {\n // const response = await this.get(relativePath, signal);\n // const teedOff = response.body.tee();\n // if (onProgress) {\n // const contentLength = response.headers.get(\"Content-Length\");\n // const total = parseInt(contentLength, 10) || 1;\n // let loaded = 0;\n // const reader = teedOff[0].getReader();\n // reader.read().then(function processChunk({ done, value }) {\n // if (done) return;\n // loaded += value.length;\n // onProgress(loaded / total, value);\n // reader.read().then(processChunk);\n // });\n // }\n // return new Response(teedOff[1]);\n // }\n\n async downloadFile(\n relativePath: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<Response> {\n const response = await this.get(relativePath, signal);\n const contentLength = response.headers.get(\"Content-Length\");\n const total = parseInt(contentLength || \"\", 10) || 1;\n return new Response(\n new ReadableStream({\n async start(controller) {\n const reader = response.body.getReader();\n let loaded = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n controller.enqueue(value);\n loaded += value.length;\n if (onProgress) onProgress(loaded / total, value);\n }\n controller.close();\n },\n })\n );\n }\n\n async downloadFileRange(\n relativePath: string,\n requestId: number,\n ranges: Array<{ begin: number; end: number; requestId: number }>,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<Response> {\n const headers = { ...this.headers };\n headers[\"Range\"] = \"bytes=\" + ranges.map((x) => `${x.begin}-${x.end}`).join(\",\");\n const response = await $fetch(`${this.serverUrl}${relativePath}`, { method: \"GET\", headers, signal });\n const contentLength = response.headers.get(\"content-length\");\n const total = parseInt(contentLength || \"\", 10) || 1;\n return new Response(\n new ReadableStream({\n async start(controller) {\n const reader = response.body.getReader();\n let loaded = 0;\n let rangedIndex = 0;\n let rangePos = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n controller.enqueue(value);\n loaded += value.length;\n let chunkLeft = value.length;\n let chunkPos = 0;\n while (chunkLeft > 0) {\n const range = ranges[rangedIndex];\n const rangeLeft = range.end - range.begin - rangePos;\n if (chunkLeft < rangeLeft) {\n const chunk = value.subarray(chunkPos, chunkPos + chunkLeft);\n if (onProgress) onProgress(loaded / total, chunk, range.requestId);\n rangePos += chunkLeft;\n chunkLeft = 0;\n } else {\n const chunk = value.subarray(chunkPos, chunkPos + rangeLeft);\n if (onProgress) onProgress(loaded / total, chunk, range.requestId);\n chunkPos += rangeLeft;\n chunkLeft -= rangeLeft;\n rangedIndex++;\n rangePos = 0;\n }\n }\n }\n controller.close();\n },\n })\n );\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\n\n/**\n * A permission provides information about {@link File | file} sharing granted to a specific\n * {@link User | users}, group, or project {@link Member | member}.\n */\nexport class Permission {\n private _data: any;\n public fileId: string;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements permission data storage.\n * @param fileId - Owner file ID.\n * @param httpClient - Http client.\n */\n constructor(data: any, fileId: string, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.fileId = fileId;\n this.data = data;\n }\n\n private internalGet(): Promise<Response> {\n return this.httpClient.get(`/files/${this.fileId}/permissions/${this.id}`);\n }\n\n private internalPut(body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`/files/${this.fileId}/permissions/${this.id}`, body);\n }\n\n private internalDelete(): Promise<Response> {\n return this.httpClient.delete(`/files/${this.fileId}/permissions/${this.id}`);\n }\n\n /**\n * Defines what actions are allowed to be performed on a file with this permission:\n *\n * - `read` - The ability to read file description, geometry data and properties\n * - `readSourceFile` - The ability to read source file\n * - `write` - The ability to modify file name, description and references\n * - `readViewpoint` - The ability to read file viewpoints\n * - `createViewpoint` - The ability to create file viewpoints\n */\n get actions(): string[] {\n return this.data.actions;\n }\n\n set actions(value: string[]) {\n this._data.actions = value;\n }\n\n /**\n * Raw permission data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n }\n\n /**\n * Unique permission ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Principials are any entity that can be authenticated by the server, such as a any user or\n * project that will get access to the file.\n *\n * @typedef {any} Principial\n * @property {any} user - The user entry that get access to the file.\n * @property {string} user.id - User ID.\n * @property {string} user.name - User name.\n * @property {any} project - The project entry that get access to the file.\n * @property {string} project.id - Project ID.\n * @property {string} project.name - Project name.\n */\n\n /**\n * A collection of principials that will get access to the file.\n */\n get grantedTo(): any[] {\n return this.data.grantedTo;\n }\n\n set grantedTo(value: any[]) {\n this.data.grantedTo = value;\n }\n\n /**\n * Specifies whether all users have access to the file or not.\n */\n get public(): boolean {\n return this.data.public;\n }\n\n set public(value: boolean) {\n this.data.public = value;\n }\n\n /**\n * Refresh permission data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet();\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update permission data on the server.\n *\n * @async\n * @param data - Raw permission data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Remove a permission from a file.\n *\n * @async\n * @returns Returns the raw data of a deleted permission.\n */\n delete(): Promise<any> {\n return this.internalDelete().then((response) => response.json());\n }\n\n /**\n * Save permission data changes to the server. Call this method to update permission data on\n * the server after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { waitFor } from \"./Utils\";\n\n/**\n * The class representing a `job` entity describes the process of converting a file from one\n * format to another, to obtain geometric data, validate the file, or run a clash test.\n */\nexport class Job {\n private _data: any;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements job data storage.\n * @param httpClient - Http client.\n */\n constructor(data: any, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.data = data;\n }\n\n protected internalGet(): Promise<Response> {\n return this.httpClient.get(`/jobs/${this.data.id}`);\n }\n\n protected internalPut(body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`/jobs/${this.data.id}`, body);\n }\n\n protected internalDelete(): Promise<Response> {\n return this.httpClient.delete(`/jobs/${this.data.id}`);\n }\n\n /**\n * The ID of the assembly the job is working on (internal).\n *\n * @readonly\n */\n get assemblyId(): string {\n return this.data.assemblyId;\n }\n\n /**\n * Job creator ID. Use {@link Client#getUser | Client.getUser()} to obtain detailed creator information.\n *\n * @readonly\n */\n get authorId(): string {\n return this.data.authorId;\n }\n\n /**\n * Job creation time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get createdAt(): string {\n return this.data.createdAt;\n }\n\n /**\n * Raw job data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n }\n\n /**\n * `true` if job is `done` or `failed`. See {@link Job#status | status} for more details.\n *\n * @readonly\n */\n get done(): boolean {\n return this.data.status === \"done\" || this.data.status === \"failed\";\n }\n\n /**\n * The ID of the file the job is working on.\n *\n * @readonly\n */\n get fileId(): string {\n return this.data.fileId;\n }\n\n /**\n * Unique job ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Job last update (UTC) time in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get lastUpdate(): string {\n return this.data.lastUpdate;\n }\n\n /**\n * Job type. Can be `properties`, `geomerty`, `geomertyGltf`, `validation`, `clash`, `dwg`,\n * `obj`, `gltf`, `glb`, `vsf`, `pdf`, `3dpdf` or custom job name.\n *\n * @readonly\n */\n get outputFormat(): string {\n return this.data.outputFormat;\n }\n\n /**\n * Parameters for the job runner.\n *\n * @readonly\n */\n get parameters(): any {\n return this.data.parameters;\n }\n\n /**\n * Job status. Can be `waiting`, `inprogress`, `done` or `failed`.\n *\n * @readonly\n */\n get status(): string {\n return this.data.status;\n }\n\n /**\n * Job status description message.\n *\n * @readonly\n */\n get statusMessage(): string {\n return this.data.statusMessage;\n }\n\n /**\n * Job starting time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get startedAt(): string {\n return this.data.startedAt;\n }\n\n /**\n * Refresh job data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet();\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update job data on the server.\n *\n * Only administrators can update job data, if the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * @async\n * @param data - Raw job data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Remove a job from the server job list. Jobs that are in progress or have already been\n * completed cannot be deleted.\n *\n * @async\n * @returns Returns the raw data of a deleted job.\n */\n delete(): Promise<any> {\n return this.internalDelete().then((response) => response.json());\n }\n\n // /**\n // * Save job data changes to the server. Call this method to update job data on the server\n // * after any changes.\n // *\n // * @async\n // * @returns {Promise<Job>}\n // */\n // save() {\n // return this.update(this.data);\n // }\n\n /**\n * Wait for job to be done. Job is done when it changes to `done` or `failed` status.\n *\n * @async\n * @param params - An object containing waiting parameters.\n * @param params.timeout - The time, in milliseconds that the function should wait job. If\n * jobs is not done during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking job status.\n * @param params.signal- An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n * @param params.onCheckout - Waiting progress callback. Return `true` to cancel waiting.\n */\n waitForDone(params?: {\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onCheckout?: (job: Job, ready: boolean) => boolean;\n }): Promise<this> {\n const checkDone = () =>\n this.checkout().then((job) => {\n const ready = [\"done\", \"failed\"].includes(job.status);\n const cancel = params?.onCheckout?.(job, ready);\n return cancel || ready;\n });\n\n return waitFor(checkDone, params).then(() => this);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { IFileStatus, IFileReferences, IFileVersionInfo } from \"./IFile\";\nimport { IShortUserDescription } from \"./IUser\";\nimport { Model } from \"./Model\";\nimport { Permission } from \"./Permission\";\nimport { Job } from \"./Job\";\nimport { waitFor, parseArgs, userFullName, userInitials } from \"./Utils\";\n\n/**\n * The class representing a `file` entity.\n */\nexport class File {\n private _data: any;\n private _useVersion: number | undefined;\n public httpClient: IHttpClient;\n public path: string;\n\n /**\n * @param data - An object that implements file data storage.\n * @param httpClient - Http client for API.\n */\n constructor(data: any, httpClient: IHttpClient) {\n this.path = `/files/${data.id}`;\n this.httpClient = httpClient;\n this.data = data;\n }\n\n private appendVersionParam(relativePath: string): string {\n if (this._useVersion === undefined) return relativePath;\n const delimiter = relativePath.includes(\"?\") ? \"&\" : \"?\";\n return `${relativePath}${delimiter}version=${this._useVersion}`;\n }\n\n private internalGet(relativePath: string, signal?: AbortSignal): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.get(`${this.path}${relativePath}`, signal);\n }\n\n private internalPost(relativePath: string, body?: BodyInit | object): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.post(`${this.path}${relativePath}`, body);\n }\n\n private internalPut(relativePath: string, body?: BodyInit | object): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.put(`${this.path}${relativePath}`, body);\n }\n\n private internalDelete(relativePath: string): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.delete(`${this.path}${relativePath}`);\n }\n\n /**\n * Active version number of the file.\n *\n * @readonly\n */\n get activeVersion(): number {\n return this.data.activeVersion;\n }\n\n /**\n * File creation time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get created(): string {\n return this.data.created;\n }\n\n /**\n * File custom fields object, to store custom data.\n *\n * @readonly\n */\n get customFields(): any {\n return this.data.customFields;\n }\n\n set customFields(value: any) {\n this.data.customFields = value;\n }\n\n /**\n * Raw file data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.previewUrl = value.preview\n ? `${this.httpClient.serverUrl}${this.path}/preview?updated=${value.updatedAt}`\n : \"\";\n // owner since 24.8\n if (typeof this._data.owner === \"string\") this._data.owner = { userId: this._data.owner };\n this._data.owner ??= {};\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\n this._data.owner.fullName = userFullName(this._data.owner);\n this._data.owner.initials = userInitials(this._data.owner.fullName);\n // status since 24.9\n this._data.status ??= {};\n this._data.status.geometry ??= { state: this._data.geometryStatus ?? \"none\" };\n this._data.status.properties ??= { state: this._data.propertiesStatus ?? \"none\" };\n this._data.status.validation ??= { state: this._data.validationStatus ?? \"none\" };\n // updatedBy since 24.10\n this._data.updatedBy ??= {};\n this._data.updatedBy.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.updatedBy.userId}/avatar`;\n this._data.updatedBy.fullName = userFullName(this._data.updatedBy);\n this._data.updatedBy.initials = userInitials(this._data.updatedBy.fullName);\n // versions since 24.10\n this._data.versions ??= [{ ...value }];\n // geometryGltf status since 24.12\n this._data.status.geometryGltf ??= { state: \"none\" };\n }\n\n /**\n * Returns a list of files in different formats in which the active version of the file was\n * exported. To export file to one of the supported formats create File Converter job using\n * {@link File.createJob()}. To download exported file use {@link File.downloadResource()}.\n *\n * @readonly\n */\n get exports(): string[] {\n return this.data.exports;\n }\n\n /**\n * Geometry data type of the active file version. Can be one of:\n *\n * - `vsfx` - `VSFX`, file can be opened in `VisualizeJS` viewer.\n * - `gltf` - `glTF`, file can be opened in `Three.js` viewer.\n *\n * Returns an empty string if geometry data has not yet been extracted. A files without\n * geometry data can be exported to other formas, but cannot be opened in viewer.\n */\n get geometryType(): string {\n if (this.status.geometryGltf.state === \"done\") return \"gltf\";\n else if (this.status.geometry.state === \"done\") return \"vsfx\";\n else return \"\";\n }\n\n /**\n * Unique file ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * File name, including the extension.\n */\n get name(): string {\n return this.data.name;\n }\n\n set name(value: string) {\n this.data.name = value;\n }\n\n /**\n * If the file is a version, then returns the ID of the original file. Otherwise, returns the file ID.\n *\n * @readonly\n */\n get originalFileId(): string {\n return this.data.originalFileId;\n }\n\n /**\n * File owner information.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get owner(): IShortUserDescription {\n return this.data.owner;\n }\n\n /**\n * File preview image URL or empty string if the file does not have a preview. Use\n * {@link File.setPreview | setPreview()} to change preview image.\n *\n * @readonly\n */\n get previewUrl(): string {\n return this.data.previewUrl;\n }\n\n /**\n * The size of the active version of the file in bytes.\n *\n * @readonly\n */\n get size(): number {\n return this.data.size;\n }\n\n /**\n * Total size of all versions of the file in the storage in bytes.\n *\n * @readonly\n */\n get sizeTotal(): number {\n return this.data.sizeTotal;\n }\n\n /**\n * Data status of the active version of the file. Contains:\n *\n * - `geometry` - status of geometry data of `VSFX` type.\n * - `geometryGltf` - status of geometry data of `glTF` type.\n * - `properties` - status of properties.\n * - `validation` - status of validation.\n *\n * Each status entity is a record with properties:\n *\n * - `state` - Data state. Can be `none`, `waiting`, `inprogress`, `done` or `failed`.\n * - `jobId` - Unique ID of the data job.\n *\n * @readonly\n */\n get status(): IFileStatus {\n return this.data.status;\n }\n\n /**\n * File type, matches the file extension.\n *\n * @readonly\n */\n get type(): string {\n return this.data.type;\n }\n\n /**\n * File last update time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get updatedAt(): string {\n return this.data.updatedAt;\n }\n\n /**\n * Information about the user who made the last update.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get updatedBy(): IShortUserDescription {\n return this.data.updatedBy;\n }\n\n /**\n * Zero-based file version number for version files. The original file has version `0`.\n */\n\n get version(): number {\n return this.data.version;\n }\n\n /**\n * List of the file versions.\n *\n * @readonly\n */\n get versions(): IFileVersionInfo[] {\n return this.data.versions;\n }\n\n /**\n * Refresh file data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet(\"\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update file data on the server.\n *\n * @async\n * @param data - Raw file data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(\"\", data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Delete the file and all its versions from the server.\n *\n * @async\n * @returns Returns the raw data of a deleted file.\n */\n delete(): Promise<any> {\n return this.internalDelete(\"\").then((response) => response.json());\n }\n\n /**\n * Save file data changes to the server. Call this method to update file data on the server\n * after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n\n /**\n * Set or remove the file preview.\n *\n * @async\n * @param image - Preview image.Can be a\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}\n * string,\n * {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer | ArrayBuffer},\n * {@link https://developer.mozilla.org/docs/Web/API/Blob/Blob | Blob} or Web API\n * {@link https://developer.mozilla.org/docs/Web/API/File | File} object. Setting the\n * `image` to `null` will remove the preview.\n */\n async setPreview(image?: BodyInit | null): Promise<this> {\n if (!image) {\n await this.deletePreview();\n } else {\n const response = await this.internalPost(\"/preview\", image);\n this.data = await response.json();\n }\n return this;\n }\n\n /**\n * Remove the file preview.\n *\n * @async\n */\n async deletePreview(): Promise<this> {\n const response = await this.internalDelete(\"/preview\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Returns a list of models of the active version of the file.\n *\n * @async\n */\n getModels(): Promise<Model[]> {\n return this.internalGet(\"/geometry\")\n .then((response) => response.json())\n .then((array) => array.map((data) => new Model(data, this)));\n }\n\n // File does not support model transformation.\n\n getModelTransformMatrix(handle: string): any {\n return undefined;\n }\n\n setModelTransformMatrix(handle: string, transform: any): Promise<this> {\n console.warn(\"File does not support model transformation\");\n return Promise.resolve(this);\n }\n\n /**\n * Object properties.\n *\n * @typedef {any} Properties\n * @property {string} handle - Object original handle.\n * @property {string | any} * - Object property. Can be `any` for nested properties.\n */\n\n /**\n * Returns the properties for an objects in the active version of the file.\n *\n * @async\n * @param handles - Object original handle or handles array. Leave this parameter `undefined`\n * to get properties for all objects in the file.\n */\n getProperties(handles?: string | string[]): Promise<any[]> {\n const relativePath = handles !== undefined ? `/properties?handles=${handles}` : \"/properties\";\n return this.internalGet(relativePath).then((response) => response.json());\n }\n\n /**\n * Search pattern.\n *\n * @typedef {any} SearchPattern\n * @property {string} key - Property name.\n * @property {string} value - Property value.\n */\n\n /**\n * Query operator. Operator name can be `$and`, `$or`, `$not`, `$eq`, `$regex`.\n *\n * @typedef {any} QueryOperator\n * @property {string | SearchPattern[] | QueryOperator[]} * - Array of the query values or\n * patterns for operator.\n */\n\n /**\n * Returns the list of original handles for an objects in the active version of the file that\n * match the specified patterns. Search patterns may be combined using query operators.\n *\n * @async\n * @example <caption>Simple search pattern.</caption>\n * searchPattern = {\n * key: \"Category\",\n * value: \"OST_Stairs\",\n * };\n *\n * @example <caption>Search patterns combination.</caption>\n * searchPattern = {\n * $or: [\n * {\n * $and: [\n * { key: \"Category\", value: \"OST_GenericModel\" },\n * { key: \"Level\", value: \"03 - Floor\" },\n * ],\n * },\n * { key: \"Category\", value: \"OST_Stairs\" },\n * ],\n * };\n *\n * @param {SearchPattern | QueryOperator} searchPattern - Search pattern or combination of\n * the patterns, see example below.\n * @returns {Promise<Properties[]>}\n */\n\n searchProperties(searchPattern: any): Promise<any[]> {\n return this.internalPost(\"/properties/search\", searchPattern).then((response) => response.json());\n }\n\n /**\n * Returns the cda.json for an active version of the file.\n *\n * @async\n */\n getCdaTree(): Promise<any[]> {\n return this.internalGet(`/properties/tree`).then((response) => response.json());\n }\n\n /**\n * Returns a list of file viewpoints.\n *\n * @async\n */\n getViewpoints(): Promise<any[]> {\n return this.internalGet(\"/viewpoints\")\n .then((response) => response.json())\n .then((viewpoints) => viewpoints.result);\n }\n\n /**\n * Add new file viewpoint. To create a new viewpoint use `Viewer.createViewpoint()`.\n *\n * @async\n * @param viewpoint - Viewpoint.\n */\n saveViewpoint(viewpoint: any): Promise<any> {\n return this.internalPost(\"/viewpoints\", viewpoint).then((response) => response.json());\n }\n\n /**\n * Delete file viewpoint.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @returns Returns the raw data of a deleted viewpoint.\n */\n deleteViewpoint(guid: string): Promise<any> {\n return this.internalDelete(`/viewpoints/${guid}`).then((response) => response.json());\n }\n\n /**\n * Returns viewpoint preview image as\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}.\n *\n * @async\n * @param guid - Viewpoint GUID.\n */\n getSnapshot(guid: string): Promise<string> {\n return this.internalGet(`/viewpoints/${guid}/snapshot`).then((response) => response.text());\n }\n\n /**\n * Returns viewpoint preview data.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @param bitmapGuid - Bitmap GUID.\n */\n getSnapshotData(guid: string, bitmapGuid: string): Promise<string> {\n return this.internalGet(`/viewpoints/${guid}/bitmaps/${bitmapGuid}`).then((response) => response.text());\n }\n\n /**\n * Download source of active version of the file.\n *\n * @async\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n download(onProgress?: (progress: number) => void, signal?: AbortSignal): Promise<ArrayBuffer> {\n const relativePath = this.appendVersionParam(\"/downloads\");\n return this.httpClient\n .downloadFile(`${this.path}${relativePath}`, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Download a resource file of the active version of the file. Resource files are files that\n * contain model scene descriptions, or geometry data, or exported files.\n *\n * @example <caption>Export file to DWG.</caption>\n * const job = await file.crateJob(\"dwg\");\n * await job.waitForDone();\n * const dwgFileName = file.exports.find((x) => x.endsWith(\".dwg\"));\n * const arrayBuffer = await file.downloadResource(dwgFileName);\n * const blob = new Blob([arrayBuffer]);\n * const fileName = file.name.replace(/\\.[^.]+$/, \"\") + \".dwg\";\n * FileSaver.saveAs(blob, fileName);\n *\n * @param dataId - Resource file name.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResource(\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n const relativePath = this.appendVersionParam(`/downloads/${dataId}`);\n return this.httpClient\n .downloadFile(`${this.path}${relativePath}`, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Download a part of resource file of the active version of the file. Resource files are\n * files that contain model scene descriptions, or geometry data, or exported files.\n *\n * @param dataId - Resource file name.\n * @param ranges - A range of resource file contents to download.\n * @param requestId - Request ID for download progress callback.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResourceRange(\n dataId: string,\n requestId: number,\n ranges: Array<{ begin: number; end: number; requestId: number }>,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n const relativePath = this.appendVersionParam(`/downloads/${dataId}?requestId=${requestId}`);\n return this.httpClient\n .downloadFileRange(`${this.path}${relativePath}`, requestId, ranges, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Deprecated since `25.3`. Use {@link File.downloadResource()} instead.\n */\n partialDownloadResource(\n dataId: string,\n onProgress?: (progress: number, downloaded: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n console.warn(\n \"File.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use File.downloadResource() instead.\"\n );\n return this.downloadResource(dataId, onProgress, signal);\n }\n\n /**\n * Deprecated since `25.3`. Use {@link File.downloadResourceRange()} instead.\n */\n async downloadFileRange(\n requestId: number,\n records: any | null,\n dataId: string,\n onProgress?: (progress: number, downloaded: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<void> {\n await this.downloadResourceRange(dataId, requestId, records, onProgress, signal);\n }\n\n /**\n * Returns a list of references to files used to correct rendering of the current file.\n *\n * @async\n * @param [signal] - An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n */\n getReferences(signal?: AbortSignal): Promise<IFileReferences> {\n return this.internalGet(\"/references\", signal).then((response) => response.json());\n }\n\n /**\n * Set the file references.\n *\n * @async\n * @param references - File references.\n */\n setReferences(references: IFileReferences): Promise<IFileReferences> {\n return this.internalPut(\"/references\", references).then((response) => response.json());\n }\n\n /**\n * Create a new job for the active version of the file.\n *\n * @async\n * @param outputFormat - The job type. Can be one of:\n *\n * - `geometry` - Extract file geometry data into `VSFX`.\n * - `geometryGltf` - Extract file geometry data into `glTF`.\n * - `properties` - Extract file properties.\n * - `validation` - Validate the file. Only for `IFC`.\n * - `dwg`, `obj`, `gltf`, `glb`, `vsf`, `pdf`, `3dpdf` - Export file to the one of the\n * supported format. Use {@link File.exports | File.exports()} to get the list of\n * completed file exports. Use {@link File.downloadResource | File.downloadResource()}\n * to download the exported file.\n * - Other custom job name. Custom job runner must be registered in the job templates table\n * before creating a job.\n *\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\n * for the File Converter tool in form \"--arg=value\".\n */\n createJob(outputFormat: string, parameters?: string | object): Promise<Job> {\n const relativePath = this.appendVersionParam(\"/jobs\");\n return this.httpClient\n .post(relativePath, {\n fileId: this.id,\n outputFormat,\n parameters: parseArgs(parameters),\n })\n .then((response) => response.json())\n .then((data) => new Job(data, this.httpClient));\n }\n\n /**\n * Create job to extract geometry data of active version of the file. This is alias to\n * {@link File.createJob | File.createJob(\"geometry\")}.\n *\n * @async\n * @param type - Geometry data type. Can be one of:\n *\n * - `vsfx` - `VSFX` (default), for opening a file in `VisualizeJS` viewer.\n * - `gltf` - `glTF`, for opening a file in `Three.js` viewer.\n *\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\n * for the File Converter tool in form \"--arg=value\".\n */\n extractGeometry(type?: string, parameters?: string | object): Promise<Job> {\n return this.createJob(type === \"gltf\" ? \"geometryGltf\" : \"geometry\", parameters);\n }\n\n /**\n * Create job to extract properties of the active version of the file. This is alias to\n * {@link File.createJob | File.createJob(\"properties\")}.\n *\n * @async\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\n * for the File Converter tool in form \"--arg=value\".\n */\n extractProperties(parameters?: string | object): Promise<Job> {\n return this.createJob(\"properties\", parameters);\n }\n\n /**\n * Create a job to validate the active version of the file. This is alias to\n * {@link File.createJob | File.createJob(\"validation\")}.\n *\n * To get validation report use\n * {@link File.downloadResource | File.downloadResource(\"validation_report.json\")}.\n *\n * @async\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\n * for the File Converter tool in form \"--arg=value\".\n */\n validate(parameters?: string | object): Promise<Job> {\n return this.createJob(\"validation\", parameters);\n }\n\n /**\n * Wait for jobs of the active version of the file to be done. Job is done when it changes to\n * `none`, `done` or `failed` status.\n *\n * @async\n * @param {string | string[]} jobs - Job or job array to wait on. Can be `geometry`,\n * `geometryGltf`, `properties`, `validation`, `dwg`, `obj`, `gltf`, `glb`, `vsf`, `pdf`,\n * `3dpdf` or custom job name.\n * @param {Boolean} [waitAll] - If this parameter is `true`, the function returns when all\n * the specified jobs have done. If `false`, the function returns when any one of the jobs are done.\n * @param {Object} [params] - An object containing waiting parameters.\n * @param {Number} [params.timeout] - The time, in milliseconds that the function should wait\n * jobs. If no one jobs are done during this time, the `TimeoutError` exception will be thrown.\n * @param {Number} [params.interval] - The time, in milliseconds, the function should delay\n * in between checking jobs status.\n * @param {AbortSignal} [params.signal] - An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n * @param {function} [params.onCheckout] - Waiting progress callback. Return `true` to cancel waiting.\n * @returns {Promise<File>}\n */\n waitForDone(\n jobs: string | string[],\n waitAll?: boolean,\n params?: {\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onCheckout?: (file: File, ready: boolean) => boolean;\n }\n ): Promise<this> {\n const waitJobs = Array.isArray(jobs) ? jobs : [jobs];\n if (waitAll === undefined) waitAll = true;\n\n const checkDone = () =>\n this.checkout().then((file) => {\n const readyJobs = waitJobs.filter((job: string) => {\n const jobStatus = file.status[job] || {};\n return [\"none\", \"done\", \"failed\"].includes(jobStatus.state || \"none\");\n });\n const ready = waitAll ? readyJobs.length === waitJobs.length : readyJobs.length > 0;\n const cancel = params?.onCheckout?.(file, ready);\n return cancel || ready;\n });\n\n return waitFor(checkDone, params).then(() => this);\n }\n\n /**\n * Returns a list of file permissions.\n *\n * @async\n */\n getPermissions(): Promise<Permission[]> {\n return this.internalGet(\"/permissions\")\n .then((response) => response.json())\n .then((array) => array.map((data) => new Permission(data, this.id, this.httpClient)));\n }\n\n /**\n * Returns the permission information.\n *\n * @async\n * @param permissionId - Permission ID.\n */\n getPermission(permissionId: string): Promise<Permission> {\n return this.internalGet(`/permissions/${permissionId}`)\n .then((response) => response.json())\n .then((data) => new Permission(data, this.id, this.httpClient));\n }\n\n /**\n * Create a new file permission.\n *\n * @async\n * @param actions - Actions are allowed to be performed on a file with this permission. See\n * {@link Permission#actions | Permission.actions} for more details.\n * @param grantedTo - A collection of principials that will get access to the file.\n * @param public = false - Specifies whether all users have access to the file or not.\n */\n createPermission(actions: string | string[], grantedTo: any[], _public: boolean): Promise<Permission> {\n return this.internalPost(\"/permissions\", {\n actions: Array.isArray(actions) ? actions : [actions],\n grantedTo,\n public: _public,\n })\n .then((response) => response.json())\n .then((data) => new Permission(data, this.id, this.httpClient));\n }\n\n /**\n * Delete file permission.\n *\n * @async\n * @param permissionId - Permission ID.\n * @returns Returns the raw data of a deleted permission.\n */\n deletePermission(permissionId: string): Promise<any> {\n return this.internalDelete(`/permissions/${permissionId}`).then((response) => response.json());\n }\n\n /**\n * Upload the new version of the file to the server and extract the geometry and properties as needed.\n *\n * @async\n * @param file - Web API <a href=\"https://developer.mozilla.org/docs/Web/API/File\"\n * target=\"_blank\">File</a> object are generally retrieved from a <a\n * href=\"https://developer.mozilla.org/docs/Web/API/FileList\" target=\"_blank\">FileList</a>\n * object returned as a result of a user selecting files using the HTML `<input>` element.\n * @param params - An object containing upload parameters.\n * @param params.geometry=true - Create job to extract file geometry data. The geometry data\n * type is the same as the original file.\n * @param params.properties=false - Create job to extract file properties.\n * @param params.waitForDone=false - Wait for geometry and properties jobs to complete.\n * @param params.timeout - The time, in milliseconds that the function should wait jobs. If\n * no one jobs are done during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking jobs status.\n * @param params.signal - An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n * @param params.onProgress - Upload progress callback.\n */\n\n async uploadVersion(\n file: globalThis.File,\n params: {\n geometry?: boolean;\n properties?: boolean;\n waitForDone?: boolean;\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onProgress?: (progress: number, file: globalThis.File) => void;\n } = {\n waitForDone: false,\n }\n ): Promise<File> {\n const result = await this.httpClient\n .uploadFile(`${this.path}/versions`, file, (progress) => params.onProgress?.(progress, file))\n .then((xhr: XMLHttpRequest) => JSON.parse(xhr.responseText))\n .then((data) => new File(data, this.httpClient));\n\n let geometryType = \"\";\n if (this.versions[0].status.geometryGltf.state !== \"none\") geometryType = \"gltf\";\n if (this.versions[0].status.geometry.state !== \"none\") geometryType = \"vsfx\";\n\n params = { ...params };\n if (params.geometry === undefined) params.geometry = geometryType !== \"\";\n if (params.properties === undefined) params.properties = this.versions[0].status.properties.state !== \"none\";\n\n const jobs: string[] = [];\n if (params.geometry) jobs.push((await result.extractGeometry(geometryType)).outputFormat);\n if (params.properties) jobs.push((await result.extractProperties()).outputFormat);\n if (jobs.length > 0)\n if (params.waitForDone) await result.waitForDone(jobs, true, params);\n else await result.checkout();\n\n await this.checkout();\n\n return result;\n }\n\n /**\n * Returns a list of version files.\n *\n * @async\n */\n getVersions(): Promise<File[]> {\n return this.internalGet(\"/versions\")\n .then((response) => response.json())\n .then((files) => files.map((data) => new File(data, this.httpClient)))\n .then((files) => files.map((file) => (file.id == file.originalFileId ? file.useVersion(0) : file)));\n }\n\n /**\n * Returns the version file.\n *\n * @async\n * @param version - Desired version.\n */\n getVersion(version: number): Promise<File> {\n return this.internalGet(`/versions/${version}`)\n .then((response) => response.json())\n .then((data) => new File(data, this.httpClient))\n .then((file) => (file.id == file.originalFileId ? file.useVersion(0) : file));\n }\n\n /**\n * Delete version file.\n *\n * @async\n * @param version - Version to delete.\n */\n async deleteVersion(version: number): Promise<any> {\n const response = await this.internalDelete(`/versions/${version}`);\n const data = await response.json();\n await this.checkout();\n return data;\n }\n\n /**\n * Replace the active version of the file with the selected version.\n *\n * @async\n * @param version - Desired active version.\n */\n\n setActiveVersion(version: number): Promise<this> {\n return this.update({ activeVersion: version });\n }\n\n /**\n * Use given version instead of active version for current file on client side. This version\n * change will affect the result:\n *\n * - getModels()\n * - getProperties()\n * - searchProperties()\n * - getCdaTree()\n * - download()\n * - downloadResource()\n * - createJob()\n * - extractGeometry()\n * - extractProperties()\n * - validate()\n * - waitForDone()\n * - Viewer.open()\n *\n * Other clients will still continue to use the currently active version of the file. Use\n * `undefined` to revert back to the active version.\n *\n * Note. You need to update the file data using [File.checkout()]{@link File#checkout} to\n * match the size and status fields to the version you selected.\n */\n useVersion(version?: number): this {\n this._useVersion = version;\n return this;\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\n\n/**\n * A roles determines what permissions {@link User | users} have on a {@link Project | project}.\n */\nexport class Role {\n private _data: any;\n public projectId: string;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements role data storage.\n * @param projectId - Owner project ID.\n * @param httpClient - Http client.\n */\n constructor(data: any, projectId: string, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.projectId = projectId;\n this.data = data;\n }\n\n private internalGet(): Promise<Response> {\n return this.httpClient.get(`/projects/${this.projectId}/roles/${this.name}`);\n }\n\n private internalPut(body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`/projects/${this.projectId}/roles/${this.name}`, body);\n }\n\n private internalDelete(): Promise<Response> {\n return this.httpClient.delete(`/projects/${this.projectId}/roles/${this.name}`);\n }\n\n /**\n * Role description.\n */\n get description(): string {\n return this.data.description;\n }\n\n set description(value: string) {\n this._data.description = value;\n }\n\n /**\n * Raw role data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n set data(value: any) {\n this._data = value;\n }\n\n /**\n * Role name.\n */\n get name(): string {\n return this.data.name;\n }\n\n set name(value: string) {\n this._data.name = value;\n }\n\n /**\n * Role actions are allowed to be performed.\n *\n * @property {string[]} projectActions - Actions are allowed to be performed at the project\n * level: `update`, `createTopic`, `createDocument`.\n * @property {string[]} topicActions - Actions are allowed to be performed at the topic\n * level: `update`, `updateBimSnippet`, `updateRelatedTopics`, `updateDocumentReferences`,\n * `updateFiles`, `createComment`, `createViewpoint`, `delete`.\n * @property {string[]} commentActions - Actions are allowed to be performed at the comment\n * level: `update`, `delete`.\n * @property {string[]} viewpointActions - Actions are allowed to be performed at the\n * viewpoint level: `delete`.\n * @property {string[]} odaGroupActions - Actions are allowed to be performed at the members\n * level: `update`, `delete`.\n * @property {string[]} odaRoleActions - Actions are allowed to be performed at the roles\n * level: `update`, `delete`.\n */\n get permissions(): any {\n return this.data.permissions;\n }\n\n set permissions(value: any) {\n this.data.permissions = value || {};\n }\n\n /**\n * Refresh role data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet();\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update role data on the server.\n *\n * @async\n * @param data - Raw role data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Delete a role from the project.\n *\n * @async\n * @returns Returns the raw data of a deleted role.\n */\n delete(): Promise<any> {\n return this.internalDelete().then((response) => response.json());\n }\n\n /**\n * Save role data changes to the server. Call this method to update role data on the server\n * after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { IShortUserDescription } from \"./IUser\";\nimport { userFullName, userInitials } from \"./Utils\";\n\n/**\n * Members are the {@link User | users} who have access to the {@link Project | project}.\n */\nexport class Member {\n private _data: any;\n public projectId: string;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements member data storage.\n * @param projectId - Owner project ID.\n * @param httpClient - Http client.\n */\n constructor(data: any, projectId: string, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.projectId = projectId;\n this.data = data;\n }\n\n private internalGet(): Promise<Response> {\n return this.httpClient.get(`/projects/${this.projectId}/members/${this.id}`);\n }\n\n private internalPut(body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`/projects/${this.projectId}/members/${this.id}`, body);\n }\n\n private internalDelete(): Promise<Response> {\n return this.httpClient.delete(`/projects/${this.projectId}/members/${this.id}`);\n }\n\n /**\n * Raw member data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.user.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.user.userId}/avatar`;\n this._data.user.fullName = userFullName(this._data.user);\n this._data.user.initials = userInitials(this._data.user.fullName);\n }\n\n /**\n * Unique member ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Member role. See {@link Project#getRoles | Project.getRoles()} for more details.\n */\n get role(): string {\n return this.data.role;\n }\n\n set role(value: string) {\n this.data.role = value;\n }\n\n /**\n * Member type. Can be `owner` or `user`.\n *\n * @readonly\n */\n get type(): string {\n return this.data.type;\n }\n\n /**\n * User information.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get user(): IShortUserDescription {\n return this.data.user;\n }\n\n /**\n * Refresh member data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet();\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update member data on the server.\n *\n * @async\n * @param data - Raw member data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Remove a member from a project.\n *\n * @async\n * @returns Returns the raw data of a deleted member.\n */\n delete(): Promise<any> {\n return this.internalDelete().then((response) => response.json());\n }\n\n /**\n * Save member data changes to the server. Call this method to update member data on the\n * server after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { IShortUserDescription } from \"./IUser\";\nimport { Role } from \"./Role\";\nimport { Member } from \"./Member\";\nimport { userFullName, userInitials } from \"./Utils\";\n\n/**\n * Projects are used to collaborate on models and track issues.\n */\nexport class Project {\n private _data: any;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements project data storage.\n * @param httpClient - Http client.\n */\n constructor(data: any, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.data = data;\n }\n\n protected internalGet(relativePath: string): Promise<Response> {\n return this.httpClient.get(`/projects/${this.id}${relativePath}`);\n }\n\n protected internalPost(relativePath: string, body?: BodyInit | object): Promise<Response> {\n return this.httpClient.post(`/projects/${this.id}${relativePath}`, body);\n }\n\n protected internalPut(relativePath: string, body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`/projects/${this.id}${relativePath}`, body);\n }\n\n protected internalDelete(relativePath: string): Promise<Response> {\n return this.httpClient.delete(`/projects/${this.id}${relativePath}`);\n }\n\n /**\n * Project features the user has access to.\n *\n * @property {string[]} project_actions - Actions are allowed to be performed: `update`,\n * `createTopic`, `createDocument`.\n * @readonly\n */\n get authorization(): any {\n return this.data.authorization;\n }\n\n /**\n * Project creation time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get createdAt(): string {\n return this.data.createdAt;\n }\n\n /**\n * Project custom fields object, to store custom data.\n */\n get customFields(): any {\n return this.data.customFields;\n }\n\n set customFields(value: any) {\n this.data.customFields = value;\n }\n\n /**\n * Raw project data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.previewUrl = value.avatarUrl\n ? `${this.httpClient.serverUrl}/projects/${this._data.id}/preview?updated=${value.updatedAt}`\n : \"\";\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\n this._data.owner.fullName = userFullName(this._data.owner);\n this._data.owner.initials = userInitials(this._data.owner.fullName);\n }\n\n /**\n * Project description.\n */\n get description(): string {\n return this.data.description;\n }\n\n set description(value: string) {\n this.data.description = value;\n }\n\n /**\n * Project end date in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n */\n get endDate(): string {\n return this.data.endDate;\n }\n\n set endDate(value: string | Date) {\n this.data.endDate = value instanceof Date ? value.toISOString() : value;\n }\n\n /**\n * Unique project ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * The number of members in the project.\n *\n * @readonly\n */\n get memberCount(): number {\n return this.data.memberCount;\n }\n\n /**\n * The number of models in the project.\n *\n * @readonly\n */\n get modelCount(): number {\n return this.data.modelCount;\n }\n\n /**\n * Project name.\n */\n get name(): string {\n return this.data.name;\n }\n\n set name(value: string) {\n this.data.name = value;\n }\n\n /**\n * Project owner information.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get owner(): IShortUserDescription {\n return this.data.owner;\n }\n\n /**\n * Project preview image URL or empty string if the project does not have a preview. Use\n * {@link Project.setPreview | setPreview()} to change preview image.\n *\n * @readonly\n */\n get previewUrl(): string {\n return this._data.previewUrl;\n }\n\n /**\n * `true` if project is public (shared) project.\n */\n get public(): boolean {\n return this.data.public;\n }\n\n set public(value: boolean) {\n this.data.public = value;\n }\n\n /**\n * Project start date in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n */\n get startDate(): string {\n return this.data.startDate;\n }\n\n set startDate(value: string | Date) {\n this.data.startDate = value instanceof Date ? value.toISOString() : value;\n }\n\n /**\n * The number of topics in the project.\n *\n * @readonly\n */\n get topicCount(): number {\n return this.data.topicCount;\n }\n\n /**\n * Project last update time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get updatedAt(): string {\n return this.data.updatedAt;\n }\n\n /**\n * Refresh project data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet(\"\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update project data on the server.\n *\n * @async\n * @param data - Raw project data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(\"\", data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Delete the project from the server.\n *\n * @async\n * @returns Returns the raw data of a deleted project.\n */\n delete(): Promise<any> {\n return this.internalDelete(\"\")\n .then((response) => response.text())\n .then((text) => {\n // TODO fix for server 23.5 and below\n try {\n return JSON.parse(text);\n } catch {\n return { id: this.id };\n }\n });\n }\n\n /**\n * Save project data changes to the server. Call this method to update project data on the\n * server after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n\n /**\n * Set or remove the project preview.\n *\n * @async\n * @param image - Preview image. Can be a\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}\n * string,\n * {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer | ArrayBuffer},\n * {@link https://developer.mozilla.org/docs/Web/API/Blob/Blob | Blob} or Web API\n * {@link https://developer.mozilla.org/docs/Web/API/File | File} object. Setting the\n * `image` to `null` will remove the preview.\n */\n\n async setPreview(image?: BodyInit | null): Promise<any> {\n if (!image) {\n await this.deletePreview();\n } else {\n const response = await this.internalPost(\"/preview\", image);\n this.data = await response.json();\n }\n return this;\n }\n\n /**\n * Remove the project preview.\n *\n * @async\n */\n async deletePreview(): Promise<this> {\n const response = await this.internalDelete(\"/preview\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Returns a list of project roles. Project {@link Member | members} have different abilities\n * depending on the role they have in a project.\n *\n * @async\n */\n getRoles(): Promise<Role[]> {\n return this.internalGet(\"/roles\")\n .then((response) => response.json())\n .then((array) => array.map((data) => new Role(data, this.id, this.httpClient)));\n }\n\n /**\n * Returns the role information.\n *\n * @async\n * @param name - Role name.\n */\n getRole(name: string): Promise<Role> {\n return this.internalGet(`/roles/${name}`)\n .then((response) => response.json())\n .then((data) => new Role(data, this.id, this.httpClient));\n }\n\n /**\n * Create a new project role.\n *\n * @async\n * @param name - Role name.\n * @param description - Role description.\n * @param permissions - Actions are allowed to be performed. See\n * {@link Role#permissions | Role.permissions} for more details.\n */\n createRole(name: string, description: string, permissions: any): Promise<Role> {\n return this.internalPost(\"/roles\", {\n name,\n description,\n permissions: permissions || {},\n })\n .then((response) => response.json())\n .then((data) => new Role(data, this.id, this.httpClient));\n }\n\n /**\n * Delete project role.\n *\n * @async\n * @param name - Role name.\n * @returns Returns the raw data of a deleted role.\n */\n deleteRole(name: string): Promise<any> {\n return this.internalDelete(`/roles/${name}`).then((response) => response.json());\n }\n\n /**\n * Returns a list of project members.\n *\n * @async\n */\n getMembers(): Promise<Member[]> {\n return this.internalGet(\"/members\")\n .then((response) => response.json())\n .then((array) => array.map((data) => new Member(data, this.id, this.httpClient)));\n }\n\n /**\n * Returns the member information.\n *\n * @async\n * @param memberId - Member ID.\n */\n getMember(memberId: string): Promise<Member> {\n return this.internalGet(`/members/${memberId}`)\n .then((response) => response.json())\n .then((data) => new Member(data, this.id, this.httpClient));\n }\n\n /**\n * Add a user to the project to become a member and have permission to perform actions.\n *\n * @async\n * @param userId - User ID.\n * @param role - User role from the list of project roles.\n */\n addMember(userId: string, role: string): Promise<Member> {\n return this.internalPost(\"/members\", { userId, role })\n .then((response) => response.json())\n .then((data) => new Member(data, this.id, this.httpClient));\n }\n\n /**\n * Remove a member from a project.\n *\n * @async\n * @param memberId - Member ID.\n * @returns Returns the raw data of a deleted member.\n */\n removeMember(memberId: string): Promise<any> {\n return this.internalDelete(`/members/${memberId}`).then((response) => response.json());\n }\n\n /**\n * Information about the file (model) that can be reference in the project topics.\n *\n * @typedef {any} FileInformation\n * @property {any[]} display_information - The list of fields to allow users to associate the\n * file with a server model.\n * @property {string} display_information.field_display_name - Field display name.\n * @property {string} display_information.field_value - Field value.\n * @property {any} file - The file reference object.\n * @property {string} file.file_name - File name.\n * @property {string} file.reference - File ID.\n */\n\n /**\n * Returns a list of project files. To add a file to this list, create a `project` permission\n * on the file using {@link File#createPermission | File.createPermission()}.\n *\n * @async\n */\n getFilesInformation(): Promise<any[]> {\n return this.httpClient\n .get(`/bcf/3.0/projects/${this.data.id}/files_information`)\n .then((response) => response.json())\n .then((items) => {\n items.forEach((item) => {\n const getFieldValue = (displayName: string) => {\n return (item.display_information.find((x) => x.field_display_name === displayName) || {}).field_value;\n };\n\n const previewUrl = `${this.httpClient.serverUrl}/files/${item.file.reference}/preview`;\n const ownerAvatarUrl = `${this.httpClient.serverUrl}/users/${getFieldValue(\"Owner\")}/avatar`;\n\n const ownerFirstName = getFieldValue(\"Owner First Name\");\n const ownerLastName = getFieldValue(\"Owner Last Name\");\n const ownerUserName = getFieldValue(\"Owner User Name\");\n const ownerFullName = userFullName(ownerFirstName, ownerLastName, ownerUserName);\n const ownerInitials = userInitials(ownerFullName);\n\n item.display_information.push({ field_display_name: \"Preview URL\", field_value: previewUrl });\n item.display_information.push({ field_display_name: \"Owner Avatar URL\", field_value: ownerAvatarUrl });\n item.display_information.push({ field_display_name: \"Owner Full Name\", field_value: ownerFullName });\n item.display_information.push({ field_display_name: \"Owner Initials\", field_value: ownerInitials });\n\n // updatedBy since 24.10\n\n const updatedByAvatarUrl = `${this.httpClient.serverUrl}/users/${getFieldValue(\"Updated By\")}/avatar`;\n\n const updatedByFirstName = getFieldValue(\"Updated By First Name\");\n const updatedByLastName = getFieldValue(\"Updated By Last Name\");\n const updatedByUserName = getFieldValue(\"Updated By User Name\");\n const updatedByFullName = userFullName(updatedByFirstName, updatedByLastName, updatedByUserName);\n const updatedByInitials = userInitials(updatedByFullName);\n\n item.display_information.push({\n field_display_name: \"Updated By Avatar URL\",\n field_value: updatedByAvatarUrl,\n });\n item.display_information.push({ field_display_name: \"Updated By Full Name\", field_value: updatedByFullName });\n item.display_information.push({ field_display_name: \"Updated By Initials\", field_value: updatedByInitials });\n\n // geometryType since 24.12\n\n const geometry = getFieldValue(\"Geometry Status\");\n const geometryGltf = getFieldValue(\"GeometryGltf Status\");\n const geometryType = geometry === \"done\" ? \"vsfx\" : geometryGltf === \"done\" ? \"gltf\" : \"\";\n\n item.display_information.push({ field_display_name: \"Geometry Type\", field_value: geometryType });\n });\n return items;\n });\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { FetchError } from \"./FetchError\";\nimport { userFullName, userInitials } from \"./Utils\";\n\n/**\n * The class representing a `user` entity.\n */\nexport class User {\n private _data: any;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements user data storage.\n * @param httpClient - Http client.\n */\n constructor(data: any, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.data = data;\n }\n\n /**\n * User avatar image URL or empty string if the user does not have an avatar. Use\n * {@link User.setAvatar | setAvatar()} to change avatar image.\n *\n * @readonly\n */\n get avatarUrl(): string {\n return this._data.avatarUrl;\n }\n\n /**\n * `true` if user is allowed to create a project.\n *\n * @readonly\n */\n get canCreateProject(): boolean {\n return this.data.canCreateProject;\n }\n\n /**\n * Account registration time (UTC) in the format specified in\n * {@link https://www.wikipedia.org/wiki/ISO_8601 | ISO 8601}.\n *\n * @readonly\n */\n get createAt(): string {\n return this.data.createAt;\n }\n\n /**\n * User custom fields object, to store custom data.\n */\n get customFields(): any {\n return this.data.customFields;\n }\n\n set customFields(value: any) {\n this._data.customFields = value;\n }\n\n /**\n * Raw user data received from the server.\n *\n * @readonly\n */\n\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.avatarUrl = value.avatarImage\n ? `${this.httpClient.serverUrl}/users/${this._data.id}/avatar?updated=${value.lastModified}`\n : \"\";\n this._data.fullName = userFullName(this._data);\n this._data.initials = userInitials(this._data.fullName);\n }\n\n /**\n * User email.\n *\n * @readonly\n */\n get email(): string {\n return this.data.email;\n }\n\n /**\n * The user's email confirmation code, or an empty string if the email has already been confirmed.\n *\n * @readonly\n */\n get emailConfirmationId(): string {\n return this.data.emailConfirmationId;\n }\n\n /**\n * First name.\n */\n get firstName(): string {\n return this.data.firstName;\n }\n\n set firstName(value: string) {\n this._data.firstName = value;\n }\n\n /**\n * Full name. Returns the user's first and last name. If first name and last names are empty,\n * returns the user name.\n */\n get fullName(): string {\n return this.data.fullName;\n }\n\n /**\n * Unique user ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * User initials. Returns a first letters of the user's first and last names. If first name\n * and last names are empty, returns the first letter of the user name.\n */\n get initials(): string {\n return this.data.initials;\n }\n\n /**\n * `true` if user is an administrator.\n */\n get isAdmin(): boolean {\n return this.data.isAdmin;\n }\n\n /**\n * `false` if the user has not yet confirmed his email address.\n *\n * @readonly\n */\n get isEmailConfirmed(): boolean {\n return this.data.isEmailConfirmed;\n }\n\n /**\n * User last update time (UTC) in the format specified in\n * {@link https://www.wikipedia.org/wiki/ISO_8601 | ISO 8601}.\n */\n get lastModified(): string {\n return this.data.lastModified;\n }\n\n /**\n * Last name.\n */\n get lastName(): string {\n return this.data.lastName;\n }\n\n set lastName(value: string) {\n this._data.lastName = value;\n }\n\n /**\n * User last sign in time (UTC) in the format specified in\n * {@link https://www.wikipedia.org/wiki/ISO_8601 | ISO 8601}.\n */\n get lastSignIn(): string {\n return this.data.lastSignIn;\n }\n\n /**\n * The maximum number of projects that a user can create.\n *\n * @readonly\n */\n get projectsLimit(): number {\n return this.data.projectsLimit;\n }\n\n /**\n * The identity provider used to create the account. Can be `ldap`, `oauth`, `saml` or empty.\n */\n get providerType(): string {\n return this.data.providerType;\n }\n\n /**\n * The user's access token (API key). Use {@link Client.signInWithToken()} to log in using token.\n *\n * @readonly\n */\n get token(): string {\n return this.data.tokenInfo.token;\n }\n\n /**\n * User name.\n */\n get userName(): string {\n return this.data.userName;\n }\n\n set userName(value: string) {\n this._data.userName = value;\n }\n\n /**\n * Refresh user data.\n *\n * Only administrators can checkout other users, if the current logged in user is not an\n * administrator, they can only checkout themselves, otherwise an exception will be thrown.\n */\n async checkout(): Promise<this> {\n if (this.httpClient.signInUserIsAdmin) {\n const response = await this.httpClient.get(`/users/${this.id}`);\n const data = await response.json();\n this.data = { id: data.id, ...data.userBrief };\n } else if (this.id === this.httpClient.signInUserId) {\n const response = await this.httpClient.get(\"/user\");\n const data = await response.json();\n this.data = { id: this.id, ...data };\n } else {\n return Promise.reject(new FetchError(403));\n }\n return this;\n }\n\n /**\n * Update user data on the server.\n *\n * Only administrators can update other users, if the current logged in user is not an\n * administrator, they can only update themself, otherwise an exception will be thrown.\n *\n * @async\n * @param data - Raw user data.\n */\n async update(data: any): Promise<this> {\n if (this.httpClient.signInUserIsAdmin) {\n const response = await this.httpClient.put(`/users/${this.id}`, { userBrief: data });\n const newData = await response.json();\n this.data = { id: newData.id, ...newData.userBrief };\n } else if (this.id === this.httpClient.signInUserId) {\n const response = await this.httpClient.put(\"/user\", data);\n const newData = await response.json();\n this.data = { id: this.id, ...newData };\n } else {\n return Promise.reject(new FetchError(403));\n }\n return this;\n }\n\n /**\n * Delete a user from the server.\n *\n * Only administrators can delete users, if the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * Administrators can delete themselves or other administrators. An administrator can only\n * delete themself if they is not the last administrator.\n *\n * You need to re-login to continue working after deleting the current logged in user.\n *\n * @async\n * @returns Returns the raw data of a deleted user.\n */\n delete(): Promise<any> {\n if (this.httpClient.signInUserIsAdmin) {\n return this.httpClient\n .delete(`/users/${this.id}`)\n .then((response) => response.json())\n .then((data) => {\n if (this.id === this.httpClient.signInUserId) {\n this.httpClient.headers = {};\n this.httpClient.signInUserId = \"\";\n this.httpClient.signInUserIsAdmin = false;\n }\n return data;\n });\n } else {\n return Promise.reject(new FetchError(403));\n }\n }\n\n /**\n * Save user data changes to the server. Call this method to update user data on the server\n * after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n\n /**\n * Set or remove the user avatar.\n *\n * Only administrators can set the avatar of other users, if the current logged in user is\n * not an administrator, they can only set their avatar, otherwise an exception will be thrown.\n *\n * @async\n * @param image - Avatar image. Can be a\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}\n * string,\n * {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer | ArrayBuffer},\n * {@link https://developer.mozilla.org/docs/Web/API/Blob/Blob | Blob} or Web API\n * {@link https://developer.mozilla.org/docs/Web/API/File | File} object. Setting the\n * `image` to `null` will remove the avatar.\n */\n async setAvatar(image?: BodyInit | null): Promise<this> {\n if (!image) {\n await this.deleteAvatar();\n } else if (this.httpClient.signInUserIsAdmin) {\n const response = await this.httpClient.post(`/users/${this.id}/avatar`, image);\n const data = await response.json();\n this.data = { id: data.id, ...data.userBrief };\n } else if (this.id === this.httpClient.signInUserId) {\n const response = await this.httpClient.post(\"/user/avatar\", image);\n const data = await response.json();\n this.data = { id: this.id, ...data };\n } else {\n return Promise.reject(new FetchError(403));\n }\n return this;\n }\n\n /**\n * Remove the user avatar.\n *\n * Only administrators can remove the avatar of other users, if the current logged in user is\n * not an administrator, they can only remove their avatar, otherwise an exception will be thrown.\n *\n * @async\n */\n async deleteAvatar(): Promise<this> {\n if (this.httpClient.signInUserIsAdmin) {\n const response = await this.httpClient.delete(`/users/${this.id}/avatar`);\n const data = await response.json();\n this.data = { id: data.id, ...data.userBrief };\n } else if (this.id === this.httpClient.signInUserId) {\n const response = await this.httpClient.delete(\"/user/avatar\");\n const data = await response.json();\n this.data = { id: this.id, ...data };\n } else {\n return Promise.reject(new FetchError(403));\n }\n return this;\n }\n\n /**\n * Change the user password.\n *\n * Only administrators can change the passwords of other users, if the current logged in user\n * is not an administrator, they can only change their password, otherwise an exception will\n * be thrown.\n *\n * To change their password, non-administrator users must provide their old password.\n *\n * @async\n * @param newPassword - New user password.\n * @param oldPassword - Old user password. Only required for non-administrator users to\n * change their password.\n */\n async changePassword(newPassword: string, oldPassword?: string): Promise<this> {\n if (this.httpClient.signInUserIsAdmin) {\n const response = await this.httpClient.put(`/users/${this.id}/password`, { new: newPassword });\n const data = await response.json();\n this.data = { id: data.id, ...data.userBrief };\n } else if (this.id === this.httpClient.signInUserId) {\n const response = await this.httpClient.put(\"/user/password\", { old: oldPassword, new: newPassword });\n const data = await response.json();\n this.data = { id: this.id, ...data };\n } else {\n return Promise.reject(new FetchError(403));\n }\n return this;\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { EventEmitter2 } from \"@inweb/eventemitter2\";\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { HttpClient } from \"./HttpClient\";\nimport { FetchError } from \"./FetchError\";\nimport { ClientEventMap } from \"./ClientEvents\";\nimport { Assembly } from \"./Assembly\";\nimport { File } from \"./File\";\nimport { Job } from \"./Job\";\nimport { Project } from \"./Project\";\nimport { User } from \"./User\";\nimport { parseArgs } from \"./Utils\";\n\n/**\n * The `Client.js` library class that provides methods to access the [Open Cloud\n * Server](https://cloud.opendesign.com/docs/index.html#/opencloud_server) resources like\n * Projects, Files, Issues etc.\n */\nexport class Client extends EventEmitter2<ClientEventMap> {\n private _serverUrl = \"\";\n public httpClient: IHttpClient = new HttpClient(\"\");\n private _user: User | null = null;\n public eventEmitter: EventEmitter2 = this;\n\n /**\n * @param params - An object containing client configuration parameters.\n * @param params.serverUrl - Open Cloud Server URL.\n */\n constructor(params: { serverUrl?: string; url?: string } = {}) {\n super();\n this.configure(params);\n }\n\n /**\n * Open Cloud Server URL. Use {@link Client.configure()} to change server URL.\n *\n * @readonly\n */\n get serverUrl(): string {\n return this._serverUrl;\n }\n\n /**\n * Deprecated since `25.3`. Use `Viewer.options()` instead to change Viewer parameters.\n */\n get options(): any {\n console.warn(\n \"Client.options has been deprecated since 25.3 and will be removed in a future release, use Viewer.options instead.\"\n );\n const data = {\n showWCS: true,\n cameraAnimation: true,\n antialiasing: true,\n groundShadow: false,\n shadows: false,\n cameraAxisXSpeed: 4,\n cameraAxisYSpeed: 1,\n ambientOcclusion: false,\n enableStreamingMode: true,\n enablePartialMode: false,\n memoryLimit: 3294967296,\n cuttingPlaneFillColor: { red: 0xff, green: 0x98, blue: 0x00 },\n edgesColor: { r: 0xff, g: 0x98, b: 0x00 },\n facesColor: { r: 0xff, g: 0x98, b: 0x00 },\n edgesVisibility: true,\n edgesOverlap: true,\n facesOverlap: false,\n facesTransparancy: 200,\n enableCustomHighlight: true,\n sceneGraph: false,\n edgeModel: true,\n reverseZoomWheel: false,\n enableZoomWheel: true,\n enableGestures: true,\n };\n return {\n ...data,\n data,\n defaults: () => data,\n resetToDefaults: () => {},\n saveToStorage: () => {},\n loadFromStorage: () => {},\n };\n }\n\n /**\n * Change the client configuration parameters.\n *\n * @param params - An object containing new configuration parameters.\n * @param params.serverUrl - Open Cloud Server URL.\n * @returns Returns a reference to the `Client`.\n */\n configure(params: { serverUrl?: string }): this {\n this._serverUrl = (params.serverUrl || \"\").replace(/\\/+$/, \"\");\n this.httpClient = new HttpClient(this.serverUrl);\n this._user = null;\n return this;\n }\n\n /**\n * The Object represents server version information.\n *\n * @typedef {any} VersionResult\n * @property {string} version - The server version.\n * @property {string} hash - Build hash.\n */\n\n /**\n * Returns server version.\n *\n * @async\n */\n version(): Promise<any> {\n return this.httpClient\n .get(\"/version\")\n .then((response) => response.json())\n .then((data) => ({\n ...data,\n server: data.version,\n client: \"CLIENT_JS_VERSION\",\n }));\n }\n\n /**\n * Register a new user with the specified email and password.\n *\n * @async\n * @param email - User email. Cannot be empty.\n * @param password - User password. Cannot be empty. Password can only contain letters (a-z,\n * A-Z), numbers (0-9), and special characters (~!@#$%^&*()_-+={}[]:;\"'`<>,.?|/\\ ).\n * @param userName - User name. Cannot be empty or blank if defined. Leave undefined to use\n * `username` from email.\n */\n registerUser(email: string, password: string, userName?: string): Promise<any> {\n return this.httpClient\n .post(\"/register\", {\n email,\n password,\n userName: userName ?? (email + \"\").split(\"@\").at(0),\n })\n .then((response) => response.json());\n }\n\n /**\n * Resend the Confirmation Email to new user. If the user's email is already confirmed, an\n * exception will be thrown.\n *\n * @async\n * @param email - User email.\n * @param password - User password.\n */\n resendConfirmationEmail(email: string, password: string): Promise<any> {\n return this.httpClient\n .post(\"/register/email-confirmation\", { email, password })\n .then((response) => response.json());\n }\n\n /**\n * Confirm the user's email. If the user's email is already confirmed, an exception will be thrown.\n *\n * @async\n * @param emailConfirmationId - Confirmation code from the Confirmation Email.\n */\n confirmUserEmail(emailConfirmationId: string): Promise<any> {\n return this.httpClient\n .get(`/register/email-confirmation/${emailConfirmationId}`)\n .then((response) => response.json());\n }\n\n /**\n * Log in an existing user using email or user name.\n *\n * @async\n * @param email - An email or user name for authentication request.\n * @param password - Password for authentication request.\n */\n async signInWithEmail(email: string, password: string): Promise<User> {\n const credentials = btoa(unescape(encodeURIComponent(email + \":\" + password)));\n this.httpClient.headers = { Authorization: \"Basic \" + credentials };\n const response = await this.httpClient.get(\"/token\");\n const data = await response.json();\n return this.setCurrentUser(data);\n }\n\n /**\n * Log in an existing user using access token (API Key).\n *\n * @async\n * @param token - An access token for authentication request. See {@link User.token} for more details.\n */\n async signInWithToken(token: string): Promise<User> {\n this.httpClient.headers = { Authorization: token };\n const response = await this.httpClient.get(\"/user\");\n const data = await response.json();\n return this.setCurrentUser(data);\n }\n\n // Save the current logged in user information for internal use.\n\n private setCurrentUser(data: any): User {\n this._user = new User(data, this.httpClient);\n this.httpClient.headers = { Authorization: data.tokenInfo.token };\n this.httpClient.signInUserId = this._user.id;\n this.httpClient.signInUserIsAdmin = this._user.isAdmin;\n return this._user;\n }\n\n private clearCurrentUser(): void {\n this._user = null;\n this.httpClient.headers = {};\n this.httpClient.signInUserId = \"\";\n this.httpClient.signInUserIsAdmin = false;\n }\n\n /**\n * Returns the current logged in user information. Returns `null` if the user is not logged\n * in or the logged in user has deleted himself.\n */\n getCurrentUser(): User | null {\n if (this._user && !this.httpClient.signInUserId) this._user = null;\n return this._user;\n }\n\n /**\n * Get the list of server indentity providers.\n *\n * To sign in with the provider in your web application:\n *\n * - Open the `provider.url` link using `window.open()`.\n * - Add a `/oauth` path (server-defined) handler to the router. In this handler, show an error\n * message if the `error` search parameter is present, or log in with the `token` search parameter.\n *\n * @async\n */\n getIdentityProviders(): Promise<any> {\n return this.httpClient.get(\"/identity\").then((response) => response.json());\n }\n\n /**\n * Returns the current server settings.\n *\n * @async\n */\n getServerSettings(): Promise<any> {\n return this.httpClient.get(\"/settings\").then((response) => response.json());\n }\n\n /**\n * Change server settings.\n *\n * Only administrators can change server settings, if the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * @async\n */\n updateServerSettings(settings: any): Promise<any> {\n return this.httpClient.put(\"/settings\", settings).then((response) => response.json());\n }\n\n /**\n * Returns a list of server users.\n *\n * Only administrators can get a list of users, if the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * @async\n */\n getUsers(): Promise<User[]> {\n return this.httpClient\n .get(\"/users\")\n .then((response) => response.json())\n .then((array) => array.map((data) => ({ id: data.id, ...data.userBrief })))\n .then((array) => array.map((data) => new User(data, this.httpClient)));\n }\n\n /**\n * Returns the user information.\n *\n * Only administrators can get other users, if the currently logged in user is not an\n * administrator, they can only get themselves, otherwise an exception will be thrown.\n *\n * @async\n * @param userId - User ID.\n */\n getUser(userId: string): Promise<User> {\n if (this.httpClient.signInUserIsAdmin) {\n return this.httpClient\n .get(`/users/${userId}`)\n .then((response) => response.json())\n .then((data) => ({ id: data.id, ...data.userBrief }))\n .then((data) => new User(data, this.httpClient));\n } else if (userId === this.httpClient.signInUserId) {\n return this.httpClient\n .get(\"/user\")\n .then((response) => response.json())\n .then((data) => ({ id: userId, ...data }))\n .then((data) => new User(data, this.httpClient));\n } else {\n return Promise.reject(new FetchError(403));\n }\n }\n\n /**\n * Create a new user.\n *\n * Only administrators can create users, if the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * @async\n * @param email - User email. Cannot be empty.\n * @param password - User password. Cannot be empty. Password can only contain latin letters\n * (a-z, A-Z), numbers (0-9), and special characters (~!@#$%^&*()_-+={}[]:;\"'`<>,.?|/\\ ).\n * @param params - Additional user data.\n * @param params.isAdmin - `true` if user is an administrator.\n * @param params.userName - User name. Cannot be empty or blank if defined. Leave undefined\n * to use `username` from email.\n * @param params.firstName - First name.\n * @param params.lastName - Last name.\n * @param params.canCreateProject - `true` if user is allowed to create a project.\n * @param params.projectsLimit - The maximum number of projects that the user can create.\n * @param params.storageLimit - The size of the file storage available to the user in bytes.\n */\n createUser(\n email: string,\n password: string,\n params: {\n isAdmin?: boolean;\n userName?: string;\n firstName?: string;\n lastName?: string;\n canCreateProject?: boolean;\n projectsLimit?: number;\n storageLimit?: number;\n } = {}\n ): Promise<User> {\n const { isAdmin, userName, ...rest } = params;\n return this.httpClient\n .post(\"/users\", {\n isAdmin,\n userBrief: {\n ...rest,\n email,\n userName: userName ?? (email + \"\").split(\"@\").at(0),\n },\n password,\n })\n .then((response) => response.json())\n .then((data) => ({ id: data.id, ...data.userBrief }))\n .then((data) => new User(data, this.httpClient));\n }\n\n /**\n * Delete a user from the server.\n *\n * Only administrators can delete users, if the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * Administrators can delete themselves or other administrators. An administrator can only\n * delete themself if they is not the last administrator.\n *\n * You need to re-login to continue working after deleting the current logged in user.\n *\n * @async\n * @param userId - User ID.\n * @returns Returns the raw data of a deleted user.\n */\n deleteUser(userId: string): Promise<any> {\n if (this.httpClient.signInUserIsAdmin) {\n return this.httpClient\n .delete(`/users/${userId}`)\n .then((response) => response.json())\n .then((data) => {\n if (userId === this.httpClient.signInUserId) {\n this.clearCurrentUser();\n }\n return data;\n });\n } else {\n return Promise.reject(new FetchError(403));\n }\n }\n\n /**\n * Result for file list.\n *\n * @typedef {any} FilesResult\n * @property {number} allSize - Total number of files the user has access to.\n * @property {number} start - The starting index in the file list in the request.\n * @property {number} limit - The maximum number of requested files.\n * @property {File[]} result - Result file list.\n * @property {number} size - The number of files in the result list.\n */\n\n /**\n * Returns a list of files the user has access to.\n *\n * @async\n * @param start - The starting index in the file list. Used for paging.\n * @param limit - The maximum number of files that should be returned per request. Used for paging.\n * @param name - Filter the files by part of the name.\n * @param ext - Filter the files by extension. Extension can be `dgn`, `dwf`, `dwg`, `dxf`,\n * `ifc`, `ifczip`, `nwc`, `nwd`, `obj`, `rcs`, `rfa`, `rvt`, `step`, `stl`, `stp`, `vsf`,\n * or any other drawing or reference file type extension. You can specify multiple\n * extensions on one `string` by separating them with a \"|\".\n * @param ids - List of file IDs to return. You can specify multiple IDs on one `string` by\n * separating them with a \"|\".\n * @param sortByDesc - Allows to specify the descending order of the result. By default,\n * files are sorted by name in ascending order.\n * @param {string} sortField - Allows to specify sort field.\n */\n getFiles(\n start?: number,\n limit?: number,\n name?: string,\n ext?: string | string[],\n ids?: string | string[],\n sortByDesc?: boolean,\n sortField?: string\n ): Promise<{ allSize: number; start: number; limit: number; result: File[]; size: number }> {\n const searchParams = new URLSearchParams();\n if (start > 0) searchParams.set(\"start\", start.toString());\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\n if (name) searchParams.set(\"name\", name);\n if (ext) {\n if (Array.isArray(ext)) ext = ext.join(\"|\");\n if (typeof ext === \"string\") ext = ext.toLowerCase();\n if (ext) searchParams.set(\"ext\", ext);\n }\n if (ids) {\n if (Array.isArray(ids)) ids = ids.join(\"|\");\n searchParams.set(\"id\", ids);\n }\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\n if (sortField) searchParams.set(\"sortField\", sortField);\n\n let queryString = searchParams.toString();\n if (queryString) queryString = \"?\" + queryString;\n\n return this.httpClient\n .get(`/files${queryString}`)\n .then((response) => response.json())\n .then((files) => {\n return {\n ...files,\n result: files.result.map((data) => new File(data, this.httpClient)),\n };\n });\n }\n\n /**\n * Returns the file information.\n *\n * @async\n * @param fileId - File ID.\n */\n getFile(fileId: string): Promise<File> {\n return this.httpClient\n .get(`/files/${fileId}`)\n .then((response) => response.json())\n .then((data) => new File(data, this.httpClient));\n }\n\n /**\n * Upload a drawing or reference file to the server.\n *\n * Fires:\n *\n * - {@link UploadProgressEvent | uploadprogress}\n *\n * @async\n * @param file - Web API <a href=\"https://developer.mozilla.org/docs/Web/API/File\"\n * target=\"_blank\">File</a> object are generally retrieved from a <a\n * href=\"https://developer.mozilla.org/docs/Web/API/FileList\" target=\"_blank\">FileList</a>\n * object returned as a result of a user selecting files using the HTML `<input>` element.\n * @param params - An object containing upload parameters.\n * @param params.geometry=true - Create job to extract file geometry data. Can be:\n *\n * - `true` - Extract file geometry data into `VSFX` to open the file in `VisualizeJS` viewer.\n * - `vsfx` - Extract file geometry data into `VSFX` to open the file in `VisualizeJS` viewer.\n * - `gltf` - Extract file geometry data into `glTF` to open the file in `Three.js` viewer.\n *\n * @param params.properties=false - Create job to extract file properties.\n * @param params.waitForDone=false - Wait for geometry and properties jobs to complete.\n * @param params.timeout - The time, in milliseconds that the function should wait jobs. If\n * no one jobs are done during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking jobs status.\n * @param params.signal - An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n * @param params.onProgress - Upload progress callback.\n */\n async uploadFile(\n file: globalThis.File,\n params: {\n geometry?: boolean | string;\n properties?: boolean;\n waitForDone?: boolean;\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onProgress?: (progress: number, file: globalThis.File) => void;\n } = {\n geometry: true,\n properties: false,\n waitForDone: false,\n }\n ): Promise<File> {\n const result = await this.httpClient\n .uploadFile(\"/files\", file, (progress) => {\n this.emitEvent({ type: \"uploadprogress\", data: progress, file });\n params.onProgress?.(progress, file);\n })\n .then((xhr: XMLHttpRequest) => JSON.parse(xhr.responseText))\n .then((data) => new File(data, this.httpClient));\n\n const geometryType = typeof params.geometry === \"string\" ? params.geometry : \"vsfx\";\n\n const jobs: string[] = [];\n if (params.geometry) jobs.push((await result.extractGeometry(geometryType)).outputFormat);\n if (params.properties) jobs.push((await result.extractProperties()).outputFormat);\n if (jobs.length > 0)\n if (params.waitForDone) await result.waitForDone(jobs, true, params);\n else await result.checkout();\n\n return result;\n }\n\n /**\n * Delete the drawing or reference file from the server.\n *\n * @async\n * @param fileId - File ID.\n * @returns Returns the raw data of a deleted file.\n */\n deleteFile(fileId: string): Promise<any> {\n return this.httpClient.delete(`/files/${fileId}`).then((response) => response.json());\n }\n\n /**\n * Download the drawing or reference file.\n *\n * @async\n * @param fileId - File ID.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadFile(fileId: string, onProgress?: (progress: number) => void, signal?: AbortSignal): Promise<ArrayBuffer> {\n return this.httpClient\n .downloadFile(`/files/${fileId}/downloads`, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Result for job list.\n *\n * @typedef {any} JobsResult\n * @property {number} allSize - Total number of jobs created by the user.\n * @property {number} start - The starting index in the job list in the request.\n * @property {number} limit - The maximum number of requested jobs.\n * @property {Job[]} result - Result job list.\n * @property {number} size - The number of jobs in the result list.\n */\n\n /**\n * Returns a list of jobs created by current user.\n *\n * @async\n * @param status - Filter the jobs by status. Status can be `waiting`, `inpogress`, `done` or\n * `failed`. You can specify multiple statuses on one `string` by separating them with a \"|\".\n * @param limit - The maximum number of jobs that should be returned per request. Used for paging.\n * @param start - The starting index in the job list. Used for paging.\n * @param sortByDesc - Allows to specify the descending order of the result. By default, jobs\n * are sorted by creation time in ascending order.\n * @param {boolean} sortField - Allows to specify sort field.\n */\n getJobs(\n status?: string | string[],\n limit?: number,\n start?: number,\n sortByDesc?: boolean,\n sortField?: string\n ): Promise<{ allSize: number; start: number; limit: number; result: Job[]; size: number }> {\n const searchParams = new URLSearchParams();\n if (start > 0) searchParams.set(\"start\", start.toString());\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\n if (status) {\n if (Array.isArray(status)) status = status.join(\"|\");\n if (typeof status === \"string\") status = status.trim().toLowerCase();\n if (status) searchParams.set(\"status\", status);\n }\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\n if (sortField) searchParams.set(\"sortField\", sortField);\n\n let queryString = searchParams.toString();\n if (queryString) queryString = \"?\" + queryString;\n\n return this.httpClient\n .get(`/jobs${queryString}`)\n .then((response) => response.json())\n .then((jobs) => ({\n ...jobs,\n result: jobs.result.map((data) => new Job(data, this.httpClient)),\n }));\n }\n\n /**\n * Returns the job information.\n *\n * @async\n * @param jobId - Job ID.\n */\n getJob(jobId: string): Promise<Job> {\n return this.httpClient\n .get(`/jobs/${jobId}`)\n .then((response) => response.json())\n .then((data) => new Job(data, this.httpClient));\n }\n\n /**\n * Create a new job.\n *\n * @async\n * @param fileId - File ID.\n * @param outputFormat - The job type. Can be one of:\n *\n * - `geometry` - Extract file geometry data into `VSFX`.\n * - `geometryGltf` - Extract file geometry data into `glTF`.\n * - `properties` - Extract file properties.\n * - `validation` - Validate the file. Only for `IFC`.\n * - `dwg`, `obj`, `gltf`, `glb`, `vsf`, `pdf`, `3dpdf` - Export file to the one of the supported format.\n * - Other custom job name. Custom job runner must be registered in the job templates table\n * before creating a job.\n *\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\n * for the File Converter tool in form \"--arg=value\".\n */\n createJob(fileId: string, outputFormat: string, parameters?: string | object): Promise<Job> {\n return this.httpClient\n .post(\"/jobs\", {\n fileId,\n outputFormat,\n parameters: parseArgs(parameters),\n })\n .then((response) => response.json())\n .then((data) => new Job(data, this.httpClient));\n }\n\n /**\n * Remove a job from the server job list. The method does not delete or stop jobs that are\n * already being executed.\n *\n * @async\n * @param jobId - Job ID.\n * @returns Returns the raw data of a deleted job.\n */\n deleteJob(jobId: string): Promise<any> {\n return this.httpClient.delete(`/jobs/${jobId}`).then((response) => response.json());\n }\n\n /**\n * Result for assembly list.\n *\n * @typedef {any} AssembliesResult\n * @property {number} allSize - Total number of assemblies the user has access to.\n * @property {number} start - The starting index in the assembly list in the request.\n * @property {number} limit - The maximum number of requested assemblies.\n * @property {Assembly[]} result - Result assembly list.\n * @property {number} size - The number of assemblies in the result list.\n */\n\n /**\n * Returns a list of assemblies the user has access to.\n *\n * @async\n * @param start - The starting index in the assembly list. Used for paging.\n * @param limit - The maximum number of assemblies that should be returned per request. Used\n * for paging.\n * @param name - Filter the assemblies by part of the name.\n * @param ids - List of assembly IDs to return. You can specify multiple IDs on one `string`\n * by separating them with a \"|\".\n * @param sortByDesc - Allows to specify the descending order of the result. By default\n * assemblies are sorted by name in ascending order.\n * @param sortField - Allows to specify sort field.\n */\n getAssemblies(\n start?: number,\n limit?: number,\n name?: string,\n ids?: string | string[],\n sortByDesc?: boolean,\n sortField?: string\n ): Promise<{ allSize: number; start: number; limit: number; result: Assembly[]; size: number }> {\n const searchParams = new URLSearchParams();\n if (start > 0) searchParams.set(\"start\", start.toString());\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\n if (name) searchParams.set(\"name\", name);\n if (ids) {\n if (Array.isArray(ids)) ids = ids.join(\"|\");\n if (typeof ids === \"string\") ids = ids.trim();\n if (ids) searchParams.set(\"id\", ids);\n }\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\n if (sortField) searchParams.set(\"sortField\", sortField);\n\n let queryString = searchParams.toString();\n if (queryString) queryString = \"?\" + queryString;\n\n return this.httpClient\n .get(`/assemblies${queryString}`)\n .then((response) => response.json())\n .then((assemblies) => {\n return {\n ...assemblies,\n result: assemblies.result.map((data) => new Assembly(data, this.httpClient)),\n };\n });\n }\n\n /**\n * Get assembly information.\n *\n * @async\n * @param assemblyId - Assembly ID.\n */\n getAssembly(assemblyId: string): Promise<Assembly> {\n return this.httpClient\n .get(`/assemblies/${assemblyId}`)\n .then((response) => response.json())\n .then((data) => new Assembly(data, this.httpClient));\n }\n\n /**\n * Create a new assembly.\n *\n * @async\n * @param files - List of file IDs.\n * @param name - Assembly name.\n * @param params - An object containing upload parameters.\n * @param params.waitForDone=false - Wait for assembly to be created.\n */\n createAssembly(\n files: string[],\n name: string,\n params?: {\n waitForDone?: boolean;\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n }\n ): Promise<Assembly> {\n const { waitForDone } = params ?? {};\n return this.httpClient\n .post(\"/assemblies\", { name, files })\n .then((response) => response.json())\n .then((data) => new Assembly(data, this.httpClient))\n .then((result) => (waitForDone ? result.waitForDone(params) : result));\n }\n\n /**\n * Delete the assembly from the server.\n *\n * @async\n * @param assemblyId - Assembly ID.\n * @returns Returns the raw data of a deleted assembly.\n */\n deleteAssembly(assemblyId: string): Promise<any> {\n return this.httpClient.delete(`/assemblies/${assemblyId}`).then((response) => response.json());\n }\n\n /**\n * Result for project list.\n *\n * @typedef {any} ProjectsResult\n * @property {number} allSize - Total number of projects the user has access to.\n * @property {number} start - The starting index in the project list in the request.\n * @property {number} limit - The maximum number of requested projects.\n * @property {Project[]} result - Result project list.\n * @property {number} size - The number of projects in the result list.\n */\n\n /**\n * Returns a list of projects the user has access to.\n *\n * @async\n * @param start - The starting index in the project list. Used for paging.\n * @param limit - The maximum number of projects that should be returned per request. Used for paging.\n * @param name - Filter the projects by part of the name.\n * @param ids - List of project IDs to return. You can specify multiple IDs on one `string`\n * by separating them with a \"|\".\n * @param sortByDesc - Allows to specify the descending order of the result. By default\n * projects are sorted by name in ascending order.\n */\n getProjects(\n start?: number,\n limit?: number,\n name?: string,\n ids?: string | string[],\n sortByDesc?: boolean\n ): Promise<{ allSize: number; start: number; limit: number; result: Project[]; size: number }> {\n const searchParams = new URLSearchParams();\n if (start > 0) searchParams.set(\"start\", start.toString());\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\n if (name) searchParams.set(\"name\", name);\n if (ids) {\n if (Array.isArray(ids)) ids = ids.join(\"|\");\n if (typeof ids === \"string\") ids = ids.trim();\n if (ids) searchParams.set(\"id\", ids);\n }\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\n\n let queryString = searchParams.toString();\n if (queryString) queryString = \"?\" + queryString;\n return this.httpClient\n .get(`/projects${queryString}`)\n .then((response) => response.json())\n .then((projects) => {\n // fix for server 23.5 and below\n if (Array.isArray(projects)) {\n let result = projects;\n if (ids) result = result.filter((x) => ids.includes(x.id));\n if (name) result = result.filter((x) => x.name.includes(name));\n if (limit > 0) {\n const begin = start > 0 ? start : 0;\n result = result.slice(begin, begin + limit);\n }\n return {\n allSize: projects.length,\n start,\n limit,\n result,\n size: result.length,\n };\n }\n return projects;\n })\n .then((projects) => {\n return {\n ...projects,\n result: projects.result.map((data) => new Project(data, this.httpClient)),\n };\n });\n }\n\n /**\n * Returns the project information.\n *\n * @async\n * @param projectId - Project ID.\n */\n getProject(projectId: string): Promise<Project> {\n return this.httpClient\n .get(`/projects/${projectId}`)\n .then((response) => response.json())\n .then((data) => new Project(data, this.httpClient));\n }\n\n /**\n * Create a new project.\n *\n * @async\n * @param name - Project name.\n * @param description - Project description.\n * @param startDate - Project start date.\n * @param endDate - Project end date.\n */\n createProject(\n name: string,\n description?: string,\n startDate?: Date | string,\n endDate?: Date | string\n ): Promise<Project> {\n return this.httpClient\n .post(\"/projects\", {\n name,\n description,\n startDate: startDate instanceof Date ? startDate.toISOString() : startDate,\n endDate: endDate instanceof Date ? endDate.toISOString() : endDate,\n })\n .then((response) => response.json())\n .then((data) => new Project(data, this.httpClient));\n }\n\n /**\n * Delete the project from the server.\n *\n * @async\n * @param projectId - Project ID.\n * @returns Returns the raw data of a deleted project.\n */\n deleteProject(projectId: string): Promise<any> {\n return this.httpClient\n .delete(`/projects/${projectId}`)\n .then((response) => response.text())\n .then((text) => {\n // fix for server 23.5 and below\n try {\n return JSON.parse(text);\n } catch {\n return { id: projectId };\n }\n });\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport { Assembly } from \"./Api/Assembly\";\nexport { Client } from \"./Api/Client\";\nexport { ClashTest } from \"./Api/ClashTest\";\nexport * from \"./Api/ClientEvents\";\nexport { File } from \"./Api/File\";\nexport { FetchError, statusText } from \"./Api/FetchError\";\nexport { Job } from \"./Api/Job\";\nexport { Member } from \"./Api/Member\";\nexport { Model } from \"./Api/Model\";\nexport { Permission } from \"./Api/Permission\";\nexport { Project } from \"./Api/Project\";\nexport { Role } from \"./Api/Role\";\nexport { User } from \"./Api/User\";\nexport { parseArgs, userFullName, userInitials, waitFor } from \"./Api/Utils\";\n\nexport const version = \"CLIENT_JS_VERSION\";\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sources":["../src/Api/FetchError.ts","../src/Api/Model.ts","../src/Api/Utils.ts","../src/Api/ClashTest.ts","../src/Api/Assembly.ts","../../eventemitter2/dist/eventemitter2.module.js","../src/Api/Fetch.ts","../src/Api/XMLHttp.ts","../src/Api/HttpClient.ts","../src/Api/Permission.ts","../src/Api/Job.ts","../src/Api/File.ts","../src/Api/Role.ts","../src/Api/Member.ts","../src/Api/Project.ts","../src/Api/User.ts","../src/Api/Client.ts","../src/index.ts"],"sourcesContent":["///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nconst STATUS_CODES = {\n 100: \"Continue\",\n 101: \"Switching Protocols\",\n 102: \"Processing\",\n 103: \"Early Hints\",\n 200: \"OK\",\n 201: \"Created\",\n 202: \"Accepted\",\n 203: \"Non-Authoritative Information\",\n 204: \"No Content\",\n 205: \"Reset Content\",\n 206: \"Partial Content\",\n 207: \"Multi-Status\",\n 208: \"Already Reported\",\n 226: \"IM Used\",\n 300: \"Multiple Choices\",\n 301: \"Moved Permanently\",\n 302: \"Found\",\n 303: \"See Other\",\n 304: \"Not Modified\",\n 305: \"Use Proxy\",\n 307: \"Temporary Redirect\",\n 308: \"Permanent Redirect\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 402: \"Payment Required\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 406: \"Not Acceptable\",\n 407: \"Proxy Authentication Required\",\n 408: \"Request Time-out\",\n 409: \"Conflict\",\n 410: \"Gone\",\n 411: \"Length Required\",\n 412: \"Precondition Failed\",\n 413: \"Payload Too Large\",\n 414: \"URI Too Long\",\n 415: \"Unsupported Media Type\",\n 416: \"Range Not Satisfiable\",\n 417: \"Expectation Failed\",\n 418: \"I'm a teapot\",\n 421: \"Misdirected Request\",\n 422: \"Unprocessable Entity\",\n 423: \"Locked\",\n 424: \"Failed Dependency\",\n 425: \"Too Early\",\n 426: \"Upgrade Required\",\n 428: \"Precondition Required\",\n 429: \"Too Many Requests\",\n 431: \"Header Fields Too Large\",\n 451: \"Unavailable For Legal Reasons\",\n 500: \"Internal Server Error\",\n 501: \"Not Implemented\",\n 502: \"Bad Gateway\",\n 503: \"Service Unavailable\",\n 504: \"Gateway Timeout\",\n 505: \"HTTP Version Not Supported\",\n 506: \"Variant Also Negotiates\",\n 507: \"Insufficient Storage\",\n 508: \"Loop Detected\",\n 509: \"Bandwidth Limit Exceeded\",\n 510: \"Not Extended\",\n 511: \"Network Authentication Required\",\n};\n\nexport function statusText(status: number): string {\n return STATUS_CODES[status] || `Error ${status}`;\n}\n\nexport function error400(text: string, _default = \"400\"): string {\n try {\n return JSON.parse(text).description;\n } catch {\n return _default;\n }\n}\n\n/**\n * The `FetchError` object indicates an error when request to Open Cloud Server could not be\n * performed. A `FetchError` is typically (but not exclusively) thrown when a network error\n * occurs, access denied, or object not found.\n */\n\nexport class FetchError extends Error {\n protected status: number;\n protected statusText: string;\n\n /**\n * @property status - The <a href=\"https://developer.mozilla.org/docs/Web/HTTP/Status\" target\n * =\"_blank\">HTTP status code</a> of the response.\n * @property message - Error message. Inherited from <a\n * href=\"https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Error\"\n * target =\"_blank\">Error</a>.\n */\n constructor(status: number, message?: string) {\n super(message || statusText(status));\n this.name = \"FetchError\";\n this.status = status;\n this.statusText = statusText(status);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport type { File } from \"./File\";\nimport type { Assembly } from \"./Assembly\";\n\n/**\n * The class representing the is a description of view of the file or assembly. For example,\n * for `dwg` it is a `Model` space or layout, and for `rvt` files it is a `3D` view.\n */\nexport class Model {\n private _data: any;\n private _file: File | Assembly;\n public httpClient: IHttpClient;\n public path: string;\n\n /**\n * @param data - An object that implements model data storage.\n * @param file - The `File` of 'Assembly' instance that owns the model.\n */\n constructor(data: any, file: File | Assembly) {\n this.path = `${file.path}/downloads`;\n this.httpClient = file.httpClient;\n this._file = file;\n this._data = data;\n }\n\n /**\n * The `Assembly` instance that owns the model.\n *\n * @readonly\n */\n get assembly(): Assembly {\n return this._file as Assembly;\n }\n\n /**\n * Raw model data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n }\n\n /**\n * Scene description resource file name. Use {@link Model.downloadResource()} to download\n * scene description file.\n *\n * @readonly\n */\n get database(): string {\n return this.data.database;\n }\n\n /**\n * `true` if this is default model.\n *\n * @readonly\n */\n get default(): boolean {\n return this.data.default;\n }\n\n /**\n * The `File` instance that owns the model.\n *\n * @readonly\n */\n get file(): File {\n return this._file as File;\n }\n\n /**\n * The ID of the file that owns the model.\n *\n * @readonly\n */\n get fileId(): string {\n return this.data.fileId;\n }\n\n /**\n * The list of geometry data resource files. Use {@link Model.downloadResource()} to download\n * geometry data files.\n *\n * @readonly\n */\n get geometry(): string[] {\n return this.data.geometry;\n }\n\n /**\n * Unique model ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Model name.\n *\n * @readonly\n */\n get name(): string {\n return this.data.name;\n }\n\n /**\n * Model owner type, matches the file extension this is model of the file, or `assembly` for\n * assemblies.\n *\n * @readonly\n */\n get type(): string {\n return this.file.type;\n }\n\n // Reserved for future use.\n get version(): string {\n return this.data.version;\n }\n\n /**\n * Returns model list with one item `self`.\n *\n * @async\n */\n getModels(): Promise<Model[]> {\n return Promise.resolve([this]);\n }\n\n /**\n * Returns a model transformation.\n *\n * @param handle - Model handle.\n */\n getModelTransformMatrix(handle: string): any {\n return this.file.getModelTransformMatrix(handle);\n }\n\n /**\n * Set or delete a model transformation.\n *\n * @async\n * @param handle - Model handle.\n * @param transform - Transformation matrix. To delete transformation provide this to `undefined`.\n */\n setModelTransformMatrix(handle: string, transform: any): Promise<this> {\n return this.file.setModelTransformMatrix(handle, transform).then(() => this);\n }\n\n /**\n * Returns model viewpoint list.\n *\n * @async\n */\n getViewpoints(): Promise<any[]> {\n return this._file\n .getViewpoints()\n .then((array) =>\n array.filter(\n ({ custom_fields = {} }) => custom_fields.modelId === this.id || custom_fields.modelName === this.name\n )\n );\n }\n\n /**\n * Add new model viewpoint. To create a new viewpoint use `Viewer.createViewpoint()`.\n *\n * @async\n * @param viewpoint - Viewpoint.\n */\n saveViewpoint(viewpoint: any): Promise<any> {\n return this._file.saveViewpoint({\n ...viewpoint,\n custom_fields: { ...viewpoint.custom_fields, modelId: this.id, modelName: this.name },\n });\n }\n\n /**\n * Delete model viewpoint.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @returns Returns the raw data of a deleted viewpoint.\n */\n deleteViewpoint(guid: string): Promise<any> {\n return this._file.deleteViewpoint(guid);\n }\n\n /**\n * Returns viewpoint preview image as\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}.\n *\n * @async\n * @param guid - Viewpoint GIID.\n */\n getSnapshot(guid: string): Promise<string> {\n return this._file.getSnapshot(guid);\n }\n\n /**\n * Returns snapshot data.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @param bitmapGuid - Bitmap GUID.\n */\n getSnapshotData(guid: string, bitmapGuid: string): Promise<string> {\n return this._file.getSnapshotData(guid, bitmapGuid);\n }\n\n /**\n * Download model resource file. Resource files are files that contain model scene\n * descriptions, or geometry data.\n *\n * @async\n * @param dataId - Resource file name.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResource(\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n return this._file.downloadResource(dataId, onProgress, signal);\n }\n\n /**\n * Download a part of model resource file. Resource files are files that contain model scene\n * descriptions, or geometry data.\n *\n * @param dataId - Resource file name.\n * @param ranges - A range of resource file contents to download.\n * @param requestId - Request ID for download progress callback.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResourceRange(\n dataId: string,\n requestId: number,\n ranges: Array<{ begin: number; end: number; requestId: number }>,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n return this._file.downloadResourceRange(dataId, requestId, ranges, onProgress, signal);\n }\n\n /**\n * Deprecated since `25.3`. Use {@link Model.downloadResource()} instead.\n */\n partialDownloadResource(\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n console.warn(\n \"Model.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use Model.downloadResource() instead.\"\n );\n return this.downloadResource(dataId, onProgress, signal);\n }\n\n /**\n * Deprecated since `25.3`. Use {@link Model.downloadResourceRange()} instead.\n */\n async downloadFileRange(\n requestId: number,\n records: any | null,\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<void> {\n if (!records) return;\n\n let ranges = [];\n if (records.length) {\n ranges = records.map((record) => ({\n begin: Number(record.begin),\n end: Number(record.end),\n requestId: record.reqId,\n }));\n } else {\n for (let i = 0; i < records.size(); i++) {\n const record = records.get(i);\n ranges.push({ begin: Number(record.begin), end: Number(record.end), requestId });\n record.delete();\n }\n }\n\n await this.downloadResourceRange(dataId, requestId, ranges, onProgress, signal);\n }\n\n /**\n * Returns a list of references to files used to extract geometry data.\n *\n * @async\n * @param [signal] - An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n */\n getReferences(signal?: AbortSignal): Promise<any> {\n return this._file.getReferences(signal);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nfunction delay(ms: number, signal: AbortSignal): Promise<boolean> {\n return new Promise((resolve) => {\n let timeoutId = 0;\n\n const abortHandler = () => {\n clearTimeout(timeoutId);\n resolve(true);\n };\n\n timeoutId = window.setTimeout(() => {\n signal.removeEventListener(\"abort\", abortHandler);\n resolve(false);\n }, ms);\n\n signal.addEventListener(\"abort\", abortHandler, { once: true });\n });\n}\n\nexport async function waitFor(\n func: (params: any) => Promise<boolean>,\n params: {\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n abortError?: DOMException;\n timeoutError?: DOMException;\n result?: any;\n } = {}\n): Promise<any> {\n const timeout = params.timeout || 600000;\n const interval = params.interval || 3000;\n const signal = params.signal ?? new AbortController().signal;\n const abortError = params.abortError ?? new DOMException(\"Aborted\", \"AbortError\");\n const timeoutError = params.timeoutError ?? new DOMException(\"Timeout\", \"TimeoutError\");\n\n const end = performance.now() + timeout;\n let count = timeout / interval;\n\n do {\n if (await func(params)) return Promise.resolve(params.result);\n if ((await delay(interval, signal)) || signal.aborted) return Promise.reject(abortError);\n } while (performance.now() < end && --count > 0);\n\n return Promise.reject(timeoutError);\n}\n\nexport function parseArgs(args?: string | object): object {\n if (typeof args === \"string\") {\n const firstArg = args.indexOf(\"--\");\n if (firstArg !== -1) args = args.slice(firstArg);\n const argArray = args\n .split(\"--\")\n .map((x) =>\n x\n .split(\"=\")\n .map((y) => y.split(\" \"))\n .flat()\n )\n .filter((x) => x[0])\n .map((x) => x.concat([\"\"]));\n return Object.fromEntries(argArray);\n }\n return args || {};\n}\n\nexport function userFullName(firstName: string | any, lastName = \"\", userName = \"\"): string {\n if (firstName && typeof firstName !== \"string\") {\n return userFullName(firstName.firstName ?? firstName.name, firstName.lastName, firstName.userName);\n }\n return `${firstName ?? \"\"} ${lastName ?? \"\"}`.trim() || userName;\n}\n\nexport function userInitials(fullName = \"\"): string {\n const names = fullName.split(\" \").filter((x) => x);\n return names\n .reduce((initials, name, index) => {\n if (index === 0 || index === names.length - 1) initials += name.charAt(0);\n return initials;\n }, \"\")\n .toUpperCase();\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { IShortUserDescription } from \"./IUser\";\nimport { waitFor, userFullName, userInitials } from \"./Utils\";\n\n/**\n * The base class provides information about the file/assembly clash detection test and test results.\n */\nexport class ClashTest {\n private _data: any;\n public basePath: string;\n public httpClient: IHttpClient;\n\n /**\n * @param data - Raw test data.\n * @param basePath - Clash tests API base path for the owner file/assembly.\n * @param httpClient - Http client.\n */\n constructor(data: any, basePath: string, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.basePath = basePath;\n this.data = data;\n }\n\n protected internalGet(relativePath: string): Promise<Response> {\n return this.httpClient.get(`${this.basePath}/clashes/${this.id}${relativePath}`);\n }\n\n protected internalPut(relativePath: string, body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`${this.basePath}/clashes/${this.id}${relativePath}`, body);\n }\n\n protected internalDelete(relativePath: string): Promise<Response> {\n return this.httpClient.delete(`${this.basePath}/clashes/${this.id}${relativePath}`);\n }\n\n /**\n * The type of the clashes that the test detects:\n *\n * - `Сlearance clash` (true) - a clash in which the entity A may or may not intersect with\n * entity B, but comes within a distance of less than the `tolerance`.\n * - `Hard clash` (false) - a clash in which the entity A intersects with entity B by a\n * distance of more than the `tolerance`.\n *\n * @readonly\n */\n get clearance(): boolean {\n return this.data.clearance;\n }\n\n /**\n * Test creation time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get createdAt(): string {\n return this.data.createdAt;\n }\n\n /**\n * Raw test data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\n this._data.owner.fullName = userFullName(this._data.owner);\n this._data.owner.initials = userInitials(this._data.owner.fullName);\n }\n\n /**\n * Unique test ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Test last update (UTC) time in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get lastModifiedAt(): string {\n return this.data.lastModifiedAt;\n }\n\n /**\n * Test name.\n */\n get name(): string {\n return this.data.name;\n }\n\n set name(value: string) {\n this.data.name = value;\n }\n\n /**\n * Test owner information.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get owner(): IShortUserDescription {\n return this.data.owner;\n }\n\n /**\n * First selection set for clash detection. Entities from `selectionSetA` will be tested\n * against each others by entities from the `selectionSetB` during the test.\n *\n * @readonly\n */\n get selectionSetA(): string[] {\n return this.data.selectionSetA;\n }\n\n /**\n * The type of first selection set for clash detection. Can be one of:\n *\n * - `all` - All file/assembly entities.\n * - `handle` - Entities with handles specified in the `selectionSetA`.\n * - `models` - Entities of file/assembly models specified in `selectionSetA`.\n * - `searchquery` - Entities retrieved by the search queries specified in `selectionSetA`.\n *\n * @readonly\n */\n get selectionTypeA(): string {\n return this.data.selectionTypeA;\n }\n\n /**\n * Second selection set for clash detection. Entities from `selectionSetB` will be tested\n * against each others by entities from the `selectionSetA` during the test.\n *\n * @readonly\n */\n get selectionSetB(): string[] {\n return this.data.selectionSetB;\n }\n\n /**\n * The type of second selection set for clash detection. Can be one of:\n *\n * - `all` - All file/assembly entities.\n * - `handle` - Entities with handles specified in the `selectionSetB`.\n * - `models` - Entities of file/assembly models specified in `selectionSetB`.\n * - `searchquery` - Entities retrieved by the search queries specified in `selectionSetB`.\n *\n * @readonly\n */\n get selectionTypeB(): string {\n return this.data.selectionTypeB;\n }\n\n /**\n * Test status. Can be `none`, `waiting`, `inprogress`, `done` or `failed`.\n *\n * @readonly\n */\n get status(): string {\n return this.data.status;\n }\n\n /**\n * The distance of separation between entities at which test begins detecting clashes.\n *\n * @readonly\n */\n get tolerance(): number {\n return this.data.tolerance;\n }\n\n /**\n * Refresh test data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet(\"\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update test data on the server.\n *\n * @async\n * @param data - Raw test data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(\"\", data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Remove a test from a file.\n *\n * @async\n * @returns Returns the raw data of a deleted test.\n */\n delete(): Promise<any> {\n return this.internalDelete(\"\").then((response) => response.json());\n }\n\n /**\n * Save test data changes to the server. Call this method to update test data on the server\n * after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n\n /**\n * Wait for test to complete. Test is done when it changes to `done` or `failed` status.\n *\n * @async\n * @param params - An object containing waiting parameters.\n * @param params.timeout - The time, in milliseconds that the function should wait test. If\n * test is not complete during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking test status.\n * @param params.signal- An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n */\n waitForDone(params?: { timeout?: number; interval?: number; signal?: AbortSignal }): Promise<this> {\n const checkDone = () => this.checkout().then((test) => [\"done\", \"failed\"].includes(test.status));\n return waitFor(checkDone, params).then(() => this);\n }\n\n /**\n * Returns a report with the clash detection results for this test.\n *\n * @async\n */\n getReport(): Promise<any> {\n return this.internalGet(\"/report\").then((response) => response.json());\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { FetchError } from \"./FetchError\";\nimport { IAssociatedFileData, IAssemblyVersionInfo } from \"./IAssembly\";\nimport { IShortUserDescription } from \"./IUser\";\nimport { Model } from \"./Model\";\nimport { ClashTest } from \"./ClashTest\";\nimport { waitFor, userFullName, userInitials } from \"./Utils\";\n\n/**\n * The class representing a `assembly` entity.\n */\nexport class Assembly {\n private _data: any;\n private _useVersion: number | undefined;\n public httpClient: IHttpClient;\n public path: string;\n\n /**\n * @param data - An object that implements assembly data storage.\n * @param httpClient - Http client.\n */\n constructor(data: any, httpClient: IHttpClient) {\n this.path = `/assemblies/${data.id}`;\n this.httpClient = httpClient;\n this.data = data;\n }\n\n public appendVersionParam(relativePath: string): string {\n if (this._useVersion === undefined) return relativePath;\n const delimiter = relativePath.includes(\"?\") ? \"&\" : \"?\";\n return `${relativePath}${delimiter}version=${this._useVersion}`;\n }\n\n protected internalGet(relativePath: string, signal?: AbortSignal): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.get(`${this.path}${relativePath}`, signal);\n }\n\n protected internalPost(relativePath: string, body?: BodyInit | object): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.post(`${this.path}${relativePath}`, body);\n }\n\n protected internalPut(relativePath: string, body?: BodyInit | object): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.put(`${this.path}${relativePath}`, body);\n }\n\n protected internalDelete(relativePath: string): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.delete(`${this.path}${relativePath}`);\n }\n\n // Reserved for future use\n\n get activeVersion(): number {\n return this.data.activeVersion;\n }\n\n /**\n * List of unique files from which the assembly was created.\n *\n * @readonly\n */\n get associatedFiles(): IAssociatedFileData[] {\n return this.data.associatedFiles;\n }\n\n /**\n * Assembly creation time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get created(): string {\n return this.data.created;\n }\n\n /**\n * Raw assembly data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\n this._data.owner.fullName = userFullName(this._data.owner);\n this._data.owner.initials = userInitials(this._data.owner.fullName);\n // associatedFiles since 23.12\n this._data.associatedFiles ??= [];\n this._data.associatedFiles.forEach((file) => (file.link = `${this.httpClient.serverUrl}/files/${file.fileId}`));\n }\n\n /**\n * List of file IDs from which the assembly was created.\n *\n * @readonly\n */\n get files(): string[] {\n return this.data.files;\n }\n\n /**\n * Assembly geometry data type:\n *\n * - `vsfx` - VSFX, assembly can be opened in `VisualizeJS` viewer.\n *\n * Returns an empty string if geometry data has not yet been extracted.\n */\n get geometryType(): string {\n return this.status === \"done\" ? \"vsfx\" : \"\";\n }\n\n /**\n * Unique assembly ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Assembly name.\n */\n get name(): string {\n return this.data.name;\n }\n\n set name(value: string) {\n this.data.name = value;\n }\n\n // Reserved for future use\n\n get originalAssemblyId(): string {\n return this.data.originalAssemblyId;\n }\n\n /**\n * Assembly owner information.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get owner(): IShortUserDescription {\n return this.data.owner;\n }\n\n // Reserved for future use\n\n get previewUrl(): string {\n return this.data.previewUrl || \"\";\n }\n\n /**\n * List of assembly related job IDs.\n *\n * @readonly\n */\n get relatedJobs(): string[] {\n return this.data.relatedJobs;\n }\n\n /**\n * Assembly geometry data and properties status. Can be `waiting`, `inprogress`, `done` or `failed`.\n *\n * An assemblies without geometry data cannot be opened in viewer.\n *\n * @readonly\n */\n get status(): string {\n return this.data.status;\n }\n\n /**\n * Assembly type. Returns an `assembly` string.\n *\n * @readonly\n */\n get type(): string {\n return \"assembly\";\n }\n\n // Reserved for future use\n\n get version(): number {\n return this.data.version;\n }\n\n get versions(): IAssemblyVersionInfo[] {\n return this.data.versions;\n }\n\n /**\n * Refresh assembly data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet(\"\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Updates assembly data on the server.\n *\n * @async\n * @param data - Raw assembly data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(\"\", data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Delete the assembly from the server.\n *\n * @async\n * @returns Returns the raw data of a deleted assembly.\n */\n delete(): Promise<any> {\n return this.internalDelete(\"\").then((response) => response.json());\n }\n\n /**\n * Save assembly data changes to the server. Call this method to update assembly data on the\n * server after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n\n // Reserved for future use\n\n setPreview(image?: BodyInit | null): Promise<this> {\n console.warn(\"Assembly does not support preview\");\n return Promise.resolve(this);\n }\n\n deletePreview(): Promise<this> {\n console.warn(\"Assembly does not support preview\");\n return Promise.resolve(this);\n }\n\n /**\n * Returns list of assembly models.\n *\n * @async\n */\n getModels(): Promise<Model[]> {\n return this.internalGet(\"/geometry\")\n .then((response) => response.json())\n .then((array) => array.map((data: any) => new Model(data, this)));\n }\n\n /**\n * Transformation matrix.\n *\n * @typedef {any} Transform\n * @property {any} translate - Translation part, move along the X, Y, Z axes.\n * @property {number} translate.x - The value for substruct for X axes.\n * @property {number} translate.y - The value for substruct for Y axes.\n * @property {number} translate.z - The value for substruct for Z axes.\n * @property {any} rotation - Rotation part, rotate by the specified angle, around the\n * specified vector.\n * @property {number} rotation.x - X coordinate of the rotation vector.\n * @property {number} rotation.y - Y coordinate of the rotation vector.\n * @property {number} rotation.z - Z coordinate of the rotation vector.\n * @property {number} rotation.angle - The angle of rotation.\n * @property {number} scale - Scaling part, scale with multiplier, from center of extends.\n */\n\n /**\n * Returns a model transformation.\n *\n * @param handle - Model handle.\n */\n getModelTransformMatrix(handle: string): any {\n return this.data.transform[handle];\n }\n\n /**\n * Set or delete a model transformation.\n *\n * @async\n * @param handle - Model handle.\n * @param transform - Transformation matrix. To delete transformation provide this to `undefined`.\n */\n setModelTransformMatrix(handle: string, transform: any): Promise<this> {\n const obj = { ...this.data.transform };\n obj[handle] = transform;\n return this.update({ transform: obj });\n }\n\n /**\n * Returns the properties for an objects in the assembly.\n *\n * @async\n * @param handles - Object original handle or handles array. Leave this parameter undefined\n * to get properties for all objects in the assembly.\n * @returns {Promise<any>}\n */\n getProperties(handles?: string | string[]): Promise<any[]> {\n const relativePath = handles !== undefined ? `/properties?handles=${handles}` : \"/properties\";\n return this.internalGet(relativePath).then((response) => response.json());\n }\n\n /**\n * Returns the list of original handles for an objects in the file that match the specified\n * patterns. Search patterns may be combined using query operators.\n *\n * @async\n * @example <caption>Simple search pattern.</caption>\n * searchPattern = {\n * key: \"Category\",\n * value: \"OST_Stairs\",\n * };\n *\n * @example <caption>Search patterns combination.</caption>\n * searchPattern = {\n * $or: [\n * {\n * $and: [\n * { key: \"Category\", value: \"OST_GenericModel\" },\n * { key: \"Level\", value: \"03 - Floor\" },\n * ],\n * },\n * { key: \"Category\", value: \"OST_Stairs\" },\n * ],\n * };\n *\n * @param searchPattern - Search pattern or combination of the patterns, see example below.\n */\n searchProperties(searchPattern: any): Promise<any[]> {\n return this.internalPost(\"/properties/search\", searchPattern).then((response) => response.json());\n }\n\n /**\n * Returns the cda.json for an assembly.\n *\n * @async\n */\n getCdaTree(): Promise<any[]> {\n return this.internalGet(`/properties/tree`).then((response) => response.json());\n }\n\n /**\n * Returns a list of assembly viewpoints.\n *\n * @async\n */\n getViewpoints(): Promise<any[]> {\n return this.internalGet(\"/viewpoints\")\n .then((response) => response.json())\n .then((viewpoints) => viewpoints.result);\n }\n\n /**\n * Add new assembly viewpoint. To create a new viewpoint use {@link Viewer.createViewpoint()}.\n *\n * @async\n * @param viewpoint - Viewpoint.\n */\n saveViewpoint(viewpoint: any): Promise<any> {\n return this.internalPost(\"/viewpoints\", viewpoint).then((response) => response.json());\n }\n\n /**\n * Delete assembly viewpoint.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @returns Returns the raw data of a deleted viewpoint.\n */\n deleteViewpoint(guid: any): Promise<any> {\n return this.internalDelete(`/viewpoints/${guid}`).then((response) => response.json());\n }\n\n /**\n * Returns viewpoint preview image as\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}.\n *\n * @async\n * @param guid - Viewpoint GUID.\n */\n getSnapshot(guid: any): Promise<any> {\n return this.internalGet(`/viewpoints/${guid}/snapshot`).then((response) => response.text());\n }\n\n /**\n * Returns viewpoint preview data.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @param bitmapGuid - Bitmap GUID.\n */\n getSnapshotData(guid: any, bitmapGuid: any): Promise<string> {\n return this.internalGet(`/viewpoints/${guid}/bitmaps/${bitmapGuid}`).then((response) => response.text());\n }\n\n /**\n * Download assembly resource file. Resource files are files that contain model scene\n * descriptions, or geometry data.\n *\n * @async\n * @param dataId - Resource file name.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResource(\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n const relativePath = this.appendVersionParam(`/downloads/${dataId}`);\n return this.httpClient\n .downloadFile(`${this.path}${relativePath}`, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Download a part of assembly resource file. Resource files are files that contain model\n * scene descriptions, or geometry data.\n *\n * @param dataId - Resource file name.\n * @param ranges - A range of resource file contents to download.\n * @param requestId - Request ID for download progress callback.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResourceRange(\n dataId: string,\n requestId: number,\n ranges: Array<{ begin: number; end: number; requestId: number }>,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n const relativePath = this.appendVersionParam(`/downloads/${dataId}?requestId=${requestId}`);\n return this.httpClient\n .downloadFileRange(`${this.path}${relativePath}`, requestId, ranges, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Deprecated since `25.3`. Use {@link Assembly.downloadResource()} instead.\n */\n partialDownloadResource(\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n console.warn(\n \"Assembly.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use Assembly.downloadResource() instead.\"\n );\n return this.downloadResource(dataId, onProgress, signal);\n }\n\n /**\n * Deprecated since `25.3`. Use {@link Assembly.downloadResourceRange()} instead.\n */\n async downloadFileRange(\n requestId: number,\n records: any | null,\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<void> {\n await this.downloadResourceRange(dataId, requestId, records, onProgress, signal);\n }\n\n // Reserved for future use\n\n getReferences(signal?: AbortSignal): Promise<any> {\n return Promise.resolve({ fileId: \"\", references: [] });\n }\n\n /**\n * Wait for assembly to be created. Assembly is created when it changes to `done` or `failed` status.\n *\n * @async\n * @param params - An object containing waiting parameters.\n * @param params.timeout - The time, in milliseconds that the function should wait assembly.\n * If assembly is not created during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking assembly status.\n * @param params.signal- An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n * @param params.onCheckout - Waiting progress callback. Return `true` to cancel waiting.\n */\n waitForDone(params?: {\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onCheckout?: (assembly: Assembly, ready: boolean) => boolean;\n }): Promise<this> {\n const checkDone = () =>\n this.checkout().then((assembly) => {\n const ready = [\"done\", \"failed\"].includes(assembly.status);\n const cancel = params?.onCheckout?.(assembly, ready);\n return cancel || ready;\n });\n\n return waitFor(checkDone, params).then(() => this);\n }\n\n /**\n * Returns a list of assembly clash tests.\n *\n * @async\n * @param {number} start - The starting index in the test list. Used for paging.\n * @param {number} limit - The maximum number of tests that should be returned per request.\n * Used for paging.\n * @param {string} name - Filter the tests by part of the name.\n * @param {string | string[]} ids - List of tests IDs to return. You can specify multiple IDs\n * on one `string` by separating them with a \"|\".\n * @param {bool} sortByDesc - Allows to specify the descending order of the result. By\n * default tests are sorted by name in ascending order.\n * @param {string} sortField - Allows to specify sort field.\n */\n getClashTests(\n start?: number,\n limit?: number,\n name?: string,\n ids?: string | string[],\n sortByDesc?: boolean,\n sortField?: string\n ): Promise<{ allSize: number; start: number; limit: number; result: ClashTest[]; size: number }> {\n const searchParams = new URLSearchParams();\n if (start > 0) searchParams.set(\"start\", start.toString());\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\n if (name) searchParams.set(\"name\", name);\n if (ids) {\n if (Array.isArray(ids)) ids = ids.join(\"|\");\n if (typeof ids === \"string\") ids = ids.trim();\n if (ids) searchParams.set(\"id\", ids);\n }\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\n if (sortField) searchParams.set(\"sortField\", sortField);\n\n let queryString = searchParams.toString();\n if (queryString) queryString = \"?\" + queryString;\n\n return this.internalGet(`/clashes${queryString}`)\n .then((response) => response.json())\n .then((tests) => {\n return {\n ...tests,\n result: tests.result.map((data) => new ClashTest(data, this.path, this.httpClient)),\n };\n });\n }\n\n /**\n * Returns the assembly clash test information.\n *\n * @async\n * @param testId - Test ID.\n */\n getClashTest(testId: string): Promise<ClashTest> {\n return this.internalGet(`/clashes/${testId}`)\n .then((response) => response.json())\n .then((data) => new ClashTest(data, this.path, this.httpClient));\n }\n\n /**\n * Create assembly clash test. Assembly must be in a `done` state, otherwise the test will fail.\n *\n * @async\n * @param name - Test name.\n * @param selectionTypeA - The type of first selection set for clash detection. Can be `all`,\n * `handles`, `models` or `searchquery`.\n * @param selectionTypeB - The type of second selection set for clash detection. Can be\n * `all`, `handles`, `models` or `searchquery`.\n * @param selectionSetA - First selection set for clash detection.\n * @param selectionSetB - Second selection set for clash detection.\n * @param params - An object containing test parameters.\n * @param params.tolerance - The distance of separation between entities at which test begins\n * detecting clashes.\n * @param params.clearance - The type of the clashes that the test detects: `true` for\n * `Сlearance clash` or `false` for `Hard clash`.\n * @param params.waitForDone - Wait for test to complete.\n * @param params.timeout - The time, in milliseconds that the function should wait test. If\n * test is not complete during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking test status.\n * @param params.signal- An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n */\n createClashTest(\n name: string,\n selectionTypeA: string,\n selectionTypeB: string,\n selectionSetA?: string | string[],\n selectionSetB?: string | string[],\n params?: {\n tolerance?: number | string;\n clearance?: boolean;\n waitForDone?: boolean;\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n }\n ): Promise<ClashTest> {\n const { tolerance, clearance, waitForDone } = params ?? {};\n if (!Array.isArray(selectionSetA)) selectionSetA = [selectionSetA];\n if (!Array.isArray(selectionSetB)) selectionSetB = [selectionSetB];\n\n return this.internalPost(\"/clashes\", {\n name,\n selectionTypeA,\n selectionTypeB,\n selectionSetA,\n selectionSetB,\n tolerance,\n clearance,\n })\n .then((response) => response.json())\n .then((data) => new ClashTest(data, this.path, this.httpClient))\n .then((result) => (waitForDone ? result.waitForDone(params) : result));\n }\n\n /**\n * Delete assembly clash test.\n *\n * @async\n * @param testId - Test ID.\n * @returns Returns the raw data of a deleted test.\n */\n deleteClashTest(testId: string): Promise<any> {\n return this.internalDelete(`/clashes/${testId}`).then((response) => response.json());\n }\n\n // Reserved for future use\n\n updateVersion(\n files?: string[],\n params: {\n waitForDone?: boolean;\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onProgress?: (progress: number, file: globalThis.File) => void;\n } = {\n waitForDone: false,\n }\n ): Promise<Assembly> {\n return Promise.reject(new Error(\"Assembly version support will be implemeted in a future release\"));\n }\n\n getVersions(): Promise<Assembly[] | undefined> {\n return Promise.resolve(undefined);\n }\n\n getVersion(version: number): Promise<Assembly> {\n return Promise.reject(new FetchError(404));\n }\n\n deleteVersion(version: number): Promise<any> {\n return Promise.reject(new FetchError(404));\n }\n\n setActiveVersion(version: number): Promise<this> {\n return this.update({ activeVersion: version });\n }\n\n useVersion(version?: number): this {\n this._useVersion = undefined;\n return this;\n }\n}\n","class EventEmitter2 {\n constructor() {\n this._listeners = {};\n }\n addEventListener(type, listener) {\n if (this._listeners[type] === undefined) this._listeners[type] = [];\n this._listeners[type].push(listener);\n return this;\n }\n removeEventListener(type, listener) {\n if (this._listeners[type] === undefined) return this;\n const listeners = this._listeners[type].filter((x => x !== listener));\n if (listeners.length !== 0) this._listeners[type] = listeners; else delete this._listeners[type];\n return this;\n }\n removeAllListeners(type) {\n if (type) delete this._listeners[type]; else this._listeners = {};\n return this;\n }\n emitEvent(event) {\n if (this._listeners[event.type] === undefined) return false;\n const invoke = this._listeners[event.type].slice();\n invoke.forEach((listener => listener.call(this, event)));\n return true;\n }\n on(type, listener) {\n return this.addEventListener(type, listener);\n }\n off(type, listener) {\n return this.removeEventListener(type, listener);\n }\n emit(event, ...args) {\n if (typeof event === \"string\") return this.emitEvent({\n type: event,\n args: args\n }); else if (typeof event === \"object\") return this.emitEvent(event); else return false;\n }\n}\n\nexport { EventEmitter2 };\n//# sourceMappingURL=eventemitter2.module.js.map\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { FetchError, error400 } from \"./FetchError\";\n\nfunction handleFetchError(response: Response): Promise<Response> {\n if (!response.ok) {\n switch (response.status) {\n case 400: {\n return response.text().then((text) => {\n console.error(text);\n return Promise.reject(new FetchError(400, error400(text)));\n });\n }\n case 500: {\n return response.text().then((text) => {\n console.error(error400(text, text));\n return Promise.reject(new FetchError(500));\n });\n }\n default:\n return Promise.reject(new FetchError(response.status));\n }\n }\n return Promise.resolve(response);\n}\n\nexport function $fetch(\n url: string,\n params: {\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n headers?: HeadersInit;\n body?: BodyInit | object;\n signal?: AbortSignal;\n } = { method: \"GET\" }\n): Promise<Response> {\n const headers = { ...params.headers };\n delete headers[\"Content-Type\"];\n\n let body: FormData | string | undefined = undefined;\n if (params.method === \"POST\" || params.method === \"PUT\") {\n if (params.body instanceof FormData) {\n body = params.body;\n } else if (params.body instanceof Blob) {\n body = new FormData();\n body.append(\"file\", params.body);\n } else if (params.body instanceof ArrayBuffer) {\n body = new FormData();\n body.append(\"file\", new Blob([params.body]));\n } else if (typeof params.body === \"object\") {\n body = JSON.stringify(params.body);\n headers[\"Content-Type\"] = \"application/json\";\n } else if (typeof params.body === \"string\") {\n body = params.body;\n headers[\"Content-Type\"] = \"text/plain\";\n }\n }\n\n const init: RequestInit = { method: params.method, headers };\n if (body) init.body = body;\n if (params.signal) init.signal = params.signal;\n\n return fetch(url, init).then(handleFetchError);\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { FetchError, error400 } from \"./FetchError\";\n\nfunction handleXMLHttpError(xhr: XMLHttpRequest): Promise<XMLHttpRequest> {\n if (xhr.status === 0) {\n return Promise.reject(new FetchError(0, \"Network error\"));\n }\n if (xhr.status < 200 || xhr.status > 299) {\n switch (xhr.status) {\n case 400: {\n console.error(xhr.responseText);\n return Promise.reject(new FetchError(400, error400(xhr.responseText)));\n }\n case 500: {\n console.error(error400(xhr.responseText, xhr.responseText));\n return Promise.reject(new FetchError(500));\n }\n default: {\n return Promise.reject(new FetchError(xhr.status));\n }\n }\n }\n return Promise.resolve(xhr);\n}\n\nexport function $xmlhttp(\n url: string,\n params: {\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n headers?: HeadersInit;\n body?: XMLHttpRequestBodyInit;\n uploadProgress?: (progress: number) => void;\n downloadProgress?: (progress: number) => void;\n } = { method: \"GET\" }\n): Promise<XMLHttpRequest> {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(params.method, url, true);\n for (const key in params.headers) {\n xhr.setRequestHeader(key, params.headers[key]);\n }\n function calcProgress(event: ProgressEvent): number {\n return event.lengthComputable ? event.loaded / event.total : 1;\n }\n xhr.upload.onprogress = (event) => params.uploadProgress && params.uploadProgress(calcProgress(event));\n xhr.onprogress = (event) => params.downloadProgress && params.downloadProgress(calcProgress(event));\n xhr.onloadend = (event) => handleXMLHttpError(event.target as XMLHttpRequest).then(resolve, reject);\n xhr.send(params.body);\n });\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { $fetch } from \"./Fetch\";\nimport { $xmlhttp } from \"./XMLHttp\";\n\nexport class HttpClient implements IHttpClient {\n public serverUrl: string;\n public headers: HeadersInit = {};\n public signInUserId = \"\";\n public signInUserIsAdmin = false;\n\n constructor(serverUrl: string) {\n this.serverUrl = serverUrl;\n }\n\n get(relativePath: string, signal?: AbortSignal): Promise<Response> {\n return $fetch(`${this.serverUrl}${relativePath}`, { method: \"GET\", headers: this.headers, signal });\n }\n\n post(relativePath: string, body?: BodyInit | object): Promise<Response> {\n return $fetch(`${this.serverUrl}${relativePath}`, { method: \"POST\", headers: this.headers, body });\n }\n\n put(relativePath: string, body?: BodyInit | object): Promise<Response> {\n return $fetch(`${this.serverUrl}${relativePath}`, { method: \"PUT\", headers: this.headers, body });\n }\n\n delete(relativePath: string): Promise<Response> {\n return $fetch(`${this.serverUrl}${relativePath}`, { method: \"DELETE\", headers: this.headers });\n }\n\n uploadFile(relativePath: string, file: File, onProgress?: (progress: number) => void): Promise<XMLHttpRequest> {\n const data = new FormData();\n data.append(\"file\", file);\n return $xmlhttp(`${this.serverUrl}${relativePath}`, {\n method: \"POST\",\n headers: this.headers,\n body: data,\n uploadProgress: onProgress,\n });\n }\n\n // async downloadFile(\n // relativePath: string,\n // onProgress?: (progress: number, chunk: Uint8Array) => void,\n // signal?: AbortSignal\n // ): Promise<Response> {\n // const response = await this.get(relativePath, signal);\n // const teedOff = response.body.tee();\n // if (onProgress) {\n // const contentLength = response.headers.get(\"Content-Length\");\n // const total = parseInt(contentLength, 10) || 1;\n // let loaded = 0;\n // const reader = teedOff[0].getReader();\n // reader.read().then(function processChunk({ done, value }) {\n // if (done) return;\n // loaded += value.length;\n // onProgress(loaded / total, value);\n // reader.read().then(processChunk);\n // });\n // }\n // return new Response(teedOff[1]);\n // }\n\n async downloadFile(\n relativePath: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<Response> {\n const response = await this.get(relativePath, signal);\n const contentLength = response.headers.get(\"Content-Length\");\n const total = parseInt(contentLength || \"\", 10) || 1;\n return new Response(\n new ReadableStream({\n async start(controller) {\n const reader = response.body.getReader();\n let loaded = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n controller.enqueue(value);\n loaded += value.length;\n if (onProgress) onProgress(loaded / total, value);\n }\n controller.close();\n },\n })\n );\n }\n\n async downloadFileRange(\n relativePath: string,\n requestId: number,\n ranges: Array<{ begin: number; end: number; requestId: number }>,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<Response> {\n const headers = { ...this.headers };\n headers[\"Range\"] = \"bytes=\" + ranges.map((x) => `${x.begin}-${x.end}`).join(\",\");\n const response = await $fetch(`${this.serverUrl}${relativePath}`, { method: \"GET\", headers, signal });\n const contentLength = response.headers.get(\"content-length\");\n const total = parseInt(contentLength || \"\", 10) || 1;\n return new Response(\n new ReadableStream({\n async start(controller) {\n const reader = response.body.getReader();\n let loaded = 0;\n let rangedIndex = 0;\n let rangePos = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n controller.enqueue(value);\n loaded += value.length;\n let chunkLeft = value.length;\n let chunkPos = 0;\n while (chunkLeft > 0) {\n const range = ranges[rangedIndex];\n const rangeLeft = range.end - range.begin - rangePos;\n if (chunkLeft < rangeLeft) {\n const chunk = value.subarray(chunkPos, chunkPos + chunkLeft);\n if (onProgress) onProgress(loaded / total, chunk, range.requestId);\n rangePos += chunkLeft;\n chunkLeft = 0;\n } else {\n const chunk = value.subarray(chunkPos, chunkPos + rangeLeft);\n if (onProgress) onProgress(loaded / total, chunk, range.requestId);\n chunkPos += rangeLeft;\n chunkLeft -= rangeLeft;\n rangedIndex++;\n rangePos = 0;\n }\n }\n }\n controller.close();\n },\n })\n );\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\n\n/**\n * A permission provides information about {@link File | file} sharing granted to a specific\n * {@link User | users}, group, or project {@link Member | member}.\n */\nexport class Permission {\n private _data: any;\n public fileId: string;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements permission data storage.\n * @param fileId - Owner file ID.\n * @param httpClient - Http client.\n */\n constructor(data: any, fileId: string, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.fileId = fileId;\n this.data = data;\n }\n\n private internalGet(): Promise<Response> {\n return this.httpClient.get(`/files/${this.fileId}/permissions/${this.id}`);\n }\n\n private internalPut(body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`/files/${this.fileId}/permissions/${this.id}`, body);\n }\n\n private internalDelete(): Promise<Response> {\n return this.httpClient.delete(`/files/${this.fileId}/permissions/${this.id}`);\n }\n\n /**\n * Defines what actions are allowed to be performed on a file with this permission:\n *\n * - `read` - The ability to read file description, geometry data and properties\n * - `readSourceFile` - The ability to read source file\n * - `write` - The ability to modify file name, description and references\n * - `readViewpoint` - The ability to read file viewpoints\n * - `createViewpoint` - The ability to create file viewpoints\n */\n get actions(): string[] {\n return this.data.actions;\n }\n\n set actions(value: string[]) {\n this._data.actions = value;\n }\n\n /**\n * Raw permission data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n }\n\n /**\n * Unique permission ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Principials are any entity that can be authenticated by the server, such as a any user or\n * project that will get access to the file.\n *\n * @typedef {any} Principial\n * @property {any} user - The user entry that get access to the file.\n * @property {string} user.id - User ID.\n * @property {string} user.name - User name.\n * @property {any} project - The project entry that get access to the file.\n * @property {string} project.id - Project ID.\n * @property {string} project.name - Project name.\n */\n\n /**\n * A collection of principials that will get access to the file.\n */\n get grantedTo(): any[] {\n return this.data.grantedTo;\n }\n\n set grantedTo(value: any[]) {\n this.data.grantedTo = value;\n }\n\n /**\n * Specifies whether all users have access to the file or not.\n */\n get public(): boolean {\n return this.data.public;\n }\n\n set public(value: boolean) {\n this.data.public = value;\n }\n\n /**\n * Refresh permission data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet();\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update permission data on the server.\n *\n * @async\n * @param data - Raw permission data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Remove a permission from a file.\n *\n * @async\n * @returns Returns the raw data of a deleted permission.\n */\n delete(): Promise<any> {\n return this.internalDelete().then((response) => response.json());\n }\n\n /**\n * Save permission data changes to the server. Call this method to update permission data on\n * the server after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { waitFor } from \"./Utils\";\n\n/**\n * The class representing a `job` entity describes the process of converting a file from one\n * format to another, to obtain geometric data, validate the file, or run a clash test.\n */\nexport class Job {\n private _data: any;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements job data storage.\n * @param httpClient - Http client.\n */\n constructor(data: any, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.data = data;\n }\n\n protected internalGet(): Promise<Response> {\n return this.httpClient.get(`/jobs/${this.data.id}`);\n }\n\n protected internalPut(body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`/jobs/${this.data.id}`, body);\n }\n\n protected internalDelete(): Promise<Response> {\n return this.httpClient.delete(`/jobs/${this.data.id}`);\n }\n\n /**\n * The ID of the assembly the job is working on (internal).\n *\n * @readonly\n */\n get assemblyId(): string {\n return this.data.assemblyId;\n }\n\n /**\n * Job creator ID. Use {@link Client#getUser | Client.getUser()} to obtain detailed creator information.\n *\n * @readonly\n */\n get authorId(): string {\n return this.data.authorId;\n }\n\n /**\n * Job creation time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get createdAt(): string {\n return this.data.createdAt;\n }\n\n /**\n * Raw job data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n }\n\n /**\n * `true` if job is `done` or `failed`. See {@link Job#status | status} for more details.\n *\n * @readonly\n */\n get done(): boolean {\n return this.data.status === \"done\" || this.data.status === \"failed\";\n }\n\n /**\n * The ID of the file the job is working on.\n *\n * @readonly\n */\n get fileId(): string {\n return this.data.fileId;\n }\n\n /**\n * Unique job ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Job last update (UTC) time in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get lastUpdate(): string {\n return this.data.lastUpdate;\n }\n\n /**\n * Job type. Can be `properties`, `geomerty`, `geomertyGltf`, `validation`, `clash`, `dwg`,\n * `obj`, `gltf`, `glb`, `vsf`, `pdf`, `3dpdf` or custom job name.\n *\n * @readonly\n */\n get outputFormat(): string {\n return this.data.outputFormat;\n }\n\n /**\n * Parameters for the job runner.\n *\n * @readonly\n */\n get parameters(): any {\n return this.data.parameters;\n }\n\n /**\n * Job status. Can be `waiting`, `inprogress`, `done` or `failed`.\n *\n * @readonly\n */\n get status(): string {\n return this.data.status;\n }\n\n /**\n * Job status description message.\n *\n * @readonly\n */\n get statusMessage(): string {\n return this.data.statusMessage;\n }\n\n /**\n * Job starting time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get startedAt(): string {\n return this.data.startedAt;\n }\n\n /**\n * Refresh job data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet();\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update job data on the server.\n *\n * Only administrators can update job data. If the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * @async\n * @param data - Raw job data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Remove a job from the server job list. Jobs that are in progress or have already been\n * completed cannot be deleted.\n *\n * @async\n * @returns Returns the raw data of a deleted job.\n */\n delete(): Promise<any> {\n return this.internalDelete().then((response) => response.json());\n }\n\n // /**\n // * Save job data changes to the server. Call this method to update job data on the server\n // * after any changes.\n // *\n // * @async\n // * @returns {Promise<Job>}\n // */\n // save() {\n // return this.update(this.data);\n // }\n\n /**\n * Wait for job to be done. Job is done when it changes to `done` or `failed` status.\n *\n * @async\n * @param params - An object containing waiting parameters.\n * @param params.timeout - The time, in milliseconds that the function should wait job. If\n * jobs is not done during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking job status.\n * @param params.signal- An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n * @param params.onCheckout - Waiting progress callback. Return `true` to cancel waiting.\n */\n waitForDone(params?: {\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onCheckout?: (job: Job, ready: boolean) => boolean;\n }): Promise<this> {\n const checkDone = () =>\n this.checkout().then((job) => {\n const ready = [\"done\", \"failed\"].includes(job.status);\n const cancel = params?.onCheckout?.(job, ready);\n return cancel || ready;\n });\n\n return waitFor(checkDone, params).then(() => this);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { IFileStatus, IFileReferences, IFileVersionInfo } from \"./IFile\";\nimport { IShortUserDescription } from \"./IUser\";\nimport { Model } from \"./Model\";\nimport { Permission } from \"./Permission\";\nimport { Job } from \"./Job\";\nimport { waitFor, parseArgs, userFullName, userInitials } from \"./Utils\";\n\n/**\n * The class representing a `file` entity.\n */\nexport class File {\n private _data: any;\n private _useVersion: number | undefined;\n public httpClient: IHttpClient;\n public path: string;\n\n /**\n * @param data - An object that implements file data storage.\n * @param httpClient - Http client for API.\n */\n constructor(data: any, httpClient: IHttpClient) {\n this.path = `/files/${data.id}`;\n this.httpClient = httpClient;\n this.data = data;\n }\n\n private appendVersionParam(relativePath: string): string {\n if (this._useVersion === undefined) return relativePath;\n const delimiter = relativePath.includes(\"?\") ? \"&\" : \"?\";\n return `${relativePath}${delimiter}version=${this._useVersion}`;\n }\n\n private internalGet(relativePath: string, signal?: AbortSignal): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.get(`${this.path}${relativePath}`, signal);\n }\n\n private internalPost(relativePath: string, body?: BodyInit | object): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.post(`${this.path}${relativePath}`, body);\n }\n\n private internalPut(relativePath: string, body?: BodyInit | object): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.put(`${this.path}${relativePath}`, body);\n }\n\n private internalDelete(relativePath: string): Promise<Response> {\n relativePath = this.appendVersionParam(relativePath);\n return this.httpClient.delete(`${this.path}${relativePath}`);\n }\n\n /**\n * Active version number of the file.\n *\n * @readonly\n */\n get activeVersion(): number {\n return this.data.activeVersion;\n }\n\n /**\n * File creation time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get created(): string {\n return this.data.created;\n }\n\n /**\n * File custom fields object, to store custom data.\n *\n * @readonly\n */\n get customFields(): any {\n return this.data.customFields;\n }\n\n set customFields(value: any) {\n this.data.customFields = value;\n }\n\n /**\n * Raw file data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.previewUrl = value.preview\n ? `${this.httpClient.serverUrl}${this.path}/preview?updated=${value.updatedAt}`\n : \"\";\n // owner since 24.8\n if (typeof this._data.owner === \"string\") this._data.owner = { userId: this._data.owner };\n this._data.owner ??= {};\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\n this._data.owner.fullName = userFullName(this._data.owner);\n this._data.owner.initials = userInitials(this._data.owner.fullName);\n // status since 24.9\n this._data.status ??= {};\n this._data.status.geometry ??= { state: this._data.geometryStatus ?? \"none\" };\n this._data.status.properties ??= { state: this._data.propertiesStatus ?? \"none\" };\n this._data.status.validation ??= { state: this._data.validationStatus ?? \"none\" };\n // updatedBy since 24.10\n this._data.updatedBy ??= {};\n this._data.updatedBy.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.updatedBy.userId}/avatar`;\n this._data.updatedBy.fullName = userFullName(this._data.updatedBy);\n this._data.updatedBy.initials = userInitials(this._data.updatedBy.fullName);\n // versions since 24.10\n this._data.versions ??= [{ ...value }];\n // geometryGltf status since 24.12\n this._data.status.geometryGltf ??= { state: \"none\" };\n }\n\n /**\n * Returns a list of files in different formats in which the active version of the file was\n * exported. To export file to one of the supported formats create File Converter job using\n * {@link File.createJob()}. To download exported file use {@link File.downloadResource()}.\n *\n * @readonly\n */\n get exports(): string[] {\n return this.data.exports;\n }\n\n /**\n * Geometry data type of the active file version. Can be one of:\n *\n * - `vsfx` - `VSFX`, file can be opened in `VisualizeJS` viewer.\n * - `gltf` - `glTF`, file can be opened in `Three.js` viewer.\n *\n * Returns an empty string if geometry data has not yet been extracted. A files without\n * geometry data can be exported to other formas, but cannot be opened in viewer.\n */\n get geometryType(): string {\n if (this.status.geometryGltf.state === \"done\") return \"gltf\";\n else if (this.status.geometry.state === \"done\") return \"vsfx\";\n else return \"\";\n }\n\n /**\n * Unique file ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * File name, including the extension.\n */\n get name(): string {\n return this.data.name;\n }\n\n set name(value: string) {\n this.data.name = value;\n }\n\n /**\n * If the file is a version, then returns the ID of the original file. Otherwise, returns the file ID.\n *\n * @readonly\n */\n get originalFileId(): string {\n return this.data.originalFileId;\n }\n\n /**\n * File owner information.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get owner(): IShortUserDescription {\n return this.data.owner;\n }\n\n /**\n * File preview image URL or empty string if the file does not have a preview. Use\n * {@link File.setPreview | setPreview()} to change preview image.\n *\n * @readonly\n */\n get previewUrl(): string {\n return this.data.previewUrl;\n }\n\n /**\n * The size of the active version of the file in bytes.\n *\n * @readonly\n */\n get size(): number {\n return this.data.size;\n }\n\n /**\n * Total size of all versions of the file in the storage in bytes.\n *\n * @readonly\n */\n get sizeTotal(): number {\n return this.data.sizeTotal;\n }\n\n /**\n * Data status of the active version of the file. Contains:\n *\n * - `geometry` - status of geometry data of `VSFX` type.\n * - `geometryGltf` - status of geometry data of `glTF` type.\n * - `properties` - status of properties.\n * - `validation` - status of validation.\n *\n * Each status entity is a record with properties:\n *\n * - `state` - Data state. Can be `none`, `waiting`, `inprogress`, `done` or `failed`.\n * - `jobId` - Unique ID of the data job.\n *\n * @readonly\n */\n get status(): IFileStatus {\n return this.data.status;\n }\n\n /**\n * File type, matches the file extension.\n *\n * @readonly\n */\n get type(): string {\n return this.data.type;\n }\n\n /**\n * File last update time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get updatedAt(): string {\n return this.data.updatedAt;\n }\n\n /**\n * Information about the user who made the last update.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get updatedBy(): IShortUserDescription {\n return this.data.updatedBy;\n }\n\n /**\n * Zero-based file version number for version files. The original file has version `0`.\n */\n\n get version(): number {\n return this.data.version;\n }\n\n /**\n * List of the file versions.\n *\n * @readonly\n */\n get versions(): IFileVersionInfo[] {\n return this.data.versions;\n }\n\n /**\n * Refresh file data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet(\"\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update file data on the server.\n *\n * @async\n * @param data - Raw file data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(\"\", data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Delete the file and all its versions from the server.\n *\n * @async\n * @returns Returns the raw data of a deleted file.\n */\n delete(): Promise<any> {\n return this.internalDelete(\"\").then((response) => response.json());\n }\n\n /**\n * Save file data changes to the server. Call this method to update file data on the server\n * after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n\n /**\n * Set or remove the file preview.\n *\n * @async\n * @param image - Preview image.Can be a\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}\n * string,\n * {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer | ArrayBuffer},\n * {@link https://developer.mozilla.org/docs/Web/API/Blob/Blob | Blob} or Web API\n * {@link https://developer.mozilla.org/docs/Web/API/File | File} object. Setting the\n * `image` to `null` will remove the preview.\n */\n async setPreview(image?: BodyInit | null): Promise<this> {\n if (!image) {\n await this.deletePreview();\n } else {\n const response = await this.internalPost(\"/preview\", image);\n this.data = await response.json();\n }\n return this;\n }\n\n /**\n * Remove the file preview.\n *\n * @async\n */\n async deletePreview(): Promise<this> {\n const response = await this.internalDelete(\"/preview\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Returns a list of models of the active version of the file.\n *\n * @async\n */\n getModels(): Promise<Model[]> {\n return this.internalGet(\"/geometry\")\n .then((response) => response.json())\n .then((array) => array.map((data) => new Model(data, this)));\n }\n\n // File does not support model transformation.\n\n getModelTransformMatrix(handle: string): any {\n return undefined;\n }\n\n setModelTransformMatrix(handle: string, transform: any): Promise<this> {\n console.warn(\"File does not support model transformation\");\n return Promise.resolve(this);\n }\n\n /**\n * Object properties.\n *\n * @typedef {any} Properties\n * @property {string} handle - Object original handle.\n * @property {string | any} * - Object property. Can be `any` for nested properties.\n */\n\n /**\n * Returns the properties for an objects in the active version of the file.\n *\n * @async\n * @param handles - Object original handle or handles array. Leave this parameter `undefined`\n * to get properties for all objects in the file.\n */\n getProperties(handles?: string | string[]): Promise<any[]> {\n const relativePath = handles !== undefined ? `/properties?handles=${handles}` : \"/properties\";\n return this.internalGet(relativePath).then((response) => response.json());\n }\n\n /**\n * Search pattern.\n *\n * @typedef {any} SearchPattern\n * @property {string} key - Property name.\n * @property {string} value - Property value.\n */\n\n /**\n * Query operator. Operator name can be `$and`, `$or`, `$not`, `$eq`, `$regex`.\n *\n * @typedef {any} QueryOperator\n * @property {string | SearchPattern[] | QueryOperator[]} * - Array of the query values or\n * patterns for operator.\n */\n\n /**\n * Returns the list of original handles for an objects in the active version of the file that\n * match the specified patterns. Search patterns may be combined using query operators.\n *\n * @async\n * @example <caption>Simple search pattern.</caption>\n * searchPattern = {\n * key: \"Category\",\n * value: \"OST_Stairs\",\n * };\n *\n * @example <caption>Search patterns combination.</caption>\n * searchPattern = {\n * $or: [\n * {\n * $and: [\n * { key: \"Category\", value: \"OST_GenericModel\" },\n * { key: \"Level\", value: \"03 - Floor\" },\n * ],\n * },\n * { key: \"Category\", value: \"OST_Stairs\" },\n * ],\n * };\n *\n * @param {SearchPattern | QueryOperator} searchPattern - Search pattern or combination of\n * the patterns, see example below.\n * @returns {Promise<Properties[]>}\n */\n\n searchProperties(searchPattern: any): Promise<any[]> {\n return this.internalPost(\"/properties/search\", searchPattern).then((response) => response.json());\n }\n\n /**\n * Returns the cda.json for an active version of the file.\n *\n * @async\n */\n getCdaTree(): Promise<any[]> {\n return this.internalGet(`/properties/tree`).then((response) => response.json());\n }\n\n /**\n * Returns a list of file viewpoints.\n *\n * @async\n */\n getViewpoints(): Promise<any[]> {\n return this.internalGet(\"/viewpoints\")\n .then((response) => response.json())\n .then((viewpoints) => viewpoints.result);\n }\n\n /**\n * Add new file viewpoint. To create a new viewpoint use `Viewer.createViewpoint()`.\n *\n * @async\n * @param viewpoint - Viewpoint.\n */\n saveViewpoint(viewpoint: any): Promise<any> {\n return this.internalPost(\"/viewpoints\", viewpoint).then((response) => response.json());\n }\n\n /**\n * Delete file viewpoint.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @returns Returns the raw data of a deleted viewpoint.\n */\n deleteViewpoint(guid: string): Promise<any> {\n return this.internalDelete(`/viewpoints/${guid}`).then((response) => response.json());\n }\n\n /**\n * Returns viewpoint preview image as\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}.\n *\n * @async\n * @param guid - Viewpoint GUID.\n */\n getSnapshot(guid: string): Promise<string> {\n return this.internalGet(`/viewpoints/${guid}/snapshot`).then((response) => response.text());\n }\n\n /**\n * Returns viewpoint preview data.\n *\n * @async\n * @param guid - Viewpoint GUID.\n * @param bitmapGuid - Bitmap GUID.\n */\n getSnapshotData(guid: string, bitmapGuid: string): Promise<string> {\n return this.internalGet(`/viewpoints/${guid}/bitmaps/${bitmapGuid}`).then((response) => response.text());\n }\n\n /**\n * Download source of active version of the file.\n *\n * @async\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n download(onProgress?: (progress: number) => void, signal?: AbortSignal): Promise<ArrayBuffer> {\n const relativePath = this.appendVersionParam(\"/downloads\");\n return this.httpClient\n .downloadFile(`${this.path}${relativePath}`, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Download a resource file of the active version of the file. Resource files are files that\n * contain model scene descriptions, or geometry data, or exported files.\n *\n * @example <caption>Export file to DWG.</caption>\n * const job = await file.crateJob(\"dwg\");\n * await job.waitForDone();\n * const dwgFileName = file.exports.find((x) => x.endsWith(\".dwg\"));\n * const arrayBuffer = await file.downloadResource(dwgFileName);\n * const blob = new Blob([arrayBuffer]);\n * const fileName = file.name.replace(/\\.[^.]+$/, \"\") + \".dwg\";\n * FileSaver.saveAs(blob, fileName);\n *\n * @param dataId - Resource file name.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResource(\n dataId: string,\n onProgress?: (progress: number, chunk: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n const relativePath = this.appendVersionParam(`/downloads/${dataId}`);\n return this.httpClient\n .downloadFile(`${this.path}${relativePath}`, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Download a part of resource file of the active version of the file. Resource files are\n * files that contain model scene descriptions, or geometry data, or exported files.\n *\n * @param dataId - Resource file name.\n * @param ranges - A range of resource file contents to download.\n * @param requestId - Request ID for download progress callback.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadResourceRange(\n dataId: string,\n requestId: number,\n ranges: Array<{ begin: number; end: number; requestId: number }>,\n onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n const relativePath = this.appendVersionParam(`/downloads/${dataId}?requestId=${requestId}`);\n return this.httpClient\n .downloadFileRange(`${this.path}${relativePath}`, requestId, ranges, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Deprecated since `25.3`. Use {@link File.downloadResource()} instead.\n */\n partialDownloadResource(\n dataId: string,\n onProgress?: (progress: number, downloaded: Uint8Array) => void,\n signal?: AbortSignal\n ): Promise<ArrayBuffer> {\n console.warn(\n \"File.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use File.downloadResource() instead.\"\n );\n return this.downloadResource(dataId, onProgress, signal);\n }\n\n /**\n * Deprecated since `25.3`. Use {@link File.downloadResourceRange()} instead.\n */\n async downloadFileRange(\n requestId: number,\n records: any | null,\n dataId: string,\n onProgress?: (progress: number, downloaded: Uint8Array, requestId: number) => void,\n signal?: AbortSignal\n ): Promise<void> {\n await this.downloadResourceRange(dataId, requestId, records, onProgress, signal);\n }\n\n /**\n * Returns a list of references to files used to correct rendering of the current file.\n *\n * @async\n * @param [signal] - An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n */\n getReferences(signal?: AbortSignal): Promise<IFileReferences> {\n return this.internalGet(\"/references\", signal).then((response) => response.json());\n }\n\n /**\n * Set the file references.\n *\n * @async\n * @param references - File references.\n */\n setReferences(references: IFileReferences): Promise<IFileReferences> {\n return this.internalPut(\"/references\", references).then((response) => response.json());\n }\n\n /**\n * Create a new job for the active version of the file.\n *\n * @async\n * @param outputFormat - The job type. Can be one of:\n *\n * - `geometry` - Extract file geometry data into `VSFX`.\n * - `geometryGltf` - Extract file geometry data into `glTF`.\n * - `properties` - Extract file properties.\n * - `validation` - Validate the file. Only for `IFC`.\n * - `dwg`, `obj`, `gltf`, `glb`, `vsf`, `pdf`, `3dpdf` - Export file to the one of the\n * supported format. Use {@link File.exports | File.exports()} to get the list of\n * completed file exports. Use {@link File.downloadResource | File.downloadResource()}\n * to download the exported file.\n * - Other custom job name. Custom job runner must be registered in the job templates table\n * before creating a job.\n *\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\n * for the File Converter tool in form \"--arg=value\".\n */\n createJob(outputFormat: string, parameters?: string | object): Promise<Job> {\n const relativePath = this.appendVersionParam(\"/jobs\");\n return this.httpClient\n .post(relativePath, {\n fileId: this.id,\n outputFormat,\n parameters: parseArgs(parameters),\n })\n .then((response) => response.json())\n .then((data) => new Job(data, this.httpClient));\n }\n\n /**\n * Create job to extract geometry data of active version of the file. This is alias to\n * {@link File.createJob | File.createJob(\"geometry\")}.\n *\n * @async\n * @param type - Geometry data type. Can be one of:\n *\n * - `vsfx` - `VSFX` (default), for opening a file in `VisualizeJS` viewer.\n * - `gltf` - `glTF`, for opening a file in `Three.js` viewer.\n *\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\n * for the File Converter tool in form \"--arg=value\".\n */\n extractGeometry(type?: string, parameters?: string | object): Promise<Job> {\n return this.createJob(type === \"gltf\" ? \"geometryGltf\" : \"geometry\", parameters);\n }\n\n /**\n * Create job to extract properties of the active version of the file. This is alias to\n * {@link File.createJob | File.createJob(\"properties\")}.\n *\n * @async\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\n * for the File Converter tool in form \"--arg=value\".\n */\n extractProperties(parameters?: string | object): Promise<Job> {\n return this.createJob(\"properties\", parameters);\n }\n\n /**\n * Create a job to validate the active version of the file. This is alias to\n * {@link File.createJob | File.createJob(\"validation\")}.\n *\n * To get validation report use\n * {@link File.downloadResource | File.downloadResource(\"validation_report.json\")}.\n *\n * @async\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\n * for the File Converter tool in form \"--arg=value\".\n */\n validate(parameters?: string | object): Promise<Job> {\n return this.createJob(\"validation\", parameters);\n }\n\n /**\n * Wait for jobs of the active version of the file to be done. Job is done when it changes to\n * `none`, `done` or `failed` status.\n *\n * @async\n * @param {string | string[]} jobs - Job or job array to wait on. Can be `geometry`,\n * `geometryGltf`, `properties`, `validation`, `dwg`, `obj`, `gltf`, `glb`, `vsf`, `pdf`,\n * `3dpdf` or custom job name.\n * @param {Boolean} [waitAll] - If this parameter is `true`, the function returns when all\n * the specified jobs have done. If `false`, the function returns when any one of the jobs are done.\n * @param {Object} [params] - An object containing waiting parameters.\n * @param {Number} [params.timeout] - The time, in milliseconds that the function should wait\n * jobs. If no one jobs are done during this time, the `TimeoutError` exception will be thrown.\n * @param {Number} [params.interval] - The time, in milliseconds, the function should delay\n * in between checking jobs status.\n * @param {AbortSignal} [params.signal] - An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n * @param {function} [params.onCheckout] - Waiting progress callback. Return `true` to cancel waiting.\n * @returns {Promise<File>}\n */\n waitForDone(\n jobs: string | string[],\n waitAll?: boolean,\n params?: {\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onCheckout?: (file: File, ready: boolean) => boolean;\n }\n ): Promise<this> {\n const waitJobs = Array.isArray(jobs) ? jobs : [jobs];\n if (waitAll === undefined) waitAll = true;\n\n const checkDone = () =>\n this.checkout().then((file) => {\n const readyJobs = waitJobs.filter((job: string) => {\n const jobStatus = file.status[job] || {};\n return [\"none\", \"done\", \"failed\"].includes(jobStatus.state || \"none\");\n });\n const ready = waitAll ? readyJobs.length === waitJobs.length : readyJobs.length > 0;\n const cancel = params?.onCheckout?.(file, ready);\n return cancel || ready;\n });\n\n return waitFor(checkDone, params).then(() => this);\n }\n\n /**\n * Returns a list of file permissions.\n *\n * @async\n */\n getPermissions(): Promise<Permission[]> {\n return this.internalGet(\"/permissions\")\n .then((response) => response.json())\n .then((array) => array.map((data) => new Permission(data, this.id, this.httpClient)));\n }\n\n /**\n * Returns the permission information.\n *\n * @async\n * @param permissionId - Permission ID.\n */\n getPermission(permissionId: string): Promise<Permission> {\n return this.internalGet(`/permissions/${permissionId}`)\n .then((response) => response.json())\n .then((data) => new Permission(data, this.id, this.httpClient));\n }\n\n /**\n * Create a new file permission.\n *\n * @async\n * @param actions - Actions are allowed to be performed on a file with this permission. See\n * {@link Permission#actions | Permission.actions} for more details.\n * @param grantedTo - A collection of principials that will get access to the file.\n * @param public = false - Specifies whether all users have access to the file or not.\n */\n createPermission(actions: string | string[], grantedTo: any[], _public: boolean): Promise<Permission> {\n return this.internalPost(\"/permissions\", {\n actions: Array.isArray(actions) ? actions : [actions],\n grantedTo,\n public: _public,\n })\n .then((response) => response.json())\n .then((data) => new Permission(data, this.id, this.httpClient));\n }\n\n /**\n * Delete file permission.\n *\n * @async\n * @param permissionId - Permission ID.\n * @returns Returns the raw data of a deleted permission.\n */\n deletePermission(permissionId: string): Promise<any> {\n return this.internalDelete(`/permissions/${permissionId}`).then((response) => response.json());\n }\n\n /**\n * Upload the new version of the file to the server and extract the geometry and properties as needed.\n *\n * @async\n * @param file - Web API <a href=\"https://developer.mozilla.org/docs/Web/API/File\"\n * target=\"_blank\">File</a> object are generally retrieved from a <a\n * href=\"https://developer.mozilla.org/docs/Web/API/FileList\" target=\"_blank\">FileList</a>\n * object returned as a result of a user selecting files using the HTML `<input>` element.\n * @param params - An object containing upload parameters.\n * @param params.geometry=true - Create job to extract file geometry data. The geometry data\n * type is the same as the original file.\n * @param params.properties=false - Create job to extract file properties.\n * @param params.waitForDone=false - Wait for geometry and properties jobs to complete.\n * @param params.timeout - The time, in milliseconds that the function should wait jobs. If\n * no one jobs are done during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking jobs status.\n * @param params.signal - An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n * @param params.onProgress - Upload progress callback.\n */\n\n async uploadVersion(\n file: globalThis.File,\n params: {\n geometry?: boolean;\n properties?: boolean;\n waitForDone?: boolean;\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onProgress?: (progress: number, file: globalThis.File) => void;\n } = {\n waitForDone: false,\n }\n ): Promise<File> {\n const result = await this.httpClient\n .uploadFile(`${this.path}/versions`, file, (progress) => params.onProgress?.(progress, file))\n .then((xhr: XMLHttpRequest) => JSON.parse(xhr.responseText))\n .then((data) => new File(data, this.httpClient));\n\n let geometryType = \"\";\n if (this.versions[0].status.geometryGltf.state !== \"none\") geometryType = \"gltf\";\n if (this.versions[0].status.geometry.state !== \"none\") geometryType = \"vsfx\";\n\n params = { ...params };\n if (params.geometry === undefined) params.geometry = geometryType !== \"\";\n if (params.properties === undefined) params.properties = this.versions[0].status.properties.state !== \"none\";\n\n const jobs: string[] = [];\n if (params.geometry) jobs.push((await result.extractGeometry(geometryType)).outputFormat);\n if (params.properties) jobs.push((await result.extractProperties()).outputFormat);\n if (jobs.length > 0)\n if (params.waitForDone) await result.waitForDone(jobs, true, params);\n else await result.checkout();\n\n await this.checkout();\n\n return result;\n }\n\n /**\n * Returns a list of version files.\n *\n * @async\n */\n getVersions(): Promise<File[]> {\n return this.internalGet(\"/versions\")\n .then((response) => response.json())\n .then((files) => files.map((data) => new File(data, this.httpClient)))\n .then((files) => files.map((file) => (file.id == file.originalFileId ? file.useVersion(0) : file)));\n }\n\n /**\n * Returns the version file.\n *\n * @async\n * @param version - Desired version.\n */\n getVersion(version: number): Promise<File> {\n return this.internalGet(`/versions/${version}`)\n .then((response) => response.json())\n .then((data) => new File(data, this.httpClient))\n .then((file) => (file.id == file.originalFileId ? file.useVersion(0) : file));\n }\n\n /**\n * Delete version file.\n *\n * @async\n * @param version - Version to delete.\n */\n async deleteVersion(version: number): Promise<any> {\n const response = await this.internalDelete(`/versions/${version}`);\n const data = await response.json();\n await this.checkout();\n return data;\n }\n\n /**\n * Replace the active version of the file with the selected version.\n *\n * @async\n * @param version - Desired active version.\n */\n\n setActiveVersion(version: number): Promise<this> {\n return this.update({ activeVersion: version });\n }\n\n /**\n * Use given version instead of active version for current file on client side. This version\n * change will affect the result:\n *\n * - getModels()\n * - getProperties()\n * - searchProperties()\n * - getCdaTree()\n * - download()\n * - downloadResource()\n * - createJob()\n * - extractGeometry()\n * - extractProperties()\n * - validate()\n * - waitForDone()\n * - Viewer.open()\n *\n * Other clients will still continue to use the current active version of the file. Use\n * `undefined` to revert back to the active version.\n *\n * Note. You need to update the file data using [File.checkout()]{@link File#checkout} to\n * match the size and status fields to the version you selected.\n */\n useVersion(version?: number): this {\n this._useVersion = version;\n return this;\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\n\n/**\n * A roles determines what permissions {@link User | users} have on a {@link Project | project}.\n */\nexport class Role {\n private _data: any;\n public projectId: string;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements role data storage.\n * @param projectId - Owner project ID.\n * @param httpClient - Http client.\n */\n constructor(data: any, projectId: string, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.projectId = projectId;\n this.data = data;\n }\n\n private internalGet(): Promise<Response> {\n return this.httpClient.get(`/projects/${this.projectId}/roles/${this.name}`);\n }\n\n private internalPut(body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`/projects/${this.projectId}/roles/${this.name}`, body);\n }\n\n private internalDelete(): Promise<Response> {\n return this.httpClient.delete(`/projects/${this.projectId}/roles/${this.name}`);\n }\n\n /**\n * Role description.\n */\n get description(): string {\n return this.data.description;\n }\n\n set description(value: string) {\n this._data.description = value;\n }\n\n /**\n * Raw role data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n set data(value: any) {\n this._data = value;\n }\n\n /**\n * Role name.\n */\n get name(): string {\n return this.data.name;\n }\n\n set name(value: string) {\n this._data.name = value;\n }\n\n /**\n * Role actions are allowed to be performed.\n *\n * @property {string[]} projectActions - Actions are allowed to be performed at the project\n * level: `update`, `createTopic`, `createDocument`.\n * @property {string[]} topicActions - Actions are allowed to be performed at the topic\n * level: `update`, `updateBimSnippet`, `updateRelatedTopics`, `updateDocumentReferences`,\n * `updateFiles`, `createComment`, `createViewpoint`, `delete`.\n * @property {string[]} commentActions - Actions are allowed to be performed at the comment\n * level: `update`, `delete`.\n * @property {string[]} viewpointActions - Actions are allowed to be performed at the\n * viewpoint level: `delete`.\n * @property {string[]} odaGroupActions - Actions are allowed to be performed at the members\n * level: `update`, `delete`.\n * @property {string[]} odaRoleActions - Actions are allowed to be performed at the roles\n * level: `update`, `delete`.\n */\n get permissions(): any {\n return this.data.permissions;\n }\n\n set permissions(value: any) {\n this.data.permissions = value || {};\n }\n\n /**\n * Refresh role data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet();\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update role data on the server.\n *\n * @async\n * @param data - Raw role data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Delete a role from the project.\n *\n * @async\n * @returns Returns the raw data of a deleted role.\n */\n delete(): Promise<any> {\n return this.internalDelete().then((response) => response.json());\n }\n\n /**\n * Save role data changes to the server. Call this method to update role data on the server\n * after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { IShortUserDescription } from \"./IUser\";\nimport { userFullName, userInitials } from \"./Utils\";\n\n/**\n * Members are the {@link User | users} who have access to the {@link Project | project}.\n */\nexport class Member {\n private _data: any;\n public projectId: string;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements member data storage.\n * @param projectId - Owner project ID.\n * @param httpClient - Http client.\n */\n constructor(data: any, projectId: string, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.projectId = projectId;\n this.data = data;\n }\n\n private internalGet(): Promise<Response> {\n return this.httpClient.get(`/projects/${this.projectId}/members/${this.id}`);\n }\n\n private internalPut(body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`/projects/${this.projectId}/members/${this.id}`, body);\n }\n\n private internalDelete(): Promise<Response> {\n return this.httpClient.delete(`/projects/${this.projectId}/members/${this.id}`);\n }\n\n /**\n * Raw member data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.user.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.user.userId}/avatar`;\n this._data.user.fullName = userFullName(this._data.user);\n this._data.user.initials = userInitials(this._data.user.fullName);\n }\n\n /**\n * Unique member ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * Member role. See {@link Project#getRoles | Project.getRoles()} for more details.\n */\n get role(): string {\n return this.data.role;\n }\n\n set role(value: string) {\n this.data.role = value;\n }\n\n /**\n * Member type. Can be `owner` or `user`.\n *\n * @readonly\n */\n get type(): string {\n return this.data.type;\n }\n\n /**\n * User information.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get user(): IShortUserDescription {\n return this.data.user;\n }\n\n /**\n * Refresh member data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet();\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update member data on the server.\n *\n * @async\n * @param data - Raw member data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Remove a member from a project.\n *\n * @async\n * @returns Returns the raw data of a deleted member.\n */\n delete(): Promise<any> {\n return this.internalDelete().then((response) => response.json());\n }\n\n /**\n * Save member data changes to the server. Call this method to update member data on the\n * server after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { IShortUserDescription } from \"./IUser\";\nimport { Role } from \"./Role\";\nimport { Member } from \"./Member\";\nimport { userFullName, userInitials } from \"./Utils\";\n\n/**\n * Projects are used to collaborate on models and track issues.\n */\nexport class Project {\n private _data: any;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements project data storage.\n * @param httpClient - Http client.\n */\n constructor(data: any, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.data = data;\n }\n\n protected internalGet(relativePath: string): Promise<Response> {\n return this.httpClient.get(`/projects/${this.id}${relativePath}`);\n }\n\n protected internalPost(relativePath: string, body?: BodyInit | object): Promise<Response> {\n return this.httpClient.post(`/projects/${this.id}${relativePath}`, body);\n }\n\n protected internalPut(relativePath: string, body?: BodyInit | object): Promise<Response> {\n return this.httpClient.put(`/projects/${this.id}${relativePath}`, body);\n }\n\n protected internalDelete(relativePath: string): Promise<Response> {\n return this.httpClient.delete(`/projects/${this.id}${relativePath}`);\n }\n\n /**\n * Project features the user has access to.\n *\n * @property {string[]} project_actions - Actions are allowed to be performed: `update`,\n * `createTopic`, `createDocument`.\n * @readonly\n */\n get authorization(): any {\n return this.data.authorization;\n }\n\n /**\n * Project creation time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get createdAt(): string {\n return this.data.createdAt;\n }\n\n /**\n * Project custom fields object, to store custom data.\n */\n get customFields(): any {\n return this.data.customFields;\n }\n\n set customFields(value: any) {\n this.data.customFields = value;\n }\n\n /**\n * Raw project data received from the server.\n *\n * @readonly\n */\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.previewUrl = value.avatarUrl\n ? `${this.httpClient.serverUrl}/projects/${this._data.id}/preview?updated=${value.updatedAt}`\n : \"\";\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\n this._data.owner.fullName = userFullName(this._data.owner);\n this._data.owner.initials = userInitials(this._data.owner.fullName);\n }\n\n /**\n * Project description.\n */\n get description(): string {\n return this.data.description;\n }\n\n set description(value: string) {\n this.data.description = value;\n }\n\n /**\n * Project end date in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n */\n get endDate(): string {\n return this.data.endDate;\n }\n\n set endDate(value: string | Date) {\n this.data.endDate = value instanceof Date ? value.toISOString() : value;\n }\n\n /**\n * Unique project ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * The number of members in the project.\n *\n * @readonly\n */\n get memberCount(): number {\n return this.data.memberCount;\n }\n\n /**\n * The number of models in the project.\n *\n * @readonly\n */\n get modelCount(): number {\n return this.data.modelCount;\n }\n\n /**\n * Project name.\n */\n get name(): string {\n return this.data.name;\n }\n\n set name(value: string) {\n this.data.name = value;\n }\n\n /**\n * Project owner information.\n *\n * @property {string} userId - User ID.\n * @property {string} userName - User name.\n * @property {string} name - First name.\n * @property {string} lastName - Last name.\n * @property {string} fullName - Full name.\n * @property {string} initials - Initials.\n * @property {string} email - User email.\n * @property {string} avatarUrl - User avatar image URL.\n * @readonly\n */\n get owner(): IShortUserDescription {\n return this.data.owner;\n }\n\n /**\n * Project preview image URL or empty string if the project does not have a preview. Use\n * {@link Project.setPreview | setPreview()} to change preview image.\n *\n * @readonly\n */\n get previewUrl(): string {\n return this._data.previewUrl;\n }\n\n /**\n * `true` if project is public (shared) project.\n */\n get public(): boolean {\n return this.data.public;\n }\n\n set public(value: boolean) {\n this.data.public = value;\n }\n\n /**\n * Project start date in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n */\n get startDate(): string {\n return this.data.startDate;\n }\n\n set startDate(value: string | Date) {\n this.data.startDate = value instanceof Date ? value.toISOString() : value;\n }\n\n /**\n * The number of topics in the project.\n *\n * @readonly\n */\n get topicCount(): number {\n return this.data.topicCount;\n }\n\n /**\n * Project last update time (UTC) in the format specified in <a\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\n *\n * @readonly\n */\n get updatedAt(): string {\n return this.data.updatedAt;\n }\n\n /**\n * Refresh project data.\n *\n * @async\n */\n async checkout(): Promise<this> {\n const response = await this.internalGet(\"\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Update project data on the server.\n *\n * @async\n * @param data - Raw project data.\n */\n async update(data: any): Promise<this> {\n const response = await this.internalPut(\"\", data);\n this.data = await response.json();\n return this;\n }\n\n /**\n * Delete the project from the server.\n *\n * @async\n * @returns Returns the raw data of a deleted project.\n */\n delete(): Promise<any> {\n return this.internalDelete(\"\")\n .then((response) => response.text())\n .then((text) => {\n // TODO fix for server 23.5 and below\n try {\n return JSON.parse(text);\n } catch {\n return { id: this.id };\n }\n });\n }\n\n /**\n * Save project data changes to the server. Call this method to update project data on the\n * server after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n\n /**\n * Set or remove the project preview.\n *\n * @async\n * @param image - Preview image. Can be a\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}\n * string,\n * {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer | ArrayBuffer},\n * {@link https://developer.mozilla.org/docs/Web/API/Blob/Blob | Blob} or Web API\n * {@link https://developer.mozilla.org/docs/Web/API/File | File} object. Setting the\n * `image` to `null` will remove the preview.\n */\n\n async setPreview(image?: BodyInit | null): Promise<any> {\n if (!image) {\n await this.deletePreview();\n } else {\n const response = await this.internalPost(\"/preview\", image);\n this.data = await response.json();\n }\n return this;\n }\n\n /**\n * Remove the project preview.\n *\n * @async\n */\n async deletePreview(): Promise<this> {\n const response = await this.internalDelete(\"/preview\");\n this.data = await response.json();\n return this;\n }\n\n /**\n * Returns a list of project roles. Project {@link Member | members} have different abilities\n * depending on the role they have in a project.\n *\n * @async\n */\n getRoles(): Promise<Role[]> {\n return this.internalGet(\"/roles\")\n .then((response) => response.json())\n .then((array) => array.map((data) => new Role(data, this.id, this.httpClient)));\n }\n\n /**\n * Returns the role information.\n *\n * @async\n * @param name - Role name.\n */\n getRole(name: string): Promise<Role> {\n return this.internalGet(`/roles/${name}`)\n .then((response) => response.json())\n .then((data) => new Role(data, this.id, this.httpClient));\n }\n\n /**\n * Create a new project role.\n *\n * @async\n * @param name - Role name.\n * @param description - Role description.\n * @param permissions - Actions are allowed to be performed. See\n * {@link Role#permissions | Role.permissions} for more details.\n */\n createRole(name: string, description: string, permissions: any): Promise<Role> {\n return this.internalPost(\"/roles\", {\n name,\n description,\n permissions: permissions || {},\n })\n .then((response) => response.json())\n .then((data) => new Role(data, this.id, this.httpClient));\n }\n\n /**\n * Delete project role.\n *\n * @async\n * @param name - Role name.\n * @returns Returns the raw data of a deleted role.\n */\n deleteRole(name: string): Promise<any> {\n return this.internalDelete(`/roles/${name}`).then((response) => response.json());\n }\n\n /**\n * Returns a list of project members.\n *\n * @async\n */\n getMembers(): Promise<Member[]> {\n return this.internalGet(\"/members\")\n .then((response) => response.json())\n .then((array) => array.map((data) => new Member(data, this.id, this.httpClient)));\n }\n\n /**\n * Returns the member information.\n *\n * @async\n * @param memberId - Member ID.\n */\n getMember(memberId: string): Promise<Member> {\n return this.internalGet(`/members/${memberId}`)\n .then((response) => response.json())\n .then((data) => new Member(data, this.id, this.httpClient));\n }\n\n /**\n * Add a user to the project to become a member and have permission to perform actions.\n *\n * @async\n * @param userId - User ID.\n * @param role - User role from the list of project roles.\n */\n addMember(userId: string, role: string): Promise<Member> {\n return this.internalPost(\"/members\", { userId, role })\n .then((response) => response.json())\n .then((data) => new Member(data, this.id, this.httpClient));\n }\n\n /**\n * Remove a member from a project.\n *\n * @async\n * @param memberId - Member ID.\n * @returns Returns the raw data of a deleted member.\n */\n removeMember(memberId: string): Promise<any> {\n return this.internalDelete(`/members/${memberId}`).then((response) => response.json());\n }\n\n /**\n * Information about the file (model) that can be reference in the project topics.\n *\n * @typedef {any} FileInformation\n * @property {any[]} display_information - The list of fields to allow users to associate the\n * file with a server model.\n * @property {string} display_information.field_display_name - Field display name.\n * @property {string} display_information.field_value - Field value.\n * @property {any} file - The file reference object.\n * @property {string} file.file_name - File name.\n * @property {string} file.reference - File ID.\n */\n\n /**\n * Returns a list of project files. To add a file to this list, create a `project` permission\n * on the file using {@link File#createPermission | File.createPermission()}.\n *\n * @async\n */\n getFilesInformation(): Promise<any[]> {\n return this.httpClient\n .get(`/bcf/3.0/projects/${this.data.id}/files_information`)\n .then((response) => response.json())\n .then((items) => {\n items.forEach((item) => {\n const getFieldValue = (displayName: string) => {\n return (item.display_information.find((x) => x.field_display_name === displayName) || {}).field_value;\n };\n\n const previewUrl = `${this.httpClient.serverUrl}/files/${item.file.reference}/preview`;\n const ownerAvatarUrl = `${this.httpClient.serverUrl}/users/${getFieldValue(\"Owner\")}/avatar`;\n\n const ownerFirstName = getFieldValue(\"Owner First Name\");\n const ownerLastName = getFieldValue(\"Owner Last Name\");\n const ownerUserName = getFieldValue(\"Owner User Name\");\n const ownerFullName = userFullName(ownerFirstName, ownerLastName, ownerUserName);\n const ownerInitials = userInitials(ownerFullName);\n\n item.display_information.push({ field_display_name: \"Preview URL\", field_value: previewUrl });\n item.display_information.push({ field_display_name: \"Owner Avatar URL\", field_value: ownerAvatarUrl });\n item.display_information.push({ field_display_name: \"Owner Full Name\", field_value: ownerFullName });\n item.display_information.push({ field_display_name: \"Owner Initials\", field_value: ownerInitials });\n\n // updatedBy since 24.10\n\n const updatedByAvatarUrl = `${this.httpClient.serverUrl}/users/${getFieldValue(\"Updated By\")}/avatar`;\n\n const updatedByFirstName = getFieldValue(\"Updated By First Name\");\n const updatedByLastName = getFieldValue(\"Updated By Last Name\");\n const updatedByUserName = getFieldValue(\"Updated By User Name\");\n const updatedByFullName = userFullName(updatedByFirstName, updatedByLastName, updatedByUserName);\n const updatedByInitials = userInitials(updatedByFullName);\n\n item.display_information.push({\n field_display_name: \"Updated By Avatar URL\",\n field_value: updatedByAvatarUrl,\n });\n item.display_information.push({ field_display_name: \"Updated By Full Name\", field_value: updatedByFullName });\n item.display_information.push({ field_display_name: \"Updated By Initials\", field_value: updatedByInitials });\n\n // geometryType since 24.12\n\n const geometry = getFieldValue(\"Geometry Status\");\n const geometryGltf = getFieldValue(\"GeometryGltf Status\");\n const geometryType = geometry === \"done\" ? \"vsfx\" : geometryGltf === \"done\" ? \"gltf\" : \"\";\n\n item.display_information.push({ field_display_name: \"Geometry Type\", field_value: geometryType });\n });\n return items;\n });\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { FetchError } from \"./FetchError\";\nimport { userFullName, userInitials } from \"./Utils\";\n\n/**\n * The class representing a `user` entity.\n */\nexport class User {\n private _data: any;\n public httpClient: IHttpClient;\n\n /**\n * @param data - An object that implements user data storage.\n * @param httpClient - Http client.\n */\n constructor(data: any, httpClient: IHttpClient) {\n this.httpClient = httpClient;\n this.data = data;\n }\n\n /**\n * User avatar image URL or empty string if the user does not have an avatar. Use\n * {@link User.setAvatar | setAvatar()} to change avatar image.\n *\n * @readonly\n */\n get avatarUrl(): string {\n return this._data.avatarUrl;\n }\n\n /**\n * `true` if user is allowed to create a project.\n *\n * Only administrators can change create project permission.\n */\n get canCreateProject(): boolean {\n return this.data.canCreateProject;\n }\n\n set canCreateProject(value: boolean) {\n this._data.canCreateProject = value;\n }\n\n /**\n * Account registration time (UTC) in the format specified in\n * {@link https://www.wikipedia.org/wiki/ISO_8601 | ISO 8601}.\n *\n * @readonly\n */\n get createAt(): string {\n return this.data.createAt;\n }\n\n /**\n * User custom fields object, to store custom data.\n */\n get customFields(): any {\n return this.data.customFields;\n }\n\n set customFields(value: any) {\n this._data.customFields = value;\n }\n\n /**\n * Raw user data received from the server.\n *\n * @readonly\n */\n\n get data(): any {\n return this._data;\n }\n\n private set data(value: any) {\n this._data = value;\n this._data.avatarUrl = value.avatarImage\n ? `${this.httpClient.serverUrl}/users/${this._data.id}/avatar?updated=${value.lastModified}`\n : \"\";\n this._data.fullName = userFullName(this._data);\n this._data.initials = userInitials(this._data.fullName);\n }\n\n /**\n * User email.\n */\n get email(): string {\n return this.data.email;\n }\n\n set email(value: string) {\n this._data.email = value;\n }\n\n /**\n * The user's email confirmation code, or an empty string if the email has already been confirmed.\n *\n * @readonly\n */\n get emailConfirmationId(): string {\n return this.data.emailConfirmationId;\n }\n\n /**\n * First name.\n */\n get firstName(): string {\n return this.data.firstName;\n }\n\n set firstName(value: string) {\n this._data.firstName = value;\n }\n\n /**\n * Full name. Returns the user's first and last name. If first name and last names are empty,\n * returns the user name.\n *\n * @readonly\n */\n get fullName(): string {\n return this.data.fullName;\n }\n\n /**\n * Unique user ID.\n *\n * @readonly\n */\n get id(): string {\n return this.data.id;\n }\n\n /**\n * User initials. Returns a first letters of the user's first and last names. If first name\n * and last names are empty, returns the first letter of the user name.\n *\n * @readonly\n */\n get initials(): string {\n return this.data.initials;\n }\n\n /**\n * `true` if user is an administrator.\n *\n * Only administrators can change user type.\n */\n get isAdmin(): boolean {\n return this.data.isAdmin;\n }\n\n set isAdmin(value: boolean) {\n this._data.isAdmin = value;\n }\n\n /**\n * `false` if the user has not yet confirmed his email address.\n *\n * @readonly\n */\n get isEmailConfirmed(): boolean {\n return this.data.isEmailConfirmed;\n }\n\n /**\n * User last update time (UTC) in the format specified in\n * {@link https://www.wikipedia.org/wiki/ISO_8601 | ISO 8601}.\n */\n get lastModified(): string {\n return this.data.lastModified;\n }\n\n /**\n * Last name.\n */\n get lastName(): string {\n return this.data.lastName;\n }\n\n set lastName(value: string) {\n this._data.lastName = value;\n }\n\n /**\n * User last sign in time (UTC) in the format specified in\n * {@link https://www.wikipedia.org/wiki/ISO_8601 | ISO 8601}.\n */\n get lastSignIn(): string {\n return this.data.lastSignIn;\n }\n\n /**\n * The maximum number of projects that a user can create.\n *\n * Only administrators can change projects limit.\n */\n get projectsLimit(): number {\n return this.data.projectsLimit;\n }\n\n set projectsLimit(value: number) {\n this._data.projectsLimit = value;\n }\n\n /**\n * The identity provider used to create the account. Can be `ldap`, `oauth`, `saml` or empty.\n *\n * @readonly\n */\n get providerType(): string {\n return this.data.providerType;\n }\n\n /**\n * User storage size on the server for uploading files.\n *\n * Only administrators can change storage size.\n */\n get storageLimit(): number {\n return this.data.storageLimit;\n }\n\n set storageLimit(value: number) {\n this._data.storageLimit = value;\n }\n\n /**\n * The total size of the user's files in the storage.\n *\n * @readonly\n */\n get storageUsed(): number {\n return this.data.storageUsed;\n }\n\n /**\n * The user's access token (API key). Use {@link Client.signInWithToken()} to log in using token.\n *\n * @readonly\n */\n get token(): string {\n return this.data.tokenInfo.token;\n }\n\n /**\n * User name.\n */\n get userName(): string {\n return this.data.userName;\n }\n\n set userName(value: string) {\n this._data.userName = value;\n }\n\n /**\n * Refresh user data.\n *\n * Only administrators can checkout other users. If the current logged in user is not an\n * administrator, they can only checkout themselves, otherwise an exception will be thrown.\n */\n async checkout(): Promise<this> {\n if (this.httpClient.signInUserIsAdmin) {\n const response = await this.httpClient.get(`/users/${this.id}`);\n const data = await response.json();\n this.data = { id: data.id, ...data.userBrief };\n } else if (this.id === this.httpClient.signInUserId) {\n const response = await this.httpClient.get(\"/user\");\n const data = await response.json();\n this.data = { id: this.id, ...data };\n } else {\n return Promise.reject(new FetchError(403));\n }\n return this;\n }\n\n /**\n * Update user data on the server.\n *\n * Only administrators can update other users. If the current logged in user is not an\n * administrator, they can only update themself, otherwise an exception will be thrown.\n *\n * @async\n * @param data - Raw user data.\n */\n async update(data: any): Promise<this> {\n if (this.httpClient.signInUserIsAdmin) {\n const response = await this.httpClient.put(`/users/${this.id}`, { isAdmin: data.isAdmin, userBrief: data });\n const newData = await response.json();\n this.data = { id: newData.id, ...newData.userBrief };\n } else if (this.id === this.httpClient.signInUserId) {\n const response = await this.httpClient.put(\"/user\", data);\n const newData = await response.json();\n this.data = { id: this.id, ...newData };\n } else {\n return Promise.reject(new FetchError(403));\n }\n return this;\n }\n\n /**\n * Delete a user from the server.\n *\n * Only administrators can delete users. If the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * Administrators can delete themselves or other administrators. An administrator can only\n * delete themself if they is not the last administrator.\n *\n * You need to re-login to continue working after deleting the current logged in user.\n *\n * @async\n * @returns Returns the raw data of a deleted user.\n */\n delete(): Promise<any> {\n if (this.httpClient.signInUserIsAdmin) {\n return this.httpClient\n .delete(`/users/${this.id}`)\n .then((response) => response.json())\n .then((data) => {\n if (this.id === this.httpClient.signInUserId) {\n this.httpClient.headers = {};\n this.httpClient.signInUserId = \"\";\n this.httpClient.signInUserIsAdmin = false;\n }\n return data;\n });\n } else {\n return Promise.reject(new FetchError(403));\n }\n }\n\n /**\n * Save user data changes to the server. Call this method to update user data on the server\n * after any changes.\n *\n * @async\n */\n save(): Promise<this> {\n return this.update(this.data);\n }\n\n /**\n * Set or remove the user avatar.\n *\n * Only administrators can set the avatar of other users. If the current logged in user is\n * not an administrator, they can only set their avatar, otherwise an exception will be thrown.\n *\n * @async\n * @param image - Avatar image. Can be a\n * {@link https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs | Data URL}\n * string,\n * {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer | ArrayBuffer},\n * {@link https://developer.mozilla.org/docs/Web/API/Blob/Blob | Blob} or Web API\n * {@link https://developer.mozilla.org/docs/Web/API/File | File} object. Setting the\n * `image` to `null` will remove the avatar.\n */\n async setAvatar(image?: BodyInit | null): Promise<this> {\n if (!image) {\n await this.deleteAvatar();\n } else if (this.httpClient.signInUserIsAdmin) {\n const response = await this.httpClient.post(`/users/${this.id}/avatar`, image);\n const data = await response.json();\n this.data = { id: data.id, ...data.userBrief };\n } else if (this.id === this.httpClient.signInUserId) {\n const response = await this.httpClient.post(\"/user/avatar\", image);\n const data = await response.json();\n this.data = { id: this.id, ...data };\n } else {\n return Promise.reject(new FetchError(403));\n }\n return this;\n }\n\n /**\n * Remove the user avatar.\n *\n * Only administrators can remove the avatar of other users. If the current logged in user is\n * not an administrator, they can only remove their avatar, otherwise an exception will be thrown.\n *\n * @async\n */\n async deleteAvatar(): Promise<this> {\n if (this.httpClient.signInUserIsAdmin) {\n const response = await this.httpClient.delete(`/users/${this.id}/avatar`);\n const data = await response.json();\n this.data = { id: data.id, ...data.userBrief };\n } else if (this.id === this.httpClient.signInUserId) {\n const response = await this.httpClient.delete(\"/user/avatar\");\n const data = await response.json();\n this.data = { id: this.id, ...data };\n } else {\n return Promise.reject(new FetchError(403));\n }\n return this;\n }\n\n /**\n * Change the user password.\n *\n * Only administrators can change the passwords of other users. If the current logged in user\n * is not an administrator, they can only change their password, otherwise an exception will\n * be thrown.\n *\n * To change their password, non-administrator users must provide their old password.\n *\n * @async\n * @param newPassword - New user password.\n * @param oldPassword - Old user password. Only required for non-administrator users to\n * change their password.\n */\n async changePassword(newPassword: string, oldPassword?: string): Promise<this> {\n if (this.httpClient.signInUserIsAdmin) {\n const response = await this.httpClient.put(`/users/${this.id}/password`, { new: newPassword });\n const data = await response.json();\n this.data = { id: data.id, ...data.userBrief };\n } else if (this.id === this.httpClient.signInUserId) {\n const response = await this.httpClient.put(\"/user/password\", { old: oldPassword, new: newPassword });\n const data = await response.json();\n this.data = { id: this.id, ...data };\n } else {\n return Promise.reject(new FetchError(403));\n }\n return this;\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { EventEmitter2 } from \"@inweb/eventemitter2\";\n\nimport { IHttpClient } from \"./IHttpClient\";\nimport { HttpClient } from \"./HttpClient\";\nimport { FetchError } from \"./FetchError\";\nimport { ClientEventMap } from \"./ClientEvents\";\nimport { Assembly } from \"./Assembly\";\nimport { File } from \"./File\";\nimport { Job } from \"./Job\";\nimport { Project } from \"./Project\";\nimport { User } from \"./User\";\nimport { parseArgs } from \"./Utils\";\n\n/**\n * The `Client.js` library class that provides methods to access the [Open Cloud\n * Server](https://cloud.opendesign.com/docs/index.html#/opencloud_server) resources like\n * Projects, Files, Issues etc.\n */\nexport class Client extends EventEmitter2<ClientEventMap> {\n private _serverUrl = \"\";\n public httpClient: IHttpClient = new HttpClient(\"\");\n private _user: User | null = null;\n public eventEmitter: EventEmitter2 = this;\n\n /**\n * @param params - An object containing client configuration parameters.\n * @param params.serverUrl - Open Cloud Server URL.\n */\n constructor(params: { serverUrl?: string; url?: string } = {}) {\n super();\n this.configure(params);\n }\n\n /**\n * Open Cloud Server URL. Use {@link Client.configure()} to change server URL.\n *\n * @readonly\n */\n get serverUrl(): string {\n return this._serverUrl;\n }\n\n /**\n * Deprecated since `25.3`. Use `Viewer.options()` instead to change Viewer parameters.\n */\n get options(): any {\n console.warn(\n \"Client.options has been deprecated since 25.3 and will be removed in a future release, use Viewer.options instead.\"\n );\n const data = {\n showWCS: true,\n cameraAnimation: true,\n antialiasing: true,\n groundShadow: false,\n shadows: false,\n cameraAxisXSpeed: 4,\n cameraAxisYSpeed: 1,\n ambientOcclusion: false,\n enableStreamingMode: true,\n enablePartialMode: false,\n memoryLimit: 3294967296,\n cuttingPlaneFillColor: { red: 0xff, green: 0x98, blue: 0x00 },\n edgesColor: { r: 0xff, g: 0x98, b: 0x00 },\n facesColor: { r: 0xff, g: 0x98, b: 0x00 },\n edgesVisibility: true,\n edgesOverlap: true,\n facesOverlap: false,\n facesTransparancy: 200,\n enableCustomHighlight: true,\n sceneGraph: false,\n edgeModel: true,\n reverseZoomWheel: false,\n enableZoomWheel: true,\n enableGestures: true,\n };\n return {\n ...data,\n data,\n defaults: () => data,\n resetToDefaults: () => {},\n saveToStorage: () => {},\n loadFromStorage: () => {},\n };\n }\n\n /**\n * Change the client configuration parameters.\n *\n * @param params - An object containing new configuration parameters.\n * @param params.serverUrl - Open Cloud Server URL.\n * @returns Returns a reference to the `Client`.\n */\n configure(params: { serverUrl?: string }): this {\n this._serverUrl = (params.serverUrl || \"\").replace(/\\/+$/, \"\");\n this.httpClient = new HttpClient(this.serverUrl);\n this._user = null;\n return this;\n }\n\n /**\n * The Object represents server version information.\n *\n * @typedef {any} VersionResult\n * @property {string} version - The server version.\n * @property {string} hash - Build hash.\n */\n\n /**\n * Returns server version.\n *\n * @async\n */\n version(): Promise<any> {\n return this.httpClient\n .get(\"/version\")\n .then((response) => response.json())\n .then((data) => ({\n ...data,\n server: data.version,\n client: \"CLIENT_JS_VERSION\",\n }));\n }\n\n /**\n * Register a new user with the specified email and password.\n *\n * @async\n * @param email - User email. Cannot be empty.\n * @param password - User password. Cannot be empty. Password can only contain letters (a-z,\n * A-Z), numbers (0-9), and special characters (~!@#$%^&*()_-+={}[]:;\"'`<>,.?|/\\ ).\n * @param userName - User name. Cannot be empty or blank if defined. Leave undefined to use\n * `username` from email.\n */\n registerUser(email: string, password: string, userName?: string): Promise<any> {\n return this.httpClient\n .post(\"/register\", {\n email,\n password,\n userName: userName ?? (email + \"\").split(\"@\").at(0),\n })\n .then((response) => response.json());\n }\n\n /**\n * Resend the Confirmation Email to new user. If the user's email is already confirmed, an\n * exception will be thrown.\n *\n * @async\n * @param email - User email.\n * @param password - User password.\n */\n resendConfirmationEmail(email: string, password: string): Promise<any> {\n return this.httpClient\n .post(\"/register/email-confirmation\", { email, password })\n .then((response) => response.json());\n }\n\n /**\n * Confirm the user's email. If the user's email is already confirmed, an exception will be thrown.\n *\n * @async\n * @param emailConfirmationId - Confirmation code from the Confirmation Email.\n */\n confirmUserEmail(emailConfirmationId: string): Promise<any> {\n return this.httpClient\n .get(`/register/email-confirmation/${emailConfirmationId}`)\n .then((response) => response.json());\n }\n\n /**\n * Log in an existing user using email or user name.\n *\n * @async\n * @param email - An email or user name for authentication request.\n * @param password - Password for authentication request.\n */\n async signInWithEmail(email: string, password: string): Promise<User> {\n const credentials = btoa(unescape(encodeURIComponent(email + \":\" + password)));\n this.httpClient.headers = { Authorization: \"Basic \" + credentials };\n const response = await this.httpClient.get(\"/token\");\n const data = await response.json();\n return this.setCurrentUser(data);\n }\n\n /**\n * Log in an existing user using access token (API Key).\n *\n * @async\n * @param token - An access token for authentication request. See {@link User.token} for more details.\n */\n async signInWithToken(token: string): Promise<User> {\n this.httpClient.headers = { Authorization: token };\n const response = await this.httpClient.get(\"/user\");\n const data = await response.json();\n return this.setCurrentUser(data);\n }\n\n // Save the current logged in user information for internal use.\n\n private setCurrentUser(data: any): User {\n this._user = new User(data, this.httpClient);\n this.httpClient.headers = { Authorization: data.tokenInfo.token };\n this.httpClient.signInUserId = this._user.id;\n this.httpClient.signInUserIsAdmin = this._user.isAdmin;\n return this._user;\n }\n\n private clearCurrentUser(): void {\n this._user = null;\n this.httpClient.headers = {};\n this.httpClient.signInUserId = \"\";\n this.httpClient.signInUserIsAdmin = false;\n }\n\n /**\n * Returns the current logged in user information. Returns `null` if the user is not logged\n * in or the logged in user has deleted himself.\n */\n getCurrentUser(): User | null {\n if (this._user && !this.httpClient.signInUserId) this._user = null;\n return this._user;\n }\n\n /**\n * Get the list of server indentity providers.\n *\n * To sign in with the provider in your web application:\n *\n * - Open the `provider.url` link using `window.open()`.\n * - Add a `/oauth` path (server-defined) handler to the router. In this handler, show an error\n * message if the `error` search parameter is present, or log in with the `token` search parameter.\n *\n * @async\n */\n getIdentityProviders(): Promise<any> {\n return this.httpClient.get(\"/identity\").then((response) => response.json());\n }\n\n /**\n * Returns the current server settings.\n *\n * @async\n */\n getServerSettings(): Promise<any> {\n return this.httpClient.get(\"/settings\").then((response) => response.json());\n }\n\n /**\n * Change server settings.\n *\n * Only administrators can change server settings. If the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * @async\n */\n updateServerSettings(settings: any): Promise<any> {\n return this.httpClient.put(\"/settings\", settings).then((response) => response.json());\n }\n\n /**\n * Returns a list of server users.\n *\n * Only administrators can get a list of users. If the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * @async\n */\n getUsers(): Promise<User[]> {\n return this.httpClient\n .get(\"/users\")\n .then((response) => response.json())\n .then((array) => array.map((data) => ({ id: data.id, ...data.userBrief })))\n .then((array) => array.map((data) => new User(data, this.httpClient)));\n }\n\n /**\n * Returns the user information.\n *\n * Only administrators can get other users. If the current logged in user is not an\n * administrator, they can only get themselves, otherwise an exception will be thrown.\n *\n * @async\n * @param userId - User ID.\n */\n getUser(userId: string): Promise<User> {\n if (this.httpClient.signInUserIsAdmin) {\n return this.httpClient\n .get(`/users/${userId}`)\n .then((response) => response.json())\n .then((data) => ({ id: data.id, ...data.userBrief }))\n .then((data) => new User(data, this.httpClient));\n } else if (userId === this.httpClient.signInUserId) {\n return this.httpClient\n .get(\"/user\")\n .then((response) => response.json())\n .then((data) => ({ id: userId, ...data }))\n .then((data) => new User(data, this.httpClient));\n } else {\n return Promise.reject(new FetchError(403));\n }\n }\n\n /**\n * Create a new user.\n *\n * Only administrators can create users. If the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * @async\n * @param email - User email. Cannot be empty.\n * @param password - User password. Cannot be empty. Password can only contain latin letters\n * (a-z, A-Z), numbers (0-9), and special characters (~!@#$%^&*()_-+={}[]:;\"'`<>,.?|/\\ ).\n * @param params - Additional user data.\n * @param params.isAdmin - `true` if user is an administrator.\n * @param params.userName - User name. Cannot be empty or blank if defined. Leave undefined\n * to use `username` from email.\n * @param params.firstName - First name.\n * @param params.lastName - Last name.\n * @param params.canCreateProject - `true` if user is allowed to create a project.\n * @param params.projectsLimit - The maximum number of projects that the user can create.\n * @param params.storageLimit - The size of the file storage available to the user in bytes.\n */\n createUser(\n email: string,\n password: string,\n params: {\n isAdmin?: boolean;\n userName?: string;\n firstName?: string;\n lastName?: string;\n canCreateProject?: boolean;\n projectsLimit?: number;\n storageLimit?: number;\n } = {}\n ): Promise<User> {\n const { isAdmin, userName, ...rest } = params;\n return this.httpClient\n .post(\"/users\", {\n isAdmin,\n userBrief: {\n ...rest,\n email,\n userName: userName ?? (email + \"\").split(\"@\").at(0),\n },\n password,\n })\n .then((response) => response.json())\n .then((data) => ({ id: data.id, ...data.userBrief }))\n .then((data) => new User(data, this.httpClient));\n }\n\n /**\n * Delete a user from the server.\n *\n * Only administrators can delete users. If the current logged in user is not an\n * administrator, an exception will be thrown.\n *\n * Administrators can delete themselves or other administrators. An administrator can only\n * delete themself if they is not the last administrator.\n *\n * You need to re-login to continue working after deleting the current logged in user.\n *\n * @async\n * @param userId - User ID.\n * @returns Returns the raw data of a deleted user.\n */\n deleteUser(userId: string): Promise<any> {\n if (this.httpClient.signInUserIsAdmin) {\n return this.httpClient\n .delete(`/users/${userId}`)\n .then((response) => response.json())\n .then((data) => {\n if (userId === this.httpClient.signInUserId) {\n this.clearCurrentUser();\n }\n return data;\n });\n } else {\n return Promise.reject(new FetchError(403));\n }\n }\n\n /**\n * Result for file list.\n *\n * @typedef {any} FilesResult\n * @property {number} allSize - Total number of files the user has access to.\n * @property {number} start - The starting index in the file list in the request.\n * @property {number} limit - The maximum number of requested files.\n * @property {File[]} result - Result file list.\n * @property {number} size - The number of files in the result list.\n */\n\n /**\n * Returns a list of files the user has access to.\n *\n * @async\n * @param start - The starting index in the file list. Used for paging.\n * @param limit - The maximum number of files that should be returned per request. Used for paging.\n * @param name - Filter the files by part of the name.\n * @param ext - Filter the files by extension. Extension can be `dgn`, `dwf`, `dwg`, `dxf`,\n * `ifc`, `ifczip`, `nwc`, `nwd`, `obj`, `rcs`, `rfa`, `rvt`, `step`, `stl`, `stp`, `vsf`,\n * or any other drawing or reference file type extension. You can specify multiple\n * extensions on one `string` by separating them with a \"|\".\n * @param ids - List of file IDs to return. You can specify multiple IDs on one `string` by\n * separating them with a \"|\".\n * @param sortByDesc - Allows to specify the descending order of the result. By default,\n * files are sorted by name in ascending order.\n * @param {string} sortField - Allows to specify sort field.\n */\n getFiles(\n start?: number,\n limit?: number,\n name?: string,\n ext?: string | string[],\n ids?: string | string[],\n sortByDesc?: boolean,\n sortField?: string\n ): Promise<{ allSize: number; start: number; limit: number; result: File[]; size: number }> {\n const searchParams = new URLSearchParams();\n if (start > 0) searchParams.set(\"start\", start.toString());\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\n if (name) searchParams.set(\"name\", name);\n if (ext) {\n if (Array.isArray(ext)) ext = ext.join(\"|\");\n if (typeof ext === \"string\") ext = ext.toLowerCase();\n if (ext) searchParams.set(\"ext\", ext);\n }\n if (ids) {\n if (Array.isArray(ids)) ids = ids.join(\"|\");\n searchParams.set(\"id\", ids);\n }\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\n if (sortField) searchParams.set(\"sortField\", sortField);\n\n let queryString = searchParams.toString();\n if (queryString) queryString = \"?\" + queryString;\n\n return this.httpClient\n .get(`/files${queryString}`)\n .then((response) => response.json())\n .then((files) => {\n return {\n ...files,\n result: files.result.map((data) => new File(data, this.httpClient)),\n };\n });\n }\n\n /**\n * Returns the file information.\n *\n * @async\n * @param fileId - File ID.\n */\n getFile(fileId: string): Promise<File> {\n return this.httpClient\n .get(`/files/${fileId}`)\n .then((response) => response.json())\n .then((data) => new File(data, this.httpClient));\n }\n\n /**\n * Upload a drawing or reference file to the server.\n *\n * Fires:\n *\n * - {@link UploadProgressEvent | uploadprogress}\n *\n * @async\n * @param file - Web API <a href=\"https://developer.mozilla.org/docs/Web/API/File\"\n * target=\"_blank\">File</a> object are generally retrieved from a <a\n * href=\"https://developer.mozilla.org/docs/Web/API/FileList\" target=\"_blank\">FileList</a>\n * object returned as a result of a user selecting files using the HTML `<input>` element.\n * @param params - An object containing upload parameters.\n * @param params.geometry=true - Create job to extract file geometry data. Can be:\n *\n * - `true` - Extract file geometry data into `VSFX` to open the file in `VisualizeJS` viewer.\n * - `vsfx` - Extract file geometry data into `VSFX` to open the file in `VisualizeJS` viewer.\n * - `gltf` - Extract file geometry data into `glTF` to open the file in `Three.js` viewer.\n *\n * @param params.properties=false - Create job to extract file properties.\n * @param params.waitForDone=false - Wait for geometry and properties jobs to complete.\n * @param params.timeout - The time, in milliseconds that the function should wait jobs. If\n * no one jobs are done during this time, the `TimeoutError` exception will be thrown.\n * @param params.interval - The time, in milliseconds, the function should delay in between\n * checking jobs status.\n * @param params.signal - An <a\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\n * signal object instance, which can be used to abort waiting as desired.\n * @param params.onProgress - Upload progress callback.\n */\n async uploadFile(\n file: globalThis.File,\n params: {\n geometry?: boolean | string;\n properties?: boolean;\n waitForDone?: boolean;\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n onProgress?: (progress: number, file: globalThis.File) => void;\n } = {\n geometry: true,\n properties: false,\n waitForDone: false,\n }\n ): Promise<File> {\n const result = await this.httpClient\n .uploadFile(\"/files\", file, (progress) => {\n this.emitEvent({ type: \"uploadprogress\", data: progress, file });\n params.onProgress?.(progress, file);\n })\n .then((xhr: XMLHttpRequest) => JSON.parse(xhr.responseText))\n .then((data) => new File(data, this.httpClient));\n\n const geometryType = typeof params.geometry === \"string\" ? params.geometry : \"vsfx\";\n\n const jobs: string[] = [];\n if (params.geometry) jobs.push((await result.extractGeometry(geometryType)).outputFormat);\n if (params.properties) jobs.push((await result.extractProperties()).outputFormat);\n if (jobs.length > 0)\n if (params.waitForDone) await result.waitForDone(jobs, true, params);\n else await result.checkout();\n\n return result;\n }\n\n /**\n * Delete the drawing or reference file from the server.\n *\n * @async\n * @param fileId - File ID.\n * @returns Returns the raw data of a deleted file.\n */\n deleteFile(fileId: string): Promise<any> {\n return this.httpClient.delete(`/files/${fileId}`).then((response) => response.json());\n }\n\n /**\n * Download the drawing or reference file.\n *\n * @async\n * @param fileId - File ID.\n * @param onProgress - Download progress callback.\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\n * and abort it if desired.\n */\n downloadFile(fileId: string, onProgress?: (progress: number) => void, signal?: AbortSignal): Promise<ArrayBuffer> {\n return this.httpClient\n .downloadFile(`/files/${fileId}/downloads`, onProgress, signal)\n .then((response) => response.arrayBuffer());\n }\n\n /**\n * Result for job list.\n *\n * @typedef {any} JobsResult\n * @property {number} allSize - Total number of jobs created by the user.\n * @property {number} start - The starting index in the job list in the request.\n * @property {number} limit - The maximum number of requested jobs.\n * @property {Job[]} result - Result job list.\n * @property {number} size - The number of jobs in the result list.\n */\n\n /**\n * Returns a list of jobs created by current user.\n *\n * @async\n * @param status - Filter the jobs by status. Status can be `waiting`, `inpogress`, `done` or\n * `failed`. You can specify multiple statuses on one `string` by separating them with a \"|\".\n * @param limit - The maximum number of jobs that should be returned per request. Used for paging.\n * @param start - The starting index in the job list. Used for paging.\n * @param sortByDesc - Allows to specify the descending order of the result. By default, jobs\n * are sorted by creation time in ascending order.\n * @param {boolean} sortField - Allows to specify sort field.\n */\n getJobs(\n status?: string | string[],\n limit?: number,\n start?: number,\n sortByDesc?: boolean,\n sortField?: string\n ): Promise<{ allSize: number; start: number; limit: number; result: Job[]; size: number }> {\n const searchParams = new URLSearchParams();\n if (start > 0) searchParams.set(\"start\", start.toString());\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\n if (status) {\n if (Array.isArray(status)) status = status.join(\"|\");\n if (typeof status === \"string\") status = status.trim().toLowerCase();\n if (status) searchParams.set(\"status\", status);\n }\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\n if (sortField) searchParams.set(\"sortField\", sortField);\n\n let queryString = searchParams.toString();\n if (queryString) queryString = \"?\" + queryString;\n\n return this.httpClient\n .get(`/jobs${queryString}`)\n .then((response) => response.json())\n .then((jobs) => ({\n ...jobs,\n result: jobs.result.map((data) => new Job(data, this.httpClient)),\n }));\n }\n\n /**\n * Returns the job information.\n *\n * @async\n * @param jobId - Job ID.\n */\n getJob(jobId: string): Promise<Job> {\n return this.httpClient\n .get(`/jobs/${jobId}`)\n .then((response) => response.json())\n .then((data) => new Job(data, this.httpClient));\n }\n\n /**\n * Create a new job.\n *\n * @async\n * @param fileId - File ID.\n * @param outputFormat - The job type. Can be one of:\n *\n * - `geometry` - Extract file geometry data into `VSFX`.\n * - `geometryGltf` - Extract file geometry data into `glTF`.\n * - `properties` - Extract file properties.\n * - `validation` - Validate the file. Only for `IFC`.\n * - `dwg`, `obj`, `gltf`, `glb`, `vsf`, `pdf`, `3dpdf` - Export file to the one of the supported format.\n * - Other custom job name. Custom job runner must be registered in the job templates table\n * before creating a job.\n *\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\n * for the File Converter tool in form \"--arg=value\".\n */\n createJob(fileId: string, outputFormat: string, parameters?: string | object): Promise<Job> {\n return this.httpClient\n .post(\"/jobs\", {\n fileId,\n outputFormat,\n parameters: parseArgs(parameters),\n })\n .then((response) => response.json())\n .then((data) => new Job(data, this.httpClient));\n }\n\n /**\n * Remove a job from the server job list. The method does not delete or stop jobs that are\n * already being executed.\n *\n * @async\n * @param jobId - Job ID.\n * @returns Returns the raw data of a deleted job.\n */\n deleteJob(jobId: string): Promise<any> {\n return this.httpClient.delete(`/jobs/${jobId}`).then((response) => response.json());\n }\n\n /**\n * Result for assembly list.\n *\n * @typedef {any} AssembliesResult\n * @property {number} allSize - Total number of assemblies the user has access to.\n * @property {number} start - The starting index in the assembly list in the request.\n * @property {number} limit - The maximum number of requested assemblies.\n * @property {Assembly[]} result - Result assembly list.\n * @property {number} size - The number of assemblies in the result list.\n */\n\n /**\n * Returns a list of assemblies the user has access to.\n *\n * @async\n * @param start - The starting index in the assembly list. Used for paging.\n * @param limit - The maximum number of assemblies that should be returned per request. Used\n * for paging.\n * @param name - Filter the assemblies by part of the name.\n * @param ids - List of assembly IDs to return. You can specify multiple IDs on one `string`\n * by separating them with a \"|\".\n * @param sortByDesc - Allows to specify the descending order of the result. By default\n * assemblies are sorted by name in ascending order.\n * @param sortField - Allows to specify sort field.\n */\n getAssemblies(\n start?: number,\n limit?: number,\n name?: string,\n ids?: string | string[],\n sortByDesc?: boolean,\n sortField?: string\n ): Promise<{ allSize: number; start: number; limit: number; result: Assembly[]; size: number }> {\n const searchParams = new URLSearchParams();\n if (start > 0) searchParams.set(\"start\", start.toString());\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\n if (name) searchParams.set(\"name\", name);\n if (ids) {\n if (Array.isArray(ids)) ids = ids.join(\"|\");\n if (typeof ids === \"string\") ids = ids.trim();\n if (ids) searchParams.set(\"id\", ids);\n }\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\n if (sortField) searchParams.set(\"sortField\", sortField);\n\n let queryString = searchParams.toString();\n if (queryString) queryString = \"?\" + queryString;\n\n return this.httpClient\n .get(`/assemblies${queryString}`)\n .then((response) => response.json())\n .then((assemblies) => {\n return {\n ...assemblies,\n result: assemblies.result.map((data) => new Assembly(data, this.httpClient)),\n };\n });\n }\n\n /**\n * Get assembly information.\n *\n * @async\n * @param assemblyId - Assembly ID.\n */\n getAssembly(assemblyId: string): Promise<Assembly> {\n return this.httpClient\n .get(`/assemblies/${assemblyId}`)\n .then((response) => response.json())\n .then((data) => new Assembly(data, this.httpClient));\n }\n\n /**\n * Create a new assembly.\n *\n * @async\n * @param files - List of file IDs.\n * @param name - Assembly name.\n * @param params - An object containing upload parameters.\n * @param params.waitForDone=false - Wait for assembly to be created.\n */\n createAssembly(\n files: string[],\n name: string,\n params?: {\n waitForDone?: boolean;\n timeout?: number;\n interval?: number;\n signal?: AbortSignal;\n }\n ): Promise<Assembly> {\n const { waitForDone } = params ?? {};\n return this.httpClient\n .post(\"/assemblies\", { name, files })\n .then((response) => response.json())\n .then((data) => new Assembly(data, this.httpClient))\n .then((result) => (waitForDone ? result.waitForDone(params) : result));\n }\n\n /**\n * Delete the assembly from the server.\n *\n * @async\n * @param assemblyId - Assembly ID.\n * @returns Returns the raw data of a deleted assembly.\n */\n deleteAssembly(assemblyId: string): Promise<any> {\n return this.httpClient.delete(`/assemblies/${assemblyId}`).then((response) => response.json());\n }\n\n /**\n * Result for project list.\n *\n * @typedef {any} ProjectsResult\n * @property {number} allSize - Total number of projects the user has access to.\n * @property {number} start - The starting index in the project list in the request.\n * @property {number} limit - The maximum number of requested projects.\n * @property {Project[]} result - Result project list.\n * @property {number} size - The number of projects in the result list.\n */\n\n /**\n * Returns a list of projects the user has access to.\n *\n * @async\n * @param start - The starting index in the project list. Used for paging.\n * @param limit - The maximum number of projects that should be returned per request. Used for paging.\n * @param name - Filter the projects by part of the name.\n * @param ids - List of project IDs to return. You can specify multiple IDs on one `string`\n * by separating them with a \"|\".\n * @param sortByDesc - Allows to specify the descending order of the result. By default\n * projects are sorted by name in ascending order.\n */\n getProjects(\n start?: number,\n limit?: number,\n name?: string,\n ids?: string | string[],\n sortByDesc?: boolean\n ): Promise<{ allSize: number; start: number; limit: number; result: Project[]; size: number }> {\n const searchParams = new URLSearchParams();\n if (start > 0) searchParams.set(\"start\", start.toString());\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\n if (name) searchParams.set(\"name\", name);\n if (ids) {\n if (Array.isArray(ids)) ids = ids.join(\"|\");\n if (typeof ids === \"string\") ids = ids.trim();\n if (ids) searchParams.set(\"id\", ids);\n }\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\n\n let queryString = searchParams.toString();\n if (queryString) queryString = \"?\" + queryString;\n return this.httpClient\n .get(`/projects${queryString}`)\n .then((response) => response.json())\n .then((projects) => {\n // fix for server 23.5 and below\n if (Array.isArray(projects)) {\n let result = projects;\n if (ids) result = result.filter((x) => ids.includes(x.id));\n if (name) result = result.filter((x) => x.name.includes(name));\n if (limit > 0) {\n const begin = start > 0 ? start : 0;\n result = result.slice(begin, begin + limit);\n }\n return {\n allSize: projects.length,\n start,\n limit,\n result,\n size: result.length,\n };\n }\n return projects;\n })\n .then((projects) => {\n return {\n ...projects,\n result: projects.result.map((data) => new Project(data, this.httpClient)),\n };\n });\n }\n\n /**\n * Returns the project information.\n *\n * @async\n * @param projectId - Project ID.\n */\n getProject(projectId: string): Promise<Project> {\n return this.httpClient\n .get(`/projects/${projectId}`)\n .then((response) => response.json())\n .then((data) => new Project(data, this.httpClient));\n }\n\n /**\n * Create a new project.\n *\n * @async\n * @param name - Project name.\n * @param description - Project description.\n * @param startDate - Project start date.\n * @param endDate - Project end date.\n */\n createProject(\n name: string,\n description?: string,\n startDate?: Date | string,\n endDate?: Date | string\n ): Promise<Project> {\n return this.httpClient\n .post(\"/projects\", {\n name,\n description,\n startDate: startDate instanceof Date ? startDate.toISOString() : startDate,\n endDate: endDate instanceof Date ? endDate.toISOString() : endDate,\n })\n .then((response) => response.json())\n .then((data) => new Project(data, this.httpClient));\n }\n\n /**\n * Delete the project from the server.\n *\n * @async\n * @param projectId - Project ID.\n * @returns Returns the raw data of a deleted project.\n */\n deleteProject(projectId: string): Promise<any> {\n return this.httpClient\n .delete(`/projects/${projectId}`)\n .then((response) => response.text())\n .then((text) => {\n // fix for server 23.5 and below\n try {\n return JSON.parse(text);\n } catch {\n return { id: projectId };\n }\n });\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport { Assembly } from \"./Api/Assembly\";\nexport { Client } from \"./Api/Client\";\nexport { ClashTest } from \"./Api/ClashTest\";\nexport * from \"./Api/ClientEvents\";\nexport { File } from \"./Api/File\";\nexport { FetchError, statusText } from \"./Api/FetchError\";\nexport { Job } from \"./Api/Job\";\nexport { Member } from \"./Api/Member\";\nexport { Model } from \"./Api/Model\";\nexport { Permission } from \"./Api/Permission\";\nexport { Project } from \"./Api/Project\";\nexport { Role } from \"./Api/Role\";\nexport { User } from \"./Api/User\";\nexport { parseArgs, userFullName, userInitials, waitFor } from \"./Api/Utils\";\n\nexport const version = \"CLIENT_JS_VERSION\";\n"],"names":[],"mappings":"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"}