zeed 0.20.3 → 0.20.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/dist/browser/index.cjs +1 -1
  2. package/dist/browser/index.js +1 -1
  3. package/dist/browser/log/index.cjs +1 -1
  4. package/dist/browser/log/index.js +1 -1
  5. package/dist/browser/log/log-browser-factory.cjs +1 -1
  6. package/dist/browser/log/log-browser-factory.js +1 -1
  7. package/dist/browser/log/log-browser.cjs +1 -1
  8. package/dist/browser/log/log-browser.js +1 -1
  9. package/dist/browser/log/log-context-browser.cjs +1 -1
  10. package/dist/browser/log/log-context-browser.js +1 -1
  11. package/dist/{chunk-HRDRX2SI.js → chunk-BSY5YJFG.js} +1 -1
  12. package/dist/chunk-BSY5YJFG.js.map +1 -0
  13. package/dist/{chunk-K4PMQBGJ.js → chunk-HIEILUX4.js} +9 -3
  14. package/dist/{chunk-K4PMQBGJ.js.map → chunk-HIEILUX4.js.map} +1 -1
  15. package/dist/{chunk-6XCNUGCJ.cjs → chunk-NTCZ6VPJ.cjs} +42 -10
  16. package/dist/chunk-NTCZ6VPJ.cjs.map +1 -0
  17. package/dist/{chunk-PVHTCHPH.cjs → chunk-PKAVTW7I.cjs} +9 -3
  18. package/dist/chunk-PKAVTW7I.cjs.map +1 -0
  19. package/dist/{chunk-RRT265CM.cjs → chunk-V6M22LNO.cjs} +1 -1
  20. package/dist/chunk-V6M22LNO.cjs.map +1 -0
  21. package/dist/{chunk-L2Q5LY5W.js → chunk-ZJ56YG7L.js} +41 -9
  22. package/dist/chunk-ZJ56YG7L.js.map +1 -0
  23. package/dist/common/assert.cjs +2 -2
  24. package/dist/common/assert.js +2 -2
  25. package/dist/common/bin/index.cjs +2 -2
  26. package/dist/common/bin/index.js +2 -2
  27. package/dist/common/bin/index.spec.cjs +3 -3
  28. package/dist/common/bin/index.spec.js +3 -3
  29. package/dist/common/crypto.spec.cjs +3 -3
  30. package/dist/common/crypto.spec.js +3 -3
  31. package/dist/common/csv.cjs +1 -1
  32. package/dist/common/csv.js +1 -1
  33. package/dist/common/csv.spec.cjs +1 -1
  34. package/dist/common/csv.spec.js +1 -1
  35. package/dist/common/data/bin.spec.cjs +1 -1
  36. package/dist/common/data/bin.spec.js +1 -1
  37. package/dist/common/data/deep.spec.cjs +2 -2
  38. package/dist/common/data/deep.spec.js +2 -2
  39. package/dist/common/data/index.cjs +2 -2
  40. package/dist/common/data/index.js +1 -1
  41. package/dist/common/data/object.cjs +2 -2
  42. package/dist/common/data/object.d.cts +1 -0
  43. package/dist/common/data/object.d.ts +1 -0
  44. package/dist/common/data/object.js +1 -1
  45. package/dist/common/data/object.spec.cjs +50 -25
  46. package/dist/common/data/object.spec.cjs.map +1 -1
  47. package/dist/common/data/object.spec.js +36 -11
  48. package/dist/common/data/object.spec.js.map +1 -1
  49. package/dist/common/data/sorted.spec.cjs +3 -3
  50. package/dist/common/data/sorted.spec.js +3 -3
  51. package/dist/common/data/utils.spec.cjs +2 -2
  52. package/dist/common/data/utils.spec.js +2 -2
  53. package/dist/common/dispose-defer.cjs +2 -2
  54. package/dist/common/dispose-defer.js +2 -2
  55. package/dist/common/dispose-defer.spec.cjs +2 -2
  56. package/dist/common/dispose-defer.spec.js +2 -2
  57. package/dist/common/dispose-utils.cjs +2 -2
  58. package/dist/common/dispose-utils.js +2 -2
  59. package/dist/common/dispose-utils.spec.cjs +2 -2
  60. package/dist/common/dispose-utils.spec.js +2 -2
  61. package/dist/common/exec/index.cjs +2 -2
  62. package/dist/common/exec/index.js +2 -2
  63. package/dist/common/exec/pool.cjs +2 -2
  64. package/dist/common/exec/pool.js +2 -2
  65. package/dist/common/exec/pool.spec.cjs +2 -2
  66. package/dist/common/exec/pool.spec.js +2 -2
  67. package/dist/common/exec/progress.cjs +2 -2
  68. package/dist/common/exec/progress.js +2 -2
  69. package/dist/common/exec/progress.spec.cjs +2 -2
  70. package/dist/common/exec/progress.spec.js +2 -2
  71. package/dist/common/exec/queue.cjs +2 -2
  72. package/dist/common/exec/queue.js +2 -2
  73. package/dist/common/exec/queue.spec.cjs +2 -2
  74. package/dist/common/exec/queue.spec.js +2 -2
  75. package/dist/common/index.cjs +4 -4
  76. package/dist/common/index.js +3 -3
  77. package/dist/common/log/index.cjs +3 -3
  78. package/dist/common/log/index.js +2 -2
  79. package/dist/common/log/log-console.cjs +1 -1
  80. package/dist/common/log/log-console.js +1 -1
  81. package/dist/common/log/log-context.cjs +1 -1
  82. package/dist/common/log/log-context.js +1 -1
  83. package/dist/common/log/log-filter.cjs +1 -1
  84. package/dist/common/log/log-filter.js +1 -1
  85. package/dist/common/log/log-filter.spec.cjs +1 -1
  86. package/dist/common/log/log-filter.spec.js +1 -1
  87. package/dist/common/log/log-memory.cjs +3 -3
  88. package/dist/common/log/log-memory.js +2 -2
  89. package/dist/common/log/log-memory.spec.cjs +3 -3
  90. package/dist/common/log/log-memory.spec.js +2 -2
  91. package/dist/common/log/log.cjs +1 -1
  92. package/dist/common/log/log.js +1 -1
  93. package/dist/common/log/log.spec.cjs +1 -1
  94. package/dist/common/log/log.spec.js +1 -1
  95. package/dist/common/msg/channel-debug.cjs +2 -2
  96. package/dist/common/msg/channel-debug.js +2 -2
  97. package/dist/common/msg/channel-local.cjs +2 -2
  98. package/dist/common/msg/channel-local.js +2 -2
  99. package/dist/common/msg/channel-resilient.cjs +2 -2
  100. package/dist/common/msg/channel-resilient.js +2 -2
  101. package/dist/common/msg/channel-resilient.spec.cjs +2 -2
  102. package/dist/common/msg/channel-resilient.spec.js +2 -2
  103. package/dist/common/msg/channel.cjs +2 -2
  104. package/dist/common/msg/channel.js +2 -2
  105. package/dist/common/msg/channel.spec.cjs +2 -2
  106. package/dist/common/msg/channel.spec.js +2 -2
  107. package/dist/common/msg/emitter.cjs +2 -2
  108. package/dist/common/msg/emitter.js +2 -2
  109. package/dist/common/msg/emitter.spec.cjs +2 -2
  110. package/dist/common/msg/emitter.spec.js +2 -2
  111. package/dist/common/msg/encoder.spec.cjs +3 -3
  112. package/dist/common/msg/encoder.spec.js +3 -3
  113. package/dist/common/msg/index.cjs +2 -2
  114. package/dist/common/msg/index.js +2 -2
  115. package/dist/common/msg/messages.cjs +2 -2
  116. package/dist/common/msg/messages.js +2 -2
  117. package/dist/common/msg/messages.spec.cjs +2 -2
  118. package/dist/common/msg/messages.spec.js +2 -2
  119. package/dist/common/msg/pubsub.cjs +2 -2
  120. package/dist/common/msg/pubsub.js +2 -2
  121. package/dist/common/msg/pubsub.spec.cjs +2 -2
  122. package/dist/common/msg/pubsub.spec.js +2 -2
  123. package/dist/common/msg/rpc.spec.cjs +2 -2
  124. package/dist/common/msg/rpc.spec.js +2 -2
  125. package/dist/common/network.cjs +4 -4
  126. package/dist/common/network.js +3 -3
  127. package/dist/common/network.spec.cjs +6 -6
  128. package/dist/common/network.spec.js +3 -3
  129. package/dist/common/time.spec.cjs +2 -2
  130. package/dist/common/time.spec.js +2 -2
  131. package/dist/common/uuid.cjs +1 -1
  132. package/dist/common/uuid.js +1 -1
  133. package/dist/common/uuid.spec.cjs +1 -1
  134. package/dist/common/uuid.spec.js +1 -1
  135. package/dist/index.all.cjs +4 -4
  136. package/dist/index.all.js +3 -3
  137. package/dist/index.browser.cjs +4 -4
  138. package/dist/index.browser.js +3 -3
  139. package/dist/index.node.cjs +4 -4
  140. package/dist/index.node.js +3 -3
  141. package/dist/node/files-async.cjs +3 -3
  142. package/dist/node/files-async.js +3 -3
  143. package/dist/node/files-async.spec.cjs +3 -3
  144. package/dist/node/files-async.spec.js +3 -3
  145. package/dist/node/files.cjs +3 -3
  146. package/dist/node/files.js +3 -3
  147. package/dist/node/files.spec.cjs +3 -3
  148. package/dist/node/files.spec.js +3 -3
  149. package/dist/node/fs.cjs +3 -3
  150. package/dist/node/fs.js +3 -3
  151. package/dist/node/fs.spec.cjs +3 -3
  152. package/dist/node/fs.spec.js +3 -3
  153. package/dist/node/index.cjs +3 -3
  154. package/dist/node/index.js +3 -3
  155. package/dist/node/log/index.cjs +3 -3
  156. package/dist/node/log/index.js +3 -3
  157. package/dist/node/log/log-context-node.cjs +3 -3
  158. package/dist/node/log/log-context-node.js +3 -3
  159. package/dist/node/log/log-file.cjs +1 -1
  160. package/dist/node/log/log-file.js +1 -1
  161. package/dist/node/log/log-file.spec.cjs +2 -2
  162. package/dist/node/log/log-file.spec.js +2 -2
  163. package/dist/node/log/log-node.cjs +3 -3
  164. package/dist/node/log/log-node.js +3 -3
  165. package/dist/node/log/log-node.spec.cjs +3 -3
  166. package/dist/node/log/log-node.spec.js +3 -3
  167. package/dist/node/log/log-util.cjs +3 -3
  168. package/dist/node/log/log-util.js +3 -3
  169. package/dist/node/log/log-util.spec.cjs +3 -3
  170. package/dist/node/log/log-util.spec.js +3 -3
  171. package/package.json +1 -1
  172. package/dist/chunk-6XCNUGCJ.cjs.map +0 -1
  173. package/dist/chunk-HRDRX2SI.js.map +0 -1
  174. package/dist/chunk-L2Q5LY5W.js.map +0 -1
  175. package/dist/chunk-PVHTCHPH.cjs.map +0 -1
  176. package/dist/chunk-RRT265CM.cjs.map +0 -1
