@inweb/client 25.4.2 → 25.4.4
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.
- package/dist/client.js +107 -77
- package/dist/client.js.map +1 -1
- package/dist/client.min.js +1 -1
- package/dist/client.module.js +62 -67
- package/dist/client.module.js.map +1 -1
- package/lib/Api/Assembly.d.ts +33 -1
- package/lib/Api/ClashTest.d.ts +2 -2
- package/lib/Api/Client.d.ts +4 -1
- package/lib/Api/File.d.ts +2 -3
- package/lib/Api/Job.d.ts +1 -1
- package/lib/Api/Member.d.ts +2 -2
- package/lib/Api/Model.d.ts +2 -3
- package/lib/Api/Permission.d.ts +2 -2
- package/lib/Api/Project.d.ts +1 -1
- package/lib/Api/Role.d.ts +2 -2
- package/lib/Api/User.d.ts +1 -1
- package/lib/index.d.ts +1 -0
- package/package.json +2 -2
- package/src/Api/Assembly.ts +40 -13
- package/src/Api/ClashTest.ts +2 -2
- package/src/Api/Client.ts +59 -57
- package/src/Api/Fetch.ts +2 -2
- package/src/Api/File.ts +2 -3
- package/src/Api/HttpClient.ts +3 -3
- package/src/Api/Job.ts +1 -1
- package/src/Api/Member.ts +2 -2
- package/src/Api/Model.ts +2 -3
- package/src/Api/Permission.ts +2 -2
- package/src/Api/Project.ts +1 -1
- package/src/Api/Role.ts +2 -2
- package/src/Api/User.ts +1 -1
- package/src/index.ts +1 -0
package/dist/client.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).ODA=t.ODA||{},t.ODA.Api=t.ODA.Api||{}))}(this,(function(t){"use strict";class e{constructor(t,e){this.path=`${e.path}/downloads`,this.httpClient=e.httpClient,this._file=e,this._data=t}get assembly(){return this._file}get data(){return this._data}set data(t){this._data=t}get database(){return this.data.database}get default(){return this.data.default}get file(){return this._file}get fileId(){return this.data.fileId}get geometry(){return this.data.geometry}get id(){return this.data.id}get name(){return this.data.name}get type(){return this.file.type}get version(){return this.data.version}getModels(){return Promise.resolve([this])}getModelTransformMatrix(t){return this.file.getModelTransformMatrix(t)}setModelTransformMatrix(t,e){return this.file.setModelTransformMatrix(t,e).then((()=>this))}getViewpoints(){return this._file.getViewpoints().then((t=>t.filter((({custom_fields:t={}})=>t.modelId===this.id||t.modelName===this.name))))}saveViewpoint(t){return this._file.saveViewpoint({...t,custom_fields:{...t.custom_fields,modelId:this.id,modelName:this.name}})}deleteViewpoint(t){return this._file.deleteViewpoint(t)}getSnapshot(t){return this._file.getSnapshot(t)}getSnapshotData(t,e){return this._file.getSnapshotData(t,e)}downloadResource(t,e,s){return this._file.downloadResource(t,e,s)}downloadResourceRange(t,e,s,r,i){return this._file.downloadResourceRange(t,e,s,r,i)}partialDownloadResource(t,e,s){return console.warn("Model.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use Model.downloadResource() instead."),this.downloadResource(t,e,s)}async downloadFileRange(t,e,s,r,i){if(!e)return;let n=[];if(e.length)n=e.map((t=>({begin:Number(t.begin),end:Number(t.end),requestId:t.reqId})));else for(let s=0;s<e.size();s++){const r=e.get(s);n.push({begin:Number(r.begin),end:Number(r.end),requestId:t}),r.delete()}await this.downloadResourceRange(s,t,n,r,i)}getReferences(t){return this._file.getReferences(t)}}function s(t,e){return new Promise((s=>{let r=0;const i=()=>{clearTimeout(r),s(!0)};r=window.setTimeout((()=>{e.removeEventListener("abort",i),s(!1)}),t),e.addEventListener("abort",i,{once:!0})}))}async function r(t,e={}){var r,i,n;const a=e.timeout||6e5,o=e.interval||3e3,h=null!==(r=e.signal)&&void 0!==r?r:(new AbortController).signal,l=null!==(i=e.abortError)&&void 0!==i?i:new DOMException("Aborted","AbortError"),d=null!==(n=e.timeoutError)&&void 0!==n?n:new DOMException("Timeout","TimeoutError"),u=performance.now()+a;let p=a/o;do{if(await t(e))return Promise.resolve(e.result);if(await s(o,h)||h.aborted)return Promise.reject(l)}while(performance.now()<u&&--p>0);return Promise.reject(d)}function i(t){if("string"==typeof t){const e=t.indexOf("--");-1!==e&&(t=t.slice(e));const s=t.split("--").map((t=>t.split("=").map((t=>t.split(" "))).flat())).filter((t=>t[0])).map((t=>t.concat([""])));return Object.fromEntries(s)}return t||{}}function n(t,e="",s=""){var r;return t&&"string"!=typeof t?n(null!==(r=t.firstName)&&void 0!==r?r:t.name,t.lastName,t.userName):`${null!=t?t:""} ${null!=e?e:""}`.trim()||s}function a(t=""){const e=t.split(" ").filter((t=>t));return e.reduce(((t,s,r)=>(0!==r&&r!==e.length-1||(t+=s.charAt(0)),t)),"").toUpperCase()}class o{constructor(t,e,s){this.httpClient=s,this.basePath=e,this.data=t}internalGet(t){return this.httpClient.get(`${this.basePath}/clashes/${this.id}${t}`)}internalPut(t,e){return this.httpClient.put(`${this.basePath}/clashes/${this.id}${t}`,e)}internalDelete(t){return this.httpClient.delete(`${this.basePath}/clashes/${this.id}${t}`)}get clearance(){return this.data.clearance}get createdAt(){return this.data.createdAt}get data(){return this._data}set data(t){this._data=t,this._data.owner.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`,this._data.owner.fullName=n(this._data.owner),this._data.owner.initials=a(this._data.owner.fullName)}get id(){return this.data.id}get lastModifiedAt(){return this.data.lastModifiedAt}get name(){return this.data.name}set name(t){this.data.name=t}get owner(){return this.data.owner}get selectionSetA(){return this.data.selectionSetA}get selectionTypeA(){return this.data.selectionTypeA}get selectionSetB(){return this.data.selectionSetB}get selectionTypeB(){return this.data.selectionTypeB}get status(){return this.data.status}get tolerance(){return this.data.tolerance}async checkout(){const t=await this.internalGet("");return this.data=await t.json(),this}async update(t){const e=await this.internalPut("",t);return this.data=await e.json(),this}delete(){return this.internalDelete("").then((t=>t.json()))}save(){return this.update(this.data)}waitForDone(t){return r((()=>this.checkout().then((t=>["done","failed"].includes(t.status)))),t).then((()=>this))}getReport(){return this.internalGet("/report").then((t=>t.json()))}}const h={100:"Continue",101:"Switching Protocols",102:"Processing",103:"Early Hints",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Time-out",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Too Early",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"};function l(t){return h[t]||`Error ${t}`}function d(t,e="400"){try{return JSON.parse(t).description}catch{return e}}class u extends Error{constructor(t,e){super(e||l(t)),this.status=t,this.statusText=l(t)}}class p{constructor(t,e){this.path=`/assemblies/${t.id}`,this.httpClient=e,this.data=t}appendVersionParam(t){if(void 0===this._useVersion)return t;const e=t.includes("?")?"&":"?";return`${t}${e}version=${this._useVersion}`}internalGet(t,e){return t=this.appendVersionParam(t),this.httpClient.get(`${this.path}${t}`,e)}internalPost(t,e){return t=this.appendVersionParam(t),this.httpClient.post(`${this.path}${t}`,e)}internalPut(t,e){return t=this.appendVersionParam(t),this.httpClient.put(`${this.path}${t}`,e)}internalDelete(t){return t=this.appendVersionParam(t),this.httpClient.delete(`${this.path}${t}`)}get activeVersion(){return this.data.activeVersion}get associatedFiles(){return this.data.associatedFiles}get created(){return this.data.created}get data(){return this._data}set data(t){var e,s;this._data=t,this._data.owner.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`,this._data.owner.fullName=n(this._data.owner),this._data.owner.initials=a(this._data.owner.fullName),null!==(e=(s=this._data).associatedFiles)&&void 0!==e||(s.associatedFiles=[]),this._data.associatedFiles.forEach((t=>t.link=`${this.httpClient.serverUrl}/files/${t.fileId}`))}get files(){return this.data.files}get geometryType(){return"done"===this.status?"vsfx":""}get id(){return this.data.id}get name(){return this.data.name}set name(t){this.data.name=t}get originalAssemblyId(){return this.data.originalAssemblyId}get owner(){return this.data.owner}get previewUrl(){return this.data.previewUrl||""}get relatedJobs(){return this.data.relatedJobs}get status(){return this.data.status}get type(){return"assembly"}get version(){return this.data.version}get versions(){return this.data.versions}async checkout(){const t=await this.internalGet("");return this.data=await t.json(),this}async update(t){const e=await this.internalPut("",t);return this.data=await e.json(),this}delete(){return this.internalDelete("").then((t=>t.json()))}save(){return this.update(this.data)}setPreview(t){return console.warn("Assembly does not support preview"),Promise.resolve(this)}getModels(){return this.internalGet("/geometry").then((t=>t.json())).then((t=>t.map((t=>new e(t,this)))))}getModelTransformMatrix(t){return this.data.transform[t]}setModelTransformMatrix(t,e){const s={...this.data.transform};return s[t]=e,this.update({transform:s})}getProperties(t){const e=void 0!==t?`/properties?handles=${t}`:"/properties";return this.internalGet(e).then((t=>t.json()))}searchProperties(t){return this.internalPost("/properties/search",t).then((t=>t.json()))}getCdaTree(){return this.internalGet("/properties/tree").then((t=>t.json()))}getViewpoints(){return console.warn("Assembly does not support viewpoints"),Promise.resolve([])}saveViewpoint(t){return console.warn("Assembly does not support viewpoints"),Promise.resolve({})}deleteViewpoint(t){return console.warn("Assembly does not support viewpoints"),Promise.resolve({})}getSnapshot(t){return console.warn("Assembly does not support viewpoints"),Promise.resolve({})}getSnapshotData(t,e){return console.warn("Assembly does not support viewpoints"),Promise.resolve("")}downloadResource(t,e,s){const r=this.appendVersionParam(`/downloads/${t}`);return this.httpClient.downloadFile(`${this.path}${r}`,e,s).then((t=>t.arrayBuffer()))}downloadResourceRange(t,e,s,r,i){const n=this.appendVersionParam(`/downloads/${t}?requestId=${e}`);return this.httpClient.downloadFileRange(`${this.path}${n}`,e,s,r,i).then((t=>t.arrayBuffer()))}partialDownloadResource(t,e,s){return console.warn("Assembly.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use Assembly.downloadResource() instead."),this.downloadResource(t,e,s)}async downloadFileRange(t,e,s,r,i){await this.downloadResourceRange(s,t,e,r,i)}getReferences(t){return Promise.resolve({fileId:"",references:[]})}waitForDone(t){return r((()=>this.checkout().then((e=>{var s;const r=["done","failed"].includes(e.status);return(null===(s=null==t?void 0:t.onCheckout)||void 0===s?void 0:s.call(t,e,r))||r}))),t).then((()=>this))}getClashTests(t,e,s,r,i,n){const a=new URLSearchParams;t>0&&a.set("start",t.toString()),e>0&&a.set("limit",e.toString()),s&&a.set("name",s),r&&(Array.isArray(r)&&(r=r.join("|")),"string"==typeof r&&(r=r.trim()),r&&a.set("id",r)),void 0!==i&&a.set("sortBy",i?"desc":"asc"),n&&a.set("sortField",n);let h=a.toString();return h&&(h="?"+h),this.internalGet(`/clashes${h}`).then((t=>t.json())).then((t=>({...t,result:t.result.map((t=>new o(t,this.path,this.httpClient)))})))}getClashTest(t){return this.internalGet(`/clashes/${t}`).then((t=>t.json())).then((t=>new o(t,this.path,this.httpClient)))}createClashTest(t,e,s,r,i,n){const{tolerance:a,clearance:h,waitForDone:l}=null!=n?n:{};return Array.isArray(r)||(r=[r]),Array.isArray(i)||(i=[i]),this.internalPost("/clashes",{name:t,selectionTypeA:e,selectionTypeB:s,selectionSetA:r,selectionSetB:i,tolerance:a,clearance:h}).then((t=>t.json())).then((t=>new o(t,this.path,this.httpClient))).then((t=>l?t.waitForDone(n):t))}deleteClashTest(t){return this.internalDelete(`/clashes/${t}`).then((t=>t.json()))}updateVersion(t,e={waitForDone:!1}){return Promise.reject(new Error("Assembly version support will be implemeted in a future release"))}getVersions(){return Promise.resolve(void 0)}getVersion(t){return Promise.reject(new u(404))}deleteVersion(t){return Promise.reject(new u(404))}setActiveVersion(t){return this.update({activeVersion:t})}useVersion(t){return this._useVersion=void 0,this}}class c{constructor(){this._listeners={}}addEventListener(t,e){return void 0===this._listeners[t]&&(this._listeners[t]=[]),this._listeners[t].push(e),this}removeEventListener(t,e){if(void 0===this._listeners[t])return this;const s=this._listeners[t].filter((t=>t!==e));return 0!==s.length?this._listeners[t]=s:delete this._listeners[t],this}removeAllListeners(t){return t?delete this._listeners[t]:this._listeners={},this}emitEvent(t){if(void 0===this._listeners[t.type])return!1;return this._listeners[t.type].slice().forEach((e=>e.call(this,t))),!0}on(t,e){return this.addEventListener(t,e)}off(t,e){return this.removeEventListener(t,e)}emit(t,...e){return"string"==typeof t?this.emitEvent({type:t,args:e}):"object"==typeof t&&this.emitEvent(t)}}function m(t){if(!t.ok)switch(t.status){case 400:return t.text().then((t=>(console.error(t),Promise.reject(new u(400,d(t))))));case 500:return t.text().then((t=>(console.error(d(t,t)),Promise.reject(new u(500)))));default:return Promise.reject(new u(t.status,l(t.status)))}return Promise.resolve(t)}function g(t,e={method:"GET"}){const s={...e.headers};let r;delete s["Content-Type"],"POST"!==e.method&&"PUT"!==e.method||(e.body instanceof FormData?r=e.body:e.body instanceof Blob?(r=new FormData,r.append("file",e.body)):e.body instanceof ArrayBuffer?(r=new FormData,r.append("file",new Blob([e.body]))):"object"==typeof e.body?(r=JSON.stringify(e.body),s["Content-Type"]="application/json"):"string"==typeof e.body&&(r=e.body,s["Content-Type"]="text/plain"));const i={method:e.method,headers:s};return r&&(i.body=r),e.signal&&(i.signal=e.signal),fetch(t,i).then(m)}function w(t,e={method:"GET"}){return new Promise(((s,r)=>{const i=new XMLHttpRequest;i.open(e.method,t,!0);for(const t in e.headers)i.setRequestHeader(t,e.headers[t]);function n(t){return t.lengthComputable?t.loaded/t.total:1}i.upload.onprogress=t=>e.uploadProgress&&e.uploadProgress(n(t)),i.onprogress=t=>e.downloadProgress&&e.downloadProgress(n(t)),i.onloadend=t=>function(t){if(0===t.status)return Promise.reject(new u(0,"Network error"));if(t.status<200||t.status>299)switch(t.status){case 400:return console.error(t.responseText),Promise.reject(new u(400,d(t.responseText)));case 500:return console.error(d(t.responseText,t.responseText)),Promise.reject(new u(500));default:return Promise.reject(new u(t.status))}return Promise.resolve(t)}(t.target).then(s,r),i.send(e.body)}))}class f{constructor(t){this.headers={},this.signInUserId="",this.serverUrl=t}get(t,e){return g(`${this.serverUrl}${t}`,{method:"GET",headers:this.headers,signal:e})}post(t,e){return g(`${this.serverUrl}${t}`,{method:"POST",headers:this.headers,body:e})}put(t,e){return g(`${this.serverUrl}${t}`,{method:"PUT",headers:this.headers,body:e})}delete(t){return g(`${this.serverUrl}${t}`,{method:"DELETE",headers:this.headers})}uploadFile(t,e,s){const r=new FormData;return r.append("file",e),w(`${this.serverUrl}${t}`,{method:"POST",headers:this.headers,body:r,uploadProgress:s})}async downloadFile(t,e,s){const r=await this.get(t,s),i=r.headers.get("Content-Length"),n=parseInt(i||"",10)||1;return new Response(new ReadableStream({async start(t){const s=r.body.getReader();let i=0;for(;;){const{done:r,value:a}=await s.read();if(r)break;t.enqueue(a),i+=a.length,e&&e(i/n,a)}t.close()}}))}async downloadFileRange(t,e,s,r,i){const n={...this.headers};n.Range="bytes="+s.map((t=>`${t.begin}-${t.end}`)).join(",");const a=await g(`${this.serverUrl}${t}`,{method:"GET",headers:n,signal:i}),o=a.headers.get("content-length"),h=parseInt(o||"",10)||1;return new Response(new ReadableStream({async start(t){const e=a.body.getReader();let i=0,n=0,o=0;for(;;){const{done:a,value:l}=await e.read();if(a)break;t.enqueue(l),i+=l.length;let d=l.length,u=0;for(;d>0;){const t=s[n],e=t.end-t.begin-o;if(d<e){const e=l.subarray(u,u+d);r&&r(i/h,e,t.requestId),o+=d,d=0}else{const s=l.subarray(u,u+e);r&&r(i/h,s,t.requestId),u+=e,d-=e,n++,o=0}}}t.close()}}))}}class v{constructor(t,e,s){this.httpClient=s,this.fileId=e,this.data=t}internalGet(){return this.httpClient.get(`/files/${this.fileId}/permissions/${this.id}`)}internalPut(t){return this.httpClient.put(`/files/${this.fileId}/permissions/${this.id}`,t)}internalDelete(){return this.httpClient.delete(`/files/${this.fileId}/permissions/${this.id}`)}get actions(){return this.data.actions}set actions(t){this._data.actions=t}get data(){return this._data}set data(t){this._data=t}get id(){return this.data.id}get grantedTo(){return this.data.grantedTo}set grantedTo(t){this.data.grantedTo=t}get public(){return this.data.public}set public(t){this.data.public=t}async checkout(){const t=await this.internalGet();return this.data=await t.json(),this}async update(t){const e=await this.internalPut(t);return this.data=await e.json(),this}delete(){return this.internalDelete().then((t=>t.json()))}save(){return this.update(this.data)}}class y{constructor(t,e){this.httpClient=e,this.data=t}internalGet(){return this.httpClient.get(`/jobs/${this.data.id}`)}internalPut(t){return this.httpClient.put(`/jobs/${this.data.id}`,t)}internalDelete(){return this.httpClient.delete(`/jobs/${this.data.id}`)}get assemblyId(){return this.data.assemblyId}get authorId(){return this.data.authorId}get createdAt(){return this.data.createdAt}get data(){return this._data}set data(t){this._data=t}get done(){return"done"===this.data.status||"failed"===this.data.status}get fileId(){return this.data.fileId}get id(){return this.data.id}get lastUpdate(){return this.data.lastUpdate}get outputFormat(){return this.data.outputFormat}get parameters(){return this.data.parameters}get status(){return this.data.status}get statusMessage(){return this.data.statusMessage}get startedAt(){return this.data.startedAt}async checkout(){const t=await this.internalGet();return this.data=await t.json(),this}async update(t){const e=await this.internalPut(t);return this.data=await e.json(),this}delete(){return this.internalDelete().then((t=>t.json()))}waitForDone(t){return r((()=>this.checkout().then((e=>{var s;const r=["done","failed"].includes(e.status);return(null===(s=null==t?void 0:t.onCheckout)||void 0===s?void 0:s.call(t,e,r))||r}))),t).then((()=>this))}}class _{constructor(t,e){this.path=`/files/${t.id}`,this.httpClient=e,this.data=t}appendVersionParam(t){if(void 0===this._useVersion)return t;const e=t.includes("?")?"&":"?";return`${t}${e}version=${this._useVersion}`}internalGet(t,e){return t=this.appendVersionParam(t),this.httpClient.get(`${this.path}${t}`,e)}internalPost(t,e){return t=this.appendVersionParam(t),this.httpClient.post(`${this.path}${t}`,e)}internalPut(t,e){return t=this.appendVersionParam(t),this.httpClient.put(`${this.path}${t}`,e)}internalDelete(t){return t=this.appendVersionParam(t),this.httpClient.delete(`${this.path}${t}`)}get activeVersion(){return this.data.activeVersion}get created(){return this.data.created}get customFields(){return this.data.customFields}set customFields(t){this.data.customFields=t}get data(){return this._data}set data(t){var e,s,r,i,o,h,l,d,u,p,c,m,g,w,f,v,y,_,C;this._data=t,this._data.previewUrl=t.preview?`${this.httpClient.serverUrl}${this.path}/preview`:"","string"==typeof this._data.owner&&(this._data.owner={userId:this._data.owner}),null!==(e=(m=this._data).owner)&&void 0!==e||(m.owner={}),this._data.owner.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`,this._data.owner.fullName=n(this._data.owner),this._data.owner.initials=a(this._data.owner.fullName),null!==(s=(g=this._data).status)&&void 0!==s||(g.status={}),null!==(r=(w=this._data.status).geometry)&&void 0!==r||(w.geometry={state:null!==(i=this._data.geometryStatus)&&void 0!==i?i:"none"}),null!==(o=(f=this._data.status).properties)&&void 0!==o||(f.properties={state:null!==(h=this._data.propertiesStatus)&&void 0!==h?h:"none"}),null!==(l=(v=this._data.status).validation)&&void 0!==l||(v.validation={state:null!==(d=this._data.validationStatus)&&void 0!==d?d:"none"}),null!==(u=(y=this._data).updatedBy)&&void 0!==u||(y.updatedBy={}),this._data.updatedBy.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.updatedBy.userId}/avatar`,this._data.updatedBy.fullName=n(this._data.updatedBy),this._data.updatedBy.initials=a(this._data.updatedBy.fullName),null!==(p=(_=this._data).versions)&&void 0!==p||(_.versions=[{...t}]),null!==(c=(C=this._data.status).geometryGltf)&&void 0!==c||(C.geometryGltf={state:"none"})}get exports(){return this.data.exports}get geometryType(){return"done"===this.status.geometryGltf.state?"gltf":"done"===this.status.geometry.state?"vsfx":""}get id(){return this.data.id}get name(){return this.data.name}set name(t){this.data.name=t}get originalFileId(){return this.data.originalFileId}get owner(){return this.data.owner}get previewUrl(){return this.data.previewUrl}get size(){return this.data.size}get sizeTotal(){return this.data.sizeTotal}get status(){return this.data.status}get type(){return this.data.type}get updatedAt(){return this.data.updatedAt}get updatedBy(){return this.data.updatedBy}get version(){return this.data.version}get versions(){return this.data.versions}async checkout(){const t=await this.internalGet("");return this.data=await t.json(),this}async update(t){const e=await this.internalPut("",t);return this.data=await e.json(),this}delete(){return this.internalDelete("").then((t=>t.json()))}save(){return this.update(this.data)}async setPreview(t){const e=await(t?this.internalPost("/preview",t):this.internalDelete("/preview"));return this.data=await e.json(),this}getModels(){return this.internalGet("/geometry").then((t=>t.json())).then((t=>t.map((t=>new e(t,this)))))}getModelTransformMatrix(t){}setModelTransformMatrix(t,e){return console.warn("File does not support model transformation"),Promise.resolve(this)}getProperties(t){const e=void 0!==t?`/properties?handles=${t}`:"/properties";return this.internalGet(e).then((t=>t.json()))}searchProperties(t){return this.internalPost("/properties/search",t).then((t=>t.json()))}getCdaTree(){return this.internalGet("/properties/tree").then((t=>t.json()))}getViewpoints(){return this.internalGet("/viewpoints").then((t=>t.json())).then((t=>t.result))}saveViewpoint(t){return this.internalPost("/viewpoints",t).then((t=>t.json()))}deleteViewpoint(t){return this.internalDelete(`/viewpoints/${t}`).then((t=>t.json()))}getSnapshot(t){return this.internalGet(`/viewpoints/${t}/snapshot`).then((t=>t.text()))}getSnapshotData(t,e){return this.internalGet(`/viewpoints/${t}/bitmaps/${e}`).then((t=>t.text()))}download(t,e){const s=this.appendVersionParam("/downloads");return this.httpClient.downloadFile(`${this.path}${s}`,t,e).then((t=>t.arrayBuffer()))}downloadResource(t,e,s){const r=this.appendVersionParam(`/downloads/${t}`);return this.httpClient.downloadFile(`${this.path}${r}`,e,s).then((t=>t.arrayBuffer()))}downloadResourceRange(t,e,s,r,i){const n=this.appendVersionParam(`/downloads/${t}?requestId=${e}`);return this.httpClient.downloadFileRange(`${this.path}${n}`,e,s,r,i).then((t=>t.arrayBuffer()))}partialDownloadResource(t,e,s){return console.warn("File.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use File.downloadResource() instead."),this.downloadResource(t,e,s)}async downloadFileRange(t,e,s,r,i){await this.downloadResourceRange(s,t,e,r,i)}getReferences(t){return this.internalGet("/references",t).then((t=>t.json()))}setReferences(t){return this.internalPut("/references",t).then((t=>t.json()))}createJob(t,e){const s=this.appendVersionParam("/jobs");return this.httpClient.post(s,{fileId:this.id,outputFormat:t,parameters:i(e)}).then((t=>t.json())).then((t=>new y(t,this.httpClient)))}extractGeometry(t,e){return this.createJob("gltf"===t?"geometryGltf":"geometry",e)}extractProperties(t){return this.createJob("properties",t)}validate(t){return this.createJob("validation",t)}waitForDone(t,e,s){const i=Array.isArray(t)?t:[t];void 0===e&&(e=!0);return r((()=>this.checkout().then((t=>{var r;const n=i.filter((e=>{const s=t.status[e]||{};return["none","done","failed"].includes(s.state||"none")})),a=e?n.length===i.length:n.length>0;return(null===(r=null==s?void 0:s.onCheckout)||void 0===r?void 0:r.call(s,t,a))||a}))),s).then((()=>this))}getPermissions(){return this.internalGet("/permissions").then((t=>t.json())).then((t=>t.map((t=>new v(t,this.id,this.httpClient)))))}getPermission(t){return this.internalGet(`/permissions/${t}`).then((t=>t.json())).then((t=>new v(t,this.id,this.httpClient)))}createPermission(t,e,s){return this.internalPost("/permissions",{actions:Array.isArray(t)?t:[t],grantedTo:e,public:s}).then((t=>t.json())).then((t=>new v(t,this.id,this.httpClient)))}deletePermission(t){return this.internalDelete(`/permissions/${t}`).then((t=>t.json()))}async uploadVersion(t,e={waitForDone:!1}){const s=await this.httpClient.uploadFile(`${this.path}/versions`,t,(s=>{var r;return null===(r=e.onProgress)||void 0===r?void 0:r.call(e,s,t)})).then((t=>JSON.parse(t.responseText))).then((t=>new _(t,this.httpClient)));let r="";"none"!==this.versions[0].status.geometryGltf.state&&(r="gltf"),"none"!==this.versions[0].status.geometry.state&&(r="vsfx"),void 0===(e={...e}).geometry&&(e.geometry=""!==r),void 0===e.properties&&(e.properties="none"!==this.versions[0].status.properties.state);const i=[];return e.geometry&&i.push((await s.extractGeometry(r)).outputFormat),e.properties&&i.push((await s.extractProperties()).outputFormat),i.length>0&&(e.waitForDone?await s.waitForDone(i,!0,e):await s.checkout()),await this.checkout(),s}getVersions(){return this.internalGet("/versions").then((t=>t.json())).then((t=>t.map((t=>new _(t,this.httpClient))))).then((t=>t.map((t=>t.id==t.originalFileId?t.useVersion(0):t))))}getVersion(t){return this.internalGet(`/versions/${t}`).then((t=>t.json())).then((t=>new _(t,this.httpClient))).then((t=>t.id==t.originalFileId?t.useVersion(0):t))}async deleteVersion(t){const e=await this.internalDelete(`/versions/${t}`),s=await e.json();return await this.checkout(),s}setActiveVersion(t){return this.update({activeVersion:t})}useVersion(t){return this._useVersion=t,this}}class C{constructor(t,e,s){this.httpClient=s,this.projectId=e,this.data=t}internalGet(){return this.httpClient.get(`/projects/${this.projectId}/roles/${this.name}`)}internalPut(t){return this.httpClient.put(`/projects/${this.projectId}/roles/${this.name}`,t)}internalDelete(){return this.httpClient.delete(`/projects/${this.projectId}/roles/${this.name}`)}get description(){return this.data.description}set description(t){this._data.description=t}get data(){return this._data}set data(t){this._data=t}get name(){return this.data.name}set name(t){this._data.name=t}get permissions(){return this.data.permissions}set permissions(t){this.data.permissions=t||{}}async checkout(){const t=await this.internalGet();return this.data=await t.json(),this}async update(t){const e=await this.internalPut(t);return this.data=await e.json(),this}delete(){return this.internalDelete().then((t=>t.json()))}save(){return this.update(this.data)}}class ${constructor(t,e,s){this.httpClient=s,this.projectId=e,this.data=t}internalGet(){return this.httpClient.get(`/projects/${this.projectId}/members/${this.id}`)}internalPut(t){return this.httpClient.put(`/projects/${this.projectId}/members/${this.id}`,t)}internalDelete(){return this.httpClient.delete(`/projects/${this.projectId}/members/${this.id}`)}get data(){return this._data}set data(t){this._data=t,this._data.user.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.user.userId}/avatar`,this._data.user.fullName=n(this._data.user),this._data.user.initials=a(this._data.user.fullName)}get id(){return this.data.id}get role(){return this.data.role}set role(t){this.data.role=t}get type(){return this.data.type}get user(){return this.data.user}async checkout(){const t=await this.internalGet();return this.data=await t.json(),this}async update(t){const e=await this.internalPut(t);return this.data=await e.json(),this}delete(){return this.internalDelete().then((t=>t.json()))}save(){return this.update(this.data)}}class j{constructor(t,e){this.httpClient=e,this.data=t}internalGet(t){return this.httpClient.get(`/projects/${this.id}${t}`)}internalPost(t,e){return this.httpClient.post(`/projects/${this.id}${t}`,e)}internalPut(t,e){return this.httpClient.put(`/projects/${this.id}${t}`,e)}internalDelete(t){return this.httpClient.delete(`/projects/${this.id}${t}`)}get authorization(){return this.data.authorization}get createdAt(){return this.data.createdAt}get customFields(){return this.data.customFields}set customFields(t){this.data.customFields=t}get data(){return this._data}set data(t){this._data=t,this._data.previewUrl=t.avatarUrl?`${this.httpClient.serverUrl}/projects/${this._data.id}/preview`:"",this._data.owner.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`,this._data.owner.fullName=n(this._data.owner),this._data.owner.initials=a(this._data.owner.fullName)}get description(){return this.data.description}set description(t){this.data.description=t}get endDate(){return this.data.endDate}set endDate(t){this.data.endDate=t instanceof Date?t.toISOString():t}get id(){return this.data.id}get memberCount(){return this.data.memberCount}get modelCount(){return this.data.modelCount}get name(){return this.data.name}set name(t){this.data.name=t}get owner(){return this.data.owner}get previewUrl(){return this._data.previewUrl}get public(){return this.data.public}set public(t){this.data.public=t}get startDate(){return this.data.startDate}set startDate(t){this.data.startDate=t instanceof Date?t.toISOString():t}get topicCount(){return this.data.topicCount}get updatedAt(){return this.data.updatedAt}async checkout(){const t=await this.internalGet("");return this.data=await t.json(),this}async update(t){const e=await this.internalPut("",t);return this.data=await e.json(),this}delete(){return this.internalDelete("").then((t=>t.text())).then((t=>{try{return JSON.parse(t)}catch{return{id:this.id}}}))}save(){return this.update(this.data)}async setPreview(t){const e=await(t?this.internalPost("/preview",t):this.internalDelete("/preview"));return this.data=await e.json(),this}getRoles(){return this.internalGet("/roles").then((t=>t.json())).then((t=>t.map((t=>new C(t,this.id,this.httpClient)))))}getRole(t){return this.internalGet(`/roles/${t}`).then((t=>t.json())).then((t=>new C(t,this.id,this.httpClient)))}createRole(t,e,s){return this.internalPost("/roles",{name:t,description:e,permissions:s||{}}).then((t=>t.json())).then((t=>new C(t,this.id,this.httpClient)))}deleteRole(t){return this.internalDelete(`/roles/${t}`).then((t=>t.json()))}getMembers(){return this.internalGet("/members").then((t=>t.json())).then((t=>t.map((t=>new $(t,this.id,this.httpClient)))))}getMember(t){return this.internalGet(`/members/${t}`).then((t=>t.json())).then((t=>new $(t,this.id,this.httpClient)))}addMember(t,e){return this.internalPost("/members",{userId:t,role:e}).then((t=>t.json())).then((t=>new $(t,this.id,this.httpClient)))}removeMember(t){return this.internalDelete(`/members/${t}`).then((t=>t.json()))}getFilesInformation(){return this.httpClient.get(`/bcf/3.0/projects/${this.data.id}/files_information`).then((t=>t.json())).then((t=>(t.forEach((t=>{const e=e=>(t.display_information.find((t=>t.field_display_name===e))||{}).field_value,s=`${this.httpClient.serverUrl}/files/${t.file.reference}/preview`,r=`${this.httpClient.serverUrl}/users/${e("Owner")}/avatar`,i=n(e("Owner First Name"),e("Owner Last Name"),e("Owner User Name")),o=a(i);t.display_information.push({field_display_name:"Preview URL",field_value:s}),t.display_information.push({field_display_name:"Owner Avatar URL",field_value:r}),t.display_information.push({field_display_name:"Owner Full Name",field_value:i}),t.display_information.push({field_display_name:"Owner Initials",field_value:o});const h=`${this.httpClient.serverUrl}/users/${e("Updated By")}/avatar`,l=n(e("Updated By First Name"),e("Updated By Last Name"),e("Updated By User Name")),d=a(l);t.display_information.push({field_display_name:"Updated By Avatar URL",field_value:h}),t.display_information.push({field_display_name:"Updated By Full Name",field_value:l}),t.display_information.push({field_display_name:"Updated By Initials",field_value:d});const u=e("Geometry Status"),p=e("GeometryGltf Status"),c="done"===u?"vsfx":"done"===p?"gltf":"";t.display_information.push({field_display_name:"Geometry Type",field_value:c})})),t)))}}class b{constructor(t,e){this.httpClient=e,this.data=t}get avatarUrl(){return this._data.avatarUrl}get canCreateProject(){return this.data.canCreateProject}get createAt(){return this.data.createAt}get customFields(){return this.data.customFields}set customFields(t){this._data.customFields=t}get data(){return this._data}set data(t){this._data=t,this._data.avatarUrl=t.avatarImage?`${this.httpClient.serverUrl}/users/${this._data.id}/avatar`:"",this._data.fullName=n(this._data),this._data.initials=a(this._data.fullName)}get email(){return this.data.email}get emailConfirmationId(){return this.data.emailConfirmationId}get firstName(){return this.data.firstName}set firstName(t){this._data.firstName=t}get fullName(){return this.data.fullName}get id(){return this.data.id}get initials(){return this.data.initials}get isEmailConfirmed(){return this.data.isEmailConfirmed}get lastModified(){return this.data.lastModified}get lastName(){return this.data.lastName}set lastName(t){this._data.lastName=t}get lastSignIn(){return this.data.lastSignIn}get projectsLimit(){return this.data.projectsLimit}get token(){return this.data.tokenInfo.token}get userName(){return this.data.userName}set userName(t){this._data.userName=t}async checkout(){if(this.id===this.httpClient.signInUserId){const t=await this.httpClient.get("/user"),e=await t.json();this.data={id:this.id,...e}}else{const t=await this.httpClient.get(`/users/${this.id}`),e=await t.json();this.data={id:e.id,...e.userBrief}}return this}async update(t){if(this.id===this.httpClient.signInUserId){const e=await this.httpClient.put("/user",t),s=await e.json();this.data={id:this.id,...s}}else{const e=await this.httpClient.put(`/users/${this.id}`,{userBrief:t}),s=await e.json();this.data={id:s.id,...s.userBrief}}return this}delete(){return this.httpClient.delete(`/users/${this.id}`).then((t=>t.json())).then((t=>(this.id===this.httpClient.signInUserId&&(this.httpClient.headers={},this.httpClient.signInUserId=""),t)))}save(){return this.update(this.data)}async setAvatar(t){if(t)if(this.id===this.httpClient.signInUserId){const e=await this.httpClient.post("/user/avatar",t),s=await e.json();this.data={id:this.id,...s}}else{const e=await this.httpClient.post(`/users/${this.id}/avatar`,t),s=await e.json();this.data={id:s.id,...s.userBrief}}else if(this.id===this.httpClient.signInUserId){const t=await this.httpClient.delete("/user/avatar"),e=await t.json();this.data={id:this.id,...e}}else{const t=await this.httpClient.delete(`/users/${this.id}/avatar`),e=await t.json();this.data={id:e.id,...e.userBrief}}return this}}t.Assembly=p,t.ClashTest=o,t.Client=class extends c{constructor(t={}){super(),this._serverUrl="",this._httpClient=new f(""),this._user=null,this.eventEmitter=this,this.configure(t)}get serverUrl(){return this._serverUrl}get options(){console.warn("Client.options has been deprecated since 25.3 and will be removed in a future release, use Viewer.options instead.");const t={showWCS:!0,cameraAnimation:!0,antialiasing:!0,groundShadow:!1,shadows:!1,cameraAxisXSpeed:4,cameraAxisYSpeed:1,ambientOcclusion:!1,enableStreamingMode:!0,enablePartialMode:!1,memoryLimit:3294967296,cuttingPlaneFillColor:{red:255,green:152,blue:0},edgesColor:{r:255,g:152,b:0},facesColor:{r:255,g:152,b:0},edgesVisibility:!0,edgesOverlap:!0,facesOverlap:!1,facesTransparancy:200,enableCustomHighlight:!0,sceneGraph:!1,edgeModel:!0,reverseZoomWheel:!1,enableZoomWheel:!0,enableGestures:!0};return{...t,data:t,defaults:()=>t,resetToDefaults:()=>{},saveToStorage:()=>{},loadFromStorage:()=>{}}}configure(t){return this._serverUrl=(t.serverUrl||"").replace(/\/+$/,""),this._httpClient=new f(this.serverUrl),this._user=null,this}version(){return this._httpClient.get("/version").then((t=>t.json())).then((t=>({...t,server:t.version,client:"25.4.2"})))}registerUser(t,e,s){return this._httpClient.post("/register",{email:t,password:e,userName:null!=s?s:(t+"").split("@").at(0)}).then((t=>t.json()))}resendConfirmationEmail(t,e){return this._httpClient.post("/register/email-confirmation",{email:t,password:e}).then((t=>t.json()))}confirmUserEmail(t){return this._httpClient.get(`/register/email-confirmation/${t}`).then((t=>t.json()))}async signInWithEmail(t,e){const s=btoa(unescape(encodeURIComponent(t+":"+e)));this._httpClient.headers={Authorization:"Basic "+s};const r=await this._httpClient.get("/token"),i=await r.json();return this.setCurrentUser(i)}async signInWithToken(t){this._httpClient.headers={Authorization:t};const e=await this._httpClient.get("/user"),s=await e.json();return this.setCurrentUser(s)}getIdentityProviders(){return this._httpClient.get("/identity").then((t=>t.json()))}setCurrentUser(t){return this._user=new b(t,this._httpClient),this._httpClient.headers={Authorization:t.tokenInfo.token},this._httpClient.signInUserId=this._user.id,this._user}clearCurrentUser(){this._user=null,this._httpClient.headers={},this._httpClient.signInUserId=""}getCurrentUser(){return this._user&&!this._httpClient.signInUserId&&(this._user=null),this._user}getUsers(){return this._httpClient.get("/users").then((t=>t.json())).then((t=>t.map((t=>({id:t.id,...t.userBrief}))))).then((t=>t.map((t=>new b(t,this._httpClient)))))}getUser(t){return t===this._httpClient.signInUserId?this._httpClient.get("/user").then((t=>t.json())).then((e=>({id:t,...e}))).then((t=>new b(t,this._httpClient))):this._httpClient.get(`/users/${t}`).then((t=>t.json())).then((t=>({id:t.id,...t.userBrief}))).then((t=>new b(t,this._httpClient)))}createUser(t,e,s={}){const{isAdmin:r,userName:i,...n}=s;return this._httpClient.post("/users",{isAdmin:r,userBrief:{...n,email:t,userName:null!=i?i:(t+"").split("@").at(0)},password:e}).then((t=>t.json())).then((t=>({id:t.id,...t.userBrief}))).then((t=>new b(t,this._httpClient)))}deleteUser(t){return this._httpClient.delete(`/users/${t}`).then((t=>t.json())).then((e=>(t===this._httpClient.signInUserId&&this.clearCurrentUser(),e)))}getFiles(t,e,s,r,i,n,a){const o=new URLSearchParams;t>0&&o.set("start",t.toString()),e>0&&o.set("limit",e.toString()),s&&o.set("name",s),r&&(Array.isArray(r)&&(r=r.join("|")),"string"==typeof r&&(r=r.toLowerCase()),r&&o.set("ext",r)),i&&(Array.isArray(i)&&(i=i.join("|")),o.set("id",i)),void 0!==n&&o.set("sortBy",n?"desc":"asc"),a&&o.set("sortField",a);let h=o.toString();return h&&(h="?"+h),this._httpClient.get(`/files${h}`).then((t=>t.json())).then((t=>({...t,result:t.result.map((t=>new _(t,this._httpClient)))})))}getFile(t){return this._httpClient.get(`/files/${t}`).then((t=>t.json())).then((t=>new _(t,this._httpClient)))}async uploadFile(t,e={geometry:!0,properties:!1,waitForDone:!1}){const s=await this._httpClient.uploadFile("/files",t,(s=>{var r;this.emitEvent({type:"uploadprogress",data:s,file:t}),null===(r=e.onProgress)||void 0===r||r.call(e,s,t)})).then((t=>JSON.parse(t.responseText))).then((t=>new _(t,this._httpClient))),r="string"==typeof e.geometry?e.geometry:"vsfx",i=[];return e.geometry&&i.push((await s.extractGeometry(r)).outputFormat),e.properties&&i.push((await s.extractProperties()).outputFormat),i.length>0&&(e.waitForDone?await s.waitForDone(i,!0,e):await s.checkout()),s}deleteFile(t){return this._httpClient.delete(`/files/${t}`).then((t=>t.json()))}downloadFile(t,e,s){return this._httpClient.downloadFile(`/files/${t}/downloads`,e,s).then((t=>t.arrayBuffer()))}getJobs(t,e,s,r,i){const n=new URLSearchParams;s>0&&n.set("start",s.toString()),e>0&&n.set("limit",e.toString()),t&&(Array.isArray(t)&&(t=t.join("|")),"string"==typeof t&&(t=t.trim().toLowerCase()),t&&n.set("status",t)),void 0!==r&&n.set("sortBy",r?"desc":"asc"),i&&n.set("sortField",i);let a=n.toString();return a&&(a="?"+a),this._httpClient.get(`/jobs${a}`).then((t=>t.json())).then((t=>({...t,result:t.result.map((t=>new y(t,this._httpClient)))})))}getJob(t){return this._httpClient.get(`/jobs/${t}`).then((t=>t.json())).then((t=>new y(t,this._httpClient)))}createJob(t,e,s){return this._httpClient.post("/jobs",{fileId:t,outputFormat:e,parameters:i(s)}).then((t=>t.json())).then((t=>new y(t,this._httpClient)))}deleteJob(t){return this._httpClient.delete(`/jobs/${t}`).then((t=>t.json()))}getAssemblies(t,e,s,r,i,n){const a=new URLSearchParams;t>0&&a.set("start",t.toString()),e>0&&a.set("limit",e.toString()),s&&a.set("name",s),r&&(Array.isArray(r)&&(r=r.join("|")),"string"==typeof r&&(r=r.trim()),r&&a.set("id",r)),void 0!==i&&a.set("sortBy",i?"desc":"asc"),n&&a.set("sortField",n);let o=a.toString();return o&&(o="?"+o),this._httpClient.get(`/assemblies${o}`).then((t=>t.json())).then((t=>({...t,result:t.result.map((t=>new p(t,this._httpClient)))})))}getAssembly(t){return this._httpClient.get(`/assemblies/${t}`).then((t=>t.json())).then((t=>new p(t,this._httpClient)))}createAssembly(t,e,s){const{waitForDone:r}=null!=s?s:{};return this._httpClient.post("/assemblies",{name:e,files:t}).then((t=>t.json())).then((t=>new p(t,this._httpClient))).then((t=>r?t.waitForDone(s):t))}deleteAssembly(t){return this._httpClient.delete(`/assemblies/${t}`).then((t=>t.json()))}getProjects(t,e,s,r,i){const n=new URLSearchParams;t>0&&n.set("start",t.toString()),e>0&&n.set("limit",e.toString()),s&&n.set("name",s),r&&(Array.isArray(r)&&(r=r.join("|")),"string"==typeof r&&(r=r.trim()),r&&n.set("id",r)),void 0!==i&&n.set("sortBy",i?"desc":"asc");let a=n.toString();return a&&(a="?"+a),this._httpClient.get(`/projects${a}`).then((t=>t.json())).then((i=>{if(Array.isArray(i)){let n=i;if(r&&(n=n.filter((t=>r.includes(t.id)))),s&&(n=n.filter((t=>t.name.includes(s)))),e>0){const s=t>0?t:0;n=n.slice(s,s+e)}return{allSize:i.length,start:t,limit:e,result:n,size:n.length}}return i})).then((t=>({...t,result:t.result.map((t=>new j(t,this._httpClient)))})))}getProject(t){return this._httpClient.get(`/projects/${t}`).then((t=>t.json())).then((t=>new j(t,this._httpClient)))}createProject(t,e,s,r,i){return this._httpClient.post("/projects",{name:t,description:e,startDate:s instanceof Date?s.toISOString():s,endDate:r instanceof Date?r.toISOString():r,avatarUrl:i}).then((t=>t.json())).then((t=>new j(t,this._httpClient)))}deleteProject(t){return this._httpClient.delete(`/projects/${t}`).then((t=>t.text())).then((e=>{try{return JSON.parse(e)}catch{return{id:t}}}))}},t.File=_,t.Job=y,t.Member=$,t.Model=e,t.Permission=v,t.Project=j,t.Role=C,t.User=b,t.parseArgs=i,t.userFullName=n,t.userInitials=a,t.version="25.4.2",t.waitFor=r,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).ODA=t.ODA||{},t.ODA.Api=t.ODA.Api||{}))}(this,(function(t){"use strict";class e{constructor(t,e){this.path=`${e.path}/downloads`,this.httpClient=e.httpClient,this._file=e,this._data=t}get assembly(){return this._file}get data(){return this._data}set data(t){this._data=t}get database(){return this.data.database}get default(){return this.data.default}get file(){return this._file}get fileId(){return this.data.fileId}get geometry(){return this.data.geometry}get id(){return this.data.id}get name(){return this.data.name}get type(){return this.file.type}get version(){return this.data.version}getModels(){return Promise.resolve([this])}getModelTransformMatrix(t){return this.file.getModelTransformMatrix(t)}setModelTransformMatrix(t,e){return this.file.setModelTransformMatrix(t,e).then((()=>this))}getViewpoints(){return this._file.getViewpoints().then((t=>t.filter((({custom_fields:t={}})=>t.modelId===this.id||t.modelName===this.name))))}saveViewpoint(t){return this._file.saveViewpoint({...t,custom_fields:{...t.custom_fields,modelId:this.id,modelName:this.name}})}deleteViewpoint(t){return this._file.deleteViewpoint(t)}getSnapshot(t){return this._file.getSnapshot(t)}getSnapshotData(t,e){return this._file.getSnapshotData(t,e)}downloadResource(t,e,s){return this._file.downloadResource(t,e,s)}downloadResourceRange(t,e,s,i,r){return this._file.downloadResourceRange(t,e,s,i,r)}partialDownloadResource(t,e,s){return console.warn("Model.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use Model.downloadResource() instead."),this.downloadResource(t,e,s)}async downloadFileRange(t,e,s,i,r){if(!e)return;let n=[];if(e.length)n=e.map((t=>({begin:Number(t.begin),end:Number(t.end),requestId:t.reqId})));else for(let s=0;s<e.size();s++){const i=e.get(s);n.push({begin:Number(i.begin),end:Number(i.end),requestId:t}),i.delete()}await this.downloadResourceRange(s,t,n,i,r)}getReferences(t){return this._file.getReferences(t)}}function s(t,e){return new Promise((s=>{let i=0;const r=()=>{clearTimeout(i),s(!0)};i=window.setTimeout((()=>{e.removeEventListener("abort",r),s(!1)}),t),e.addEventListener("abort",r,{once:!0})}))}async function i(t,e={}){var i,r,n;const a=e.timeout||6e5,o=e.interval||3e3,h=null!==(i=e.signal)&&void 0!==i?i:(new AbortController).signal,l=null!==(r=e.abortError)&&void 0!==r?r:new DOMException("Aborted","AbortError"),d=null!==(n=e.timeoutError)&&void 0!==n?n:new DOMException("Timeout","TimeoutError"),u=performance.now()+a;let p=a/o;do{if(await t(e))return Promise.resolve(e.result);if(await s(o,h)||h.aborted)return Promise.reject(l)}while(performance.now()<u&&--p>0);return Promise.reject(d)}function r(t){if("string"==typeof t){const e=t.indexOf("--");-1!==e&&(t=t.slice(e));const s=t.split("--").map((t=>t.split("=").map((t=>t.split(" "))).flat())).filter((t=>t[0])).map((t=>t.concat([""])));return Object.fromEntries(s)}return t||{}}function n(t,e="",s=""){var i;return t&&"string"!=typeof t?n(null!==(i=t.firstName)&&void 0!==i?i:t.name,t.lastName,t.userName):`${null!=t?t:""} ${null!=e?e:""}`.trim()||s}function a(t=""){const e=t.split(" ").filter((t=>t));return e.reduce(((t,s,i)=>(0!==i&&i!==e.length-1||(t+=s.charAt(0)),t)),"").toUpperCase()}class o{constructor(t,e,s){this.httpClient=s,this.basePath=e,this.data=t}internalGet(t){return this.httpClient.get(`${this.basePath}/clashes/${this.id}${t}`)}internalPut(t,e){return this.httpClient.put(`${this.basePath}/clashes/${this.id}${t}`,e)}internalDelete(t){return this.httpClient.delete(`${this.basePath}/clashes/${this.id}${t}`)}get clearance(){return this.data.clearance}get createdAt(){return this.data.createdAt}get data(){return this._data}set data(t){this._data=t,this._data.owner.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`,this._data.owner.fullName=n(this._data.owner),this._data.owner.initials=a(this._data.owner.fullName)}get id(){return this.data.id}get lastModifiedAt(){return this.data.lastModifiedAt}get name(){return this.data.name}set name(t){this.data.name=t}get owner(){return this.data.owner}get selectionSetA(){return this.data.selectionSetA}get selectionTypeA(){return this.data.selectionTypeA}get selectionSetB(){return this.data.selectionSetB}get selectionTypeB(){return this.data.selectionTypeB}get status(){return this.data.status}get tolerance(){return this.data.tolerance}async checkout(){const t=await this.internalGet("");return this.data=await t.json(),this}async update(t){const e=await this.internalPut("",t);return this.data=await e.json(),this}delete(){return this.internalDelete("").then((t=>t.json()))}save(){return this.update(this.data)}waitForDone(t){return i((()=>this.checkout().then((t=>["done","failed"].includes(t.status)))),t).then((()=>this))}getReport(){return this.internalGet("/report").then((t=>t.json()))}}const h={100:"Continue",101:"Switching Protocols",102:"Processing",103:"Early Hints",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Time-out",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Too Early",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"};function l(t){return h[t]||`Error ${t}`}function d(t,e="400"){try{return JSON.parse(t).description}catch{return e}}class u extends Error{constructor(t,e){super(e||l(t)),this.status=t,this.statusText=l(t)}}class p{constructor(t,e){this.path=`/assemblies/${t.id}`,this.httpClient=e,this.data=t}appendVersionParam(t){if(void 0===this._useVersion)return t;const e=t.includes("?")?"&":"?";return`${t}${e}version=${this._useVersion}`}internalGet(t,e){return t=this.appendVersionParam(t),this.httpClient.get(`${this.path}${t}`,e)}internalPost(t,e){return t=this.appendVersionParam(t),this.httpClient.post(`${this.path}${t}`,e)}internalPut(t,e){return t=this.appendVersionParam(t),this.httpClient.put(`${this.path}${t}`,e)}internalDelete(t){return t=this.appendVersionParam(t),this.httpClient.delete(`${this.path}${t}`)}get activeVersion(){return this.data.activeVersion}get associatedFiles(){return this.data.associatedFiles}get created(){return this.data.created}get data(){return this._data}set data(t){var e,s;this._data=t,this._data.owner.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`,this._data.owner.fullName=n(this._data.owner),this._data.owner.initials=a(this._data.owner.fullName),null!==(e=(s=this._data).associatedFiles)&&void 0!==e||(s.associatedFiles=[]),this._data.associatedFiles.forEach((t=>t.link=`${this.httpClient.serverUrl}/files/${t.fileId}`))}get files(){return this.data.files}get geometryType(){return"done"===this.status?"vsfx":""}get id(){return this.data.id}get name(){return this.data.name}set name(t){this.data.name=t}get originalAssemblyId(){return this.data.originalAssemblyId}get owner(){return this.data.owner}get previewUrl(){return this.data.previewUrl||""}get relatedJobs(){return this.data.relatedJobs}get status(){return this.data.status}get type(){return"assembly"}get version(){return this.data.version}get versions(){return this.data.versions}async checkout(){const t=await this.internalGet("");return this.data=await t.json(),this}async update(t){const e=await this.internalPut("",t);return this.data=await e.json(),this}delete(){return this.internalDelete("").then((t=>t.json()))}save(){return this.update(this.data)}setPreview(t){return console.warn("Assembly does not support preview"),Promise.resolve(this)}getModels(){return this.internalGet("/geometry").then((t=>t.json())).then((t=>t.map((t=>new e(t,this)))))}getModelTransformMatrix(t){return this.data.transform[t]}setModelTransformMatrix(t,e){const s={...this.data.transform};return s[t]=e,this.update({transform:s})}getProperties(t){const e=void 0!==t?`/properties?handles=${t}`:"/properties";return this.internalGet(e).then((t=>t.json()))}searchProperties(t){return this.internalPost("/properties/search",t).then((t=>t.json()))}getCdaTree(){return this.internalGet("/properties/tree").then((t=>t.json()))}getViewpoints(){return this.internalGet("/viewpoints").then((t=>t.json())).then((t=>t.result))}saveViewpoint(t){return this.internalPost("/viewpoints",t).then((t=>t.json()))}deleteViewpoint(t){return this.internalDelete(`/viewpoints/${t}`).then((t=>t.json()))}getSnapshot(t){return this.internalGet(`/viewpoints/${t}/snapshot`).then((t=>t.text()))}getSnapshotData(t,e){return this.internalGet(`/viewpoints/${t}/bitmaps/${e}`).then((t=>t.text()))}downloadResource(t,e,s){const i=this.appendVersionParam(`/downloads/${t}`);return this.httpClient.downloadFile(`${this.path}${i}`,e,s).then((t=>t.arrayBuffer()))}downloadResourceRange(t,e,s,i,r){const n=this.appendVersionParam(`/downloads/${t}?requestId=${e}`);return this.httpClient.downloadFileRange(`${this.path}${n}`,e,s,i,r).then((t=>t.arrayBuffer()))}partialDownloadResource(t,e,s){return console.warn("Assembly.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use Assembly.downloadResource() instead."),this.downloadResource(t,e,s)}async downloadFileRange(t,e,s,i,r){await this.downloadResourceRange(s,t,e,i,r)}getReferences(t){return Promise.resolve({fileId:"",references:[]})}waitForDone(t){return i((()=>this.checkout().then((e=>{var s;const i=["done","failed"].includes(e.status);return(null===(s=null==t?void 0:t.onCheckout)||void 0===s?void 0:s.call(t,e,i))||i}))),t).then((()=>this))}getClashTests(t,e,s,i,r,n){const a=new URLSearchParams;t>0&&a.set("start",t.toString()),e>0&&a.set("limit",e.toString()),s&&a.set("name",s),i&&(Array.isArray(i)&&(i=i.join("|")),"string"==typeof i&&(i=i.trim()),i&&a.set("id",i)),void 0!==r&&a.set("sortBy",r?"desc":"asc"),n&&a.set("sortField",n);let h=a.toString();return h&&(h="?"+h),this.internalGet(`/clashes${h}`).then((t=>t.json())).then((t=>({...t,result:t.result.map((t=>new o(t,this.path,this.httpClient)))})))}getClashTest(t){return this.internalGet(`/clashes/${t}`).then((t=>t.json())).then((t=>new o(t,this.path,this.httpClient)))}createClashTest(t,e,s,i,r,n){const{tolerance:a,clearance:h,waitForDone:l}=null!=n?n:{};return Array.isArray(i)||(i=[i]),Array.isArray(r)||(r=[r]),this.internalPost("/clashes",{name:t,selectionTypeA:e,selectionTypeB:s,selectionSetA:i,selectionSetB:r,tolerance:a,clearance:h}).then((t=>t.json())).then((t=>new o(t,this.path,this.httpClient))).then((t=>l?t.waitForDone(n):t))}deleteClashTest(t){return this.internalDelete(`/clashes/${t}`).then((t=>t.json()))}updateVersion(t,e={waitForDone:!1}){return Promise.reject(new Error("Assembly version support will be implemeted in a future release"))}getVersions(){return Promise.resolve(void 0)}getVersion(t){return Promise.reject(new u(404))}deleteVersion(t){return Promise.reject(new u(404))}setActiveVersion(t){return this.update({activeVersion:t})}useVersion(t){return this._useVersion=void 0,this}}class c{constructor(){this._listeners={}}addEventListener(t,e){return void 0===this._listeners[t]&&(this._listeners[t]=[]),this._listeners[t].push(e),this}removeEventListener(t,e){if(void 0===this._listeners[t])return this;const s=this._listeners[t].filter((t=>t!==e));return 0!==s.length?this._listeners[t]=s:delete this._listeners[t],this}removeAllListeners(t){return t?delete this._listeners[t]:this._listeners={},this}emitEvent(t){if(void 0===this._listeners[t.type])return!1;return this._listeners[t.type].slice().forEach((e=>e.call(this,t))),!0}on(t,e){return this.addEventListener(t,e)}off(t,e){return this.removeEventListener(t,e)}emit(t,...e){return"string"==typeof t?this.emitEvent({type:t,args:e}):"object"==typeof t&&this.emitEvent(t)}}function m(t){if(!t.ok)switch(t.status){case 400:return t.text().then((t=>(console.error(t),Promise.reject(new u(400,d(t))))));case 500:return t.text().then((t=>(console.error(d(t,t)),Promise.reject(new u(500)))));default:return Promise.reject(new u(t.status))}return Promise.resolve(t)}function g(t,e={method:"GET"}){const s={...e.headers};let i;delete s["Content-Type"],"POST"!==e.method&&"PUT"!==e.method||(e.body instanceof FormData?i=e.body:e.body instanceof Blob?(i=new FormData,i.append("file",e.body)):e.body instanceof ArrayBuffer?(i=new FormData,i.append("file",new Blob([e.body]))):"object"==typeof e.body?(i=JSON.stringify(e.body),s["Content-Type"]="application/json"):"string"==typeof e.body&&(i=e.body,s["Content-Type"]="text/plain"));const r={method:e.method,headers:s};return i&&(r.body=i),e.signal&&(r.signal=e.signal),fetch(t,r).then(m)}function w(t,e={method:"GET"}){return new Promise(((s,i)=>{const r=new XMLHttpRequest;r.open(e.method,t,!0);for(const t in e.headers)r.setRequestHeader(t,e.headers[t]);function n(t){return t.lengthComputable?t.loaded/t.total:1}r.upload.onprogress=t=>e.uploadProgress&&e.uploadProgress(n(t)),r.onprogress=t=>e.downloadProgress&&e.downloadProgress(n(t)),r.onloadend=t=>function(t){if(0===t.status)return Promise.reject(new u(0,"Network error"));if(t.status<200||t.status>299)switch(t.status){case 400:return console.error(t.responseText),Promise.reject(new u(400,d(t.responseText)));case 500:return console.error(d(t.responseText,t.responseText)),Promise.reject(new u(500));default:return Promise.reject(new u(t.status))}return Promise.resolve(t)}(t.target).then(s,i),r.send(e.body)}))}class f{constructor(t){this.headers={},this.signInUserId="",this.serverUrl=t}get(t,e){return g(`${this.serverUrl}${t}`,{method:"GET",headers:this.headers,signal:e})}post(t,e){return g(`${this.serverUrl}${t}`,{method:"POST",headers:this.headers,body:e})}put(t,e){return g(`${this.serverUrl}${t}`,{method:"PUT",headers:this.headers,body:e})}delete(t){return g(`${this.serverUrl}${t}`,{method:"DELETE",headers:this.headers})}uploadFile(t,e,s){const i=new FormData;return i.append("file",e),w(`${this.serverUrl}${t}`,{method:"POST",headers:this.headers,body:i,uploadProgress:s})}async downloadFile(t,e,s){const i=await this.get(t,s),r=i.headers.get("Content-Length"),n=parseInt(r||"",10)||1;return new Response(new ReadableStream({async start(t){const s=i.body.getReader();let r=0;for(;;){const{done:i,value:a}=await s.read();if(i)break;t.enqueue(a),r+=a.length,e&&e(r/n,a)}t.close()}}))}async downloadFileRange(t,e,s,i,r){const n={...this.headers};n.Range="bytes="+s.map((t=>`${t.begin}-${t.end}`)).join(",");const a=await g(`${this.serverUrl}${t}`,{method:"GET",headers:n,signal:r}),o=a.headers.get("content-length"),h=parseInt(o||"",10)||1;return new Response(new ReadableStream({async start(t){const e=a.body.getReader();let r=0,n=0,o=0;for(;;){const{done:a,value:l}=await e.read();if(a)break;t.enqueue(l),r+=l.length;let d=l.length,u=0;for(;d>0;){const t=s[n],e=t.end-t.begin-o;if(d<e){const e=l.subarray(u,u+d);i&&i(r/h,e,t.requestId),o+=d,d=0}else{const s=l.subarray(u,u+e);i&&i(r/h,s,t.requestId),u+=e,d-=e,n++,o=0}}}t.close()}}))}}class v{constructor(t,e,s){this.httpClient=s,this.fileId=e,this.data=t}internalGet(){return this.httpClient.get(`/files/${this.fileId}/permissions/${this.id}`)}internalPut(t){return this.httpClient.put(`/files/${this.fileId}/permissions/${this.id}`,t)}internalDelete(){return this.httpClient.delete(`/files/${this.fileId}/permissions/${this.id}`)}get actions(){return this.data.actions}set actions(t){this._data.actions=t}get data(){return this._data}set data(t){this._data=t}get id(){return this.data.id}get grantedTo(){return this.data.grantedTo}set grantedTo(t){this.data.grantedTo=t}get public(){return this.data.public}set public(t){this.data.public=t}async checkout(){const t=await this.internalGet();return this.data=await t.json(),this}async update(t){const e=await this.internalPut(t);return this.data=await e.json(),this}delete(){return this.internalDelete().then((t=>t.json()))}save(){return this.update(this.data)}}class y{constructor(t,e){this.httpClient=e,this.data=t}internalGet(){return this.httpClient.get(`/jobs/${this.data.id}`)}internalPut(t){return this.httpClient.put(`/jobs/${this.data.id}`,t)}internalDelete(){return this.httpClient.delete(`/jobs/${this.data.id}`)}get assemblyId(){return this.data.assemblyId}get authorId(){return this.data.authorId}get createdAt(){return this.data.createdAt}get data(){return this._data}set data(t){this._data=t}get done(){return"done"===this.data.status||"failed"===this.data.status}get fileId(){return this.data.fileId}get id(){return this.data.id}get lastUpdate(){return this.data.lastUpdate}get outputFormat(){return this.data.outputFormat}get parameters(){return this.data.parameters}get status(){return this.data.status}get statusMessage(){return this.data.statusMessage}get startedAt(){return this.data.startedAt}async checkout(){const t=await this.internalGet();return this.data=await t.json(),this}async update(t){const e=await this.internalPut(t);return this.data=await e.json(),this}delete(){return this.internalDelete().then((t=>t.json()))}waitForDone(t){return i((()=>this.checkout().then((e=>{var s;const i=["done","failed"].includes(e.status);return(null===(s=null==t?void 0:t.onCheckout)||void 0===s?void 0:s.call(t,e,i))||i}))),t).then((()=>this))}}class C{constructor(t,e){this.path=`/files/${t.id}`,this.httpClient=e,this.data=t}appendVersionParam(t){if(void 0===this._useVersion)return t;const e=t.includes("?")?"&":"?";return`${t}${e}version=${this._useVersion}`}internalGet(t,e){return t=this.appendVersionParam(t),this.httpClient.get(`${this.path}${t}`,e)}internalPost(t,e){return t=this.appendVersionParam(t),this.httpClient.post(`${this.path}${t}`,e)}internalPut(t,e){return t=this.appendVersionParam(t),this.httpClient.put(`${this.path}${t}`,e)}internalDelete(t){return t=this.appendVersionParam(t),this.httpClient.delete(`${this.path}${t}`)}get activeVersion(){return this.data.activeVersion}get created(){return this.data.created}get customFields(){return this.data.customFields}set customFields(t){this.data.customFields=t}get data(){return this._data}set data(t){var e,s,i,r,o,h,l,d,u,p,c,m,g,w,f,v,y,C,_;this._data=t,this._data.previewUrl=t.preview?`${this.httpClient.serverUrl}${this.path}/preview`:"","string"==typeof this._data.owner&&(this._data.owner={userId:this._data.owner}),null!==(e=(m=this._data).owner)&&void 0!==e||(m.owner={}),this._data.owner.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`,this._data.owner.fullName=n(this._data.owner),this._data.owner.initials=a(this._data.owner.fullName),null!==(s=(g=this._data).status)&&void 0!==s||(g.status={}),null!==(i=(w=this._data.status).geometry)&&void 0!==i||(w.geometry={state:null!==(r=this._data.geometryStatus)&&void 0!==r?r:"none"}),null!==(o=(f=this._data.status).properties)&&void 0!==o||(f.properties={state:null!==(h=this._data.propertiesStatus)&&void 0!==h?h:"none"}),null!==(l=(v=this._data.status).validation)&&void 0!==l||(v.validation={state:null!==(d=this._data.validationStatus)&&void 0!==d?d:"none"}),null!==(u=(y=this._data).updatedBy)&&void 0!==u||(y.updatedBy={}),this._data.updatedBy.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.updatedBy.userId}/avatar`,this._data.updatedBy.fullName=n(this._data.updatedBy),this._data.updatedBy.initials=a(this._data.updatedBy.fullName),null!==(p=(C=this._data).versions)&&void 0!==p||(C.versions=[{...t}]),null!==(c=(_=this._data.status).geometryGltf)&&void 0!==c||(_.geometryGltf={state:"none"})}get exports(){return this.data.exports}get geometryType(){return"done"===this.status.geometryGltf.state?"gltf":"done"===this.status.geometry.state?"vsfx":""}get id(){return this.data.id}get name(){return this.data.name}set name(t){this.data.name=t}get originalFileId(){return this.data.originalFileId}get owner(){return this.data.owner}get previewUrl(){return this.data.previewUrl}get size(){return this.data.size}get sizeTotal(){return this.data.sizeTotal}get status(){return this.data.status}get type(){return this.data.type}get updatedAt(){return this.data.updatedAt}get updatedBy(){return this.data.updatedBy}get version(){return this.data.version}get versions(){return this.data.versions}async checkout(){const t=await this.internalGet("");return this.data=await t.json(),this}async update(t){const e=await this.internalPut("",t);return this.data=await e.json(),this}delete(){return this.internalDelete("").then((t=>t.json()))}save(){return this.update(this.data)}async setPreview(t){const e=await(t?this.internalPost("/preview",t):this.internalDelete("/preview"));return this.data=await e.json(),this}getModels(){return this.internalGet("/geometry").then((t=>t.json())).then((t=>t.map((t=>new e(t,this)))))}getModelTransformMatrix(t){}setModelTransformMatrix(t,e){return console.warn("File does not support model transformation"),Promise.resolve(this)}getProperties(t){const e=void 0!==t?`/properties?handles=${t}`:"/properties";return this.internalGet(e).then((t=>t.json()))}searchProperties(t){return this.internalPost("/properties/search",t).then((t=>t.json()))}getCdaTree(){return this.internalGet("/properties/tree").then((t=>t.json()))}getViewpoints(){return this.internalGet("/viewpoints").then((t=>t.json())).then((t=>t.result))}saveViewpoint(t){return this.internalPost("/viewpoints",t).then((t=>t.json()))}deleteViewpoint(t){return this.internalDelete(`/viewpoints/${t}`).then((t=>t.json()))}getSnapshot(t){return this.internalGet(`/viewpoints/${t}/snapshot`).then((t=>t.text()))}getSnapshotData(t,e){return this.internalGet(`/viewpoints/${t}/bitmaps/${e}`).then((t=>t.text()))}download(t,e){const s=this.appendVersionParam("/downloads");return this.httpClient.downloadFile(`${this.path}${s}`,t,e).then((t=>t.arrayBuffer()))}downloadResource(t,e,s){const i=this.appendVersionParam(`/downloads/${t}`);return this.httpClient.downloadFile(`${this.path}${i}`,e,s).then((t=>t.arrayBuffer()))}downloadResourceRange(t,e,s,i,r){const n=this.appendVersionParam(`/downloads/${t}?requestId=${e}`);return this.httpClient.downloadFileRange(`${this.path}${n}`,e,s,i,r).then((t=>t.arrayBuffer()))}partialDownloadResource(t,e,s){return console.warn("File.partialDownloadResource() has been deprecated since 25.3 and will be removed in a future release, use File.downloadResource() instead."),this.downloadResource(t,e,s)}async downloadFileRange(t,e,s,i,r){await this.downloadResourceRange(s,t,e,i,r)}getReferences(t){return this.internalGet("/references",t).then((t=>t.json()))}setReferences(t){return this.internalPut("/references",t).then((t=>t.json()))}createJob(t,e){const s=this.appendVersionParam("/jobs");return this.httpClient.post(s,{fileId:this.id,outputFormat:t,parameters:r(e)}).then((t=>t.json())).then((t=>new y(t,this.httpClient)))}extractGeometry(t,e){return this.createJob("gltf"===t?"geometryGltf":"geometry",e)}extractProperties(t){return this.createJob("properties",t)}validate(t){return this.createJob("validation",t)}waitForDone(t,e,s){const r=Array.isArray(t)?t:[t];void 0===e&&(e=!0);return i((()=>this.checkout().then((t=>{var i;const n=r.filter((e=>{const s=t.status[e]||{};return["none","done","failed"].includes(s.state||"none")})),a=e?n.length===r.length:n.length>0;return(null===(i=null==s?void 0:s.onCheckout)||void 0===i?void 0:i.call(s,t,a))||a}))),s).then((()=>this))}getPermissions(){return this.internalGet("/permissions").then((t=>t.json())).then((t=>t.map((t=>new v(t,this.id,this.httpClient)))))}getPermission(t){return this.internalGet(`/permissions/${t}`).then((t=>t.json())).then((t=>new v(t,this.id,this.httpClient)))}createPermission(t,e,s){return this.internalPost("/permissions",{actions:Array.isArray(t)?t:[t],grantedTo:e,public:s}).then((t=>t.json())).then((t=>new v(t,this.id,this.httpClient)))}deletePermission(t){return this.internalDelete(`/permissions/${t}`).then((t=>t.json()))}async uploadVersion(t,e={waitForDone:!1}){const s=await this.httpClient.uploadFile(`${this.path}/versions`,t,(s=>{var i;return null===(i=e.onProgress)||void 0===i?void 0:i.call(e,s,t)})).then((t=>JSON.parse(t.responseText))).then((t=>new C(t,this.httpClient)));let i="";"none"!==this.versions[0].status.geometryGltf.state&&(i="gltf"),"none"!==this.versions[0].status.geometry.state&&(i="vsfx"),void 0===(e={...e}).geometry&&(e.geometry=""!==i),void 0===e.properties&&(e.properties="none"!==this.versions[0].status.properties.state);const r=[];return e.geometry&&r.push((await s.extractGeometry(i)).outputFormat),e.properties&&r.push((await s.extractProperties()).outputFormat),r.length>0&&(e.waitForDone?await s.waitForDone(r,!0,e):await s.checkout()),await this.checkout(),s}getVersions(){return this.internalGet("/versions").then((t=>t.json())).then((t=>t.map((t=>new C(t,this.httpClient))))).then((t=>t.map((t=>t.id==t.originalFileId?t.useVersion(0):t))))}getVersion(t){return this.internalGet(`/versions/${t}`).then((t=>t.json())).then((t=>new C(t,this.httpClient))).then((t=>t.id==t.originalFileId?t.useVersion(0):t))}async deleteVersion(t){const e=await this.internalDelete(`/versions/${t}`),s=await e.json();return await this.checkout(),s}setActiveVersion(t){return this.update({activeVersion:t})}useVersion(t){return this._useVersion=t,this}}class _{constructor(t,e,s){this.httpClient=s,this.projectId=e,this.data=t}internalGet(){return this.httpClient.get(`/projects/${this.projectId}/roles/${this.name}`)}internalPut(t){return this.httpClient.put(`/projects/${this.projectId}/roles/${this.name}`,t)}internalDelete(){return this.httpClient.delete(`/projects/${this.projectId}/roles/${this.name}`)}get description(){return this.data.description}set description(t){this._data.description=t}get data(){return this._data}set data(t){this._data=t}get name(){return this.data.name}set name(t){this._data.name=t}get permissions(){return this.data.permissions}set permissions(t){this.data.permissions=t||{}}async checkout(){const t=await this.internalGet();return this.data=await t.json(),this}async update(t){const e=await this.internalPut(t);return this.data=await e.json(),this}delete(){return this.internalDelete().then((t=>t.json()))}save(){return this.update(this.data)}}class ${constructor(t,e,s){this.httpClient=s,this.projectId=e,this.data=t}internalGet(){return this.httpClient.get(`/projects/${this.projectId}/members/${this.id}`)}internalPut(t){return this.httpClient.put(`/projects/${this.projectId}/members/${this.id}`,t)}internalDelete(){return this.httpClient.delete(`/projects/${this.projectId}/members/${this.id}`)}get data(){return this._data}set data(t){this._data=t,this._data.user.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.user.userId}/avatar`,this._data.user.fullName=n(this._data.user),this._data.user.initials=a(this._data.user.fullName)}get id(){return this.data.id}get role(){return this.data.role}set role(t){this.data.role=t}get type(){return this.data.type}get user(){return this.data.user}async checkout(){const t=await this.internalGet();return this.data=await t.json(),this}async update(t){const e=await this.internalPut(t);return this.data=await e.json(),this}delete(){return this.internalDelete().then((t=>t.json()))}save(){return this.update(this.data)}}class j{constructor(t,e){this.httpClient=e,this.data=t}internalGet(t){return this.httpClient.get(`/projects/${this.id}${t}`)}internalPost(t,e){return this.httpClient.post(`/projects/${this.id}${t}`,e)}internalPut(t,e){return this.httpClient.put(`/projects/${this.id}${t}`,e)}internalDelete(t){return this.httpClient.delete(`/projects/${this.id}${t}`)}get authorization(){return this.data.authorization}get createdAt(){return this.data.createdAt}get customFields(){return this.data.customFields}set customFields(t){this.data.customFields=t}get data(){return this._data}set data(t){this._data=t,this._data.previewUrl=t.avatarUrl?`${this.httpClient.serverUrl}/projects/${this._data.id}/preview`:"",this._data.owner.avatarUrl=`${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`,this._data.owner.fullName=n(this._data.owner),this._data.owner.initials=a(this._data.owner.fullName)}get description(){return this.data.description}set description(t){this.data.description=t}get endDate(){return this.data.endDate}set endDate(t){this.data.endDate=t instanceof Date?t.toISOString():t}get id(){return this.data.id}get memberCount(){return this.data.memberCount}get modelCount(){return this.data.modelCount}get name(){return this.data.name}set name(t){this.data.name=t}get owner(){return this.data.owner}get previewUrl(){return this._data.previewUrl}get public(){return this.data.public}set public(t){this.data.public=t}get startDate(){return this.data.startDate}set startDate(t){this.data.startDate=t instanceof Date?t.toISOString():t}get topicCount(){return this.data.topicCount}get updatedAt(){return this.data.updatedAt}async checkout(){const t=await this.internalGet("");return this.data=await t.json(),this}async update(t){const e=await this.internalPut("",t);return this.data=await e.json(),this}delete(){return this.internalDelete("").then((t=>t.text())).then((t=>{try{return JSON.parse(t)}catch{return{id:this.id}}}))}save(){return this.update(this.data)}async setPreview(t){const e=await(t?this.internalPost("/preview",t):this.internalDelete("/preview"));return this.data=await e.json(),this}getRoles(){return this.internalGet("/roles").then((t=>t.json())).then((t=>t.map((t=>new _(t,this.id,this.httpClient)))))}getRole(t){return this.internalGet(`/roles/${t}`).then((t=>t.json())).then((t=>new _(t,this.id,this.httpClient)))}createRole(t,e,s){return this.internalPost("/roles",{name:t,description:e,permissions:s||{}}).then((t=>t.json())).then((t=>new _(t,this.id,this.httpClient)))}deleteRole(t){return this.internalDelete(`/roles/${t}`).then((t=>t.json()))}getMembers(){return this.internalGet("/members").then((t=>t.json())).then((t=>t.map((t=>new $(t,this.id,this.httpClient)))))}getMember(t){return this.internalGet(`/members/${t}`).then((t=>t.json())).then((t=>new $(t,this.id,this.httpClient)))}addMember(t,e){return this.internalPost("/members",{userId:t,role:e}).then((t=>t.json())).then((t=>new $(t,this.id,this.httpClient)))}removeMember(t){return this.internalDelete(`/members/${t}`).then((t=>t.json()))}getFilesInformation(){return this.httpClient.get(`/bcf/3.0/projects/${this.data.id}/files_information`).then((t=>t.json())).then((t=>(t.forEach((t=>{const e=e=>(t.display_information.find((t=>t.field_display_name===e))||{}).field_value,s=`${this.httpClient.serverUrl}/files/${t.file.reference}/preview`,i=`${this.httpClient.serverUrl}/users/${e("Owner")}/avatar`,r=n(e("Owner First Name"),e("Owner Last Name"),e("Owner User Name")),o=a(r);t.display_information.push({field_display_name:"Preview URL",field_value:s}),t.display_information.push({field_display_name:"Owner Avatar URL",field_value:i}),t.display_information.push({field_display_name:"Owner Full Name",field_value:r}),t.display_information.push({field_display_name:"Owner Initials",field_value:o});const h=`${this.httpClient.serverUrl}/users/${e("Updated By")}/avatar`,l=n(e("Updated By First Name"),e("Updated By Last Name"),e("Updated By User Name")),d=a(l);t.display_information.push({field_display_name:"Updated By Avatar URL",field_value:h}),t.display_information.push({field_display_name:"Updated By Full Name",field_value:l}),t.display_information.push({field_display_name:"Updated By Initials",field_value:d});const u=e("Geometry Status"),p=e("GeometryGltf Status"),c="done"===u?"vsfx":"done"===p?"gltf":"";t.display_information.push({field_display_name:"Geometry Type",field_value:c})})),t)))}}class b{constructor(t,e){this.httpClient=e,this.data=t}get avatarUrl(){return this._data.avatarUrl}get canCreateProject(){return this.data.canCreateProject}get createAt(){return this.data.createAt}get customFields(){return this.data.customFields}set customFields(t){this._data.customFields=t}get data(){return this._data}set data(t){this._data=t,this._data.avatarUrl=t.avatarImage?`${this.httpClient.serverUrl}/users/${this._data.id}/avatar`:"",this._data.fullName=n(this._data),this._data.initials=a(this._data.fullName)}get email(){return this.data.email}get emailConfirmationId(){return this.data.emailConfirmationId}get firstName(){return this.data.firstName}set firstName(t){this._data.firstName=t}get fullName(){return this.data.fullName}get id(){return this.data.id}get initials(){return this.data.initials}get isEmailConfirmed(){return this.data.isEmailConfirmed}get lastModified(){return this.data.lastModified}get lastName(){return this.data.lastName}set lastName(t){this._data.lastName=t}get lastSignIn(){return this.data.lastSignIn}get projectsLimit(){return this.data.projectsLimit}get token(){return this.data.tokenInfo.token}get userName(){return this.data.userName}set userName(t){this._data.userName=t}async checkout(){if(this.id===this.httpClient.signInUserId){const t=await this.httpClient.get("/user"),e=await t.json();this.data={id:this.id,...e}}else{const t=await this.httpClient.get(`/users/${this.id}`),e=await t.json();this.data={id:e.id,...e.userBrief}}return this}async update(t){if(this.id===this.httpClient.signInUserId){const e=await this.httpClient.put("/user",t),s=await e.json();this.data={id:this.id,...s}}else{const e=await this.httpClient.put(`/users/${this.id}`,{userBrief:t}),s=await e.json();this.data={id:s.id,...s.userBrief}}return this}delete(){return this.httpClient.delete(`/users/${this.id}`).then((t=>t.json())).then((t=>(this.id===this.httpClient.signInUserId&&(this.httpClient.headers={},this.httpClient.signInUserId=""),t)))}save(){return this.update(this.data)}async setAvatar(t){if(t)if(this.id===this.httpClient.signInUserId){const e=await this.httpClient.post("/user/avatar",t),s=await e.json();this.data={id:this.id,...s}}else{const e=await this.httpClient.post(`/users/${this.id}/avatar`,t),s=await e.json();this.data={id:s.id,...s.userBrief}}else if(this.id===this.httpClient.signInUserId){const t=await this.httpClient.delete("/user/avatar"),e=await t.json();this.data={id:this.id,...e}}else{const t=await this.httpClient.delete(`/users/${this.id}/avatar`),e=await t.json();this.data={id:e.id,...e.userBrief}}return this}}t.Assembly=p,t.ClashTest=o,t.Client=class extends c{constructor(t={}){super(),this._serverUrl="",this.httpClient=new f(""),this._user=null,this.eventEmitter=this,this.configure(t)}get serverUrl(){return this._serverUrl}get options(){console.warn("Client.options has been deprecated since 25.3 and will be removed in a future release, use Viewer.options instead.");const t={showWCS:!0,cameraAnimation:!0,antialiasing:!0,groundShadow:!1,shadows:!1,cameraAxisXSpeed:4,cameraAxisYSpeed:1,ambientOcclusion:!1,enableStreamingMode:!0,enablePartialMode:!1,memoryLimit:3294967296,cuttingPlaneFillColor:{red:255,green:152,blue:0},edgesColor:{r:255,g:152,b:0},facesColor:{r:255,g:152,b:0},edgesVisibility:!0,edgesOverlap:!0,facesOverlap:!1,facesTransparancy:200,enableCustomHighlight:!0,sceneGraph:!1,edgeModel:!0,reverseZoomWheel:!1,enableZoomWheel:!0,enableGestures:!0};return{...t,data:t,defaults:()=>t,resetToDefaults:()=>{},saveToStorage:()=>{},loadFromStorage:()=>{}}}configure(t){return this._serverUrl=(t.serverUrl||"").replace(/\/+$/,""),this.httpClient=new f(this.serverUrl),this._user=null,this}version(){return this.httpClient.get("/version").then((t=>t.json())).then((t=>({...t,server:t.version,client:"25.4.4"})))}registerUser(t,e,s){return this.httpClient.post("/register",{email:t,password:e,userName:null!=s?s:(t+"").split("@").at(0)}).then((t=>t.json()))}resendConfirmationEmail(t,e){return this.httpClient.post("/register/email-confirmation",{email:t,password:e}).then((t=>t.json()))}confirmUserEmail(t){return this.httpClient.get(`/register/email-confirmation/${t}`).then((t=>t.json()))}async signInWithEmail(t,e){const s=btoa(unescape(encodeURIComponent(t+":"+e)));this.httpClient.headers={Authorization:"Basic "+s};const i=await this.httpClient.get("/token"),r=await i.json();return this.setCurrentUser(r)}async signInWithToken(t){this.httpClient.headers={Authorization:t};const e=await this.httpClient.get("/user"),s=await e.json();return this.setCurrentUser(s)}getIdentityProviders(){return this.httpClient.get("/identity").then((t=>t.json()))}setCurrentUser(t){return this._user=new b(t,this.httpClient),this.httpClient.headers={Authorization:t.tokenInfo.token},this.httpClient.signInUserId=this._user.id,this._user}clearCurrentUser(){this._user=null,this.httpClient.headers={},this.httpClient.signInUserId=""}getCurrentUser(){return this._user&&!this.httpClient.signInUserId&&(this._user=null),this._user}getUsers(){return this.httpClient.get("/users").then((t=>t.json())).then((t=>t.map((t=>({id:t.id,...t.userBrief}))))).then((t=>t.map((t=>new b(t,this.httpClient)))))}getUser(t){return t===this.httpClient.signInUserId?this.httpClient.get("/user").then((t=>t.json())).then((e=>({id:t,...e}))).then((t=>new b(t,this.httpClient))):this.httpClient.get(`/users/${t}`).then((t=>t.json())).then((t=>({id:t.id,...t.userBrief}))).then((t=>new b(t,this.httpClient)))}createUser(t,e,s={}){const{isAdmin:i,userName:r,...n}=s;return this.httpClient.post("/users",{isAdmin:i,userBrief:{...n,email:t,userName:null!=r?r:(t+"").split("@").at(0)},password:e}).then((t=>t.json())).then((t=>({id:t.id,...t.userBrief}))).then((t=>new b(t,this.httpClient)))}deleteUser(t){return this.httpClient.delete(`/users/${t}`).then((t=>t.json())).then((e=>(t===this.httpClient.signInUserId&&this.clearCurrentUser(),e)))}getFiles(t,e,s,i,r,n,a){const o=new URLSearchParams;t>0&&o.set("start",t.toString()),e>0&&o.set("limit",e.toString()),s&&o.set("name",s),i&&(Array.isArray(i)&&(i=i.join("|")),"string"==typeof i&&(i=i.toLowerCase()),i&&o.set("ext",i)),r&&(Array.isArray(r)&&(r=r.join("|")),o.set("id",r)),void 0!==n&&o.set("sortBy",n?"desc":"asc"),a&&o.set("sortField",a);let h=o.toString();return h&&(h="?"+h),this.httpClient.get(`/files${h}`).then((t=>t.json())).then((t=>({...t,result:t.result.map((t=>new C(t,this.httpClient)))})))}getFile(t){return this.httpClient.get(`/files/${t}`).then((t=>t.json())).then((t=>new C(t,this.httpClient)))}async uploadFile(t,e={geometry:!0,properties:!1,waitForDone:!1}){const s=await this.httpClient.uploadFile("/files",t,(s=>{var i;this.emitEvent({type:"uploadprogress",data:s,file:t}),null===(i=e.onProgress)||void 0===i||i.call(e,s,t)})).then((t=>JSON.parse(t.responseText))).then((t=>new C(t,this.httpClient))),i="string"==typeof e.geometry?e.geometry:"vsfx",r=[];return e.geometry&&r.push((await s.extractGeometry(i)).outputFormat),e.properties&&r.push((await s.extractProperties()).outputFormat),r.length>0&&(e.waitForDone?await s.waitForDone(r,!0,e):await s.checkout()),s}deleteFile(t){return this.httpClient.delete(`/files/${t}`).then((t=>t.json()))}downloadFile(t,e,s){return this.httpClient.downloadFile(`/files/${t}/downloads`,e,s).then((t=>t.arrayBuffer()))}getJobs(t,e,s,i,r){const n=new URLSearchParams;s>0&&n.set("start",s.toString()),e>0&&n.set("limit",e.toString()),t&&(Array.isArray(t)&&(t=t.join("|")),"string"==typeof t&&(t=t.trim().toLowerCase()),t&&n.set("status",t)),void 0!==i&&n.set("sortBy",i?"desc":"asc"),r&&n.set("sortField",r);let a=n.toString();return a&&(a="?"+a),this.httpClient.get(`/jobs${a}`).then((t=>t.json())).then((t=>({...t,result:t.result.map((t=>new y(t,this.httpClient)))})))}getJob(t){return this.httpClient.get(`/jobs/${t}`).then((t=>t.json())).then((t=>new y(t,this.httpClient)))}createJob(t,e,s){return this.httpClient.post("/jobs",{fileId:t,outputFormat:e,parameters:r(s)}).then((t=>t.json())).then((t=>new y(t,this.httpClient)))}deleteJob(t){return this.httpClient.delete(`/jobs/${t}`).then((t=>t.json()))}getAssemblies(t,e,s,i,r,n){const a=new URLSearchParams;t>0&&a.set("start",t.toString()),e>0&&a.set("limit",e.toString()),s&&a.set("name",s),i&&(Array.isArray(i)&&(i=i.join("|")),"string"==typeof i&&(i=i.trim()),i&&a.set("id",i)),void 0!==r&&a.set("sortBy",r?"desc":"asc"),n&&a.set("sortField",n);let o=a.toString();return o&&(o="?"+o),this.httpClient.get(`/assemblies${o}`).then((t=>t.json())).then((t=>({...t,result:t.result.map((t=>new p(t,this.httpClient)))})))}getAssembly(t){return this.httpClient.get(`/assemblies/${t}`).then((t=>t.json())).then((t=>new p(t,this.httpClient)))}createAssembly(t,e,s){const{waitForDone:i}=null!=s?s:{};return this.httpClient.post("/assemblies",{name:e,files:t}).then((t=>t.json())).then((t=>new p(t,this.httpClient))).then((t=>i?t.waitForDone(s):t))}deleteAssembly(t){return this.httpClient.delete(`/assemblies/${t}`).then((t=>t.json()))}getProjects(t,e,s,i,r){const n=new URLSearchParams;t>0&&n.set("start",t.toString()),e>0&&n.set("limit",e.toString()),s&&n.set("name",s),i&&(Array.isArray(i)&&(i=i.join("|")),"string"==typeof i&&(i=i.trim()),i&&n.set("id",i)),void 0!==r&&n.set("sortBy",r?"desc":"asc");let a=n.toString();return a&&(a="?"+a),this.httpClient.get(`/projects${a}`).then((t=>t.json())).then((r=>{if(Array.isArray(r)){let n=r;if(i&&(n=n.filter((t=>i.includes(t.id)))),s&&(n=n.filter((t=>t.name.includes(s)))),e>0){const s=t>0?t:0;n=n.slice(s,s+e)}return{allSize:r.length,start:t,limit:e,result:n,size:n.length}}return r})).then((t=>({...t,result:t.result.map((t=>new j(t,this.httpClient)))})))}getProject(t){return this.httpClient.get(`/projects/${t}`).then((t=>t.json())).then((t=>new j(t,this.httpClient)))}createProject(t,e,s,i,r){return this.httpClient.post("/projects",{name:t,description:e,startDate:s instanceof Date?s.toISOString():s,endDate:i instanceof Date?i.toISOString():i,avatarUrl:r}).then((t=>t.json())).then((t=>new j(t,this.httpClient)))}deleteProject(t){return this.httpClient.delete(`/projects/${t}`).then((t=>t.text())).then((e=>{try{return JSON.parse(e)}catch{return{id:t}}}))}},t.FetchError=u,t.File=C,t.Job=y,t.Member=$,t.Model=e,t.Permission=v,t.Project=j,t.Role=_,t.User=b,t.parseArgs=r,t.statusText=l,t.userFullName=n,t.userInitials=a,t.version="25.4.4",t.waitFor=i,Object.defineProperty(t,"__esModule",{value:!0})}));
|
package/dist/client.module.js
CHANGED
|
@@ -476,24 +476,19 @@ class Assembly {
|
|
|
476
476
|
return this.internalGet(`/properties/tree`).then((response => response.json()));
|
|
477
477
|
}
|
|
478
478
|
getViewpoints() {
|
|
479
|
-
|
|
480
|
-
return Promise.resolve([]);
|
|
479
|
+
return this.internalGet("/viewpoints").then((response => response.json())).then((viewpoints => viewpoints.result));
|
|
481
480
|
}
|
|
482
481
|
saveViewpoint(viewpoint) {
|
|
483
|
-
|
|
484
|
-
return Promise.resolve({});
|
|
482
|
+
return this.internalPost("/viewpoints", viewpoint).then((response => response.json()));
|
|
485
483
|
}
|
|
486
484
|
deleteViewpoint(guid) {
|
|
487
|
-
|
|
488
|
-
return Promise.resolve({});
|
|
485
|
+
return this.internalDelete(`/viewpoints/${guid}`).then((response => response.json()));
|
|
489
486
|
}
|
|
490
487
|
getSnapshot(guid) {
|
|
491
|
-
|
|
492
|
-
return Promise.resolve({});
|
|
488
|
+
return this.internalGet(`/viewpoints/${guid}/snapshot`).then((response => response.text()));
|
|
493
489
|
}
|
|
494
490
|
getSnapshotData(guid, bitmapGuid) {
|
|
495
|
-
|
|
496
|
-
return Promise.resolve("");
|
|
491
|
+
return this.internalGet(`/viewpoints/${guid}/bitmaps/${bitmapGuid}`).then((response => response.text()));
|
|
497
492
|
}
|
|
498
493
|
downloadResource(dataId, onProgress, signal) {
|
|
499
494
|
const relativePath = this.appendVersionParam(`/downloads/${dataId}`);
|
|
@@ -648,7 +643,7 @@ function handleFetchError(response) {
|
|
|
648
643
|
}
|
|
649
644
|
|
|
650
645
|
default:
|
|
651
|
-
return Promise.reject(new FetchError(response.status
|
|
646
|
+
return Promise.reject(new FetchError(response.status));
|
|
652
647
|
}
|
|
653
648
|
}
|
|
654
649
|
return Promise.resolve(response);
|
|
@@ -1773,7 +1768,7 @@ class Client extends EventEmitter2 {
|
|
|
1773
1768
|
constructor(params = {}) {
|
|
1774
1769
|
super();
|
|
1775
1770
|
this._serverUrl = "";
|
|
1776
|
-
this.
|
|
1771
|
+
this.httpClient = new HttpClient("");
|
|
1777
1772
|
this._user = null;
|
|
1778
1773
|
this.eventEmitter = this;
|
|
1779
1774
|
this.configure(params);
|
|
@@ -1832,92 +1827,92 @@ class Client extends EventEmitter2 {
|
|
|
1832
1827
|
}
|
|
1833
1828
|
configure(params) {
|
|
1834
1829
|
this._serverUrl = (params.serverUrl || "").replace(/\/+$/, "");
|
|
1835
|
-
this.
|
|
1830
|
+
this.httpClient = new HttpClient(this.serverUrl);
|
|
1836
1831
|
this._user = null;
|
|
1837
1832
|
return this;
|
|
1838
1833
|
}
|
|
1839
1834
|
version() {
|
|
1840
|
-
return this.
|
|
1835
|
+
return this.httpClient.get("/version").then((response => response.json())).then((data => ({
|
|
1841
1836
|
...data,
|
|
1842
1837
|
server: data.version,
|
|
1843
|
-
client: "25.4.
|
|
1838
|
+
client: "25.4.4"
|
|
1844
1839
|
})));
|
|
1845
1840
|
}
|
|
1846
1841
|
registerUser(email, password, userName) {
|
|
1847
|
-
return this.
|
|
1842
|
+
return this.httpClient.post("/register", {
|
|
1848
1843
|
email: email,
|
|
1849
1844
|
password: password,
|
|
1850
1845
|
userName: userName !== null && userName !== void 0 ? userName : (email + "").split("@").at(0)
|
|
1851
1846
|
}).then((response => response.json()));
|
|
1852
1847
|
}
|
|
1853
1848
|
resendConfirmationEmail(email, password) {
|
|
1854
|
-
return this.
|
|
1849
|
+
return this.httpClient.post("/register/email-confirmation", {
|
|
1855
1850
|
email: email,
|
|
1856
1851
|
password: password
|
|
1857
1852
|
}).then((response => response.json()));
|
|
1858
1853
|
}
|
|
1859
1854
|
confirmUserEmail(emailConfirmationId) {
|
|
1860
|
-
return this.
|
|
1855
|
+
return this.httpClient.get(`/register/email-confirmation/${emailConfirmationId}`).then((response => response.json()));
|
|
1861
1856
|
}
|
|
1862
1857
|
async signInWithEmail(email, password) {
|
|
1863
1858
|
const credentials = btoa(unescape(encodeURIComponent(email + ":" + password)));
|
|
1864
|
-
this.
|
|
1859
|
+
this.httpClient.headers = {
|
|
1865
1860
|
Authorization: "Basic " + credentials
|
|
1866
1861
|
};
|
|
1867
|
-
const response = await this.
|
|
1862
|
+
const response = await this.httpClient.get("/token");
|
|
1868
1863
|
const data = await response.json();
|
|
1869
1864
|
return this.setCurrentUser(data);
|
|
1870
1865
|
}
|
|
1871
1866
|
async signInWithToken(token) {
|
|
1872
|
-
this.
|
|
1867
|
+
this.httpClient.headers = {
|
|
1873
1868
|
Authorization: token
|
|
1874
1869
|
};
|
|
1875
|
-
const response = await this.
|
|
1870
|
+
const response = await this.httpClient.get("/user");
|
|
1876
1871
|
const data = await response.json();
|
|
1877
1872
|
return this.setCurrentUser(data);
|
|
1878
1873
|
}
|
|
1879
1874
|
getIdentityProviders() {
|
|
1880
|
-
return this.
|
|
1875
|
+
return this.httpClient.get("/identity").then((response => response.json()));
|
|
1881
1876
|
}
|
|
1882
1877
|
setCurrentUser(data) {
|
|
1883
|
-
this._user = new User(data, this.
|
|
1884
|
-
this.
|
|
1878
|
+
this._user = new User(data, this.httpClient);
|
|
1879
|
+
this.httpClient.headers = {
|
|
1885
1880
|
Authorization: data.tokenInfo.token
|
|
1886
1881
|
};
|
|
1887
|
-
this.
|
|
1882
|
+
this.httpClient.signInUserId = this._user.id;
|
|
1888
1883
|
return this._user;
|
|
1889
1884
|
}
|
|
1890
1885
|
clearCurrentUser() {
|
|
1891
1886
|
this._user = null;
|
|
1892
|
-
this.
|
|
1893
|
-
this.
|
|
1887
|
+
this.httpClient.headers = {};
|
|
1888
|
+
this.httpClient.signInUserId = "";
|
|
1894
1889
|
}
|
|
1895
1890
|
getCurrentUser() {
|
|
1896
|
-
if (this._user && !this.
|
|
1891
|
+
if (this._user && !this.httpClient.signInUserId) this._user = null;
|
|
1897
1892
|
return this._user;
|
|
1898
1893
|
}
|
|
1899
1894
|
getUsers() {
|
|
1900
|
-
return this.
|
|
1895
|
+
return this.httpClient.get("/users").then((response => response.json())).then((array => array.map((data => ({
|
|
1901
1896
|
id: data.id,
|
|
1902
1897
|
...data.userBrief
|
|
1903
|
-
}))))).then((array => array.map((data => new User(data, this.
|
|
1898
|
+
}))))).then((array => array.map((data => new User(data, this.httpClient)))));
|
|
1904
1899
|
}
|
|
1905
1900
|
getUser(userId) {
|
|
1906
|
-
if (userId === this.
|
|
1907
|
-
return this.
|
|
1901
|
+
if (userId === this.httpClient.signInUserId) {
|
|
1902
|
+
return this.httpClient.get("/user").then((response => response.json())).then((data => ({
|
|
1908
1903
|
id: userId,
|
|
1909
1904
|
...data
|
|
1910
|
-
}))).then((data => new User(data, this.
|
|
1905
|
+
}))).then((data => new User(data, this.httpClient)));
|
|
1911
1906
|
} else {
|
|
1912
|
-
return this.
|
|
1907
|
+
return this.httpClient.get(`/users/${userId}`).then((response => response.json())).then((data => ({
|
|
1913
1908
|
id: data.id,
|
|
1914
1909
|
...data.userBrief
|
|
1915
|
-
}))).then((data => new User(data, this.
|
|
1910
|
+
}))).then((data => new User(data, this.httpClient)));
|
|
1916
1911
|
}
|
|
1917
1912
|
}
|
|
1918
1913
|
createUser(email, password, params = {}) {
|
|
1919
1914
|
const {isAdmin: isAdmin, userName: userName, ...rest} = params;
|
|
1920
|
-
return this.
|
|
1915
|
+
return this.httpClient.post("/users", {
|
|
1921
1916
|
isAdmin: isAdmin,
|
|
1922
1917
|
userBrief: {
|
|
1923
1918
|
...rest,
|
|
@@ -1928,11 +1923,11 @@ class Client extends EventEmitter2 {
|
|
|
1928
1923
|
}).then((response => response.json())).then((data => ({
|
|
1929
1924
|
id: data.id,
|
|
1930
1925
|
...data.userBrief
|
|
1931
|
-
}))).then((data => new User(data, this.
|
|
1926
|
+
}))).then((data => new User(data, this.httpClient)));
|
|
1932
1927
|
}
|
|
1933
1928
|
deleteUser(userId) {
|
|
1934
|
-
return this.
|
|
1935
|
-
if (userId === this.
|
|
1929
|
+
return this.httpClient.delete(`/users/${userId}`).then((response => response.json())).then((data => {
|
|
1930
|
+
if (userId === this.httpClient.signInUserId) {
|
|
1936
1931
|
this.clearCurrentUser();
|
|
1937
1932
|
}
|
|
1938
1933
|
return data;
|
|
@@ -1956,20 +1951,20 @@ class Client extends EventEmitter2 {
|
|
|
1956
1951
|
if (sortField) searchParams.set("sortField", sortField);
|
|
1957
1952
|
let queryString = searchParams.toString();
|
|
1958
1953
|
if (queryString) queryString = "?" + queryString;
|
|
1959
|
-
return this.
|
|
1954
|
+
return this.httpClient.get(`/files${queryString}`).then((response => response.json())).then((files => ({
|
|
1960
1955
|
...files,
|
|
1961
|
-
result: files.result.map((data => new File(data, this.
|
|
1956
|
+
result: files.result.map((data => new File(data, this.httpClient)))
|
|
1962
1957
|
})));
|
|
1963
1958
|
}
|
|
1964
1959
|
getFile(fileId) {
|
|
1965
|
-
return this.
|
|
1960
|
+
return this.httpClient.get(`/files/${fileId}`).then((response => response.json())).then((data => new File(data, this.httpClient)));
|
|
1966
1961
|
}
|
|
1967
1962
|
async uploadFile(file, params = {
|
|
1968
1963
|
geometry: true,
|
|
1969
1964
|
properties: false,
|
|
1970
1965
|
waitForDone: false
|
|
1971
1966
|
}) {
|
|
1972
|
-
const result = await this.
|
|
1967
|
+
const result = await this.httpClient.uploadFile("/files", file, (progress => {
|
|
1973
1968
|
var _a;
|
|
1974
1969
|
this.emitEvent({
|
|
1975
1970
|
type: "uploadprogress",
|
|
@@ -1977,7 +1972,7 @@ class Client extends EventEmitter2 {
|
|
|
1977
1972
|
file: file
|
|
1978
1973
|
});
|
|
1979
1974
|
(_a = params.onProgress) === null || _a === void 0 ? void 0 : _a.call(params, progress, file);
|
|
1980
|
-
})).then((xhr => JSON.parse(xhr.responseText))).then((data => new File(data, this.
|
|
1975
|
+
})).then((xhr => JSON.parse(xhr.responseText))).then((data => new File(data, this.httpClient)));
|
|
1981
1976
|
const geometryType = typeof params.geometry === "string" ? params.geometry : "vsfx";
|
|
1982
1977
|
const jobs = [];
|
|
1983
1978
|
if (params.geometry) jobs.push((await result.extractGeometry(geometryType)).outputFormat);
|
|
@@ -1986,10 +1981,10 @@ class Client extends EventEmitter2 {
|
|
|
1986
1981
|
return result;
|
|
1987
1982
|
}
|
|
1988
1983
|
deleteFile(fileId) {
|
|
1989
|
-
return this.
|
|
1984
|
+
return this.httpClient.delete(`/files/${fileId}`).then((response => response.json()));
|
|
1990
1985
|
}
|
|
1991
1986
|
downloadFile(fileId, onProgress, signal) {
|
|
1992
|
-
return this.
|
|
1987
|
+
return this.httpClient.downloadFile(`/files/${fileId}/downloads`, onProgress, signal).then((response => response.arrayBuffer()));
|
|
1993
1988
|
}
|
|
1994
1989
|
getJobs(status, limit, start, sortByDesc, sortField) {
|
|
1995
1990
|
const searchParams = new URLSearchParams;
|
|
@@ -2004,23 +1999,23 @@ class Client extends EventEmitter2 {
|
|
|
2004
1999
|
if (sortField) searchParams.set("sortField", sortField);
|
|
2005
2000
|
let queryString = searchParams.toString();
|
|
2006
2001
|
if (queryString) queryString = "?" + queryString;
|
|
2007
|
-
return this.
|
|
2002
|
+
return this.httpClient.get(`/jobs${queryString}`).then((response => response.json())).then((jobs => ({
|
|
2008
2003
|
...jobs,
|
|
2009
|
-
result: jobs.result.map((data => new Job(data, this.
|
|
2004
|
+
result: jobs.result.map((data => new Job(data, this.httpClient)))
|
|
2010
2005
|
})));
|
|
2011
2006
|
}
|
|
2012
2007
|
getJob(jobId) {
|
|
2013
|
-
return this.
|
|
2008
|
+
return this.httpClient.get(`/jobs/${jobId}`).then((response => response.json())).then((data => new Job(data, this.httpClient)));
|
|
2014
2009
|
}
|
|
2015
2010
|
createJob(fileId, outputFormat, parameters) {
|
|
2016
|
-
return this.
|
|
2011
|
+
return this.httpClient.post("/jobs", {
|
|
2017
2012
|
fileId: fileId,
|
|
2018
2013
|
outputFormat: outputFormat,
|
|
2019
2014
|
parameters: parseArgs(parameters)
|
|
2020
|
-
}).then((response => response.json())).then((data => new Job(data, this.
|
|
2015
|
+
}).then((response => response.json())).then((data => new Job(data, this.httpClient)));
|
|
2021
2016
|
}
|
|
2022
2017
|
deleteJob(jobId) {
|
|
2023
|
-
return this.
|
|
2018
|
+
return this.httpClient.delete(`/jobs/${jobId}`).then((response => response.json()));
|
|
2024
2019
|
}
|
|
2025
2020
|
getAssemblies(start, limit, name, ids, sortByDesc, sortField) {
|
|
2026
2021
|
const searchParams = new URLSearchParams;
|
|
@@ -2036,23 +2031,23 @@ class Client extends EventEmitter2 {
|
|
|
2036
2031
|
if (sortField) searchParams.set("sortField", sortField);
|
|
2037
2032
|
let queryString = searchParams.toString();
|
|
2038
2033
|
if (queryString) queryString = "?" + queryString;
|
|
2039
|
-
return this.
|
|
2034
|
+
return this.httpClient.get(`/assemblies${queryString}`).then((response => response.json())).then((assemblies => ({
|
|
2040
2035
|
...assemblies,
|
|
2041
|
-
result: assemblies.result.map((data => new Assembly(data, this.
|
|
2036
|
+
result: assemblies.result.map((data => new Assembly(data, this.httpClient)))
|
|
2042
2037
|
})));
|
|
2043
2038
|
}
|
|
2044
2039
|
getAssembly(assemblyId) {
|
|
2045
|
-
return this.
|
|
2040
|
+
return this.httpClient.get(`/assemblies/${assemblyId}`).then((response => response.json())).then((data => new Assembly(data, this.httpClient)));
|
|
2046
2041
|
}
|
|
2047
2042
|
createAssembly(files, name, params) {
|
|
2048
2043
|
const {waitForDone: waitForDone} = params !== null && params !== void 0 ? params : {};
|
|
2049
|
-
return this.
|
|
2044
|
+
return this.httpClient.post("/assemblies", {
|
|
2050
2045
|
name: name,
|
|
2051
2046
|
files: files
|
|
2052
|
-
}).then((response => response.json())).then((data => new Assembly(data, this.
|
|
2047
|
+
}).then((response => response.json())).then((data => new Assembly(data, this.httpClient))).then((result => waitForDone ? result.waitForDone(params) : result));
|
|
2053
2048
|
}
|
|
2054
2049
|
deleteAssembly(assemblyId) {
|
|
2055
|
-
return this.
|
|
2050
|
+
return this.httpClient.delete(`/assemblies/${assemblyId}`).then((response => response.json()));
|
|
2056
2051
|
}
|
|
2057
2052
|
getProjects(start, limit, name, ids, sortByDesc) {
|
|
2058
2053
|
const searchParams = new URLSearchParams;
|
|
@@ -2067,7 +2062,7 @@ class Client extends EventEmitter2 {
|
|
|
2067
2062
|
if (sortByDesc !== undefined) searchParams.set("sortBy", sortByDesc ? "desc" : "asc");
|
|
2068
2063
|
let queryString = searchParams.toString();
|
|
2069
2064
|
if (queryString) queryString = "?" + queryString;
|
|
2070
|
-
return this.
|
|
2065
|
+
return this.httpClient.get(`/projects${queryString}`).then((response => response.json())).then((projects => {
|
|
2071
2066
|
if (Array.isArray(projects)) {
|
|
2072
2067
|
let result = projects;
|
|
2073
2068
|
if (ids) result = result.filter((x => ids.includes(x.id)));
|
|
@@ -2087,23 +2082,23 @@ class Client extends EventEmitter2 {
|
|
|
2087
2082
|
return projects;
|
|
2088
2083
|
})).then((projects => ({
|
|
2089
2084
|
...projects,
|
|
2090
|
-
result: projects.result.map((data => new Project(data, this.
|
|
2085
|
+
result: projects.result.map((data => new Project(data, this.httpClient)))
|
|
2091
2086
|
})));
|
|
2092
2087
|
}
|
|
2093
2088
|
getProject(projectId) {
|
|
2094
|
-
return this.
|
|
2089
|
+
return this.httpClient.get(`/projects/${projectId}`).then((response => response.json())).then((data => new Project(data, this.httpClient)));
|
|
2095
2090
|
}
|
|
2096
2091
|
createProject(name, description, startDate, endDate, avatarUrl) {
|
|
2097
|
-
return this.
|
|
2092
|
+
return this.httpClient.post("/projects", {
|
|
2098
2093
|
name: name,
|
|
2099
2094
|
description: description,
|
|
2100
2095
|
startDate: startDate instanceof Date ? startDate.toISOString() : startDate,
|
|
2101
2096
|
endDate: endDate instanceof Date ? endDate.toISOString() : endDate,
|
|
2102
2097
|
avatarUrl: avatarUrl
|
|
2103
|
-
}).then((response => response.json())).then((data => new Project(data, this.
|
|
2098
|
+
}).then((response => response.json())).then((data => new Project(data, this.httpClient)));
|
|
2104
2099
|
}
|
|
2105
2100
|
deleteProject(projectId) {
|
|
2106
|
-
return this.
|
|
2101
|
+
return this.httpClient.delete(`/projects/${projectId}`).then((response => response.text())).then((text => {
|
|
2107
2102
|
try {
|
|
2108
2103
|
return JSON.parse(text);
|
|
2109
2104
|
} catch {
|
|
@@ -2115,7 +2110,7 @@ class Client extends EventEmitter2 {
|
|
|
2115
2110
|
}
|
|
2116
2111
|
}
|
|
2117
2112
|
|
|
2118
|
-
const version = "25.4.
|
|
2113
|
+
const version = "25.4.4";
|
|
2119
2114
|
|
|
2120
|
-
export { Assembly, ClashTest, Client, File, Job, Member, Model, Permission, Project, Role, User, parseArgs, userFullName, userInitials, version, waitFor };
|
|
2115
|
+
export { Assembly, ClashTest, Client, FetchError, File, Job, Member, Model, Permission, Project, Role, User, parseArgs, statusText, userFullName, userInitials, version, waitFor };
|
|
2121
2116
|
//# sourceMappingURL=client.module.js.map
|