cod-dicomweb-server 1.3.3 → 1.3.5

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.
@@ -10,6 +10,7 @@ declare class CodDicomWebServer {
10
10
  maxWorkerFetchSize?: number;
11
11
  domain?: string;
12
12
  disableWorker?: boolean;
13
+ enableLocalCache?: boolean;
13
14
  });
14
15
  setOptions: (newOptions: Partial<CodDicomWebServerOptions>) => void;
15
16
  getOptions: () => CodDicomWebServerOptions;
@@ -7,19 +7,22 @@ import constants, { Enums } from '../constants';
7
7
  import { getDataRetrievalManager } from '../dataRetrieval/dataRetrievalManager';
8
8
  import { CustomError } from './customClasses';
9
9
  import { CustomErrorEvent } from './customClasses';
10
+ import { getDirectoryHandle } from '../fileAccessSystemUtils';
10
11
  class CodDicomWebServer {
11
12
  filePromises = {};
12
13
  options = {
13
14
  maxWorkerFetchSize: Infinity,
14
- domain: constants.url.DOMAIN
15
+ domain: constants.url.DOMAIN,
16
+ enableLocalCache: false
15
17
  };
16
18
  fileManager;
17
19
  metadataManager;
18
20
  seriesUidFileUrls = {};
19
21
  constructor(args = {}) {
20
- const { maxWorkerFetchSize, domain, disableWorker } = args;
22
+ const { maxWorkerFetchSize, domain, disableWorker, enableLocalCache } = args;
21
23
  this.options.maxWorkerFetchSize = maxWorkerFetchSize || this.options.maxWorkerFetchSize;
22
24
  this.options.domain = domain || this.options.domain;
25
+ this.options.enableLocalCache = !!enableLocalCache;
23
26
  const fileStreamingScriptName = constants.dataRetrieval.FILE_STREAMING_WORKER_NAME;
24
27
  const filePartialScriptName = constants.dataRetrieval.FILE_PARTIAL_WORKER_NAME;
25
28
  this.fileManager = new FileManager({ fileStreamingScriptName });
@@ -163,6 +166,7 @@ class CodDicomWebServer {
163
166
  }
164
167
  });
165
168
  }
169
+ const directoryHandle = this.options.enableLocalCache && (await getDirectoryHandle());
166
170
  const { maxWorkerFetchSize } = this.getOptions();
167
171
  const dataRetrievalManager = getDataRetrievalManager();
168
172
  const { FILE_STREAMING_WORKER_NAME, FILE_PARTIAL_WORKER_NAME, THRESHOLD } = constants.dataRetrieval;