@@ -28,7 +28,7 @@ require('../chunk-KTC5RW57.cjs');
28
28
  require('../chunk-GU6AYGWK.cjs');
29
29
  require('../chunk-SNRM7OTJ.cjs');
30
30
  require('../chunk-ZGKV237Z.cjs');
31
- require('../chunk-6XCNUGCJ.cjs');
31
+ require('../chunk-NTCZ6VPJ.cjs');
32
32
  require('../chunk-N7OUNPMM.cjs');
33
33
  require('../chunk-MPD2DJAD.cjs');
34
34
  require('../chunk-YELWQAMG.cjs');
@@ -28,7 +28,7 @@ import "../chunk-AS5LR4AI.js";
28
28
  import "../chunk-KQSQJAHU.js";
29
29
  import "../chunk-JC22THP7.js";
30
30
  import "../chunk-2HWPZ6ZE.js";
31
- import "../chunk-L2Q5LY5W.js";
31
+ import "../chunk-ZJ56YG7L.js";
32
32
  import "../chunk-73CVRDI7.js";
33
33
  import "../chunk-FL5CT6MC.js";
34
34
  import "../chunk-HLRQ5H3N.js";
@@ -24,7 +24,7 @@ require('../../chunk-KTC5RW57.cjs');
24
24
  require('../../chunk-GU6AYGWK.cjs');
25
25
  require('../../chunk-SNRM7OTJ.cjs');
26
26
  require('../../chunk-ZGKV237Z.cjs');
27
- require('../../chunk-6XCNUGCJ.cjs');
27
+ require('../../chunk-NTCZ6VPJ.cjs');
28
28
  require('../../chunk-N7OUNPMM.cjs');
29
29
  require('../../chunk-MPD2DJAD.cjs');
30
30
  require('../../chunk-YELWQAMG.cjs');
@@ -24,7 +24,7 @@ import "../../chunk-AS5LR4AI.js";
24
24
  import "../../chunk-KQSQJAHU.js";
25
25
  import "../../chunk-JC22THP7.js";
26
26
  import "../../chunk-2HWPZ6ZE.js";
27
- import "../../chunk-L2Q5LY5W.js";
27
+ import "../../chunk-ZJ56YG7L.js";
28
28
  import "../../chunk-73CVRDI7.js";
29
29
  import "../../chunk-FL5CT6MC.js";
30
30
  import "../../chunk-HLRQ5H3N.js";
@@ -17,7 +17,7 @@ require('../../chunk-KTC5RW57.cjs');
17
17
  require('../../chunk-GU6AYGWK.cjs');
18
18
  require('../../chunk-SNRM7OTJ.cjs');
19
19
  require('../../chunk-ZGKV237Z.cjs');
20
- require('../../chunk-6XCNUGCJ.cjs');
20
+ require('../../chunk-NTCZ6VPJ.cjs');
21
21
  require('../../chunk-N7OUNPMM.cjs');
22
22
  require('../../chunk-MPD2DJAD.cjs');
23
23
  require('../../chunk-YELWQAMG.cjs');
@@ -17,7 +17,7 @@ import "../../chunk-AS5LR4AI.js";
17
17
  import "../../chunk-KQSQJAHU.js";
18
18
  import "../../chunk-JC22THP7.js";
19
19
  import "../../chunk-2HWPZ6ZE.js";
20
- import "../../chunk-L2Q5LY5W.js";
20
+ import "../../chunk-ZJ56YG7L.js";
21
21
  import "../../chunk-73CVRDI7.js";
22
22
  import "../../chunk-FL5CT6MC.js";
23
23
  import "../../chunk-HLRQ5H3N.js";
@@ -18,7 +18,7 @@ require('../../chunk-KTC5RW57.cjs');
18
18
  require('../../chunk-GU6AYGWK.cjs');
19
19
  require('../../chunk-SNRM7OTJ.cjs');
20
20
  require('../../chunk-ZGKV237Z.cjs');
21
- require('../../chunk-6XCNUGCJ.cjs');
21
+ require('../../chunk-NTCZ6VPJ.cjs');
22
22
  require('../../chunk-N7OUNPMM.cjs');
23
23
  require('../../chunk-MPD2DJAD.cjs');
24
24
  require('../../chunk-YELWQAMG.cjs');
@@ -18,7 +18,7 @@ import "../../chunk-AS5LR4AI.js";
18
18
  import "../../chunk-KQSQJAHU.js";
19
19
  import "../../chunk-JC22THP7.js";
20
20
  import "../../chunk-2HWPZ6ZE.js";
21
- import "../../chunk-L2Q5LY5W.js";
21
+ import "../../chunk-ZJ56YG7L.js";
22
22
  import "../../chunk-73CVRDI7.js";
23
23
  import "../../chunk-FL5CT6MC.js";
24
24
  import "../../chunk-HLRQ5H3N.js";
@@ -26,7 +26,7 @@ require('../../chunk-KTC5RW57.cjs');
26
26
  require('../../chunk-GU6AYGWK.cjs');
27
27
  require('../../chunk-SNRM7OTJ.cjs');
28
28
  require('../../chunk-ZGKV237Z.cjs');
29
- require('../../chunk-6XCNUGCJ.cjs');
29
+ require('../../chunk-NTCZ6VPJ.cjs');
30
30
  require('../../chunk-N7OUNPMM.cjs');
31
31
  require('../../chunk-MPD2DJAD.cjs');
32
32
  require('../../chunk-YELWQAMG.cjs');
@@ -26,7 +26,7 @@ import "../../chunk-AS5LR4AI.js";
26
26
  import "../../chunk-KQSQJAHU.js";
27
27
  import "../../chunk-JC22THP7.js";
28
28
  import "../../chunk-2HWPZ6ZE.js";
29
- import "../../chunk-L2Q5LY5W.js";
29
+ import "../../chunk-ZJ56YG7L.js";
30
30
  import "../../chunk-73CVRDI7.js";
31
31
  import "../../chunk-FL5CT6MC.js";
32
32
  import "../../chunk-HLRQ5H3N.js";
@@ -145,4 +145,4 @@ export {
145
145
  fetchOptionsJson,
146
146
  fetchOptionsBasicAuth
147
147
  };
