@omnistreamai/data-adapter-webdav 0.3.6 → 0.4.0

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/index.d.mts CHANGED
@@ -25,10 +25,14 @@ declare class WebDAVAdapter implements RemoteAdapter {
25
25
  * Send request
26
26
  */
27
27
  private request;
28
+ /**
29
+ * Create path if not exists
30
+ */
31
+ private createPathIfNotExists;
28
32
  /**
29
33
  * Initialize store
30
34
  */
31
- initStore(storeName: string, _indexes?: string[], _idKey?: string): Promise<void>;
35
+ initStore(_storeName: string, _indexes?: string[], _idKey?: string): Promise<void>;
32
36
  /**
33
37
  * Add data
34
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/webdav-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;AACe,cADF,aAAA,YAAyB,aACvB,CAAA;EAQO,SAAA,IAAA,GARP,WAAA,CAAA,MAAA;EA+GV,SAAA,IAAA,GAAA,eAAA;EAiCiB,QAAA,OAAA;EAEZ;;;EAyBe,UAAA,CAAA,OAAA,EAnKH,aAmKG,CAAA,EAAA,IAAA;EAGP;;;EAEb,QAAA,UAAA;EAiCA;;;EA+BA,QAAA,QAAA;EAoBqB;;;EAIG,QAAA,OAAA;EAAhB;;;EAoH6B,SAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,CAAA,EAAA,MAAA,CAAA,EA7QrC,OA6QqC,CAAA,IAAA,CAAA;EAiDhB;;;gBA7RJ,kDAEZ,qBAEL,QAAQ;;;;mBAuBY,8DAGf,QAAQ,qBAEb,QAAQ;;;;yDAiCR;;;;oBA2BqB,yEAIrB,QAAQ;;;;oBAoBa,sDAEb,aAAa,sBAErB,QAAQ,gBAAgB;;;;;;;;;;;;4BAwGK;;;;gCAYQ;;;;oBAiDhB"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/webdav-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;AACe,cADF,aAAA,YAAyB,aACvB,CAAA;EAQO,SAAA,IAAA,GARP,WAAA,CAAA,MAAA;EAiJV,SAAA,IAAA,GAAA,eAAA;EAMiB,QAAA,OAAA;EAEZ;;;EAyBe,UAAA,CAAA,OAAA,EA1KH,aA0KG,CAAA,EAAA,IAAA;EAGP;;;EAEb,QAAA,UAAA;EAiCA;;;EA+BA,QAAA,QAAA;EAoBqB;;;EAIG,QAAA,OAAA;EAAhB;;;EAoH6B,QAAA,qBAAA;EAiDhB;;;uEAnSrB;;;;gBAMiB,kDAEZ,qBAEL,QAAQ;;;;mBAuBY,8DAGf,QAAQ,qBAEb,QAAQ;;;;yDAiCR;;;;oBA2BqB,yEAIrB,QAAQ;;;;oBAoBa,sDAEb,aAAa,sBAErB,QAAQ,gBAAgB;;;;;;;;;;;;4BAwGK;;;;gCAYQ;;;;oBAiDhB"}
package/dist/index.d.ts CHANGED
@@ -25,10 +25,14 @@ declare class WebDAVAdapter implements RemoteAdapter {
25
25
  * Send request
26
26
  */
27
27
  private request;
28
+ /**
29
+ * Create path if not exists
30
+ */
31
+ private createPathIfNotExists;
28
32
  /**
29
33
  * Initialize store
30
34
  */
31
- initStore(storeName: string, _indexes?: string[], _idKey?: string): Promise<void>;
35
+ initStore(_storeName: string, _indexes?: string[], _idKey?: string): Promise<void>;
32
36
  /**
33
37
  * Add data
34
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/webdav-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;AACe,cADF,aAAA,YAAyB,aACvB,CAAA;EAQO,SAAA,IAAA,GARP,WAAA,CAAA,MAAA;EA+GV,SAAA,IAAA,GAAA,eAAA;EAiCiB,QAAA,OAAA;EAEZ;;;EAyBe,UAAA,CAAA,OAAA,EAnKH,aAmKG,CAAA,EAAA,IAAA;EAGP;;;EAEb,QAAA,UAAA;EAiCA;;;EA+BA,QAAA,QAAA;EAoBqB;;;EAIG,QAAA,OAAA;EAAhB;;;EAoH6B,SAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,CAAA,EAAA,MAAA,CAAA,EA7QrC,OA6QqC,CAAA,IAAA,CAAA;EAiDhB;;;gBA7RJ,kDAEZ,qBAEL,QAAQ;;;;mBAuBY,8DAGf,QAAQ,qBAEb,QAAQ;;;;yDAiCR;;;;oBA2BqB,yEAIrB,QAAQ;;;;oBAoBa,sDAEb,aAAa,sBAErB,QAAQ,gBAAgB;;;;;;;;;;;;4BAwGK;;;;gCAYQ;;;;oBAiDhB"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/webdav-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;AACe,cADF,aAAA,YAAyB,aACvB,CAAA;EAQO,SAAA,IAAA,GARP,WAAA,CAAA,MAAA;EAiJV,SAAA,IAAA,GAAA,eAAA;EAMiB,QAAA,OAAA;EAEZ;;;EAyBe,UAAA,CAAA,OAAA,EA1KH,aA0KG,CAAA,EAAA,IAAA;EAGP;;;EAEb,QAAA,UAAA;EAiCA;;;EA+BA,QAAA,QAAA;EAoBqB;;;EAIG,QAAA,OAAA;EAAhB;;;EAoH6B,QAAA,qBAAA;EAiDhB;;;uEAnSrB;;;;gBAMiB,kDAEZ,qBAEL,QAAQ;;;;mBAuBY,8DAGf,QAAQ,qBAEb,QAAQ;;;;yDAiCR;;;;oBA2BqB,yEAIrB,QAAQ;;;;oBAoBa,sDAEb,aAAa,sBAErB,QAAQ,gBAAgB;;;;;;;;;;;;4BAwGK;;;;gCAYQ;;;;oBAiDhB"}
package/dist/index.js CHANGED
@@ -39,12 +39,12 @@ var WebDAVAdapter = class {
39
39
  */
40
40
  buildUrl(storeName) {
41
41
  if (!this.service) throw new Error("Service not configured. Call setService() first.");
42
- return `${this.service.endpoint.replace(/\/$/, "")}/${storeName}.json`;
42
+ return `${this.service.endpoint.replace(/\/$/, "")}${this.service.basePath ? `/${this.service.basePath.replace(/^\/+|\/+$/g, "")}` : ""}/${storeName}.json`;
43
43
  }
44
44
  /**
45
45
  * Send request
46
46
  */
47
- async request(url, options = {}, { allowNotFound } = {}) {
47
+ async request(url, options = {}, { allowNotFound, createIfNotFound } = {}) {
48
48
  const response = await fetch(url, {
49
49
  ...options,
50
50
  headers: {
@@ -53,7 +53,13 @@ var WebDAVAdapter = class {
53
53
  }
54
54
  });
55
55
  if (!response.ok) {
56
- if (allowNotFound && response.status == 404) return null;
56
+ if (response.status === 404) {
57
+ if (allowNotFound) return null;
58
+ if (createIfNotFound && options.method === "GET") {
59
+ await this.createPathIfNotExists(url);
60
+ return [];
61
+ }
62
+ }
57
63
  throw new Error(`HTTP error! status: ${response.status}, message: ${response.statusText}`);
58
64
  }
59
65
  const text = await response.text();
@@ -65,33 +71,33 @@ var WebDAVAdapter = class {
65
71
  }
66
72
  }
67
73
  /**
68
- * Initialize store
74
+ * Create path if not exists
69
75
  */
70
- async initStore(storeName, _indexes = [], _idKey = "id") {
71
- if (!this.service) throw new Error("Service not configured. Call setService() first.");
72
- const parts = storeName.replace(/^\/+|\/+$/g, "").split("/");
76
+ async createPathIfNotExists(url) {
73
77
  const baseUrl = this.service.endpoint.replace(/\/$/, "");
74
- let currentPath = "";
75
- for (const part of parts) {
76
- currentPath = currentPath ? `${currentPath}/${part}` : part;
77
- try {
78
- await this.listDirectory(currentPath);
79
- } catch {
80
- const url = `${baseUrl}/${currentPath}`;
81
- const response = await fetch(url, {
82
- method: "MKCOL",
83
- headers: this.getHeaders()
84
- });
85
- if (!response.ok) throw new Error(`Failed to create store: ${response.statusText}`);
86
- }
78
+ const pathParts = url.replace(baseUrl, "").replace(/^\//, "").split("/");
79
+ let fullPath = "";
80
+ for (const part of pathParts) {
81
+ fullPath = fullPath ? `${fullPath}/${part}` : part;
82
+ const createUrl = `${baseUrl}/${fullPath}`;
83
+ const response = await fetch(createUrl, {
84
+ method: part.endsWith(".json") ? "PUT" : "MKCOL",
85
+ headers: this.getHeaders(),
86
+ body: part.endsWith(".json") ? JSON.stringify([]) : void 0
87
+ });
88
+ if (!response.ok && response.status !== 405) throw new Error(`Failed to create path: ${response.statusText}`);
87
89
  }
88
90
  }
89
91
  /**
92
+ * Initialize store
93
+ */
94
+ async initStore(_storeName, _indexes = [], _idKey = "id") {}
95
+ /**
90
96
  * Add data
91
97
  */
92
98
  async add(storeName, data, _idKey = "id") {
93
99
  const url = this.buildUrl(storeName);
94
- const items = await this.request(url, { method: "GET" }, { allowNotFound: true }) || [];
100
+ const items = await this.request(url, { method: "GET" }, { createIfNotFound: true }) || [];
95
101
  items.push(data);
96
102
  await this.request(url, {
97
103
  method: "PUT",
@@ -147,7 +153,7 @@ var WebDAVAdapter = class {
147
153
  */
148
154
  async getList(storeName, options = {}, _idKey = "id") {
149
155
  const url = this.buildUrl(storeName);
150
- const allData = await this.request(url, { method: "GET" }, { allowNotFound: true }) || [];
156
+ const allData = await this.request(url, { method: "GET" }, { createIfNotFound: true }) || [];
151
157
  let filteredData = allData;
152
158
  if (options.where) filteredData = allData.filter((item) => {
153
159
  for (const key in options.where) if (item[key] !== options.where[key]) return false;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["AdapterType","headers: Record<string, string>","AuthType","files: string[]"],"sources":["../src/webdav-adapter.ts"],"sourcesContent":["import {\n AdapterType,\n type RemoteAdapter,\n type QueryOptions,\n type PaginatedResult,\n type ServiceConfig,\n AuthType,\n} from \"@omnistreamai/data-core\";\n\n/**\n * WebDAV adapter implementation\n */\nexport class WebDAVAdapter implements RemoteAdapter {\n readonly type = AdapterType.Remote;\n readonly name = \"WebDAVAdapter\";\n\n private service: ServiceConfig | null = null;\n\n /**\n * Set service configuration\n */\n setService(service: ServiceConfig): void {\n this.service = service;\n }\n\n /**\n * Get request headers\n */\n private getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n\n if (!this.service?.authentication) {\n return headers;\n }\n\n const { authentication } = this.service;\n\n switch (authentication.authType) {\n case AuthType.Token:\n if (authentication.token) {\n headers[\"Authorization\"] =\n `${authentication.token.token_type} ${authentication.token.access_token}`;\n }\n break;\n case AuthType.Bearer:\n if (authentication.bearer) {\n headers[\"Authorization\"] = `Bearer ${authentication.bearer}`;\n }\n break;\n case AuthType.Basic:\n if (authentication.username && authentication.password) {\n const credentials = btoa(\n `${authentication.username}:${authentication.password}`,\n );\n headers[\"Authorization\"] = `Basic ${credentials}`;\n }\n break;\n }\n\n return headers;\n }\n\n /**\n * Build URL\n */\n private buildUrl(storeName: string): string {\n if (!this.service) {\n throw new Error(\"Service not configured. Call setService() first.\");\n }\n\n const baseUrl = this.service.endpoint.replace(/\\/$/, \"\");\n return `${baseUrl}/${storeName}.json`;\n }\n\n /**\n * Send request\n */\n private async request<T>(\n url: string,\n options: RequestInit = {},\n {\n allowNotFound,\n }: {\n allowNotFound?: boolean;\n } = {},\n ): Promise<T | null> {\n const response = await fetch(url, {\n ...options,\n headers: {\n ...this.getHeaders(),\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n if (allowNotFound && response.status == 404) {\n return null;\n }\n throw new Error(\n `HTTP error! status: ${response.status}, message: ${response.statusText}`,\n );\n }\n\n const text = await response.text();\n if (!text) {\n return null;\n }\n\n try {\n return JSON.parse(text) as T;\n } catch {\n return null;\n }\n }\n\n /**\n * Initialize store\n */\n async initStore(\n storeName: string,\n _indexes: string[] = [],\n _idKey: string = \"id\",\n ): Promise<void> {\n if (!this.service) {\n throw new Error(\"Service not configured. Call setService() first.\");\n }\n\n const path = storeName.replace(/^\\/+|\\/+$/g, \"\");\n const parts = path.split(\"/\");\n const baseUrl = this.service.endpoint.replace(/\\/$/, \"\");\n\n let currentPath = \"\";\n for (const part of parts) {\n currentPath = currentPath ? `${currentPath}/${part}` : part;\n\n try {\n await this.listDirectory(currentPath);\n } catch {\n const url = `${baseUrl}/${currentPath}`;\n\n const response = await fetch(url, {\n method: \"MKCOL\",\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to create store: ${response.statusText}`);\n }\n }\n }\n }\n\n /**\n * Add data\n */\n async add<T extends Record<string, unknown>>(\n storeName: string,\n data: T,\n _idKey: string = \"id\",\n ): Promise<T> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n allowNotFound: true,\n });\n\n const items = existing || [];\n items.push(data);\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(items),\n });\n\n return data;\n }\n\n /**\n * Update data\n */\n async update<T extends Record<string, unknown>>(\n storeName: string,\n id: string,\n data: Partial<T>,\n idKey: string = \"id\",\n ): Promise<T> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n });\n\n if (!existing) {\n throw new Error(\"Not found id:\" + id);\n }\n\n const index = existing.findIndex(item => String(item[idKey]) === id);\n if (index === -1) {\n throw new Error(\"Not found id:\" + id);\n }\n\n existing[index] = { ...existing[index], ...data } as T;\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(existing),\n });\n\n return existing[index];\n }\n\n /**\n * Delete data\n */\n async delete(\n storeName: string,\n id: string,\n idKey: string = \"id\",\n ): Promise<void> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<Record<string, unknown>[]>(url, {\n method: \"GET\",\n });\n\n if (!existing) {\n throw new Error(\"Not found id:\" + id);\n }\n\n const index = existing.findIndex(item => String(item[idKey]) === id);\n if (index === -1) {\n throw new Error(\"Not found id:\" + id);\n }\n\n existing.splice(index, 1);\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(existing),\n });\n }\n\n /**\n * Get data by ID\n */\n async getData<T extends Record<string, unknown>>(\n storeName: string,\n id: string,\n idKey: string = \"id\",\n ): Promise<T | null> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n allowNotFound: true,\n });\n\n if (!existing) {\n return null;\n }\n\n const item = existing.find(item => String(item[idKey]) === id);\n return item ?? null;\n }\n\n /**\n * Get list data (with pagination support)\n */\n async getList<T extends Record<string, unknown>>(\n storeName: string,\n options: QueryOptions<T> = {},\n _idKey: string = \"id\",\n ): Promise<PaginatedResult<T>> {\n const url = this.buildUrl(storeName);\n\n const allData = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n allowNotFound: true,\n }) || [];\n\n let filteredData = allData;\n\n if (options.where) {\n filteredData = allData.filter((item) => {\n for (const key in options.where) {\n const itemValue = item[key];\n const whereValue = options.where![key];\n if (itemValue !== whereValue) {\n return false;\n }\n }\n return true;\n });\n }\n\n // Sorting\n if (options.sortBy) {\n filteredData = this.sortEntries(\n filteredData,\n String(options.sortBy),\n options.sortOrder,\n );\n }\n\n const totalCount = filteredData.length;\n const page = options.page ?? 1;\n const limit = options.limit ?? totalCount;\n\n const startIndex = (page - 1) * limit;\n const endIndex = startIndex + limit;\n const paginatedData = filteredData.slice(startIndex, endIndex);\n\n return {\n data: paginatedData,\n totalCount,\n page,\n limit,\n };\n }\n\n /**\n * Sort entries by specified field\n * @param entries Array of entries to sort\n * @param key Sorting field name\n * @param sortOrder Sort order: 'asc' or 'desc' (default: 'asc')\n * @returns Sorted array of entries\n */\n private sortEntries<T extends Record<string, unknown>>(\n entries: T[],\n key: string,\n sortOrder: \"asc\" | \"desc\" = \"asc\",\n ): T[] {\n return [...entries].sort((a, b) => {\n const aValue = a[key];\n const bValue = b[key];\n\n // Handle undefined or null values\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return 1; // null/undefined at the end\n if (bValue == null) return -1; // null/undefined at the end\n\n let comparison = 0;\n\n // Number type sorting\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n }\n // String type sorting\n else if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n comparison = aValue.localeCompare(bValue);\n }\n // Date type sorting (if string format date)\n else if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n const aDate = new Date(aValue);\n const bDate = new Date(bValue);\n if (!isNaN(aDate.getTime()) && !isNaN(bDate.getTime())) {\n comparison = aDate.getTime() - bDate.getTime();\n } else {\n // Convert other types to string for comparison\n comparison = String(aValue).localeCompare(String(bValue));\n }\n }\n // Convert other types to string for comparison\n else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n // Apply sort order\n return sortOrder === \"desc\" ? -comparison : comparison;\n });\n }\n\n /**\n * Clear store\n */\n async clear(storeName: string): Promise<void> {\n const list = await this.getList(storeName);\n\n for (const item of list.data) {\n const id = String((item as Record<string, unknown>)[\"id\"]);\n await this.delete(storeName, id);\n }\n }\n\n /**\n * List directory contents\n */\n async listDirectory(path: string = \"\"): Promise<string[]> {\n if (!this.service) {\n throw new Error(\"Service not configured. Call setService() first.\");\n }\n\n const baseUrl = this.service.endpoint.replace(/\\/$/, \"\");\n const url = path ? `${baseUrl}/${path.replace(/^\\//, \"\")}` : baseUrl;\n\n const response = await fetch(url, {\n method: \"PROPFIND\",\n headers: {\n ...this.getHeaders(),\n Depth: \"1\",\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to list directory: ${response.statusText}`);\n }\n\n const text = await response.text();\n\n const hrefRegex = /<d:href[^>]*>([^<]+)<\\/d:href>/gi;\n const files: string[] = [];\n let match;\n\n const baseUrlObj = new URL(baseUrl);\n const basePath = baseUrlObj.pathname;\n\n while ((match = hrefRegex.exec(text)) !== null) {\n const fullPath = match[1] || \"\";\n let relativePath = \"\";\n try {\n const hrefUrl = new URL(fullPath);\n relativePath = hrefUrl.pathname;\n } catch {}\n const pathRegex = new RegExp(`^/*${path}`)\n relativePath = fullPath.replace(basePath, \"\").replace(pathRegex, '').replace(/^\\//, \"\");\n if (relativePath && relativePath !== path.replace(/^\\//, \"\")) {\n files.push(relativePath);\n }\n }\n\n return files;\n }\n\n /**\n * Test connection\n */\n async testConnection(): Promise<boolean> {\n try {\n await this.listDirectory(\"\");\n return true;\n } catch {\n return false;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["AdapterType","headers: Record<string, string>","AuthType","files: string[]"],"sources":["../src/webdav-adapter.ts"],"sourcesContent":["import {\n AdapterType,\n type RemoteAdapter,\n type QueryOptions,\n type PaginatedResult,\n type ServiceConfig,\n AuthType,\n} from \"@omnistreamai/data-core\";\n\n/**\n * WebDAV adapter implementation\n */\nexport class WebDAVAdapter implements RemoteAdapter {\n readonly type = AdapterType.Remote;\n readonly name = \"WebDAVAdapter\";\n\n private service: ServiceConfig | null = null;\n\n /**\n * Set service configuration\n */\n setService(service: ServiceConfig): void {\n this.service = service;\n }\n\n /**\n * Get request headers\n */\n private getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n\n if (!this.service?.authentication) {\n return headers;\n }\n\n const { authentication } = this.service;\n\n switch (authentication.authType) {\n case AuthType.Token:\n if (authentication.token) {\n headers[\"Authorization\"] =\n `${authentication.token.token_type} ${authentication.token.access_token}`;\n }\n break;\n case AuthType.Bearer:\n if (authentication.bearer) {\n headers[\"Authorization\"] = `Bearer ${authentication.bearer}`;\n }\n break;\n case AuthType.Basic:\n if (authentication.username && authentication.password) {\n const credentials = btoa(\n `${authentication.username}:${authentication.password}`,\n );\n headers[\"Authorization\"] = `Basic ${credentials}`;\n }\n break;\n }\n\n return headers;\n }\n\n /**\n * Build URL\n */\n private buildUrl(storeName: string): string {\n if (!this.service) {\n throw new Error(\"Service not configured. Call setService() first.\");\n }\n\n const baseUrl = this.service.endpoint.replace(/\\/$/, \"\");\n const basePath = this.service.basePath ? `/${this.service.basePath.replace(/^\\/+|\\/+$/g, \"\")}` : \"\";\n return `${baseUrl}${basePath}/${storeName}.json`;\n }\n\n /**\n * Send request\n */\n private async request<T>(\n url: string,\n options: RequestInit = {},\n {\n allowNotFound,\n createIfNotFound,\n }: {\n allowNotFound?: boolean;\n createIfNotFound?: boolean;\n } = {},\n ): Promise<T | null> {\n const response = await fetch(url, {\n ...options,\n headers: {\n ...this.getHeaders(),\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n if (allowNotFound) {\n return null;\n }\n if (createIfNotFound && options.method === \"GET\") {\n await this.createPathIfNotExists(url);\n return [] as T;\n }\n }\n throw new Error(\n `HTTP error! status: ${response.status}, message: ${response.statusText}`,\n );\n }\n\n const text = await response.text();\n if (!text) {\n return null;\n }\n\n try {\n return JSON.parse(text) as T;\n } catch {\n return null;\n }\n }\n\n /**\n * Create path if not exists\n */\n private async createPathIfNotExists(url: string): Promise<void> {\n const baseUrl = this.service!.endpoint.replace(/\\/$/, \"\");\n const relativePath = url.replace(baseUrl, \"\").replace(/^\\//, \"\");\n const pathParts = relativePath.split(\"/\");\n\n let fullPath = \"\";\n for (const part of pathParts) {\n fullPath = fullPath ? `${fullPath}/${part}` : part;\n const createUrl = `${baseUrl}/${fullPath}`;\n\n const response = await fetch(createUrl, {\n method: part.endsWith('.json') ? \"PUT\" : \"MKCOL\",\n headers: this.getHeaders(),\n body: part.endsWith('.json') ? JSON.stringify([]) : undefined,\n });\n\n if (!response.ok && response.status !== 405) {\n throw new Error(`Failed to create path: ${response.statusText}`);\n }\n }\n }\n\n /**\n * Initialize store\n */\n async initStore(\n _storeName: string,\n _indexes: string[] = [],\n _idKey: string = \"id\",\n ): Promise<void> {\n }\n\n /**\n * Add data\n */\n async add<T extends Record<string, unknown>>(\n storeName: string,\n data: T,\n _idKey: string = \"id\",\n ): Promise<T> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n createIfNotFound: true,\n }) || [];\n\n const items = existing || [];\n items.push(data);\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(items),\n });\n\n return data;\n }\n\n /**\n * Update data\n */\n async update<T extends Record<string, unknown>>(\n storeName: string,\n id: string,\n data: Partial<T>,\n idKey: string = \"id\",\n ): Promise<T> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n });\n\n if (!existing) {\n throw new Error(\"Not found id:\" + id);\n }\n\n const index = existing.findIndex(item => String(item[idKey]) === id);\n if (index === -1) {\n throw new Error(\"Not found id:\" + id);\n }\n\n existing[index] = { ...existing[index], ...data } as T;\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(existing),\n });\n\n return existing[index];\n }\n\n /**\n * Delete data\n */\n async delete(\n storeName: string,\n id: string,\n idKey: string = \"id\",\n ): Promise<void> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<Record<string, unknown>[]>(url, {\n method: \"GET\",\n });\n\n if (!existing) {\n throw new Error(\"Not found id:\" + id);\n }\n\n const index = existing.findIndex(item => String(item[idKey]) === id);\n if (index === -1) {\n throw new Error(\"Not found id:\" + id);\n }\n\n existing.splice(index, 1);\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(existing),\n });\n }\n\n /**\n * Get data by ID\n */\n async getData<T extends Record<string, unknown>>(\n storeName: string,\n id: string,\n idKey: string = \"id\",\n ): Promise<T | null> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n allowNotFound: true,\n });\n\n if (!existing) {\n return null;\n }\n\n const item = existing.find(item => String(item[idKey]) === id);\n return item ?? null;\n }\n\n /**\n * Get list data (with pagination support)\n */\n async getList<T extends Record<string, unknown>>(\n storeName: string,\n options: QueryOptions<T> = {},\n _idKey: string = \"id\",\n ): Promise<PaginatedResult<T>> {\n const url = this.buildUrl(storeName);\n\n const allData = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n createIfNotFound: true,\n }) || [];\n\n let filteredData = allData;\n\n if (options.where) {\n filteredData = allData.filter((item) => {\n for (const key in options.where) {\n const itemValue = item[key];\n const whereValue = options.where![key];\n if (itemValue !== whereValue) {\n return false;\n }\n }\n return true;\n });\n }\n\n // Sorting\n if (options.sortBy) {\n filteredData = this.sortEntries(\n filteredData,\n String(options.sortBy),\n options.sortOrder,\n );\n }\n\n const totalCount = filteredData.length;\n const page = options.page ?? 1;\n const limit = options.limit ?? totalCount;\n\n const startIndex = (page - 1) * limit;\n const endIndex = startIndex + limit;\n const paginatedData = filteredData.slice(startIndex, endIndex);\n\n return {\n data: paginatedData,\n totalCount,\n page,\n limit,\n };\n }\n\n /**\n * Sort entries by specified field\n * @param entries Array of entries to sort\n * @param key Sorting field name\n * @param sortOrder Sort order: 'asc' or 'desc' (default: 'asc')\n * @returns Sorted array of entries\n */\n private sortEntries<T extends Record<string, unknown>>(\n entries: T[],\n key: string,\n sortOrder: \"asc\" | \"desc\" = \"asc\",\n ): T[] {\n return [...entries].sort((a, b) => {\n const aValue = a[key];\n const bValue = b[key];\n\n // Handle undefined or null values\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return 1; // null/undefined at the end\n if (bValue == null) return -1; // null/undefined at the end\n\n let comparison = 0;\n\n // Number type sorting\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n }\n // String type sorting\n else if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n comparison = aValue.localeCompare(bValue);\n }\n // Date type sorting (if string format date)\n else if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n const aDate = new Date(aValue);\n const bDate = new Date(bValue);\n if (!isNaN(aDate.getTime()) && !isNaN(bDate.getTime())) {\n comparison = aDate.getTime() - bDate.getTime();\n } else {\n // Convert other types to string for comparison\n comparison = String(aValue).localeCompare(String(bValue));\n }\n }\n // Convert other types to string for comparison\n else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n // Apply sort order\n return sortOrder === \"desc\" ? -comparison : comparison;\n });\n }\n\n /**\n * Clear store\n */\n async clear(storeName: string): Promise<void> {\n const list = await this.getList(storeName);\n\n for (const item of list.data) {\n const id = String((item as Record<string, unknown>)[\"id\"]);\n await this.delete(storeName, id);\n }\n }\n\n /**\n * List directory contents\n */\n async listDirectory(path: string = \"\"): Promise<string[]> {\n if (!this.service) {\n throw new Error(\"Service not configured. Call setService() first.\");\n }\n\n const baseUrl = this.service.endpoint.replace(/\\/$/, \"\");\n const url = path ? `${baseUrl}/${path.replace(/^\\//, \"\")}` : baseUrl;\n\n const response = await fetch(url, {\n method: \"PROPFIND\",\n headers: {\n ...this.getHeaders(),\n Depth: \"1\",\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to list directory: ${response.statusText}`);\n }\n\n const text = await response.text();\n\n const hrefRegex = /<d:href[^>]*>([^<]+)<\\/d:href>/gi;\n const files: string[] = [];\n let match;\n\n const baseUrlObj = new URL(baseUrl);\n const basePath = baseUrlObj.pathname;\n\n while ((match = hrefRegex.exec(text)) !== null) {\n const fullPath = match[1] || \"\";\n let relativePath = \"\";\n try {\n const hrefUrl = new URL(fullPath);\n relativePath = hrefUrl.pathname;\n } catch {}\n const pathRegex = new RegExp(`^/*${path}`)\n relativePath = fullPath.replace(basePath, \"\").replace(pathRegex, '').replace(/^\\//, \"\");\n if (relativePath && relativePath !== path.replace(/^\\//, \"\")) {\n files.push(relativePath);\n }\n }\n\n return files;\n }\n\n /**\n * Test connection\n */\n async testConnection(): Promise<boolean> {\n try {\n await this.listDirectory(\"\");\n return true;\n } catch {\n return false;\n }\n }\n}\n"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -39,12 +39,12 @@ var WebDAVAdapter = class {
39
39
  */
40
40
  buildUrl(storeName) {
41
41
  if (!this.service) throw new Error("Service not configured. Call setService() first.");
42
- return `${this.service.endpoint.replace(/\/$/, "")}/${storeName}.json`;
42
+ return `${this.service.endpoint.replace(/\/$/, "")}${this.service.basePath ? `/${this.service.basePath.replace(/^\/+|\/+$/g, "")}` : ""}/${storeName}.json`;
43
43
  }
44
44
  /**
45
45
  * Send request
46
46
  */
47
- async request(url, options = {}, { allowNotFound } = {}) {
47
+ async request(url, options = {}, { allowNotFound, createIfNotFound } = {}) {
48
48
  const response = await fetch(url, {
49
49
  ...options,
50
50
  headers: {
@@ -53,7 +53,13 @@ var WebDAVAdapter = class {
53
53
  }
54
54
  });
55
55
  if (!response.ok) {
56
- if (allowNotFound && response.status == 404) return null;
56
+ if (response.status === 404) {
57
+ if (allowNotFound) return null;
58
+ if (createIfNotFound && options.method === "GET") {
59
+ await this.createPathIfNotExists(url);
60
+ return [];
61
+ }
62
+ }
57
63
  throw new Error(`HTTP error! status: ${response.status}, message: ${response.statusText}`);
58
64
  }
59
65
  const text = await response.text();
@@ -65,33 +71,33 @@ var WebDAVAdapter = class {
65
71
  }
66
72
  }
67
73
  /**
68
- * Initialize store
74
+ * Create path if not exists
69
75
  */
70
- async initStore(storeName, _indexes = [], _idKey = "id") {
71
- if (!this.service) throw new Error("Service not configured. Call setService() first.");
72
- const parts = storeName.replace(/^\/+|\/+$/g, "").split("/");
76
+ async createPathIfNotExists(url) {
73
77
  const baseUrl = this.service.endpoint.replace(/\/$/, "");
74
- let currentPath = "";
75
- for (const part of parts) {
76
- currentPath = currentPath ? `${currentPath}/${part}` : part;
77
- try {
78
- await this.listDirectory(currentPath);
79
- } catch {
80
- const url = `${baseUrl}/${currentPath}`;
81
- const response = await fetch(url, {
82
- method: "MKCOL",
83
- headers: this.getHeaders()
84
- });
85
- if (!response.ok) throw new Error(`Failed to create store: ${response.statusText}`);
86
- }
78
+ const pathParts = url.replace(baseUrl, "").replace(/^\//, "").split("/");
79
+ let fullPath = "";
80
+ for (const part of pathParts) {
81
+ fullPath = fullPath ? `${fullPath}/${part}` : part;
82
+ const createUrl = `${baseUrl}/${fullPath}`;
83
+ const response = await fetch(createUrl, {
84
+ method: part.endsWith(".json") ? "PUT" : "MKCOL",
85
+ headers: this.getHeaders(),
86
+ body: part.endsWith(".json") ? JSON.stringify([]) : void 0
87
+ });
88
+ if (!response.ok && response.status !== 405) throw new Error(`Failed to create path: ${response.statusText}`);
87
89
  }
88
90
  }
89
91
  /**
92
+ * Initialize store
93
+ */
94
+ async initStore(_storeName, _indexes = [], _idKey = "id") {}
95
+ /**
90
96
  * Add data
91
97
  */
92
98
  async add(storeName, data, _idKey = "id") {
93
99
  const url = this.buildUrl(storeName);
94
- const items = await this.request(url, { method: "GET" }, { allowNotFound: true }) || [];
100
+ const items = await this.request(url, { method: "GET" }, { createIfNotFound: true }) || [];
95
101
  items.push(data);
96
102
  await this.request(url, {
97
103
  method: "PUT",
@@ -147,7 +153,7 @@ var WebDAVAdapter = class {
147
153
  */
148
154
  async getList(storeName, options = {}, _idKey = "id") {
149
155
  const url = this.buildUrl(storeName);
150
- const allData = await this.request(url, { method: "GET" }, { allowNotFound: true }) || [];
156
+ const allData = await this.request(url, { method: "GET" }, { createIfNotFound: true }) || [];
151
157
  let filteredData = allData;
152
158
  if (options.where) filteredData = allData.filter((item) => {
153
159
  for (const key in options.where) if (item[key] !== options.where[key]) return false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["headers: Record<string, string>","files: string[]"],"sources":["../src/webdav-adapter.ts"],"sourcesContent":["import {\n AdapterType,\n type RemoteAdapter,\n type QueryOptions,\n type PaginatedResult,\n type ServiceConfig,\n AuthType,\n} from \"@omnistreamai/data-core\";\n\n/**\n * WebDAV adapter implementation\n */\nexport class WebDAVAdapter implements RemoteAdapter {\n readonly type = AdapterType.Remote;\n readonly name = \"WebDAVAdapter\";\n\n private service: ServiceConfig | null = null;\n\n /**\n * Set service configuration\n */\n setService(service: ServiceConfig): void {\n this.service = service;\n }\n\n /**\n * Get request headers\n */\n private getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n\n if (!this.service?.authentication) {\n return headers;\n }\n\n const { authentication } = this.service;\n\n switch (authentication.authType) {\n case AuthType.Token:\n if (authentication.token) {\n headers[\"Authorization\"] =\n `${authentication.token.token_type} ${authentication.token.access_token}`;\n }\n break;\n case AuthType.Bearer:\n if (authentication.bearer) {\n headers[\"Authorization\"] = `Bearer ${authentication.bearer}`;\n }\n break;\n case AuthType.Basic:\n if (authentication.username && authentication.password) {\n const credentials = btoa(\n `${authentication.username}:${authentication.password}`,\n );\n headers[\"Authorization\"] = `Basic ${credentials}`;\n }\n break;\n }\n\n return headers;\n }\n\n /**\n * Build URL\n */\n private buildUrl(storeName: string): string {\n if (!this.service) {\n throw new Error(\"Service not configured. Call setService() first.\");\n }\n\n const baseUrl = this.service.endpoint.replace(/\\/$/, \"\");\n return `${baseUrl}/${storeName}.json`;\n }\n\n /**\n * Send request\n */\n private async request<T>(\n url: string,\n options: RequestInit = {},\n {\n allowNotFound,\n }: {\n allowNotFound?: boolean;\n } = {},\n ): Promise<T | null> {\n const response = await fetch(url, {\n ...options,\n headers: {\n ...this.getHeaders(),\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n if (allowNotFound && response.status == 404) {\n return null;\n }\n throw new Error(\n `HTTP error! status: ${response.status}, message: ${response.statusText}`,\n );\n }\n\n const text = await response.text();\n if (!text) {\n return null;\n }\n\n try {\n return JSON.parse(text) as T;\n } catch {\n return null;\n }\n }\n\n /**\n * Initialize store\n */\n async initStore(\n storeName: string,\n _indexes: string[] = [],\n _idKey: string = \"id\",\n ): Promise<void> {\n if (!this.service) {\n throw new Error(\"Service not configured. Call setService() first.\");\n }\n\n const path = storeName.replace(/^\\/+|\\/+$/g, \"\");\n const parts = path.split(\"/\");\n const baseUrl = this.service.endpoint.replace(/\\/$/, \"\");\n\n let currentPath = \"\";\n for (const part of parts) {\n currentPath = currentPath ? `${currentPath}/${part}` : part;\n\n try {\n await this.listDirectory(currentPath);\n } catch {\n const url = `${baseUrl}/${currentPath}`;\n\n const response = await fetch(url, {\n method: \"MKCOL\",\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to create store: ${response.statusText}`);\n }\n }\n }\n }\n\n /**\n * Add data\n */\n async add<T extends Record<string, unknown>>(\n storeName: string,\n data: T,\n _idKey: string = \"id\",\n ): Promise<T> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n allowNotFound: true,\n });\n\n const items = existing || [];\n items.push(data);\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(items),\n });\n\n return data;\n }\n\n /**\n * Update data\n */\n async update<T extends Record<string, unknown>>(\n storeName: string,\n id: string,\n data: Partial<T>,\n idKey: string = \"id\",\n ): Promise<T> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n });\n\n if (!existing) {\n throw new Error(\"Not found id:\" + id);\n }\n\n const index = existing.findIndex(item => String(item[idKey]) === id);\n if (index === -1) {\n throw new Error(\"Not found id:\" + id);\n }\n\n existing[index] = { ...existing[index], ...data } as T;\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(existing),\n });\n\n return existing[index];\n }\n\n /**\n * Delete data\n */\n async delete(\n storeName: string,\n id: string,\n idKey: string = \"id\",\n ): Promise<void> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<Record<string, unknown>[]>(url, {\n method: \"GET\",\n });\n\n if (!existing) {\n throw new Error(\"Not found id:\" + id);\n }\n\n const index = existing.findIndex(item => String(item[idKey]) === id);\n if (index === -1) {\n throw new Error(\"Not found id:\" + id);\n }\n\n existing.splice(index, 1);\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(existing),\n });\n }\n\n /**\n * Get data by ID\n */\n async getData<T extends Record<string, unknown>>(\n storeName: string,\n id: string,\n idKey: string = \"id\",\n ): Promise<T | null> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n allowNotFound: true,\n });\n\n if (!existing) {\n return null;\n }\n\n const item = existing.find(item => String(item[idKey]) === id);\n return item ?? null;\n }\n\n /**\n * Get list data (with pagination support)\n */\n async getList<T extends Record<string, unknown>>(\n storeName: string,\n options: QueryOptions<T> = {},\n _idKey: string = \"id\",\n ): Promise<PaginatedResult<T>> {\n const url = this.buildUrl(storeName);\n\n const allData = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n allowNotFound: true,\n }) || [];\n\n let filteredData = allData;\n\n if (options.where) {\n filteredData = allData.filter((item) => {\n for (const key in options.where) {\n const itemValue = item[key];\n const whereValue = options.where![key];\n if (itemValue !== whereValue) {\n return false;\n }\n }\n return true;\n });\n }\n\n // Sorting\n if (options.sortBy) {\n filteredData = this.sortEntries(\n filteredData,\n String(options.sortBy),\n options.sortOrder,\n );\n }\n\n const totalCount = filteredData.length;\n const page = options.page ?? 1;\n const limit = options.limit ?? totalCount;\n\n const startIndex = (page - 1) * limit;\n const endIndex = startIndex + limit;\n const paginatedData = filteredData.slice(startIndex, endIndex);\n\n return {\n data: paginatedData,\n totalCount,\n page,\n limit,\n };\n }\n\n /**\n * Sort entries by specified field\n * @param entries Array of entries to sort\n * @param key Sorting field name\n * @param sortOrder Sort order: 'asc' or 'desc' (default: 'asc')\n * @returns Sorted array of entries\n */\n private sortEntries<T extends Record<string, unknown>>(\n entries: T[],\n key: string,\n sortOrder: \"asc\" | \"desc\" = \"asc\",\n ): T[] {\n return [...entries].sort((a, b) => {\n const aValue = a[key];\n const bValue = b[key];\n\n // Handle undefined or null values\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return 1; // null/undefined at the end\n if (bValue == null) return -1; // null/undefined at the end\n\n let comparison = 0;\n\n // Number type sorting\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n }\n // String type sorting\n else if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n comparison = aValue.localeCompare(bValue);\n }\n // Date type sorting (if string format date)\n else if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n const aDate = new Date(aValue);\n const bDate = new Date(bValue);\n if (!isNaN(aDate.getTime()) && !isNaN(bDate.getTime())) {\n comparison = aDate.getTime() - bDate.getTime();\n } else {\n // Convert other types to string for comparison\n comparison = String(aValue).localeCompare(String(bValue));\n }\n }\n // Convert other types to string for comparison\n else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n // Apply sort order\n return sortOrder === \"desc\" ? -comparison : comparison;\n });\n }\n\n /**\n * Clear store\n */\n async clear(storeName: string): Promise<void> {\n const list = await this.getList(storeName);\n\n for (const item of list.data) {\n const id = String((item as Record<string, unknown>)[\"id\"]);\n await this.delete(storeName, id);\n }\n }\n\n /**\n * List directory contents\n */\n async listDirectory(path: string = \"\"): Promise<string[]> {\n if (!this.service) {\n throw new Error(\"Service not configured. Call setService() first.\");\n }\n\n const baseUrl = this.service.endpoint.replace(/\\/$/, \"\");\n const url = path ? `${baseUrl}/${path.replace(/^\\//, \"\")}` : baseUrl;\n\n const response = await fetch(url, {\n method: \"PROPFIND\",\n headers: {\n ...this.getHeaders(),\n Depth: \"1\",\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to list directory: ${response.statusText}`);\n }\n\n const text = await response.text();\n\n const hrefRegex = /<d:href[^>]*>([^<]+)<\\/d:href>/gi;\n const files: string[] = [];\n let match;\n\n const baseUrlObj = new URL(baseUrl);\n const basePath = baseUrlObj.pathname;\n\n while ((match = hrefRegex.exec(text)) !== null) {\n const fullPath = match[1] || \"\";\n let relativePath = \"\";\n try {\n const hrefUrl = new URL(fullPath);\n relativePath = hrefUrl.pathname;\n } catch {}\n const pathRegex = new RegExp(`^/*${path}`)\n relativePath = fullPath.replace(basePath, \"\").replace(pathRegex, '').replace(/^\\//, \"\");\n if (relativePath && relativePath !== path.replace(/^\\//, \"\")) {\n files.push(relativePath);\n }\n }\n\n return files;\n }\n\n /**\n * Test connection\n */\n async testConnection(): Promise<boolean> {\n try {\n await this.listDirectory(\"\");\n return true;\n } catch {\n return false;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["headers: Record<string, string>","files: string[]"],"sources":["../src/webdav-adapter.ts"],"sourcesContent":["import {\n AdapterType,\n type RemoteAdapter,\n type QueryOptions,\n type PaginatedResult,\n type ServiceConfig,\n AuthType,\n} from \"@omnistreamai/data-core\";\n\n/**\n * WebDAV adapter implementation\n */\nexport class WebDAVAdapter implements RemoteAdapter {\n readonly type = AdapterType.Remote;\n readonly name = \"WebDAVAdapter\";\n\n private service: ServiceConfig | null = null;\n\n /**\n * Set service configuration\n */\n setService(service: ServiceConfig): void {\n this.service = service;\n }\n\n /**\n * Get request headers\n */\n private getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n\n if (!this.service?.authentication) {\n return headers;\n }\n\n const { authentication } = this.service;\n\n switch (authentication.authType) {\n case AuthType.Token:\n if (authentication.token) {\n headers[\"Authorization\"] =\n `${authentication.token.token_type} ${authentication.token.access_token}`;\n }\n break;\n case AuthType.Bearer:\n if (authentication.bearer) {\n headers[\"Authorization\"] = `Bearer ${authentication.bearer}`;\n }\n break;\n case AuthType.Basic:\n if (authentication.username && authentication.password) {\n const credentials = btoa(\n `${authentication.username}:${authentication.password}`,\n );\n headers[\"Authorization\"] = `Basic ${credentials}`;\n }\n break;\n }\n\n return headers;\n }\n\n /**\n * Build URL\n */\n private buildUrl(storeName: string): string {\n if (!this.service) {\n throw new Error(\"Service not configured. Call setService() first.\");\n }\n\n const baseUrl = this.service.endpoint.replace(/\\/$/, \"\");\n const basePath = this.service.basePath ? `/${this.service.basePath.replace(/^\\/+|\\/+$/g, \"\")}` : \"\";\n return `${baseUrl}${basePath}/${storeName}.json`;\n }\n\n /**\n * Send request\n */\n private async request<T>(\n url: string,\n options: RequestInit = {},\n {\n allowNotFound,\n createIfNotFound,\n }: {\n allowNotFound?: boolean;\n createIfNotFound?: boolean;\n } = {},\n ): Promise<T | null> {\n const response = await fetch(url, {\n ...options,\n headers: {\n ...this.getHeaders(),\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n if (allowNotFound) {\n return null;\n }\n if (createIfNotFound && options.method === \"GET\") {\n await this.createPathIfNotExists(url);\n return [] as T;\n }\n }\n throw new Error(\n `HTTP error! status: ${response.status}, message: ${response.statusText}`,\n );\n }\n\n const text = await response.text();\n if (!text) {\n return null;\n }\n\n try {\n return JSON.parse(text) as T;\n } catch {\n return null;\n }\n }\n\n /**\n * Create path if not exists\n */\n private async createPathIfNotExists(url: string): Promise<void> {\n const baseUrl = this.service!.endpoint.replace(/\\/$/, \"\");\n const relativePath = url.replace(baseUrl, \"\").replace(/^\\//, \"\");\n const pathParts = relativePath.split(\"/\");\n\n let fullPath = \"\";\n for (const part of pathParts) {\n fullPath = fullPath ? `${fullPath}/${part}` : part;\n const createUrl = `${baseUrl}/${fullPath}`;\n\n const response = await fetch(createUrl, {\n method: part.endsWith('.json') ? \"PUT\" : \"MKCOL\",\n headers: this.getHeaders(),\n body: part.endsWith('.json') ? JSON.stringify([]) : undefined,\n });\n\n if (!response.ok && response.status !== 405) {\n throw new Error(`Failed to create path: ${response.statusText}`);\n }\n }\n }\n\n /**\n * Initialize store\n */\n async initStore(\n _storeName: string,\n _indexes: string[] = [],\n _idKey: string = \"id\",\n ): Promise<void> {\n }\n\n /**\n * Add data\n */\n async add<T extends Record<string, unknown>>(\n storeName: string,\n data: T,\n _idKey: string = \"id\",\n ): Promise<T> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n createIfNotFound: true,\n }) || [];\n\n const items = existing || [];\n items.push(data);\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(items),\n });\n\n return data;\n }\n\n /**\n * Update data\n */\n async update<T extends Record<string, unknown>>(\n storeName: string,\n id: string,\n data: Partial<T>,\n idKey: string = \"id\",\n ): Promise<T> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n });\n\n if (!existing) {\n throw new Error(\"Not found id:\" + id);\n }\n\n const index = existing.findIndex(item => String(item[idKey]) === id);\n if (index === -1) {\n throw new Error(\"Not found id:\" + id);\n }\n\n existing[index] = { ...existing[index], ...data } as T;\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(existing),\n });\n\n return existing[index];\n }\n\n /**\n * Delete data\n */\n async delete(\n storeName: string,\n id: string,\n idKey: string = \"id\",\n ): Promise<void> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<Record<string, unknown>[]>(url, {\n method: \"GET\",\n });\n\n if (!existing) {\n throw new Error(\"Not found id:\" + id);\n }\n\n const index = existing.findIndex(item => String(item[idKey]) === id);\n if (index === -1) {\n throw new Error(\"Not found id:\" + id);\n }\n\n existing.splice(index, 1);\n\n await this.request(url, {\n method: \"PUT\",\n body: JSON.stringify(existing),\n });\n }\n\n /**\n * Get data by ID\n */\n async getData<T extends Record<string, unknown>>(\n storeName: string,\n id: string,\n idKey: string = \"id\",\n ): Promise<T | null> {\n const url = this.buildUrl(storeName);\n\n const existing = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n allowNotFound: true,\n });\n\n if (!existing) {\n return null;\n }\n\n const item = existing.find(item => String(item[idKey]) === id);\n return item ?? null;\n }\n\n /**\n * Get list data (with pagination support)\n */\n async getList<T extends Record<string, unknown>>(\n storeName: string,\n options: QueryOptions<T> = {},\n _idKey: string = \"id\",\n ): Promise<PaginatedResult<T>> {\n const url = this.buildUrl(storeName);\n\n const allData = await this.request<T[]>(url, {\n method: \"GET\",\n }, {\n createIfNotFound: true,\n }) || [];\n\n let filteredData = allData;\n\n if (options.where) {\n filteredData = allData.filter((item) => {\n for (const key in options.where) {\n const itemValue = item[key];\n const whereValue = options.where![key];\n if (itemValue !== whereValue) {\n return false;\n }\n }\n return true;\n });\n }\n\n // Sorting\n if (options.sortBy) {\n filteredData = this.sortEntries(\n filteredData,\n String(options.sortBy),\n options.sortOrder,\n );\n }\n\n const totalCount = filteredData.length;\n const page = options.page ?? 1;\n const limit = options.limit ?? totalCount;\n\n const startIndex = (page - 1) * limit;\n const endIndex = startIndex + limit;\n const paginatedData = filteredData.slice(startIndex, endIndex);\n\n return {\n data: paginatedData,\n totalCount,\n page,\n limit,\n };\n }\n\n /**\n * Sort entries by specified field\n * @param entries Array of entries to sort\n * @param key Sorting field name\n * @param sortOrder Sort order: 'asc' or 'desc' (default: 'asc')\n * @returns Sorted array of entries\n */\n private sortEntries<T extends Record<string, unknown>>(\n entries: T[],\n key: string,\n sortOrder: \"asc\" | \"desc\" = \"asc\",\n ): T[] {\n return [...entries].sort((a, b) => {\n const aValue = a[key];\n const bValue = b[key];\n\n // Handle undefined or null values\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return 1; // null/undefined at the end\n if (bValue == null) return -1; // null/undefined at the end\n\n let comparison = 0;\n\n // Number type sorting\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n }\n // String type sorting\n else if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n comparison = aValue.localeCompare(bValue);\n }\n // Date type sorting (if string format date)\n else if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n const aDate = new Date(aValue);\n const bDate = new Date(bValue);\n if (!isNaN(aDate.getTime()) && !isNaN(bDate.getTime())) {\n comparison = aDate.getTime() - bDate.getTime();\n } else {\n // Convert other types to string for comparison\n comparison = String(aValue).localeCompare(String(bValue));\n }\n }\n // Convert other types to string for comparison\n else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n // Apply sort order\n return sortOrder === \"desc\" ? -comparison : comparison;\n });\n }\n\n /**\n * Clear store\n */\n async clear(storeName: string): Promise<void> {\n const list = await this.getList(storeName);\n\n for (const item of list.data) {\n const id = String((item as Record<string, unknown>)[\"id\"]);\n await this.delete(storeName, id);\n }\n }\n\n /**\n * List directory contents\n */\n async listDirectory(path: string = \"\"): Promise<string[]> {\n if (!this.service) {\n throw new Error(\"Service not configured. Call setService() first.\");\n }\n\n const baseUrl = this.service.endpoint.replace(/\\/$/, \"\");\n const url = path ? `${baseUrl}/${path.replace(/^\\//, \"\")}` : baseUrl;\n\n const response = await fetch(url, {\n method: \"PROPFIND\",\n headers: {\n ...this.getHeaders(),\n Depth: \"1\",\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to list directory: ${response.statusText}`);\n }\n\n const text = await response.text();\n\n const hrefRegex = /<d:href[^>]*>([^<]+)<\\/d:href>/gi;\n const files: string[] = [];\n let match;\n\n const baseUrlObj = new URL(baseUrl);\n const basePath = baseUrlObj.pathname;\n\n while ((match = hrefRegex.exec(text)) !== null) {\n const fullPath = match[1] || \"\";\n let relativePath = \"\";\n try {\n const hrefUrl = new URL(fullPath);\n relativePath = hrefUrl.pathname;\n } catch {}\n const pathRegex = new RegExp(`^/*${path}`)\n relativePath = fullPath.replace(basePath, \"\").replace(pathRegex, '').replace(/^\\//, \"\");\n if (relativePath && relativePath !== path.replace(/^\\//, \"\")) {\n files.push(relativePath);\n }\n }\n\n return files;\n }\n\n /**\n * Test connection\n */\n async testConnection(): Promise<boolean> {\n try {\n await this.listDirectory(\"\");\n return true;\n } catch {\n return false;\n }\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnistreamai/data-adapter-webdav",
3
- "version": "0.3.6",
3
+ "version": "0.4.0",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -12,7 +12,7 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@omnistreamai/data-core": "0.3.1"
15
+ "@omnistreamai/data-core": "0.4.0"
16
16
  },
17
17
  "scripts": {
18
18
  "build": "tsdown",
@@ -40,27 +40,19 @@ describe('WebDAVAdapter', () => {
40
40
  });
41
41
 
42
42
  describe('initStore', () => {
43
- it('应该能够初始化存储', async () => {
43
+ it('应该能够初始化存储(不做任何处理)', async () => {
44
44
  const service: ServiceConfig = {
45
45
  endpoint: 'https://webdav.example.com/data',
46
46
  };
47
47
  adapter.setService(service);
48
48
 
49
- const listDirectorySpy = vi.spyOn(adapter, 'listDirectory').mockRejectedValueOnce(new Error('Not found'));
50
-
51
- (global.fetch as ReturnType<typeof vi.fn>).mockResolvedValueOnce({
52
- ok: true,
53
- status: 201,
54
- } as Response);
55
-
56
49
  await adapter.initStore(storeName, ['username'], 'id');
57
- expect(listDirectorySpy).toHaveBeenCalledWith(storeName);
58
- expect(global.fetch).toHaveBeenCalled();
50
+ expect(global.fetch).not.toHaveBeenCalled();
59
51
  });
60
52
  });
61
53
 
62
54
  describe('add', () => {
63
- it('应该能够添加数据', async () => {
55
+ it('应该能够添加数据(文件不存在)', async () => {
64
56
  const service: ServiceConfig = {
65
57
  endpoint: 'https://webdav.example.com/data',
66
58
  authentication: {
@@ -79,17 +71,51 @@ describe('WebDAVAdapter', () => {
79
71
  email: 'test@example.com',
80
72
  };
81
73
 
82
- (global.fetch as ReturnType<typeof vi.fn>).mockResolvedValueOnce({
83
- ok: true,
84
- status: 200,
85
- text: async () => '',
86
- } as unknown as Response);
74
+ (global.fetch as ReturnType<typeof vi.fn>)
75
+ .mockResolvedValueOnce({
76
+ ok: false,
77
+ status: 404,
78
+ text: async () => '',
79
+ } as unknown as Response)
80
+ .mockResolvedValueOnce({
81
+ ok: true,
82
+ status: 201,
83
+ text: async () => '',
84
+ } as Response)
85
+ .mockResolvedValueOnce({
86
+ ok: true,
87
+ status: 200,
88
+ text: async () => '',
89
+ } as unknown as Response);
87
90
 
88
- (global.fetch as ReturnType<typeof vi.fn>).mockResolvedValueOnce({
89
- ok: true,
90
- status: 201,
91
- text: async () => '',
92
- } as unknown as Response);
91
+ const result = await adapter.add(storeName, data, 'id');
92
+ expect(result).toEqual(data);
93
+ expect(global.fetch).toHaveBeenCalledTimes(3);
94
+ });
95
+
96
+ it('应该能够添加数据(文件已存在)', async () => {
97
+ const service: ServiceConfig = {
98
+ endpoint: 'https://webdav.example.com/data',
99
+ };
100
+ adapter.setService(service);
101
+
102
+ const data = {
103
+ id: '1',
104
+ username: 'test-user',
105
+ email: 'test@example.com',
106
+ };
107
+
108
+ (global.fetch as ReturnType<typeof vi.fn>)
109
+ .mockResolvedValueOnce({
110
+ ok: true,
111
+ status: 200,
112
+ text: async () => '[]',
113
+ } as unknown as Response)
114
+ .mockResolvedValueOnce({
115
+ ok: true,
116
+ status: 200,
117
+ text: async () => '',
118
+ } as unknown as Response);
93
119
 
94
120
  const result = await adapter.add(storeName, data, 'id');
95
121
  expect(result).toEqual(data);
@@ -163,6 +189,30 @@ describe('WebDAVAdapter', () => {
163
189
  expect(result.page).toBe(1);
164
190
  });
165
191
 
192
+ it('应该能够获取空列表数据(文件不存在)', async () => {
193
+ const service: ServiceConfig = {
194
+ endpoint: 'https://webdav.example.com/data',
195
+ };
196
+ adapter.setService(service);
197
+
198
+ (global.fetch as ReturnType<typeof vi.fn>)
199
+ .mockResolvedValueOnce({
200
+ ok: false,
201
+ status: 404,
202
+ text: async () => '',
203
+ } as unknown as Response)
204
+ .mockResolvedValueOnce({
205
+ ok: true,
206
+ status: 201,
207
+ text: async () => '',
208
+ } as Response);
209
+
210
+ const result = await adapter.getList(storeName, undefined, 'id');
211
+ expect(result.data).toEqual([]);
212
+ expect(result.totalCount).toBe(0);
213
+ expect(result.page).toBe(1);
214
+ });
215
+
166
216
  it('应该支持分页查询', async () => {
167
217
  const service: ServiceConfig = {
168
218
  endpoint: 'https://webdav.example.com/data',
@@ -71,7 +71,8 @@ export class WebDAVAdapter implements RemoteAdapter {
71
71
  }
72
72
 
73
73
  const baseUrl = this.service.endpoint.replace(/\/$/, "");
74
- return `${baseUrl}/${storeName}.json`;
74
+ const basePath = this.service.basePath ? `/${this.service.basePath.replace(/^\/+|\/+$/g, "")}` : "";
75
+ return `${baseUrl}${basePath}/${storeName}.json`;
75
76
  }
76
77
 
77
78
  /**
@@ -82,8 +83,10 @@ export class WebDAVAdapter implements RemoteAdapter {
82
83
  options: RequestInit = {},
83
84
  {
84
85
  allowNotFound,
86
+ createIfNotFound,
85
87
  }: {
86
88
  allowNotFound?: boolean;
89
+ createIfNotFound?: boolean;
87
90
  } = {},
88
91
  ): Promise<T | null> {
89
92
  const response = await fetch(url, {
@@ -95,8 +98,14 @@ export class WebDAVAdapter implements RemoteAdapter {
95
98
  });
96
99
 
97
100
  if (!response.ok) {
98
- if (allowNotFound && response.status == 404) {
99
- return null;
101
+ if (response.status === 404) {
102
+ if (allowNotFound) {
103
+ return null;
104
+ }
105
+ if (createIfNotFound && options.method === "GET") {
106
+ await this.createPathIfNotExists(url);
107
+ return [] as T;
108
+ }
100
109
  }
101
110
  throw new Error(
102
111
  `HTTP error! status: ${response.status}, message: ${response.statusText}`,
@@ -115,41 +124,39 @@ export class WebDAVAdapter implements RemoteAdapter {
115
124
  }
116
125
  }
117
126
 
127
+ /**
128
+ * Create path if not exists
129
+ */
130
+ private async createPathIfNotExists(url: string): Promise<void> {
131
+ const baseUrl = this.service!.endpoint.replace(/\/$/, "");
132
+ const relativePath = url.replace(baseUrl, "").replace(/^\//, "");
133
+ const pathParts = relativePath.split("/");
134
+
135
+ let fullPath = "";
136
+ for (const part of pathParts) {
137
+ fullPath = fullPath ? `${fullPath}/${part}` : part;
138
+ const createUrl = `${baseUrl}/${fullPath}`;
139
+
140
+ const response = await fetch(createUrl, {
141
+ method: part.endsWith('.json') ? "PUT" : "MKCOL",
142
+ headers: this.getHeaders(),
143
+ body: part.endsWith('.json') ? JSON.stringify([]) : undefined,
144
+ });
145
+
146
+ if (!response.ok && response.status !== 405) {
147
+ throw new Error(`Failed to create path: ${response.statusText}`);
148
+ }
149
+ }
150
+ }
151
+
118
152
  /**
119
153
  * Initialize store
120
154
  */
121
155
  async initStore(
122
- storeName: string,
156
+ _storeName: string,
123
157
  _indexes: string[] = [],
124
158
  _idKey: string = "id",
125
159
  ): Promise<void> {
126
- if (!this.service) {
127
- throw new Error("Service not configured. Call setService() first.");
128
- }
129
-
130
- const path = storeName.replace(/^\/+|\/+$/g, "");
131
- const parts = path.split("/");
132
- const baseUrl = this.service.endpoint.replace(/\/$/, "");
133
-
134
- let currentPath = "";
135
- for (const part of parts) {
136
- currentPath = currentPath ? `${currentPath}/${part}` : part;
137
-
138
- try {
139
- await this.listDirectory(currentPath);
140
- } catch {
141
- const url = `${baseUrl}/${currentPath}`;
142
-
143
- const response = await fetch(url, {
144
- method: "MKCOL",
145
- headers: this.getHeaders(),
146
- });
147
-
148
- if (!response.ok) {
149
- throw new Error(`Failed to create store: ${response.statusText}`);
150
- }
151
- }
152
- }
153
160
  }
154
161
 
155
162
  /**
@@ -165,8 +172,8 @@ export class WebDAVAdapter implements RemoteAdapter {
165
172
  const existing = await this.request<T[]>(url, {
166
173
  method: "GET",
167
174
  }, {
168
- allowNotFound: true,
169
- });
175
+ createIfNotFound: true,
176
+ }) || [];
170
177
 
171
178
  const items = existing || [];
172
179
  items.push(data);
@@ -281,7 +288,7 @@ export class WebDAVAdapter implements RemoteAdapter {
281
288
  const allData = await this.request<T[]>(url, {
282
289
  method: "GET",
283
290
  }, {
284
- allowNotFound: true,
291
+ createIfNotFound: true,
285
292
  }) || [];
286
293
 
287
294
  let filteredData = allData;
@@ -1 +1 @@
1
- {"fileNames":["../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../core/dist/index.d.ts","./src/webdav-adapter.ts","./src/index.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/compatibility/index.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/events.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/navigator.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/storage.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/inspector.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/inspector.generated.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/sqlite.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/index.d.ts"],"fileIdsList":[[66,111,112,114,131,132],[66,113,114,131,132],[114,131,132],[66,114,119,131,132,149],[66,114,115,120,125,131,132,134,146,157],[66,114,115,116,125,131,132,134],[66,114,131,132],[61,62,63,66,114,131,132],[66,114,117,131,132,158],[66,114,118,119,126,131,132,135],[66,114,119,131,132,146,154],[66,114,120,122,125,131,132,134],[66,113,114,121,131,132],[66,114,122,123,131,132],[66,114,124,125,131,132],[66,113,114,125,131,132],[66,114,125,126,127,131,132,146,157],[66,114,125,126,127,131,132,141,146,149],[66,107,114,122,125,128,131,132,134,146,157],[66,114,125,126,128,129,131,132,134,146,154,157],[66,114,128,130,131,132,146,154,157],[64,65,66,67,68,69,70,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[66,114,125,131,132],[66,114,131,132,133,157],[66,114,122,125,131,132,134,146],[66,114,131,132,135],[66,114,131,132,136],[66,113,114,131,132,137],[66,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[66,114,131,132,139],[66,114,131,132,140],[66,114,125,131,132,141,142],[66,114,131,132,141,143,158,160],[66,114,126,131,132],[66,114,125,131,132,146,147,149],[66,114,131,132,148,149],[66,114,131,132,146,147],[66,114,131,132,149],[66,114,131,132,150],[66,111,114,131,132,146,151],[66,114,125,131,132,152,153],[66,114,131,132,152,153],[66,114,119,131,132,134,146,154],[66,114,131,132,155],[66,114,131,132,134,156],[66,114,128,131,132,140,157],[66,114,119,131,132,158],[66,114,131,132,146,159],[66,114,131,132,133,160],[66,114,131,132,161],[66,107,114,131,132],[66,107,114,125,127,131,132,137,146,149,157,159,160,162],[66,114,131,132,146,163],[66,79,83,114,131,132,157],[66,79,114,131,132,146,157],[66,74,114,131,132],[66,76,79,114,131,132,154,157],[66,114,131,132,134,154],[66,114,131,132,164],[66,74,114,131,132,164],[66,76,79,114,131,132,134,157],[66,71,72,75,78,114,125,131,132,146,157],[66,79,86,114,131,132],[66,71,77,114,131,132],[66,79,100,101,114,131,132],[66,75,79,114,131,132,149,157,164],[66,100,114,131,132,164],[66,73,74,114,131,132,164],[66,79,114,131,132],[66,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,101,102,103,104,105,106,114,131,132],[66,79,94,114,131,132],[66,79,86,87,114,131,132],[66,77,79,87,88,114,131,132],[66,78,114,131,132],[66,71,74,79,114,131,132],[66,79,83,87,88,114,131,132],[66,83,114,131,132],[66,77,79,82,114,131,132,157],[66,71,76,79,86,114,131,132],[66,114,131,132,146],[66,74,79,100,114,131,132,162,164],[59,66,114,131,132],[58,66,114,131,132]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"7b4b7017e270230d3b4d101b331419acc0aae8749a8b8352365d9222badc347e",{"version":"cdce81e6a5914bc78b6197ce391e637c478e0da2a597fed08e1d034c6c79dd76","signature":"96d3f5ee932929d3898e5e89cd165485b5f7cdd3ce0040e5f3b7da950c132f24"},{"version":"befe9fa472895b2a88678c9509194d671b2cf62defef9e7f633232f14cbd3fd5","signature":"f78e02bd4998b55c2bed7ed3fb8e8551814a61cec2aef478f592814224dae437"},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"bb45cd435da536500f1d9692a9b49d0c570b763ccbf00473248b777f5c1f353b","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"83e63d6ccf8ec004a3bb6d58b9bb0104f60e002754b1e968024b320730cc5311","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac39df6dfb9e284bb0c205b15f4d9a2b260f5bab5c85bf2fb97d0cdd509c06ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"f27524f4bef4b6519c604bdb23bf4465bddcccbf3f003abb901acbd0d7404d99","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c959a391a75be9789b43c8468f71e3fa06488b4d691d5729dde1416dcd38225b","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"5ebe6f4cc3b803cbfc962bae0d954f9c80e5078ca41eb3f1de41d92e7193ef37","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"9f663c2f91127ef7024e8ca4b3b4383ff2770e5f826696005de382282794b127","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1}],"root":[59,60],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[111,1],[112,1],[113,2],[66,3],[114,4],[115,5],[116,6],[61,7],[64,8],[62,7],[63,7],[117,9],[118,10],[119,11],[120,12],[121,13],[122,14],[123,14],[124,15],[125,16],[126,17],[127,18],[67,7],[65,7],[128,19],[129,20],[130,21],[164,22],[131,23],[132,7],[133,24],[134,25],[135,26],[136,27],[137,28],[138,29],[139,30],[140,31],[141,32],[142,32],[143,33],[144,7],[145,34],[146,35],[148,36],[147,37],[149,38],[150,39],[151,40],[152,41],[153,42],[154,43],[155,44],[156,45],[157,46],[158,47],[159,48],[160,49],[161,50],[68,7],[69,7],[70,7],[108,51],[109,7],[110,7],[162,52],[163,53],[56,7],[57,7],[11,7],[10,7],[2,7],[12,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[3,7],[20,7],[21,7],[4,7],[22,7],[26,7],[23,7],[24,7],[25,7],[27,7],[28,7],[29,7],[5,7],[30,7],[31,7],[32,7],[33,7],[6,7],[37,7],[34,7],[35,7],[36,7],[38,7],[7,7],[39,7],[44,7],[45,7],[40,7],[41,7],[42,7],[43,7],[8,7],[49,7],[46,7],[47,7],[48,7],[50,7],[9,7],[51,7],[52,7],[53,7],[55,7],[54,7],[1,7],[86,54],[96,55],[85,54],[106,56],[77,57],[76,58],[105,59],[99,60],[104,61],[79,62],[93,63],[78,64],[102,65],[74,66],[73,59],[103,67],[75,68],[80,69],[81,7],[84,69],[71,7],[107,70],[97,71],[88,72],[89,73],[91,74],[87,75],[90,76],[100,59],[82,77],[83,78],[92,79],[72,80],[95,71],[94,69],[98,7],[101,81],[60,82],[59,83],[58,7]],"affectedFilesPendingEmit":[[60,51],[59,51]],"emitSignatures":[59,60],"version":"5.9.3"}
1
+ {"fileNames":["../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../core/dist/index.d.ts","./src/webdav-adapter.ts","./src/index.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/compatibility/index.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/events.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/navigator.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/web-globals/storage.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/inspector.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/inspector.generated.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/sqlite.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@22.19.3/node_modules/@types/node/index.d.ts"],"fileIdsList":[[66,111,112,114,131,132],[66,113,114,131,132],[114,131,132],[66,114,119,131,132,149],[66,114,115,120,125,131,132,134,146,157],[66,114,115,116,125,131,132,134],[66,114,131,132],[61,62,63,66,114,131,132],[66,114,117,131,132,158],[66,114,118,119,126,131,132,135],[66,114,119,131,132,146,154],[66,114,120,122,125,131,132,134],[66,113,114,121,131,132],[66,114,122,123,131,132],[66,114,124,125,131,132],[66,113,114,125,131,132],[66,114,125,126,127,131,132,146,157],[66,114,125,126,127,131,132,141,146,149],[66,107,114,122,125,128,131,132,134,146,157],[66,114,125,126,128,129,131,132,134,146,154,157],[66,114,128,130,131,132,146,154,157],[64,65,66,67,68,69,70,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[66,114,125,131,132],[66,114,131,132,133,157],[66,114,122,125,131,132,134,146],[66,114,131,132,135],[66,114,131,132,136],[66,113,114,131,132,137],[66,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[66,114,131,132,139],[66,114,131,132,140],[66,114,125,131,132,141,142],[66,114,131,132,141,143,158,160],[66,114,126,131,132],[66,114,125,131,132,146,147,149],[66,114,131,132,148,149],[66,114,131,132,146,147],[66,114,131,132,149],[66,114,131,132,150],[66,111,114,131,132,146,151],[66,114,125,131,132,152,153],[66,114,131,132,152,153],[66,114,119,131,132,134,146,154],[66,114,131,132,155],[66,114,131,132,134,156],[66,114,128,131,132,140,157],[66,114,119,131,132,158],[66,114,131,132,146,159],[66,114,131,132,133,160],[66,114,131,132,161],[66,107,114,131,132],[66,107,114,125,127,131,132,137,146,149,157,159,160,162],[66,114,131,132,146,163],[66,79,83,114,131,132,157],[66,79,114,131,132,146,157],[66,74,114,131,132],[66,76,79,114,131,132,154,157],[66,114,131,132,134,154],[66,114,131,132,164],[66,74,114,131,132,164],[66,76,79,114,131,132,134,157],[66,71,72,75,78,114,125,131,132,146,157],[66,79,86,114,131,132],[66,71,77,114,131,132],[66,79,100,101,114,131,132],[66,75,79,114,131,132,149,157,164],[66,100,114,131,132,164],[66,73,74,114,131,132,164],[66,79,114,131,132],[66,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,101,102,103,104,105,106,114,131,132],[66,79,94,114,131,132],[66,79,86,87,114,131,132],[66,77,79,87,88,114,131,132],[66,78,114,131,132],[66,71,74,79,114,131,132],[66,79,83,87,88,114,131,132],[66,83,114,131,132],[66,77,79,82,114,131,132,157],[66,71,76,79,86,114,131,132],[66,114,131,132,146],[66,74,79,100,114,131,132,162,164],[59,66,114,131,132],[58,66,114,131,132]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"97020aa97e15cd55bc527b7a2adb41c8d79a6d4ed501b8d428ea7ea6599b7ada",{"version":"29d33586942f777ef6d9136d72458c9ea7a367bc6dfcd853f1e845f301347884","signature":"736dc970a625897de9f4cc1c5e3542353562fa085658cfb2c52b62d38f059816"},{"version":"befe9fa472895b2a88678c9509194d671b2cf62defef9e7f633232f14cbd3fd5","signature":"f78e02bd4998b55c2bed7ed3fb8e8551814a61cec2aef478f592814224dae437"},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"bb45cd435da536500f1d9692a9b49d0c570b763ccbf00473248b777f5c1f353b","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"83e63d6ccf8ec004a3bb6d58b9bb0104f60e002754b1e968024b320730cc5311","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac39df6dfb9e284bb0c205b15f4d9a2b260f5bab5c85bf2fb97d0cdd509c06ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"f27524f4bef4b6519c604bdb23bf4465bddcccbf3f003abb901acbd0d7404d99","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c959a391a75be9789b43c8468f71e3fa06488b4d691d5729dde1416dcd38225b","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"5ebe6f4cc3b803cbfc962bae0d954f9c80e5078ca41eb3f1de41d92e7193ef37","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"9f663c2f91127ef7024e8ca4b3b4383ff2770e5f826696005de382282794b127","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1}],"root":[59,60],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[111,1],[112,1],[113,2],[66,3],[114,4],[115,5],[116,6],[61,7],[64,8],[62,7],[63,7],[117,9],[118,10],[119,11],[120,12],[121,13],[122,14],[123,14],[124,15],[125,16],[126,17],[127,18],[67,7],[65,7],[128,19],[129,20],[130,21],[164,22],[131,23],[132,7],[133,24],[134,25],[135,26],[136,27],[137,28],[138,29],[139,30],[140,31],[141,32],[142,32],[143,33],[144,7],[145,34],[146,35],[148,36],[147,37],[149,38],[150,39],[151,40],[152,41],[153,42],[154,43],[155,44],[156,45],[157,46],[158,47],[159,48],[160,49],[161,50],[68,7],[69,7],[70,7],[108,51],[109,7],[110,7],[162,52],[163,53],[56,7],[57,7],[11,7],[10,7],[2,7],[12,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[3,7],[20,7],[21,7],[4,7],[22,7],[26,7],[23,7],[24,7],[25,7],[27,7],[28,7],[29,7],[5,7],[30,7],[31,7],[32,7],[33,7],[6,7],[37,7],[34,7],[35,7],[36,7],[38,7],[7,7],[39,7],[44,7],[45,7],[40,7],[41,7],[42,7],[43,7],[8,7],[49,7],[46,7],[47,7],[48,7],[50,7],[9,7],[51,7],[52,7],[53,7],[55,7],[54,7],[1,7],[86,54],[96,55],[85,54],[106,56],[77,57],[76,58],[105,59],[99,60],[104,61],[79,62],[93,63],[78,64],[102,65],[74,66],[73,59],[103,67],[75,68],[80,69],[81,7],[84,69],[71,7],[107,70],[97,71],[88,72],[89,73],[91,74],[87,75],[90,76],[100,59],[82,77],[83,78],[92,79],[72,80],[95,71],[94,69],[98,7],[101,81],[60,82],[59,83],[58,7]],"affectedFilesPendingEmit":[[60,51],[59,51]],"emitSignatures":[59,60],"version":"5.9.3"}