@@ -190,7 +194,8 @@ class CodDicomWebServer {
190
194
  .executeTask(FILE_STREAMING_WORKER_NAME, 'stream', {
191
195
  url: fileUrl,
192
196
  headers: headers,
193
- useSharedArrayBuffer
197
+ useSharedArrayBuffer,
198
+ directoryHandle
194
199
  })
195
200
  .then(() => {
196
201
  resolveFile();
@@ -224,7 +229,7 @@ class CodDicomWebServer {
224
229
  url: bytesRemovedUrl,
225
230
  offsets: { startByte, endByte },
226
231
  headers,
227
- useSharedArrayBuffer
232
+ directoryHandle
228
233
  })
229
234
  .catch((error) => {
230
235
  rejectFile(error);
@@ -313,7 +318,7 @@ class CodDicomWebServer {
313
318
  }
314
319
  parseMetadata(metadata, type, sopInstanceUID) {
315
320
  if (type === Enums.RequestType.INSTANCE_METADATA) {
316
- return Object.values(metadata.cod.instances).find((instance) => instance.metadata['00080018']?.Value?.[0] === sopInstanceUID)?.metadata;
321
+ return Object.entries(metadata.cod.instances).find(([key, instance]) => key === sopInstanceUID)?.[1].metadata;
317
322
  }
318
323
  else {
319
324
  return Object.values(metadata.cod.instances).map((instance) => instance.metadata);
@@ -58,7 +58,7 @@ export function getFrameDetailsFromMetadata(seriesMetadata, sopInstanceUID, fram
58
58
  const thumbnailGsUtilUri = seriesMetadata.thumbnail.uri;
59
59
  thumbnailUrl = `${domain}/${thumbnailGsUtilUri.split('gs://')[1]}`;
60
60
  }
61
- const instanceFound = Object.values(seriesMetadata.cod.instances).find((instance) => instance.metadata['00080018']?.Value?.[0] === sopInstanceUID);
61
+ const instanceFound = Object.entries(seriesMetadata.cod.instances).find(([key, instance]) => key === sopInstanceUID)?.[1];
62
62
  if (!instanceFound) {
63
63
  return { thumbnailUrl };
64
64
  }
@@ -1,3 +1,7 @@
1
1
  export declare const FILE_PARTIAL_WORKER_NAME = "filePartial";
2
2
  export declare const FILE_STREAMING_WORKER_NAME = "fileStreaming";
3
3
  export declare const THRESHOLD = 10000;
4
+ export declare const IDB_DIR_HANDLE_KEY = "indexed_db_directory_handle_key";
5
+ export declare const FILE_SYSTEM_ROUTES: {
6
+ Partial: string;
7
+ };
@@ -1,3 +1,7 @@
1
1
  export const FILE_PARTIAL_WORKER_NAME = 'filePartial';
2
2
  export const FILE_STREAMING_WORKER_NAME = 'fileStreaming';
3
3
  export const THRESHOLD = 10000;
4
+ export const IDB_DIR_HANDLE_KEY = 'indexed_db_directory_handle_key';
5
+ export const FILE_SYSTEM_ROUTES = {
6
+ Partial: 'partial'
7
+ };
@@ -6,6 +6,7 @@ declare const filePartial: {
6
6
  endByte: number;
7
7
  };
8
8
  headers?: Record<string, string>;
9
+ directoryHandle?: FileSystemDirectoryHandle;
9
10
  }, callBack: (data: {
10
11
  url: string;
11
12
  fileArraybuffer: Uint8Array;
@@ -1,13 +1,27 @@
1
1
  import { CustomError } from '../../classes/customClasses';
2
+ import { readFile, writeFile, createPartialFileName } from '../../fileAccessSystemUtils';
2
3
  const filePartial = {
3
4
  async partial(args, callBack) {
4
- const { url, offsets, headers } = args;
5
+ const { url, offsets, headers, directoryHandle } = args;
5
6
  if (offsets?.startByte && offsets?.endByte) {
6
7
  headers['Range'] = `bytes=${offsets.startByte}-${offsets.endByte - 1}`;
7
8
  }
9
+ const storageName = createPartialFileName(url, offsets);
10
+ if (directoryHandle) {
11
+ const file = await readFile(directoryHandle, storageName, offsets);
12
+ if (file) {
13
+ callBack({ url, fileArraybuffer: new Uint8Array(file), offsets });
14
+ return;
15
+ }
16
+ }
8
17
  await fetch(url, { headers })
9
18
  .then((response) => response.arrayBuffer())
10
- .then((data) => callBack({ url, fileArraybuffer: new Uint8Array(data), offsets }))
19
+ .then((data) => {
20
+ callBack({ url, fileArraybuffer: new Uint8Array(data), offsets });
21
+ if (directoryHandle) {
22
+ writeFile(directoryHandle, storageName, data);
23
+ }
24
+ })
11
25
  .catch((error) => {
12
26
  throw new CustomError('filePartial.ts: Error when fetching file: ' + error?.message);
13
27
  });
@@ -7,6 +7,7 @@ declare const fileStreaming: {
7
7
  url: string;
8
8
  headers?: Record<string, string>;
9
9
  useSharedArrayBuffer?: boolean;
10
+ directoryHandle?: FileSystemDirectoryHandle;
10
11
  }, callBack: (data: {
11
12
  url: string;
12
13
  position: number;
@@ -1,4 +1,5 @@
1
1
  import { CustomError } from '../../classes/customClasses';
2
+ import { createStreamingFileName, readFile, writeFile } from '../../fileAccessSystemUtils';
2
3
  const fileStreaming = {
3
4
  maxFetchSize: 4 * 1024 * 1024 * 1024,
4
5
  fetchedSize: 0,
@@ -13,11 +14,19 @@ const fileStreaming = {
13
14
  }
14
15
  },
15
16
  async stream(args, callBack) {
16
- const { url, headers, useSharedArrayBuffer } = args;
17
+ const { url, headers, useSharedArrayBuffer, directoryHandle } = args;
17
18
  const controller = new AbortController();
18
19
  let sharedArraybuffer = null;
19
20
  let fileArraybuffer = null;
20
21
  try {
22
+ const fileName = createStreamingFileName(url);
23
+ if (directoryHandle) {
24
+ const file = await readFile(directoryHandle, fileName);
25
+ if (file) {
26
+ callBack({ url, position: file.byteLength, fileArraybuffer: new Uint8Array(file) });
27
+ return;
28
+ }
29
+ }
21
30
  const response = await fetch(url, {
22
31
  headers: { ...headers },
23
32
  signal: controller.signal
@@ -76,6 +85,9 @@ const fileStreaming = {
76
85
  chunk: !useSharedArrayBuffer ? chunk : undefined
77
86
  });
78
87
  }
88
+ if (directoryHandle) {
89
+ writeFile(directoryHandle, fileName, fileArraybuffer.slice().buffer);
90
+ }
79
91
  }
80
92
  }
81
93
  catch (error) {
@@ -0,0 +1,12 @@
1
+ export declare function getDirectoryHandle(): Promise<FileSystemDirectoryHandle>;
2
+ export declare function readFile(directoryHandle: FileSystemDirectoryHandle, name: string, offsets?: {
3
+ startByte: number;
4
+ endByte: number;
5
+ }): Promise<ArrayBuffer>;
6
+ export declare function writeFile(directoryHandle: FileSystemDirectoryHandle, name: string, file: ArrayBuffer): Promise<void>;
7
+ export declare function clearPartialFiles(): Promise<void>;
8
+ export declare function createStreamingFileName(url: string): string;
9
+ export declare function createPartialFileName(url: string, offsets?: {
10
+ startByte: number;
11
+ endByte: number;
12
+ }): string;
@@ -0,0 +1,84 @@
1
+ import { get } from 'idb-keyval';
2
+ import { FILE_SYSTEM_ROUTES, IDB_DIR_HANDLE_KEY } from './constants/dataRetrieval';
3
+ let directoryHandle;
4
+ export async function getDirectoryHandle() {
5
+ try {
6
+ if (!directoryHandle) {
7
+ directoryHandle = (await get(IDB_DIR_HANDLE_KEY));
8
+ }
9
+ if (!directoryHandle) {
10
+ directoryHandle = await navigator.storage.getDirectory();
11
+ }
12
+ return directoryHandle;
13
+ }
14
+ catch (error) {
15
+ console.warn(`Error getting directoryhandle: ${error.message}`);
16
+ }
17
+ }
18
+ export async function readFile(directoryHandle, name, offsets) {
19
+ if (!name) {
20
+ return;
21
+ }
22
+ let pathParts = name.split('/');
23
+ let currentDir = directoryHandle;
24
+ try {
25
+ for (let i = 0; i < pathParts.length - 1; i++) {
26
+ currentDir = await currentDir.getDirectoryHandle(pathParts[i]);
27
+ }
28
+ const fileName = pathParts.at(-1);
29
+ const fileHandle = await currentDir.getFileHandle(fileName);
30
+ return await fileHandle.getFile().then((file) => file.arrayBuffer());
31
+ }
32
+ catch (error) {
33
+ console.warn(`Error reading the file ${name}: ${error.message}`);
34
+ if (offsets && pathParts[0] === FILE_SYSTEM_ROUTES.Partial) {
35
+ try {
36
+ const seriesInstanceUID = pathParts.at(-1).slice(0, name.lastIndexOf('.')).split('_')[0];
37
+ pathParts = pathParts.slice(1);
38
+ for (let i = 0; i < pathParts.length - 1; i++) {
39
+ currentDir = await currentDir.getDirectoryHandle(pathParts[i]);
40
+ }
41
+ const fileHandle = await directoryHandle.getFileHandle(seriesInstanceUID + '.tar');
42
+ const fileArraybuffer = await fileHandle.getFile().then((file) => file.arrayBuffer());
43
+ return fileArraybuffer.slice(offsets.startByte, offsets.endByte);
44
+ }
45
+ catch (error) {
46
+ console.warn(`Error reading the file ${name}: ${error.message}`);
47
+ }
48
+ }
49
+ }
50
+ }
51
+ export async function writeFile(directoryHandle, name, file) {
52
+ try {
53
+ const pathParts = name.split('/');
54
+ let currentDir = directoryHandle;
55
+ for (let i = 0; i < pathParts.length - 1; i++) {
56
+ currentDir = await currentDir.getDirectoryHandle(pathParts[i], { create: true });
57
+ }
58
+ const fileName = pathParts[pathParts.length - 1];
59
+ const fileHandle = await currentDir.getFileHandle(fileName, { create: true });
60
+ // @ts-ignore
61
+ const fileWritable = await fileHandle.createWritable();
62
+ await fileWritable.write(file);
63
+ await fileWritable.close();
64
+ }
65
+ catch (error) {
66
+ console.warn(`Error writing the file ${name}: ${error.message}`);
67
+ }
68
+ }
69
+ export async function clearPartialFiles() {
70
+ try {
71
+ await directoryHandle.removeEntry(FILE_SYSTEM_ROUTES.Partial, { recursive: true });
72
+ }
73
+ catch (error) {
74
+ console.warn(`Error clearing partial files: ${error.message}`);
75
+ }
76
+ }
77
+ export function createStreamingFileName(url) {
78
+ return url.split('series/')[1];
79
+ }
80
+ export function createPartialFileName(url, offsets) {
81
+ const seriesInstanceUID = url.split('series/')[1].split('.tar')[0];
82
+ const offsetPart = `${offsets ? `_${offsets?.startByte}_${offsets?.endByte}` : ''}`;
83
+ return `${FILE_SYSTEM_ROUTES.Partial}/${seriesInstanceUID}${offsetPart}.dcm`;
84
+ }
@@ -1,8 +1,10 @@
1
1
  import { FetchType } from './constants/enums';
2
2
  import { CodDicomWebServer } from './classes';
3
- export { FetchType, CodDicomWebServer };
3
+ import { clearPartialFiles } from './fileAccessSystemUtils';
4
+ export { FetchType, CodDicomWebServer, clearPartialFiles };
4
5
  declare const _default: {
5
6
  FetchType: typeof FetchType;
6
7
  CodDicomWebServer: typeof CodDicomWebServer;
8
+ clearPartialFiles: typeof clearPartialFiles;
7
9
  };
8
10
  export default _default;
package/dist/esm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { FetchType } from './constants/enums';
2
2
  import { CodDicomWebServer } from './classes';
3
- export { FetchType, CodDicomWebServer };
4
- export default { FetchType, CodDicomWebServer };
3
+ import { clearPartialFiles } from './fileAccessSystemUtils';
4
+ export { FetchType, CodDicomWebServer, clearPartialFiles };
5
+ export default { FetchType, CodDicomWebServer, clearPartialFiles };
@@ -1,9 +1,9 @@
1
1
  import type { JsonMetadata, MetadataUrlCreationParams } from './types';
2
2
  declare class MetadataManager {
3
- private metadata;
3
+ private metadataPromises;
4
4
  constructor();
5
5
  addDeidMetadata(jsonMetadata: JsonMetadata): void;
6
- getMetadataFromCache(url: string): JsonMetadata;
6
+ getMetadataFromCache(url: string): Promise<JsonMetadata>;
7
7
  getMetadata(params: MetadataUrlCreationParams, headers: Record<string, string>): Promise<JsonMetadata | null>;
8
8
  }
9
9
  export default MetadataManager;
@@ -1,7 +1,7 @@
1
1
  import { CustomError } from './classes/customClasses';
2
2
  import { createMetadataJsonUrl } from './classes/utils';
3
3
  class MetadataManager {
4
- metadata = {};
4
+ metadataPromises = {};
5
5
  constructor() { }
6
6
  addDeidMetadata(jsonMetadata) {
7
7
  const { deid_study_uid, deid_series_uid, cod } = jsonMetadata;
@@ -17,7 +17,7 @@ class MetadataManager {
17
17
  }
18
18
  }
19
19
  getMetadataFromCache(url) {
20
- return this.metadata[url];
20
+ return this.metadataPromises[url];
21
21
  }
22
22
  async getMetadata(params, headers) {
23
23
  const url = createMetadataJsonUrl(params);
@@ -26,17 +26,21 @@ class MetadataManager {
26
26
  }
27
27
  const cachedMetadata = this.getMetadataFromCache(url);
28
28
  if (cachedMetadata) {
29
- return cachedMetadata;
29
+ return await cachedMetadata;
30
30
  }
31
31
  try {
32
- const response = await fetch(url, { headers });
33
- if (!response.ok) {
34
- throw new CustomError(`Failed to fetch metadata: ${response.statusText}`);
35
- }
36
- const data = await response.json();
37
- this.addDeidMetadata(data);
38
- this.metadata[url] = data;
39
- return data;
32
+ this.metadataPromises[url] = fetch(url, { headers })
33
+ .then((response) => {
34
+ if (!response.ok) {
35
+ throw new CustomError(`Failed to fetch metadata: ${response.statusText}`);
36
+ }
37
+ return response.json();
38
+ })
39
+ .then((data) => {
40
+ this.addDeidMetadata(data);
41
+ return data;
42
+ });
43
+ return await this.metadataPromises[url];
40
44
  }
41
45
  catch (error) {
42
46
  console.error(error);
@@ -1,6 +1,7 @@
1
1
  type CodDicomWebServerOptions = {
2
- [key: string]: number | string;
2
+ [key: string]: number | string | boolean;
3
3
  maxWorkerFetchSize: number;
4
4
  domain: string;
5
+ enableLocalCache: boolean;
5
6
  };
6
7
  export type { CodDicomWebServerOptions };
@@ -0,0 +1,19 @@
1
+ /*!
2
+ *
3
+ * cod-dicomweb-server v1.3.4
4
+ * git+https://github.com/gradienthealth/cod-dicomweb-server.git
5
+ *
6
+ * Copyright (c) Adithyan Dinesh and project contributors.
7
+ *
8
+ * This source code is licensed under the MIT license found in the
9
+ * LICENSE file in the root directory of this source tree.
10
+ *
11
+ */
12
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}(self,(()=>(()=>{"use strict";
13
+ /**
14
+ * @license
15
+ * Copyright 2019 Google LLC
16
+ * SPDX-License-Identifier: Apache-2.0
17
+ */
18
+ const t=Symbol("Comlink.proxy"),e=Symbol("Comlink.endpoint"),r=Symbol("Comlink.releaseProxy"),n=Symbol("Comlink.finalizer"),o=Symbol("Comlink.thrown"),i=t=>"object"==typeof t&&null!==t||"function"==typeof t,a={canHandle:e=>i(e)&&e[t],serialize(t){const{port1:e,port2:r}=new MessageChannel;return u(t,e),[r,[r]]},deserialize:t=>(t.start(),function(t,e){const r=new Map;return t.addEventListener("message",(function(t){const{data:e}=t;if(!e||!e.id)return;const n=r.get(e.id);if(n)try{n(e)}finally{r.delete(e.id)}})),y(t,r,[],e)}(t))},c=new Map([["proxy",a],["throw",{canHandle:t=>i(t)&&o in t,serialize({value:t}){let e;return e=t instanceof Error?{isError:!0,value:{message:t.message,name:t.name,stack:t.stack}}:{isError:!1,value:t},[e,[]]},deserialize(t){if(t.isError)throw Object.assign(new Error(t.value.message),t.value);throw t.value}}]]);function u(e,r=globalThis,i=["*"]){r.addEventListener("message",(function a(c){if(!c||!c.data)return;if(!function(t,e){for(const r of t){if(e===r||"*"===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}return!1}(i,c.origin))return void console.warn(`Invalid origin '${c.origin}' for comlink proxy`);const{id:f,type:l,path:p}=Object.assign({path:[]},c.data),h=(c.data.argumentList||[]).map(m);let y;try{const r=p.slice(0,-1).reduce(((t,e)=>t[e]),e),n=p.reduce(((t,e)=>t[e]),e);switch(l){case"GET":y=n;break;case"SET":r[p.slice(-1)[0]]=m(c.data.value),y=!0;break;case"APPLY":y=n.apply(r,h);break;case"CONSTRUCT":y=function(e){return Object.assign(e,{[t]:!0})}(new n(...h));break;case"ENDPOINT":{const{port1:t,port2:r}=new MessageChannel;u(e,r),y=function(t,e){return d.set(t,e),t}(t,[t])}break;case"RELEASE":y=void 0;break;default:return}}catch(t){y={value:t,[o]:0}}Promise.resolve(y).catch((t=>({value:t,[o]:0}))).then((t=>{const[o,i]=g(t);r.postMessage(Object.assign(Object.assign({},o),{id:f}),i),"RELEASE"===l&&(r.removeEventListener("message",a),s(r),n in e&&"function"==typeof e[n]&&e[n]())})).catch((t=>{const[e,n]=g({value:new TypeError("Unserializable return value"),[o]:0});r.postMessage(Object.assign(Object.assign({},e),{id:f}),n)}))})),r.start&&r.start()}function s(t){(function(t){return"MessagePort"===t.constructor.name})(t)&&t.close()}function f(t){if(t)throw new Error("Proxy has been released and is not useable")}function l(t){return b(t,new Map,{type:"RELEASE"}).then((()=>{s(t)}))}const p=new WeakMap,h="FinalizationRegistry"in globalThis&&new FinalizationRegistry((t=>{const e=(p.get(t)||0)-1;p.set(t,e),0===e&&l(t)}));function y(t,n,o=[],i=function(){}){let a=!1;const c=new Proxy(i,{get(e,i){if(f(a),i===r)return()=>{!function(t){h&&h.unregister(t)}(c),l(t),n.clear(),a=!0};if("then"===i){if(0===o.length)return{then:()=>c};const e=b(t,n,{type:"GET",path:o.map((t=>t.toString()))}).then(m);return e.then.bind(e)}return y(t,n,[...o,i])},set(e,r,i){f(a);const[c,u]=g(i);return b(t,n,{type:"SET",path:[...o,r].map((t=>t.toString())),value:c},u).then(m)},apply(r,i,c){f(a);const u=o[o.length-1];if(u===e)return b(t,n,{type:"ENDPOINT"}).then(m);if("bind"===u)return y(t,n,o.slice(0,-1));const[s,l]=v(c);return b(t,n,{type:"APPLY",path:o.map((t=>t.toString())),argumentList:s},l).then(m)},construct(e,r){f(a);const[i,c]=v(r);return b(t,n,{type:"CONSTRUCT",path:o.map((t=>t.toString())),argumentList:i},c).then(m)}});return function(t,e){const r=(p.get(e)||0)+1;p.set(e,r),h&&h.register(t,e,t)}(c,t),c}function v(t){const e=t.map(g);return[e.map((t=>t[0])),(r=e.map((t=>t[1])),Array.prototype.concat.apply([],r))];var r}const d=new WeakMap;function g(t){for(const[e,r]of c)if(r.canHandle(t)){const[n,o]=r.serialize(t);return[{type:"HANDLER",name:e,value:n},o]}return[{type:"RAW",value:t},d.get(t)||[]]}function m(t){switch(t.type){case"HANDLER":return c.get(t.name).deserialize(t.value);case"RAW":return t.value}}function b(t,e,r,n){return new Promise((o=>{const i=new Array(4).fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-");e.set(i,o),t.start&&t.start(),t.postMessage(Object.assign({id:i},r),n)}))}function w(t){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},w(t)}function x(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,O(n.key),n)}}function E(t,e,r){return e&&x(t.prototype,e),r&&x(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function O(t){var e=function(t,e){if("object"!=w(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=w(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==w(e)?e:e+""}function L(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function j(t,e,r){return e=T(e),function(t,e){if(e&&("object"==w(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,k()?Reflect.construct(e,r||[],T(t).constructor):e.apply(t,r))}function S(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_(t,e)}function P(t){var e="function"==typeof Map?new Map:void 0;return P=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return function(t,e,r){if(k())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return r&&_(o,r.prototype),o}(t,arguments,T(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),_(r,t)},P(t)}function k(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(k=function(){return!!t})()}function _(t,e){return _=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_(t,e)}function T(t){return T=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},T(t)}var N=function(t){function e(){return L(this,e),j(this,e,arguments)}return S(e,t),E(e)}(P(Error)),A="partial";function F(t){return F="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},F(t)}function G(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */G=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var i=e&&e.prototype instanceof g?e:g,a=Object.create(i.prototype),c=new T(n||[]);return o(a,"_invoke",{value:S(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=f;var p="suspendedStart",h="suspendedYield",y="executing",v="completed",d={};function g(){}function m(){}function b(){}var w={};s(w,a,(function(){return this}));var x=Object.getPrototypeOf,E=x&&x(x(N([])));E&&E!==r&&n.call(E,a)&&(w=E);var O=b.prototype=g.prototype=Object.create(w);function L(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function j(t,e){function r(o,i,a,c){var u=l(t[o],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==F(f)&&n.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function S(e,r,n){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=P(c,n);if(u){if(u===d)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var s=l(e,r,n);if("normal"===s.type){if(o=n.done?v:h,s.arg===d)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=v,n.method="throw",n.arg=s.arg)}}}function P(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,P(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),d;var i=l(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,d;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,d):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,d)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function _(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function N(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(F(e)+" is not iterable")}return m.prototype=b,o(O,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:m,configurable:!0}),m.displayName=s(b,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===m||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,s(t,u,"GeneratorFunction")),t.prototype=Object.create(O),t},e.awrap=function(t){return{__await:t}},L(j.prototype),s(j.prototype,c,(function(){return this})),e.AsyncIterator=j,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new j(f(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},L(O),s(O,u,"Generator"),s(O,a,(function(){return this})),s(O,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=N,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(_),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(u&&s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,d):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),d},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),_(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;_(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:N(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),d}},e}function R(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function M(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){R(i,n,o,a,c,"next",t)}function c(t){R(i,n,o,a,c,"throw",t)}a(void 0)}))}}function B(t,e,r){return C.apply(this,arguments)}function C(){return C=M(G().mark((function t(e,r,n){var o,i,a,c,u,s,f,l,p;return G().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r){t.next=2;break}return t.abrupt("return");case 2:o=r.split("/"),i=e,t.prev=4,a=0;case 6:if(!(a<o.length-1)){t.next=13;break}return t.next=9,i.getDirectoryHandle(o[a]);case 9:i=t.sent;case 10:a++,t.next=6;break;case 13:return c=o.at(-1),t.next=16,i.getFileHandle(c);case 16:return u=t.sent,t.next=19,u.getFile().then((function(t){return t.arrayBuffer()}));case 19:return t.abrupt("return",t.sent);case 22:if(t.prev=22,t.t0=t.catch(4),console.warn("Error reading the file ".concat(r,": ").concat(t.t0.message)),!n||o[0]!==A){t.next=49;break}t.prev=26,s=o.at(-1).slice(0,r.lastIndexOf(".")).split("_")[0],o=o.slice(1),f=0;case 30:if(!(f<o.length-1)){t.next=37;break}return t.next=33,i.getDirectoryHandle(o[f]);case 33:i=t.sent;case 34:f++,t.next=30;break;case 37:return t.next=39,e.getFileHandle(s+".tar");case 39:return l=t.sent,t.next=42,l.getFile().then((function(t){return t.arrayBuffer()}));case 42:return p=t.sent,t.abrupt("return",p.slice(n.startByte,n.endByte));case 46:t.prev=46,t.t1=t.catch(26),console.warn("Error reading the file ".concat(r,": ").concat(t.t1.message));case 49:case"end":return t.stop()}}),t,null,[[4,22],[26,46]])}))),C.apply(this,arguments)}function D(t,e,r){return H.apply(this,arguments)}function H(){return H=M(G().mark((function t(e,r,n){var o,i,a,c,u,s;return G().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:t.prev=0,o=r.split("/"),i=e,a=0;case 4:if(!(a<o.length-1)){t.next=11;break}return t.next=7,i.getDirectoryHandle(o[a],{create:!0});case 7:i=t.sent;case 8:a++,t.next=4;break;case 11:return c=o[o.length-1],t.next=14,i.getFileHandle(c,{create:!0});case 14:return u=t.sent,t.next=17,u.createWritable();case 17:return s=t.sent,t.next=20,s.write(n);case 20:return t.next=22,s.close();case 22:t.next=27;break;case 24:t.prev=24,t.t0=t.catch(0),console.warn("Error writing the file ".concat(r,": ").concat(t.t0.message));case 27:case"end":return t.stop()}}),t,null,[[0,24]])}))),H.apply(this,arguments)}function I(t,e){var r=t.split("series/")[1].split(".tar")[0],n="".concat(e?"_".concat(null==e?void 0:e.startByte,"_").concat(null==e?void 0:e.endByte):"");return"".concat(A,"/").concat(r).concat(n,".dcm")}function z(t){return z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},z(t)}function Y(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */Y=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var i=e&&e.prototype instanceof g?e:g,a=Object.create(i.prototype),c=new T(n||[]);return o(a,"_invoke",{value:S(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=f;var p="suspendedStart",h="suspendedYield",y="executing",v="completed",d={};function g(){}function m(){}function b(){}var w={};s(w,a,(function(){return this}));var x=Object.getPrototypeOf,E=x&&x(x(N([])));E&&E!==r&&n.call(E,a)&&(w=E);var O=b.prototype=g.prototype=Object.create(w);function L(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function j(t,e){function r(o,i,a,c){var u=l(t[o],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==z(f)&&n.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function S(e,r,n){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=P(c,n);if(u){if(u===d)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var s=l(e,r,n);if("normal"===s.type){if(o=n.done?v:h,s.arg===d)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=v,n.method="throw",n.arg=s.arg)}}}function P(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,P(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),d;var i=l(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,d;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,d):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,d)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function _(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function N(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(z(e)+" is not iterable")}return m.prototype=b,o(O,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:m,configurable:!0}),m.displayName=s(b,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===m||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,s(t,u,"GeneratorFunction")),t.prototype=Object.create(O),t},e.awrap=function(t){return{__await:t}},L(j.prototype),s(j.prototype,c,(function(){return this})),e.AsyncIterator=j,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new j(f(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},L(O),s(O,u,"Generator"),s(O,a,(function(){return this})),s(O,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=N,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(_),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(u&&s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,d):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),d},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),_(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;_(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:N(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),d}},e}function U(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}var W={partial:function(t,e){return(r=Y().mark((function r(){var n,o,i,a,c,u;return Y().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(n=t.url,o=t.offsets,i=t.headers,a=t.directoryHandle,null!=o&&o.startByte&&null!=o&&o.endByte&&(i.Range="bytes=".concat(o.startByte,"-").concat(o.endByte-1)),c=I(n,o),!a){r.next=10;break}return r.next=6,B(a,c,o);case 6:if(!(u=r.sent)){r.next=10;break}return e({url:n,fileArraybuffer:new Uint8Array(u),offsets:o}),r.abrupt("return");case 10:return r.next=12,fetch(n,{headers:i}).then((function(t){return t.arrayBuffer()})).then((function(t){e({url:n,fileArraybuffer:new Uint8Array(t),offsets:o}),a&&D(a,c,t)})).catch((function(t){throw new N("filePartial.ts: Error when fetching file: "+(null==t?void 0:t.message))}));case 12:case"end":return r.stop()}}),r)})),function(){var t=this,e=arguments;return new Promise((function(n,o){var i=r.apply(t,e);function a(t){U(i,n,o,a,c,"next",t)}function c(t){U(i,n,o,a,c,"throw",t)}a(void 0)}))})();var r}};const X=W;function $(t){return $="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},$(t)}function q(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function J(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?q(Object(r),!0).forEach((function(e){K(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):q(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function K(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=$(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=$(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==$(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}return u(J(J({},X),{},{partial:function(t){return X.partial(t,postMessage)}})),{}})()));
19
+ //# sourceMappingURL=563.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"563.js","mappings":"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","sources":["webpack://cod-dicomweb-server/webpack/universalModuleDefinition","webpack://cod-dicomweb-server/./node_modules/comlink/dist/esm/comlink.mjs","webpack://cod-dicomweb-server/./src/classes/customClasses.ts","webpack://cod-dicomweb-server/./src/constants/dataRetrieval.ts","webpack://cod-dicomweb-server/./src/fileAccessSystemUtils.ts","webpack://cod-dicomweb-server/./src/dataRetrieval/scripts/filePartial.ts","webpack://cod-dicomweb-server/./src/dataRetrieval/workers/filePartialWorker.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n}\nfunction isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n}\nfunction wrap(ep, target) {\n const pendingListeners = new Map();\n ep.addEventListener(\"message\", function handleMessage(ev) {\n const { data } = ev;\n if (!data || !data.id) {\n return;\n }\n const resolver = pendingListeners.get(data.id);\n if (!resolver) {\n return;\n }\n try {\n resolver(data);\n }\n finally {\n pendingListeners.delete(data.id);\n }\n });\n return createProxy(ep, pendingListeners, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\nfunction releaseEndpoint(ep) {\n return requestResponseMessage(ep, new Map(), {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\nfunction registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n}\nfunction unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n}\nfunction createProxy(ep, pendingListeners, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n pendingListeners.clear();\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, pendingListeners, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, pendingListeners, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, pendingListeners, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn’t happen.\n if (last === \"bind\") {\n return createProxy(ep, pendingListeners, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n}\nfunction myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n}\nfunction proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction windowEndpoint(w, context = globalThis, targetOrigin = \"*\") {\n return {\n postMessage: (msg, transferables) => w.postMessage(msg, targetOrigin, transferables),\n addEventListener: context.addEventListener.bind(context),\n removeEventListener: context.removeEventListener.bind(context),\n };\n}\nfunction toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\nfunction fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n}\nfunction requestResponseMessage(ep, pendingListeners, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n pendingListeners.set(id, resolve);\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n}\nfunction generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}\n\nexport { createEndpoint, expose, finalizer, proxy, proxyMarker, releaseProxy, transfer, transferHandlers, windowEndpoint, wrap };\n//# sourceMappingURL=comlink.mjs.map\n","export class CustomError extends Error {}\n\nexport class CustomErrorEvent extends Event {\n error: CustomError;\n message: string;\n\n constructor(message: string, error: CustomError) {\n super(message);\n this.message = message;\n this.error = error;\n }\n}\n\nexport class CustomMessageEvent extends MessageEvent<{\n url: string;\n position: number;\n chunk?: Uint8Array;\n isAppending?: boolean;\n fileArraybuffer?: Uint8Array;\n offsets?: { startByte: number; endByte: number };\n}> {}\n","export const FILE_PARTIAL_WORKER_NAME = 'filePartial';\nexport const FILE_STREAMING_WORKER_NAME = 'fileStreaming';\n\nexport const THRESHOLD = 10000;\n\nexport const IDB_DIR_HANDLE_KEY = 'indexed_db_directory_handle_key';\n\nexport const FILE_SYSTEM_ROUTES = {\n Partial: 'partial'\n};\n","import { get } from 'idb-keyval';\nimport { FILE_SYSTEM_ROUTES, IDB_DIR_HANDLE_KEY } from './constants/dataRetrieval';\n\nlet directoryHandle: FileSystemDirectoryHandle;\n\nexport async function getDirectoryHandle(): Promise<FileSystemDirectoryHandle> {\n try {\n if (!directoryHandle) {\n directoryHandle = (await get(IDB_DIR_HANDLE_KEY)) as FileSystemDirectoryHandle;\n }\n\n if (!directoryHandle) {\n directoryHandle = await navigator.storage.getDirectory();\n }\n\n return directoryHandle;\n } catch (error) {\n console.warn(`Error getting directoryhandle: ${error.message}`);\n }\n}\n\nexport async function readFile(\n directoryHandle: FileSystemDirectoryHandle,\n name: string,\n offsets?: { startByte: number; endByte: number }\n): Promise<ArrayBuffer> {\n if (!name) {\n return;\n }\n\n let pathParts = name.split('/');\n let currentDir = directoryHandle;\n\n try {\n for (let i = 0; i < pathParts.length - 1; i++) {\n currentDir = await currentDir.getDirectoryHandle(pathParts[i]);\n }\n\n const fileName = pathParts.at(-1);\n const fileHandle = await currentDir.getFileHandle(fileName);\n return await fileHandle.getFile().then((file) => file.arrayBuffer());\n } catch (error) {\n console.warn(`Error reading the file ${name}: ${error.message}`);\n\n if (offsets && pathParts[0] === FILE_SYSTEM_ROUTES.Partial) {\n try {\n const seriesInstanceUID = pathParts.at(-1).slice(0, name.lastIndexOf('.')).split('_')[0];\n pathParts = pathParts.slice(1);\n\n for (let i = 0; i < pathParts.length - 1; i++) {\n currentDir = await currentDir.getDirectoryHandle(pathParts[i]);\n }\n\n const fileHandle = await directoryHandle.getFileHandle(seriesInstanceUID + '.tar');\n const fileArraybuffer = await fileHandle.getFile().then((file) => file.arrayBuffer());\n return fileArraybuffer.slice(offsets.startByte, offsets.endByte);\n } catch (error) {\n console.warn(`Error reading the file ${name}: ${error.message}`);\n }\n }\n }\n}\n\nexport async function writeFile(directoryHandle: FileSystemDirectoryHandle, name: string, file: ArrayBuffer): Promise<void> {\n try {\n const pathParts = name.split('/');\n let currentDir = directoryHandle;\n\n for (let i = 0; i < pathParts.length - 1; i++) {\n currentDir = await currentDir.getDirectoryHandle(pathParts[i], { create: true });\n }\n\n const fileName = pathParts[pathParts.length - 1];\n const fileHandle = await currentDir.getFileHandle(fileName, { create: true });\n // @ts-ignore\n const fileWritable = await fileHandle.createWritable();\n await fileWritable.write(file);\n await fileWritable.close();\n } catch (error) {\n console.warn(`Error writing the file ${name}: ${error.message}`);\n }\n}\n\nexport async function clearPartialFiles(): Promise<void> {\n try {\n await directoryHandle.removeEntry(FILE_SYSTEM_ROUTES.Partial, { recursive: true });\n } catch (error) {\n console.warn(`Error clearing partial files: ${error.message}`);\n }\n}\n\nexport function createStreamingFileName(url: string): string {\n return url.split('series/')[1];\n}\n\nexport function createPartialFileName(url: string, offsets?: { startByte: number; endByte: number }): string {\n const seriesInstanceUID = url.split('series/')[1].split('.tar')[0];\n const offsetPart = `${offsets ? `_${offsets?.startByte}_${offsets?.endByte}` : ''}`;\n return `${FILE_SYSTEM_ROUTES.Partial}/${seriesInstanceUID}${offsetPart}.dcm`;\n}\n","import { CustomError } from '../../classes/customClasses';\nimport { readFile, writeFile, createPartialFileName } from '../../fileAccessSystemUtils';\n\nconst filePartial = {\n async partial(\n args: {\n url: string;\n offsets?: { startByte: number; endByte: number };\n headers?: Record<string, string>;\n directoryHandle?: FileSystemDirectoryHandle;\n },\n callBack: (data: { url: string; fileArraybuffer: Uint8Array; offsets: { startByte: number; endByte: number } }) => void\n ): Promise<void | Error> {\n const { url, offsets, headers, directoryHandle } = args;\n if (offsets?.startByte && offsets?.endByte) {\n headers['Range'] = `bytes=${offsets.startByte}-${offsets.endByte - 1}`;\n }\n\n const storageName = createPartialFileName(url, offsets);\n\n if (directoryHandle) {\n const file = await readFile(directoryHandle, storageName, offsets);\n if (file) {\n callBack({ url, fileArraybuffer: new Uint8Array(file), offsets });\n return;\n }\n }\n\n await fetch(url, { headers })\n .then((response) => response.arrayBuffer())\n .then((data) => {\n callBack({ url, fileArraybuffer: new Uint8Array(data), offsets });\n\n if (directoryHandle) {\n writeFile(directoryHandle, storageName, data);\n }\n })\n .catch((error) => {\n throw new CustomError('filePartial.ts: Error when fetching file: ' + error?.message);\n });\n }\n};\n\nexport default filePartial;\n","import { expose } from 'comlink';\nimport filePartial from '../scripts/filePartial';\n\nconst filePartialWorker = {\n ...filePartial,\n partial: (args: any) => filePartial.partial(args, postMessage)\n};\n\nexpose(filePartialWorker);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","proxyMarker","Symbol","createEndpoint","releaseProxy","finalizer","throwMarker","isObject","val","proxyTransferHandler","canHandle","serialize","obj","port1","port2","MessageChannel","expose","deserialize","port","start","ep","target","pendingListeners","Map","addEventListener","ev","data","id","resolver","get","delete","createProxy","wrap","transferHandlers","value","serialized","Error","isError","message","name","stack","Object","assign","globalThis","allowedOrigins","callback","origin","allowedOrigin","RegExp","test","isAllowedOrigin","console","warn","type","path","argumentList","map","fromWireValue","returnValue","parent","slice","reduce","prop","rawValue","apply","proxy","transfers","transferCache","set","transfer","undefined","Promise","resolve","catch","then","wireValue","transferables","toWireValue","postMessage","removeEventListener","closeEndPoint","error","TypeError","endpoint","constructor","isMessagePort","close","throwIfProxyReleased","isReleased","releaseEndpoint","requestResponseMessage","proxyCounter","WeakMap","proxyFinalizers","FinalizationRegistry","newCount","isProxyReleased","Proxy","_target","unregister","unregisterProxy","clear","length","r","p","toString","bind","_thisArg","rawArgumentList","last","processArguments","construct","register","registerProxy","processed","v","arr","Array","prototype","concat","handler","serializedValue","msg","fill","Math","floor","random","Number","MAX_SAFE_INTEGER","join","CustomError","_Error","_classCallCheck","_callSuper","arguments","_inherits","_createClass","_wrapNativeSuper","FILE_SYSTEM_ROUTES","_regeneratorRuntime","e","t","n","hasOwnProperty","o","defineProperty","iterator","c","asyncIterator","u","toStringTag","enumerable","configurable","writable","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","d","getPrototypeOf","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","__await","callInvokeWithMethodAndArg","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","_asyncToGenerator","_next","_throw","readFile","_x","_x2","_x3","_readFile","_callee2","directoryHandle","offsets","pathParts","currentDir","fileName","fileHandle","seriesInstanceUID","_i","_fileHandle","fileArraybuffer","_context2","split","getDirectoryHandle","at","getFileHandle","getFile","file","arrayBuffer","t0","lastIndexOf","startByte","endByte","t1","writeFile","_x4","_x5","_x6","_writeFile","_callee3","fileWritable","_context3","createWritable","write","createPartialFileName","url","offsetPart","filePartial","partial","args","callBack","_callee","headers","storageName","_context","Uint8Array","fetch","response","_objectSpread"],"sourceRoot":""}