148
- //# sourceMappingURL=chunk-HRDRX2SI.js.map
148
+ //# sourceMappingURL=chunk-BSY5YJFG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/network.ts"],"sourcesContent":["import {\n arrayFlatten,\n deepMerge,\n isArray,\n jsonStringifySafe,\n toBase64,\n} from './data'\nimport { encodeQuery } from './data/url'\nimport { DefaultLogger } from './log'\nimport type { Json } from './types'\n\n// TODO: Abort signal https://codedrivendevelopment.com/posts/everything-about-abort-signal-timeout\n\ninterface fetchOptionType {\n /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. */\n cache?: RequestCache\n /** Returns the credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. */\n credentials?: RequestCredentials\n /** Returns the kind of resource requested by request, e.g., \"document\" or \"script\". */\n destination?: RequestDestination\n /** Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the \"Host\" header. */\n headers?: Record<string, string>\n /** Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI] */\n integrity?: string\n /** Returns a boolean indicating whether or not request can outlive the global in which it was created. */\n keepalive?: boolean\n /** Returns request's HTTP method, which is \"GET\" by default. */\n method?: string\n /** Returns the mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. */\n mode?: RequestMode\n /** Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. */\n redirect?: RequestRedirect\n /** Returns the referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and \"about:client\" when defaulting to the global's default. This is used during fetching to determine the value of the `Referer` header of the request being made. */\n referrer?: string\n /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. */\n referrerPolicy?: ReferrerPolicy\n /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. */\n signal?: AbortSignal\n /** Returns the URL of request as a string. */\n url?: string\n body?: any\n}\n\ntype fetchOptionsType = fetchOptionType | fetchOptionsType[]\n\nconst defaultOptions: fetchOptionType = {\n cache: 'no-cache',\n redirect: 'follow',\n headers: {},\n}\n\n// Source https://developer.mozilla.org/de/docs/Web/HTTP/Methods\nexport type httpMethod =\n | 'GET'\n | 'POST'\n | 'PUT'\n | 'DELETE'\n | 'HEAD'\n | 'CONNECT'\n | 'OPTIONS'\n | 'TRACE'\n | 'PATCH'\n\nexport function parseBasicAuth(url: string) {\n const m = /:\\/\\/([^@]*)@/gi.exec(url)\n if (m && m[1]) {\n const [username, password] = m[1].split(':', 2)\n return {\n url: url.replace(`${m[1]}@`, ''),\n username,\n password,\n }\n }\n}\n\n/** Simplified `fetch` that returns `undefined` on non 200 status */\nexport async function fetchBasic(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<Response | undefined> {\n try {\n if (isArray(fetchOptions))\n fetchOptions = deepMerge({}, ...arrayFlatten(fetchOptions))\n\n const auth = parseBasicAuth(String(url))\n if (auth) {\n url = auth.url\n fetchOptions = deepMerge(\n {},\n fetchOptions,\n fetchOptionsBasicAuth(auth.username, auth.password),\n )\n }\n\n if (\n // @ts-expect-error headers\n fetchOptions.headers != null\n // @ts-expect-error headers\n && !(fetchOptions.headers instanceof Headers)\n ) {\n // @ts-expect-error headers\n fetchOptions.headers = new Headers(fetchOptions.headers)\n }\n\n // log(\"fetch\", url, fetchOptions)\n const response = await fetchFn(String(url), fetchOptions as RequestInit)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n if (response.status < 400)\n return response\n\n const log = DefaultLogger('zeed:network')\n\n try {\n log.warn(`Fetch of ${String(url)} returned status=${response.status}. Options:`, fetchOptions)\n log.warn(`Response: ${await response.text()}`)\n }\n catch (err) {\n log.error('Exception:', err)\n }\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchBasic', err)\n }\n}\n\n/** Fetch for JSON */\nexport async function fetchJson<T = Json>(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<T | undefined> {\n try {\n const res = await fetchBasic(\n url,\n [\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n },\n fetchOptions,\n ],\n fetchFn,\n )\n if (res)\n return await res.json()\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchJSON error:', err)\n }\n}\n\n/** Fetch for text */\nexport async function fetchText(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<string | undefined> {\n try {\n const res = await fetchBasic(\n url,\n [defaultOptions, { method: 'GET' }, fetchOptions],\n fetchFn,\n )\n if (res)\n return await res.text()\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchHTML error:', err)\n }\n}\n\n///\n\n/** Options for fetchBasic to send data as application/x-www-form-urlencoded */\nexport function fetchOptionsFormURLEncoded(\n data: object,\n method: httpMethod = 'POST',\n): fetchOptionType {\n return {\n method,\n ...defaultOptions,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n },\n body: encodeQuery(data),\n }\n}\n\n/** Options to send data as JSON */\nexport function fetchOptionsJson(\n data: object,\n method: httpMethod = 'POST',\n): fetchOptionType {\n return {\n method,\n ...defaultOptions,\n headers: {\n 'Content-Type': 'application/json; charset=utf-8',\n // Accept: \"application/json\",\n },\n body: jsonStringifySafe(data),\n }\n}\n\n/** Options to pass basic auth */\nexport function fetchOptionsBasicAuth(\n username: string,\n password: string,\n): fetchOptionType {\n return {\n headers: {\n Authorization: `Basic ${toBase64(`${username}:${password}`)}`,\n },\n }\n}\n"],"mappings":"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","names":[]}
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-ZFRTRIT4.js";
8
8
  import {
9
9
  objectPlain
10
- } from "./chunk-L2Q5LY5W.js";
10
+ } from "./chunk-ZJ56YG7L.js";
11
11
 
12
12
  // src/common/log/log-memory.ts
13
13
  function logMessageFromCompact(m) {
@@ -25,7 +25,13 @@ function LoggerMemoryHandler(opt) {
25
25
  if (!matchesNamespace(msg.name))
26
26
  return;
27
27
  msg.timestamp ?? (msg.timestamp = getTimestamp());
28
- const m = objectPlain(msg, { maxDepth, errorTrace });
28
+ const m = objectPlain(msg, {
29
+ maxDepth,
30
+ errorTrace,
31
+ filter(obj) {
32
+ return !Object.hasOwn(obj, "__SENTRY__");
33
+ }
34
+ });
29
35
  if (compact === true)
30
36
  messages.push([m.timestamp, m.level, m.name, ...m.messages]);
31
37
  else
@@ -41,4 +47,4 @@ export {
41
47
  logMessageFromCompact,
42
48
  LoggerMemoryHandler
43
49
  };
44
- //# sourceMappingURL=chunk-K4PMQBGJ.js.map
50
+ //# sourceMappingURL=chunk-HIEILUX4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/log/log-memory.ts"],"sourcesContent":["import { objectPlain } from '../data'\nimport { getTimestamp } from '../time'\nimport type { LogHandler, LogHandlerOptions, LogMessage, LogMessageCompact } from './log-base'\nimport { useLevelFilter, useNamespaceFilter } from './log-filter'\n\nexport function logMessageFromCompact(m: LogMessageCompact): LogMessage {\n const [timestamp, level, name, ...messages] = m\n return { timestamp, level, name, messages }\n}\n\n/** Collect messages in a list. */\nexport function LoggerMemoryHandler(\n opt: LogHandlerOptions & {\n compact?: boolean\n messages: LogMessageCompact[] | LogMessage[]\n errorTrace?: boolean\n limit?: number\n maxDepth?: number\n },\n): LogHandler {\n const { level = undefined, filter = undefined, compact = false, messages = [], errorTrace = false, maxDepth = 20 } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n\n let counter = opt.limit ?? Number.POSITIVE_INFINITY\n\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level))\n return\n if (!matchesNamespace(msg.name))\n return\n\n msg.timestamp ??= getTimestamp()\n\n const m = objectPlain(msg, { maxDepth, errorTrace })\n if (compact === true)\n (messages as LogMessageCompact[]).push([m.timestamp, m.level, m.name, ...m.messages])\n else\n (messages as LogMessage[]).push(m)\n\n if (counter <= 0)\n messages.shift()\n else\n --counter\n }\n}\n"],"mappings":";;;;;;;;;;;;AAKO,SAAS,sBAAsB,GAAkC;AACtE,QAAM,CAAC,WAAW,OAAO,MAAM,GAAG,QAAQ,IAAI;AAC9C,SAAO,EAAE,WAAW,OAAO,MAAM,SAAS;AAC5C;AAGO,SAAS,oBACd,KAOY;AACZ,QAAM,EAAE,QAAQ,QAAW,SAAS,QAAW,UAAU,OAAO,WAAW,CAAC,GAAG,aAAa,OAAO,WAAW,GAAG,IAAI;AACrH,QAAM,mBAAmB,mBAAmB,MAAM;AAClD,QAAM,eAAe,eAAe,KAAK;AAEzC,MAAI,UAAU,IAAI,SAAS,OAAO;AAElC,SAAO,CAAC,QAAoB;AAC1B,QAAI,CAAC,aAAa,IAAI,KAAK;AACzB;AACF,QAAI,CAAC,iBAAiB,IAAI,IAAI;AAC5B;AAEF,QAAI,cAAJ,IAAI,YAAc,aAAa;AAE/B,UAAM,IAAI,YAAY,KAAK,EAAE,UAAU,WAAW,CAAC;AACnD,QAAI,YAAY;AACd,MAAC,SAAiC,KAAK,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,QAAQ,CAAC;AAAA;AAEpF,MAAC,SAA0B,KAAK,CAAC;AAEnC,QAAI,WAAW;AACb,eAAS,MAAM;AAAA;AAEf,QAAE;AAAA,EACN;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/common/log/log-memory.ts"],"sourcesContent":["import { objectPlain } from '../data'\nimport { getTimestamp } from '../time'\nimport type { LogHandler, LogHandlerOptions, LogMessage, LogMessageCompact } from './log-base'\nimport { useLevelFilter, useNamespaceFilter } from './log-filter'\n\nexport function logMessageFromCompact(m: LogMessageCompact): LogMessage {\n const [timestamp, level, name, ...messages] = m\n return { timestamp, level, name, messages }\n}\n\n/** Collect messages in a list. */\nexport function LoggerMemoryHandler(\n opt: LogHandlerOptions & {\n compact?: boolean\n messages: LogMessageCompact[] | LogMessage[]\n errorTrace?: boolean\n limit?: number\n maxDepth?: number\n },\n): LogHandler {\n const { level = undefined, filter = undefined, compact = false, messages = [], errorTrace = false, maxDepth = 20 } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n\n let counter = opt.limit ?? Number.POSITIVE_INFINITY\n\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level))\n return\n if (!matchesNamespace(msg.name))\n return\n\n msg.timestamp ??= getTimestamp()\n\n const m = objectPlain(msg, {\n maxDepth,\n errorTrace,\n filter(obj) {\n return !Object.hasOwn(obj, '__SENTRY__')\n },\n })\n\n if (compact === true)\n (messages as LogMessageCompact[]).push([m.timestamp, m.level, m.name, ...m.messages])\n else\n (messages as LogMessage[]).push(m)\n\n if (counter <= 0)\n messages.shift()\n else\n --counter\n }\n}\n"],"mappings":";;;;;;;;;;;;AAKO,SAAS,sBAAsB,GAAkC;AACtE,QAAM,CAAC,WAAW,OAAO,MAAM,GAAG,QAAQ,IAAI;AAC9C,SAAO,EAAE,WAAW,OAAO,MAAM,SAAS;AAC5C;AAGO,SAAS,oBACd,KAOY;AACZ,QAAM,EAAE,QAAQ,QAAW,SAAS,QAAW,UAAU,OAAO,WAAW,CAAC,GAAG,aAAa,OAAO,WAAW,GAAG,IAAI;AACrH,QAAM,mBAAmB,mBAAmB,MAAM;AAClD,QAAM,eAAe,eAAe,KAAK;AAEzC,MAAI,UAAU,IAAI,SAAS,OAAO;AAElC,SAAO,CAAC,QAAoB;AAC1B,QAAI,CAAC,aAAa,IAAI,KAAK;AACzB;AACF,QAAI,CAAC,iBAAiB,IAAI,IAAI;AAC5B;AAEF,QAAI,cAAJ,IAAI,YAAc,aAAa;AAE/B,UAAM,IAAI,YAAY,KAAK;AAAA,MACzB;AAAA,MACA;AAAA,MACA,OAAO,KAAK;AACV,eAAO,CAAC,OAAO,OAAO,KAAK,YAAY;AAAA,MACzC;AAAA,IACF,CAAC;AAED,QAAI,YAAY;AACd,MAAC,SAAiC,KAAK,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,QAAQ,CAAC;AAAA;AAEpF,MAAC,SAA0B,KAAK,CAAC;AAEnC,QAAI,WAAW;AACb,eAAS,MAAM;AAAA;AAEf,QAAE;AAAA,EACN;AACF;","names":[]}
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
4
 
@@ -44,7 +44,8 @@ function objectPlain(obj, opt) {
44
44
  maxDepthValue,
45
45
  errorTrace = true,
46
46
  filter = () => true,
47
- keepAsIs = () => false
47
+ keepAsIs = () => false,
48
+ transformer = () => void 0
48
49
  } = _nullishCoalesce(opt, () => ( {}));
49
50
  const cycle = [];
50
51
  function handleObject(obj2, depth) {
@@ -59,20 +60,51 @@ function objectPlain(obj, opt) {
59
60
  if (cycle.includes(obj2))
60
61
  return circleValue;
61
62
  cycle.push(obj2);
62
- if (obj2 instanceof Date)
63
- return obj2.toISOString();
64
- if (obj2 instanceof RegExp)
65
- return obj2.toString();
63
+ if (transformer) {
64
+ const result = transformer(obj2);
65
+ if (result !== void 0)
66
+ return result;
67
+ }
68
+ if (obj2 instanceof Date) {
69
+ return {
70
+ __class: "Date",
71
+ value: obj2.toISOString()
72
+ };
73
+ }
74
+ if (obj2 instanceof RegExp) {
75
+ return {
76
+ __class: "RegExp",
77
+ source: obj2.toString()
78
+ };
79
+ }
66
80
  if (obj2 instanceof Map)
67
81
  obj2 = Object.fromEntries(obj2);
68
82
  if (obj2 instanceof Set || _chunk52BL3727cjs.isBinaryArray.call(void 0, obj2))
69
83
  obj2 = Array.from(obj2);
70
- if (obj2 instanceof Error)
71
- return `${obj2.name || "Error"}: ${obj2.message}${errorTrace ? `
72
- ${obj2.stack}` : ""}`;
84
+ if (obj2 instanceof Error) {
85
+ return {
86
+ __class: "Error",
87
+ name: obj2.name,
88
+ message: obj2.message,
89
+ stack: errorTrace ? obj2.stack : void 0,
90
+ cause: obj2.cause ? String(obj2.cause) : void 0
91
+ };
92
+ }
73
93
  if (Array.isArray(obj2)) {
74
94
  return obj2.filter(filter).map((o) => handleObject(o, depth + 1));
75
95
  }
96
+ const objName = _optionalChain([obj2, 'optionalAccess', _ => _.constructor, 'optionalAccess', _2 => _2.name]);
97
+ if (objName && objName !== "Object") {
98
+ const nobj2 = {
99
+ __class: objName
100
+ // __code: obj.toString ? obj.toString() : undefined,
101
+ };
102
+ for (const k in obj2) {
103
+ if (Object.hasOwn(obj2, k) && _chunk52BL3727cjs.isPrimitive.call(void 0, obj2[k]))
104
+ nobj2[k] = obj2[k];
105
+ }
106
+ return nobj2;
107
+ }
76
108
  const nobj = {};
77
109
  for (const key in obj2) {
78
110
  const value = obj2[key];
@@ -93,4 +125,4 @@ ${obj2.stack}` : ""}`;
93
125
 
94
126
 
95
127
  exports.objectMap = objectMap; exports.objectMergeDisposable = objectMergeDisposable; exports.objectIsEmpty = objectIsEmpty; exports.objectPick = objectPick; exports.objectInclusivePick = objectInclusivePick; exports.objectOmit = objectOmit; exports.objectPlain = objectPlain;
96
- //# sourceMappingURL=chunk-6XCNUGCJ.cjs.map
128
+ //# sourceMappingURL=chunk-NTCZ6VPJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/data/object.ts"],"names":["obj","nobj"],"mappings":"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","sourcesContent":["import { isArray, isBinaryArray, isObject, isPrimitive, isSymbol } from './is'\n\n/** Like `.map()` for object. Return new key and value or `undefined` to delete. */\nexport function objectMap<T = any>(\n obj: any,\n fn: (key: string, value: any) => [key: string, value: T] | T | undefined | null,\n): Record<string, T> {\n if (!isObject(obj))\n return {}\n return Object.fromEntries(\n Object.entries(obj)\n .map(([k, v]) => {\n const r = fn(k, v)\n if (isArray(r) && r.length === 2)\n return r\n return [k, r]\n })\n .filter(v => v != null),\n )\n}\n\n/** Merge right into left object. If dispose is defined, it will be combined. Left can be a complex object i.e. a insantiated class. */\nexport function objectMergeDisposable<A extends object, B extends object>(\n a: A,\n b: B,\n): A & B {\n // @ts-expect-error xxx\n if (b.dispose && a.dispose) {\n // @ts-expect-error xxx\n b.dispose.add(a.dispose)\n }\n return Object.assign(a, b)\n}\n\n// export function objectMerge<A, B>(a: A, b: B): A & B {\n// return Object.assign({}, a, b)\n// }\n\nexport function objectIsEmpty(obj: object) {\n return Object.keys(obj).length <= 0\n}\n\n// https://stackoverflow.com/a/56592365/140927\nexport function objectPick<T extends object, K extends keyof T>(obj: T, ...keys: K[]) {\n return Object.fromEntries(keys.filter(key => key in obj).map(key => [key, obj[key]])) as Pick<T, K>\n}\n\nexport function objectInclusivePick<T extends object, K extends (string | number | symbol)>(obj: T, ...keys: K[]) {\n return Object.fromEntries(keys.map(key => [key, obj[key as unknown as keyof T]])) as { [key in K]: key extends keyof T ? T[key] : undefined }\n}\n\nexport function objectOmit<T extends object, K extends keyof T>(obj: T, ...keys: K[]) {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => !keys.includes(key as K))) as Omit<T, K>\n}\n\n/// Convert object to plain object with max depth.\nexport function objectPlain(obj: any, opt?: {\n maxDepth?: number\n maxDepthValue?: any\n circleValue?: any\n errorTrace?: boolean\n filter?: (value: any) => boolean\n keepAsIs?: (value: any) => boolean\n transformer?: (value: any) => any | undefined\n}): any {\n const {\n maxDepth = 99,\n circleValue,\n maxDepthValue,\n errorTrace = true,\n filter = () => true,\n keepAsIs = () => false,\n transformer = () => undefined,\n } = opt ?? {}\n\n const cycle: any = []\n\n function handleObject(obj: any, depth: number): any {\n if (depth > maxDepth)\n return maxDepthValue // '*** MAX DEPTH ***'\n\n if (keepAsIs(obj))\n return obj\n\n if (isSymbol(obj))\n return String(obj)\n\n if (isPrimitive(obj))\n return obj\n\n if (cycle.includes(obj))\n return circleValue // '*** CYCLE ***'\n\n cycle.push(obj)\n\n if (transformer) {\n const result = transformer(obj)\n if (result !== undefined)\n return result\n }\n\n if (obj instanceof Date) {\n return {\n __class: 'Date',\n value: obj.toISOString(),\n }\n }\n\n if (obj instanceof RegExp) {\n return {\n __class: 'RegExp',\n source: obj.toString(),\n }\n }\n\n if (obj instanceof Map)\n obj = Object.fromEntries(obj)\n\n if (obj instanceof Set || isBinaryArray(obj))\n obj = Array.from(obj as any)\n\n if (obj instanceof Error) {\n return {\n __class: 'Error',\n name: obj.name,\n message: obj.message,\n stack: errorTrace ? obj.stack : undefined,\n cause: obj.cause ? String(obj.cause) : undefined,\n }\n }\n // return `${obj.name || 'Error'}: ${obj.message}${errorTrace ? `\\n${obj.stack}` : ''}`\n\n /* if (obj instanceof Element) {\n const attrs = obj.getAttributeNames().map(name => `${name}=\"${String(obj.getAttribute(name))}\"`).join(' ')\n return `<${[obj.tagName.toLocaleLowerCase(), ...attrs].join(' ')}}>`\n } */\n\n if (Array.isArray(obj)) {\n return obj\n .filter(filter)\n .map(o => handleObject(o, depth + 1))\n }\n\n // For class objects just dump the first level of primitives\n const objName = obj?.constructor?.name\n if (objName && objName !== 'Object') {\n const nobj: any = {\n __class: objName,\n // __code: obj.toString ? obj.toString() : undefined,\n }\n for (const k in obj) {\n if (Object.hasOwn(obj, k) && isPrimitive(obj[k]))\n nobj[k] = obj[k]\n }\n return nobj\n }\n\n // Plain objects are recursively dumped\n const nobj: any = {}\n for (const key in obj) {\n const value = obj[key]\n if (filter(value))\n nobj[key] = handleObject(value, depth + 1)\n }\n return nobj\n\n // return undefined\n }\n\n return handleObject(obj, 0)\n}\n"]}
@@ -7,7 +7,7 @@ var _chunkTJP5RDJEcjs = require('./chunk-TJP5RDJE.cjs');
7
7
  var _chunkL646RZQBcjs = require('./chunk-L646RZQB.cjs');
8
8
 
9
9
 
10
- var _chunk6XCNUGCJcjs = require('./chunk-6XCNUGCJ.cjs');
10
+ var _chunkNTCZ6VPJcjs = require('./chunk-NTCZ6VPJ.cjs');
11
11
 
12
12
  // src/common/log/log-memory.ts
13
13
  function logMessageFromCompact(m) {
@@ -25,7 +25,13 @@ function LoggerMemoryHandler(opt) {
25
25
  if (!matchesNamespace(msg.name))
26
26
  return;
27
27
  _nullishCoalesce(msg.timestamp, () => ( (msg.timestamp = _chunkL646RZQBcjs.getTimestamp.call(void 0, ))));
28
- const m = _chunk6XCNUGCJcjs.objectPlain.call(void 0, msg, { maxDepth, errorTrace });
28
+ const m = _chunkNTCZ6VPJcjs.objectPlain.call(void 0, msg, {
29
+ maxDepth,
30
+ errorTrace,
31
+ filter(obj) {
32
+ return !Object.hasOwn(obj, "__SENTRY__");
33
+ }
34
+ });
29
35
  if (compact === true)
30
36
  messages.push([m.timestamp, m.level, m.name, ...m.messages]);
31
37
  else
@@ -41,4 +47,4 @@ function LoggerMemoryHandler(opt) {
41
47
 
42
48
 
43
49
  exports.logMessageFromCompact = logMessageFromCompact; exports.LoggerMemoryHandler = LoggerMemoryHandler;
44
- //# sourceMappingURL=chunk-PVHTCHPH.cjs.map
50
+ //# sourceMappingURL=chunk-PKAVTW7I.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/log/log-memory.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKO,SAAS,sBAAsB,GAAkC;AACtE,QAAM,CAAC,WAAW,OAAO,MAAM,GAAG,QAAQ,IAAI;AAC9C,SAAO,EAAE,WAAW,OAAO,MAAM,SAAS;AAC5C;AAGO,SAAS,oBACd,KAOY;AACZ,QAAM,EAAE,QAAQ,QAAW,SAAS,QAAW,UAAU,OAAO,WAAW,CAAC,GAAG,aAAa,OAAO,WAAW,GAAG,IAAI;AACrH,QAAM,mBAAmB,mBAAmB,MAAM;AAClD,QAAM,eAAe,eAAe,KAAK;AAEzC,MAAI,UAAU,IAAI,SAAS,OAAO;AAElC,SAAO,CAAC,QAAoB;AAC1B,QAAI,CAAC,aAAa,IAAI,KAAK;AACzB;AACF,QAAI,CAAC,iBAAiB,IAAI,IAAI;AAC5B;AAEF,QAAI,cAAJ,IAAI,YAAc,aAAa;AAE/B,UAAM,IAAI,YAAY,KAAK;AAAA,MACzB;AAAA,MACA;AAAA,MACA,OAAO,KAAK;AACV,eAAO,CAAC,OAAO,OAAO,KAAK,YAAY;AAAA,MACzC;AAAA,IACF,CAAC;AAED,QAAI,YAAY;AACd,MAAC,SAAiC,KAAK,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,QAAQ,CAAC;AAAA;AAEpF,MAAC,SAA0B,KAAK,CAAC;AAEnC,QAAI,WAAW;AACb,eAAS,MAAM;AAAA;AAEf,QAAE;AAAA,EACN;AACF","sourcesContent":["import { objectPlain } from '../data'\nimport { getTimestamp } from '../time'\nimport type { LogHandler, LogHandlerOptions, LogMessage, LogMessageCompact } from './log-base'\nimport { useLevelFilter, useNamespaceFilter } from './log-filter'\n\nexport function logMessageFromCompact(m: LogMessageCompact): LogMessage {\n const [timestamp, level, name, ...messages] = m\n return { timestamp, level, name, messages }\n}\n\n/** Collect messages in a list. */\nexport function LoggerMemoryHandler(\n opt: LogHandlerOptions & {\n compact?: boolean\n messages: LogMessageCompact[] | LogMessage[]\n errorTrace?: boolean\n limit?: number\n maxDepth?: number\n },\n): LogHandler {\n const { level = undefined, filter = undefined, compact = false, messages = [], errorTrace = false, maxDepth = 20 } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n\n let counter = opt.limit ?? Number.POSITIVE_INFINITY\n\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level))\n return\n if (!matchesNamespace(msg.name))\n return\n\n msg.timestamp ??= getTimestamp()\n\n const m = objectPlain(msg, {\n maxDepth,\n errorTrace,\n filter(obj) {\n return !Object.hasOwn(obj, '__SENTRY__')\n },\n })\n\n if (compact === true)\n (messages as LogMessageCompact[]).push([m.timestamp, m.level, m.name, ...m.messages])\n else\n (messages as LogMessage[]).push(m)\n\n if (counter <= 0)\n messages.shift()\n else\n --counter\n }\n}\n"]}
@@ -145,4 +145,4 @@ function fetchOptionsBasicAuth(username, password) {
145
145
 
146
146
 
147
147
  exports.parseBasicAuth = parseBasicAuth; exports.fetchBasic = fetchBasic; exports.fetchJson = fetchJson; exports.fetchText = fetchText; exports.fetchOptionsFormURLEncoded = fetchOptionsFormURLEncoded; exports.fetchOptionsJson = fetchOptionsJson; exports.fetchOptionsBasicAuth = fetchOptionsBasicAuth;
148
- //# sourceMappingURL=chunk-RRT265CM.cjs.map
148
+ //# sourceMappingURL=chunk-V6M22LNO.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/network.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n arrayFlatten,\n deepMerge,\n isArray,\n jsonStringifySafe,\n toBase64,\n} from './data'\nimport { encodeQuery } from './data/url'\nimport { DefaultLogger } from './log'\nimport type { Json } from './types'\n\n// TODO: Abort signal https://codedrivendevelopment.com/posts/everything-about-abort-signal-timeout\n\ninterface fetchOptionType {\n /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. */\n cache?: RequestCache\n /** Returns the credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. */\n credentials?: RequestCredentials\n /** Returns the kind of resource requested by request, e.g., \"document\" or \"script\". */\n destination?: RequestDestination\n /** Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the \"Host\" header. */\n headers?: Record<string, string>\n /** Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI] */\n integrity?: string\n /** Returns a boolean indicating whether or not request can outlive the global in which it was created. */\n keepalive?: boolean\n /** Returns request's HTTP method, which is \"GET\" by default. */\n method?: string\n /** Returns the mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. */\n mode?: RequestMode\n /** Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. */\n redirect?: RequestRedirect\n /** Returns the referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and \"about:client\" when defaulting to the global's default. This is used during fetching to determine the value of the `Referer` header of the request being made. */\n referrer?: string\n /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. */\n referrerPolicy?: ReferrerPolicy\n /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. */\n signal?: AbortSignal\n /** Returns the URL of request as a string. */\n url?: string\n body?: any\n}\n\ntype fetchOptionsType = fetchOptionType | fetchOptionsType[]\n\nconst defaultOptions: fetchOptionType = {\n cache: 'no-cache',\n redirect: 'follow',\n headers: {},\n}\n\n// Source https://developer.mozilla.org/de/docs/Web/HTTP/Methods\nexport type httpMethod =\n | 'GET'\n | 'POST'\n | 'PUT'\n | 'DELETE'\n | 'HEAD'\n | 'CONNECT'\n | 'OPTIONS'\n | 'TRACE'\n | 'PATCH'\n\nexport function parseBasicAuth(url: string) {\n const m = /:\\/\\/([^@]*)@/gi.exec(url)\n if (m && m[1]) {\n const [username, password] = m[1].split(':', 2)\n return {\n url: url.replace(`${m[1]}@`, ''),\n username,\n password,\n }\n }\n}\n\n/** Simplified `fetch` that returns `undefined` on non 200 status */\nexport async function fetchBasic(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<Response | undefined> {\n try {\n if (isArray(fetchOptions))\n fetchOptions = deepMerge({}, ...arrayFlatten(fetchOptions))\n\n const auth = parseBasicAuth(String(url))\n if (auth) {\n url = auth.url\n fetchOptions = deepMerge(\n {},\n fetchOptions,\n fetchOptionsBasicAuth(auth.username, auth.password),\n )\n }\n\n if (\n // @ts-expect-error headers\n fetchOptions.headers != null\n // @ts-expect-error headers\n && !(fetchOptions.headers instanceof Headers)\n ) {\n // @ts-expect-error headers\n fetchOptions.headers = new Headers(fetchOptions.headers)\n }\n\n // log(\"fetch\", url, fetchOptions)\n const response = await fetchFn(String(url), fetchOptions as RequestInit)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n if (response.status < 400)\n return response\n\n const log = DefaultLogger('zeed:network')\n\n try {\n log.warn(`Fetch of ${String(url)} returned status=${response.status}. Options:`, fetchOptions)\n log.warn(`Response: ${await response.text()}`)\n }\n catch (err) {\n log.error('Exception:', err)\n }\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchBasic', err)\n }\n}\n\n/** Fetch for JSON */\nexport async function fetchJson<T = Json>(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<T | undefined> {\n try {\n const res = await fetchBasic(\n url,\n [\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n },\n fetchOptions,\n ],\n fetchFn,\n )\n if (res)\n return await res.json()\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchJSON error:', err)\n }\n}\n\n/** Fetch for text */\nexport async function fetchText(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<string | undefined> {\n try {\n const res = await fetchBasic(\n url,\n [defaultOptions, { method: 'GET' }, fetchOptions],\n fetchFn,\n )\n if (res)\n return await res.text()\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchHTML error:', err)\n }\n}\n\n///\n\n/** Options for fetchBasic to send data as application/x-www-form-urlencoded */\nexport function fetchOptionsFormURLEncoded(\n data: object,\n method: httpMethod = 'POST',\n): fetchOptionType {\n return {\n method,\n ...defaultOptions,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n },\n body: encodeQuery(data),\n }\n}\n\n/** Options to send data as JSON */\nexport function fetchOptionsJson(\n data: object,\n method: httpMethod = 'POST',\n): fetchOptionType {\n return {\n method,\n ...defaultOptions,\n headers: {\n 'Content-Type': 'application/json; charset=utf-8',\n // Accept: \"application/json\",\n },\n body: jsonStringifySafe(data),\n }\n}\n\n/** Options to pass basic auth */\nexport function fetchOptionsBasicAuth(\n username: string,\n password: string,\n): fetchOptionType {\n return {\n headers: {\n Authorization: `Basic ${toBase64(`${username}:${password}`)}`,\n },\n }\n}\n"]}
@@ -44,7 +44,8 @@ function objectPlain(obj, opt) {
44
44
  maxDepthValue,
45
45
  errorTrace = true,
46
46
  filter = () => true,
47
- keepAsIs = () => false
47
+ keepAsIs = () => false,
48
+ transformer = () => void 0
48
49
  } = opt ?? {};
49
50
  const cycle = [];
50
51
  function handleObject(obj2, depth) {
@@ -59,20 +60,51 @@ function objectPlain(obj, opt) {
59
60
  if (cycle.includes(obj2))
60
61
  return circleValue;
61
62
  cycle.push(obj2);
62
- if (obj2 instanceof Date)
63
- return obj2.toISOString();
64
- if (obj2 instanceof RegExp)
65
- return obj2.toString();
63
+ if (transformer) {
64
+ const result = transformer(obj2);
65
+ if (result !== void 0)
66
+ return result;
67
+ }
68
+ if (obj2 instanceof Date) {
69
+ return {
70
+ __class: "Date",
71
+ value: obj2.toISOString()
72
+ };
73
+ }
74
+ if (obj2 instanceof RegExp) {
75
+ return {
76
+ __class: "RegExp",
77
+ source: obj2.toString()
78
+ };
79
+ }
66
80
  if (obj2 instanceof Map)
67
81
  obj2 = Object.fromEntries(obj2);
68
82
  if (obj2 instanceof Set || isBinaryArray(obj2))
69
83
  obj2 = Array.from(obj2);
70
- if (obj2 instanceof Error)
71
- return `${obj2.name || "Error"}: ${obj2.message}${errorTrace ? `
72
- ${obj2.stack}` : ""}`;
84
+ if (obj2 instanceof Error) {
85
+ return {
86
+ __class: "Error",
87
+ name: obj2.name,
88
+ message: obj2.message,
89
+ stack: errorTrace ? obj2.stack : void 0,
90
+ cause: obj2.cause ? String(obj2.cause) : void 0
91
+ };
92
+ }
73
93
  if (Array.isArray(obj2)) {
74
94
  return obj2.filter(filter).map((o) => handleObject(o, depth + 1));
75
95
  }
96
+ const objName = obj2?.constructor?.name;
97
+ if (objName && objName !== "Object") {
98
+ const nobj2 = {
99
+ __class: objName
100
+ // __code: obj.toString ? obj.toString() : undefined,
101
+ };
102
+ for (const k in obj2) {
103
+ if (Object.hasOwn(obj2, k) && isPrimitive(obj2[k]))
104
+ nobj2[k] = obj2[k];
105
+ }
106
+ return nobj2;
107
+ }
76
108
  const nobj = {};
77
109
  for (const key in obj2) {
78
110
  const value = obj2[key];
@@ -93,4 +125,4 @@ export {
93
125
  objectOmit,
94
126
  objectPlain
95
127
  };
96
- //# sourceMappingURL=chunk-L2Q5LY5W.js.map
128
+ //# sourceMappingURL=chunk-ZJ56YG7L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/data/object.ts"],"sourcesContent":["import { isArray, isBinaryArray, isObject, isPrimitive, isSymbol } from './is'\n\n/** Like `.map()` for object. Return new key and value or `undefined` to delete. */\nexport function objectMap<T = any>(\n obj: any,\n fn: (key: string, value: any) => [key: string, value: T] | T | undefined | null,\n): Record<string, T> {\n if (!isObject(obj))\n return {}\n return Object.fromEntries(\n Object.entries(obj)\n .map(([k, v]) => {\n const r = fn(k, v)\n if (isArray(r) && r.length === 2)\n return r\n return [k, r]\n })\n .filter(v => v != null),\n )\n}\n\n/** Merge right into left object. If dispose is defined, it will be combined. Left can be a complex object i.e. a insantiated class. */\nexport function objectMergeDisposable<A extends object, B extends object>(\n a: A,\n b: B,\n): A & B {\n // @ts-expect-error xxx\n if (b.dispose && a.dispose) {\n // @ts-expect-error xxx\n b.dispose.add(a.dispose)\n }\n return Object.assign(a, b)\n}\n\n// export function objectMerge<A, B>(a: A, b: B): A & B {\n// return Object.assign({}, a, b)\n// }\n\nexport function objectIsEmpty(obj: object) {\n return Object.keys(obj).length <= 0\n}\n\n// https://stackoverflow.com/a/56592365/140927\nexport function objectPick<T extends object, K extends keyof T>(obj: T, ...keys: K[]) {\n return Object.fromEntries(keys.filter(key => key in obj).map(key => [key, obj[key]])) as Pick<T, K>\n}\n\nexport function objectInclusivePick<T extends object, K extends (string | number | symbol)>(obj: T, ...keys: K[]) {\n return Object.fromEntries(keys.map(key => [key, obj[key as unknown as keyof T]])) as { [key in K]: key extends keyof T ? T[key] : undefined }\n}\n\nexport function objectOmit<T extends object, K extends keyof T>(obj: T, ...keys: K[]) {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => !keys.includes(key as K))) as Omit<T, K>\n}\n\n/// Convert object to plain object with max depth.\nexport function objectPlain(obj: any, opt?: {\n maxDepth?: number\n maxDepthValue?: any\n circleValue?: any\n errorTrace?: boolean\n filter?: (value: any) => boolean\n keepAsIs?: (value: any) => boolean\n transformer?: (value: any) => any | undefined\n}): any {\n const {\n maxDepth = 99,\n circleValue,\n maxDepthValue,\n errorTrace = true,\n filter = () => true,\n keepAsIs = () => false,\n transformer = () => undefined,\n } = opt ?? {}\n\n const cycle: any = []\n\n function handleObject(obj: any, depth: number): any {\n if (depth > maxDepth)\n return maxDepthValue // '*** MAX DEPTH ***'\n\n if (keepAsIs(obj))\n return obj\n\n if (isSymbol(obj))\n return String(obj)\n\n if (isPrimitive(obj))\n return obj\n\n if (cycle.includes(obj))\n return circleValue // '*** CYCLE ***'\n\n cycle.push(obj)\n\n if (transformer) {\n const result = transformer(obj)\n if (result !== undefined)\n return result\n }\n\n if (obj instanceof Date) {\n return {\n __class: 'Date',\n value: obj.toISOString(),\n }\n }\n\n if (obj instanceof RegExp) {\n return {\n __class: 'RegExp',\n source: obj.toString(),\n }\n }\n\n if (obj instanceof Map)\n obj = Object.fromEntries(obj)\n\n if (obj instanceof Set || isBinaryArray(obj))\n obj = Array.from(obj as any)\n\n if (obj instanceof Error) {\n return {\n __class: 'Error',\n name: obj.name,\n message: obj.message,\n stack: errorTrace ? obj.stack : undefined,\n cause: obj.cause ? String(obj.cause) : undefined,\n }\n }\n // return `${obj.name || 'Error'}: ${obj.message}${errorTrace ? `\\n${obj.stack}` : ''}`\n\n /* if (obj instanceof Element) {\n const attrs = obj.getAttributeNames().map(name => `${name}=\"${String(obj.getAttribute(name))}\"`).join(' ')\n return `<${[obj.tagName.toLocaleLowerCase(), ...attrs].join(' ')}}>`\n } */\n\n if (Array.isArray(obj)) {\n return obj\n .filter(filter)\n .map(o => handleObject(o, depth + 1))\n }\n\n // For class objects just dump the first level of primitives\n const objName = obj?.constructor?.name\n if (objName && objName !== 'Object') {\n const nobj: any = {\n __class: objName,\n // __code: obj.toString ? obj.toString() : undefined,\n }\n for (const k in obj) {\n if (Object.hasOwn(obj, k) && isPrimitive(obj[k]))\n nobj[k] = obj[k]\n }\n return nobj\n }\n\n // Plain objects are recursively dumped\n const nobj: any = {}\n for (const key in obj) {\n const value = obj[key]\n if (filter(value))\n nobj[key] = handleObject(value, depth + 1)\n }\n return nobj\n\n // return undefined\n }\n\n return handleObject(obj, 0)\n}\n"],"mappings":"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","names":["obj","nobj"]}
@@ -5,7 +5,7 @@
5
5
  var _chunk62TCRE2Jcjs = require('../chunk-62TCRE2J.cjs');
6
6
  require('../chunk-4B2XCWGL.cjs');
7
7
  require('../chunk-5CIFX7O6.cjs');
8
- require('../chunk-PVHTCHPH.cjs');
8
+ require('../chunk-PKAVTW7I.cjs');
9
9
  require('../chunk-XC7SHABV.cjs');
10
10
  require('../chunk-ABEJKCAO.cjs');
11
11
  require('../chunk-6TCZFTKD.cjs');
@@ -25,7 +25,7 @@ require('../chunk-KTC5RW57.cjs');
25
25
  require('../chunk-GU6AYGWK.cjs');
26
26
  require('../chunk-SNRM7OTJ.cjs');
27
27
  require('../chunk-ZGKV237Z.cjs');
28
- require('../chunk-6XCNUGCJ.cjs');
28
+ require('../chunk-NTCZ6VPJ.cjs');
29
29
  require('../chunk-N7OUNPMM.cjs');
30
30
  require('../chunk-MPD2DJAD.cjs');
31
31
  require('../chunk-YELWQAMG.cjs');
@@ -5,7 +5,7 @@ import {
5
5
  } from "../chunk-2A3BQWES.js";
6
6
  import "../chunk-TSCDX4AS.js";
7
7
  import "../chunk-D6B6MYVG.js";
8
- import "../chunk-K4PMQBGJ.js";
8
+ import "../chunk-HIEILUX4.js";
9
9
  import "../chunk-A526SGYQ.js";
10
10
  import "../chunk-PJAUZ5BZ.js";
11
11
  import "../chunk-6OKCPP4P.js";
@@ -25,7 +25,7 @@ import "../chunk-AS5LR4AI.js";
25
25
  import "../chunk-KQSQJAHU.js";
26
26
  import "../chunk-JC22THP7.js";
27
27
  import "../chunk-2HWPZ6ZE.js";
28
- import "../chunk-L2Q5LY5W.js";
28
+ import "../chunk-ZJ56YG7L.js";
29
29
  import "../chunk-73CVRDI7.js";
30
30
  import "../chunk-FL5CT6MC.js";
31
31
  import "../chunk-HLRQ5H3N.js";
@@ -16,7 +16,7 @@ require('../../chunk-2UTQQDPY.cjs');
16
16
  require('../../chunk-62TCRE2J.cjs');
17
17
  require('../../chunk-4B2XCWGL.cjs');
18
18
  require('../../chunk-5CIFX7O6.cjs');
19
- require('../../chunk-PVHTCHPH.cjs');
19
+ require('../../chunk-PKAVTW7I.cjs');
20
20
  require('../../chunk-XC7SHABV.cjs');
21
21
  require('../../chunk-ABEJKCAO.cjs');
22
22
  require('../../chunk-6TCZFTKD.cjs');
@@ -36,7 +36,7 @@ require('../../chunk-KTC5RW57.cjs');
36
36
  require('../../chunk-GU6AYGWK.cjs');
37
37
  require('../../chunk-SNRM7OTJ.cjs');
38
38
  require('../../chunk-ZGKV237Z.cjs');
39
- require('../../chunk-6XCNUGCJ.cjs');
39
+ require('../../chunk-NTCZ6VPJ.cjs');
40
40
  require('../../chunk-N7OUNPMM.cjs');
41
41
  require('../../chunk-MPD2DJAD.cjs');
42
42
  require('../../chunk-YELWQAMG.cjs');
@@ -16,7 +16,7 @@ import "../../chunk-GKKLBSFA.js";
16
16
  import "../../chunk-2A3BQWES.js";
17
17
  import "../../chunk-TSCDX4AS.js";
18
18
  import "../../chunk-D6B6MYVG.js";
19
- import "../../chunk-K4PMQBGJ.js";
19
+ import "../../chunk-HIEILUX4.js";
20
20
  import "../../chunk-A526SGYQ.js";
21
21
  import "../../chunk-PJAUZ5BZ.js";
22
22
  import "../../chunk-6OKCPP4P.js";
@@ -36,7 +36,7 @@ import "../../chunk-AS5LR4AI.js";
36
36
  import "../../chunk-KQSQJAHU.js";
37
37
  import "../../chunk-JC22THP7.js";
38
38
  import "../../chunk-2HWPZ6ZE.js";
39
- import "../../chunk-L2Q5LY5W.js";
39
+ import "../../chunk-ZJ56YG7L.js";
40
40
  import "../../chunk-73CVRDI7.js";
41
41
  import "../../chunk-FL5CT6MC.js";
42
42
  import "../../chunk-HLRQ5H3N.js";
@@ -13,7 +13,7 @@ require('../../chunk-SFUIGVPA.cjs');
13
13
  require('../../chunk-X23ZSPZC.cjs');
14
14
  require('../../chunk-2UTQQDPY.cjs');
15
15
  require('../../chunk-MJ7L4G3V.cjs');
16
- require('../../chunk-RRT265CM.cjs');
16
+ require('../../chunk-V6M22LNO.cjs');
17
17
  require('../../chunk-LKES6YKV.cjs');
18
18
  require('../../chunk-3TNVJY4F.cjs');
19
19
  require('../../chunk-WPWV7ZEM.cjs');
@@ -36,7 +36,7 @@ require('../../chunk-BQ6MKKYS.cjs');
36
36
  require('../../chunk-6LTOCALJ.cjs');
37
37
  require('../../chunk-4B2XCWGL.cjs');
38
38
  require('../../chunk-5CIFX7O6.cjs');
39
- require('../../chunk-PVHTCHPH.cjs');
39
+ require('../../chunk-PKAVTW7I.cjs');
40
40
  require('../../chunk-XC7SHABV.cjs');
41
41
  require('../../chunk-ABEJKCAO.cjs');
42
42
  require('../../chunk-6TCZFTKD.cjs');
@@ -57,7 +57,7 @@ require('../../chunk-KTC5RW57.cjs');
57
57
  require('../../chunk-GU6AYGWK.cjs');
58
58
  require('../../chunk-SNRM7OTJ.cjs');
59
59
  require('../../chunk-ZGKV237Z.cjs');
60
- require('../../chunk-6XCNUGCJ.cjs');
60
+ require('../../chunk-NTCZ6VPJ.cjs');
61
61
  require('../../chunk-N7OUNPMM.cjs');
62
62
  require('../../chunk-MPD2DJAD.cjs');
63
63
  require('../../chunk-YELWQAMG.cjs');
@@ -13,7 +13,7 @@ import "../../chunk-RNL46FQ3.js";
13
13
  import "../../chunk-MWUFUBY5.js";
14
14
  import "../../chunk-GKKLBSFA.js";
15
15
  import "../../chunk-264HKVNG.js";
16
- import "../../chunk-HRDRX2SI.js";
16
+ import "../../chunk-BSY5YJFG.js";
17
17
  import "../../chunk-LKHGPAZI.js";
18
18
  import "../../chunk-FLFB2K34.js";
19
19
  import "../../chunk-HST4VI64.js";
@@ -36,7 +36,7 @@ import "../../chunk-RVLBQKTB.js";
36
36
  import "../../chunk-USM6V6GH.js";
37
37
  import "../../chunk-TSCDX4AS.js";
38
38
  import "../../chunk-D6B6MYVG.js";
39
- import "../../chunk-K4PMQBGJ.js";
39
+ import "../../chunk-HIEILUX4.js";
40
40
  import "../../chunk-A526SGYQ.js";
41
41
  import "../../chunk-PJAUZ5BZ.js";
42
42
  import "../../chunk-6OKCPP4P.js";
@@ -57,7 +57,7 @@ import "../../chunk-AS5LR4AI.js";
57
57
  import "../../chunk-KQSQJAHU.js";
58
58
  import "../../chunk-JC22THP7.js";
59
59
  import "../../chunk-2HWPZ6ZE.js";
60
- import "../../chunk-L2Q5LY5W.js";
60
+ import "../../chunk-ZJ56YG7L.js";
61
61
  import "../../chunk-73CVRDI7.js";
62
62
  import "../../chunk-FL5CT6MC.js";
63
63
  import "../../chunk-HLRQ5H3N.js";
@@ -8,7 +8,7 @@ require('../chunk-SFUIGVPA.cjs');
8
8
  require('../chunk-X23ZSPZC.cjs');
9
9
  require('../chunk-2UTQQDPY.cjs');
10
10
  require('../chunk-MJ7L4G3V.cjs');
11
- require('../chunk-RRT265CM.cjs');
11
+ require('../chunk-V6M22LNO.cjs');
12
12
  require('../chunk-LKES6YKV.cjs');
13
13
  require('../chunk-3TNVJY4F.cjs');
14
14
  require('../chunk-WPWV7ZEM.cjs');
@@ -31,7 +31,7 @@ require('../chunk-BQ6MKKYS.cjs');
31
31
  require('../chunk-6LTOCALJ.cjs');
32
32
  require('../chunk-4B2XCWGL.cjs');
33
33
  require('../chunk-5CIFX7O6.cjs');
34
- require('../chunk-PVHTCHPH.cjs');
34
+ require('../chunk-PKAVTW7I.cjs');
35
35
 
36
36
 
37
37
  var _chunkXC7SHABVcjs = require('../chunk-XC7SHABV.cjs');
@@ -60,7 +60,7 @@ require('../chunk-KTC5RW57.cjs');
60
60
  require('../chunk-GU6AYGWK.cjs');
61
61
  require('../chunk-SNRM7OTJ.cjs');
62
62
  require('../chunk-ZGKV237Z.cjs');
63
- require('../chunk-6XCNUGCJ.cjs');
63
+ require('../chunk-NTCZ6VPJ.cjs');
64
64
  require('../chunk-N7OUNPMM.cjs');
65
65
  require('../chunk-MPD2DJAD.cjs');
66
66
  require('../chunk-YELWQAMG.cjs');
@@ -8,7 +8,7 @@ import "../chunk-RNL46FQ3.js";
8
8
  import "../chunk-MWUFUBY5.js";
9
9
  import "../chunk-GKKLBSFA.js";
10
10
  import "../chunk-264HKVNG.js";
11
- import "../chunk-HRDRX2SI.js";
11
+ import "../chunk-BSY5YJFG.js";
12
12
  import "../chunk-LKHGPAZI.js";
13
13
  import "../chunk-FLFB2K34.js";
14
14
  import "../chunk-HST4VI64.js";
@@ -31,7 +31,7 @@ import "../chunk-RVLBQKTB.js";
31
31
  import "../chunk-USM6V6GH.js";
32
32
  import "../chunk-TSCDX4AS.js";
33
33
  import "../chunk-D6B6MYVG.js";
34
- import "../chunk-K4PMQBGJ.js";
34
+ import "../chunk-HIEILUX4.js";
35
35
  import {
36
36
  DefaultLogger
37
37
  } from "../chunk-A526SGYQ.js";
@@ -60,7 +60,7 @@ import "../chunk-AS5LR4AI.js";
60
60
  import "../chunk-KQSQJAHU.js";
61
61
  import "../chunk-JC22THP7.js";
62
62
  import "../chunk-2HWPZ6ZE.js";
63
- import "../chunk-L2Q5LY5W.js";
63
+ import "../chunk-ZJ56YG7L.js";
64
64
  import "../chunk-73CVRDI7.js";
65
65
  import "../chunk-FL5CT6MC.js";
66
66
  import "../chunk-HLRQ5H3N.js";