@graffiti-garden/implementation-decentralized 0.0.1

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 (193) hide show
  1. package/LICENSE +674 -0
  2. package/dist/1-services/1-authorization.d.ts +37 -0
  3. package/dist/1-services/1-authorization.d.ts.map +1 -0
  4. package/dist/1-services/2-dids-tests.d.ts +2 -0
  5. package/dist/1-services/2-dids-tests.d.ts.map +1 -0
  6. package/dist/1-services/2-dids.d.ts +9 -0
  7. package/dist/1-services/2-dids.d.ts.map +1 -0
  8. package/dist/1-services/3-storage-buckets-tests.d.ts +2 -0
  9. package/dist/1-services/3-storage-buckets-tests.d.ts.map +1 -0
  10. package/dist/1-services/3-storage-buckets.d.ts +11 -0
  11. package/dist/1-services/3-storage-buckets.d.ts.map +1 -0
  12. package/dist/1-services/4-inboxes-tests.d.ts +2 -0
  13. package/dist/1-services/4-inboxes-tests.d.ts.map +1 -0
  14. package/dist/1-services/4-inboxes.d.ts +87 -0
  15. package/dist/1-services/4-inboxes.d.ts.map +1 -0
  16. package/dist/1-services/utilities.d.ts +7 -0
  17. package/dist/1-services/utilities.d.ts.map +1 -0
  18. package/dist/2-primitives/1-string-encoding-tests.d.ts +2 -0
  19. package/dist/2-primitives/1-string-encoding-tests.d.ts.map +1 -0
  20. package/dist/2-primitives/1-string-encoding.d.ts +6 -0
  21. package/dist/2-primitives/1-string-encoding.d.ts.map +1 -0
  22. package/dist/2-primitives/2-content-addresses-tests.d.ts +2 -0
  23. package/dist/2-primitives/2-content-addresses-tests.d.ts.map +1 -0
  24. package/dist/2-primitives/2-content-addresses.d.ts +8 -0
  25. package/dist/2-primitives/2-content-addresses.d.ts.map +1 -0
  26. package/dist/2-primitives/3-channel-attestations-tests.d.ts +2 -0
  27. package/dist/2-primitives/3-channel-attestations-tests.d.ts.map +1 -0
  28. package/dist/2-primitives/3-channel-attestations.d.ts +13 -0
  29. package/dist/2-primitives/3-channel-attestations.d.ts.map +1 -0
  30. package/dist/2-primitives/4-allowed-attestations-tests.d.ts +2 -0
  31. package/dist/2-primitives/4-allowed-attestations-tests.d.ts.map +1 -0
  32. package/dist/2-primitives/4-allowed-attestations.d.ts +9 -0
  33. package/dist/2-primitives/4-allowed-attestations.d.ts.map +1 -0
  34. package/dist/3-protocol/1-sessions.d.ts +81 -0
  35. package/dist/3-protocol/1-sessions.d.ts.map +1 -0
  36. package/dist/3-protocol/2-handles-tests.d.ts +2 -0
  37. package/dist/3-protocol/2-handles-tests.d.ts.map +1 -0
  38. package/dist/3-protocol/2-handles.d.ts +13 -0
  39. package/dist/3-protocol/2-handles.d.ts.map +1 -0
  40. package/dist/3-protocol/3-object-encoding-tests.d.ts +2 -0
  41. package/dist/3-protocol/3-object-encoding-tests.d.ts.map +1 -0
  42. package/dist/3-protocol/3-object-encoding.d.ts +43 -0
  43. package/dist/3-protocol/3-object-encoding.d.ts.map +1 -0
  44. package/dist/3-protocol/4-graffiti.d.ts +79 -0
  45. package/dist/3-protocol/4-graffiti.d.ts.map +1 -0
  46. package/dist/3-protocol/login-dialog.html.d.ts +2 -0
  47. package/dist/3-protocol/login-dialog.html.d.ts.map +1 -0
  48. package/dist/browser/ajv-QBSREQSI.js +9 -0
  49. package/dist/browser/ajv-QBSREQSI.js.map +7 -0
  50. package/dist/browser/build-BXWPS7VK.js +2 -0
  51. package/dist/browser/build-BXWPS7VK.js.map +7 -0
  52. package/dist/browser/chunk-RFBBAUMM.js +2 -0
  53. package/dist/browser/chunk-RFBBAUMM.js.map +7 -0
  54. package/dist/browser/graffiti-KV3G3O72-URO7SJIJ.js +2 -0
  55. package/dist/browser/graffiti-KV3G3O72-URO7SJIJ.js.map +7 -0
  56. package/dist/browser/index.js +16 -0
  57. package/dist/browser/index.js.map +7 -0
  58. package/dist/browser/login-dialog.html-XUWYDNNI.js +44 -0
  59. package/dist/browser/login-dialog.html-XUWYDNNI.js.map +7 -0
  60. package/dist/browser/rock-salt-LI7DAH66-KPFEBIBO.js +2 -0
  61. package/dist/browser/rock-salt-LI7DAH66-KPFEBIBO.js.map +7 -0
  62. package/dist/browser/style-YUTCEBZV-RWYJV575.js +287 -0
  63. package/dist/browser/style-YUTCEBZV-RWYJV575.js.map +7 -0
  64. package/dist/cjs/1-services/1-authorization.js +317 -0
  65. package/dist/cjs/1-services/1-authorization.js.map +7 -0
  66. package/dist/cjs/1-services/2-dids-tests.js +44 -0
  67. package/dist/cjs/1-services/2-dids-tests.js.map +7 -0
  68. package/dist/cjs/1-services/2-dids.js +47 -0
  69. package/dist/cjs/1-services/2-dids.js.map +7 -0
  70. package/dist/cjs/1-services/3-storage-buckets-tests.js +123 -0
  71. package/dist/cjs/1-services/3-storage-buckets-tests.js.map +7 -0
  72. package/dist/cjs/1-services/3-storage-buckets.js +148 -0
  73. package/dist/cjs/1-services/3-storage-buckets.js.map +7 -0
  74. package/dist/cjs/1-services/4-inboxes-tests.js +145 -0
  75. package/dist/cjs/1-services/4-inboxes-tests.js.map +7 -0
  76. package/dist/cjs/1-services/4-inboxes.js +539 -0
  77. package/dist/cjs/1-services/4-inboxes.js.map +7 -0
  78. package/dist/cjs/1-services/utilities.js +75 -0
  79. package/dist/cjs/1-services/utilities.js.map +7 -0
  80. package/dist/cjs/2-primitives/1-string-encoding-tests.js +50 -0
  81. package/dist/cjs/2-primitives/1-string-encoding-tests.js.map +7 -0
  82. package/dist/cjs/2-primitives/1-string-encoding.js +46 -0
  83. package/dist/cjs/2-primitives/1-string-encoding.js.map +7 -0
  84. package/dist/cjs/2-primitives/2-content-addresses-tests.js +62 -0
  85. package/dist/cjs/2-primitives/2-content-addresses-tests.js.map +7 -0
  86. package/dist/cjs/2-primitives/2-content-addresses.js +53 -0
  87. package/dist/cjs/2-primitives/2-content-addresses.js.map +7 -0
  88. package/dist/cjs/2-primitives/3-channel-attestations-tests.js +130 -0
  89. package/dist/cjs/2-primitives/3-channel-attestations-tests.js.map +7 -0
  90. package/dist/cjs/2-primitives/3-channel-attestations.js +84 -0
  91. package/dist/cjs/2-primitives/3-channel-attestations.js.map +7 -0
  92. package/dist/cjs/2-primitives/4-allowed-attestations-tests.js +96 -0
  93. package/dist/cjs/2-primitives/4-allowed-attestations-tests.js.map +7 -0
  94. package/dist/cjs/2-primitives/4-allowed-attestations.js +68 -0
  95. package/dist/cjs/2-primitives/4-allowed-attestations.js.map +7 -0
  96. package/dist/cjs/3-protocol/1-sessions.js +473 -0
  97. package/dist/cjs/3-protocol/1-sessions.js.map +7 -0
  98. package/dist/cjs/3-protocol/2-handles-tests.js +39 -0
  99. package/dist/cjs/3-protocol/2-handles-tests.js.map +7 -0
  100. package/dist/cjs/3-protocol/2-handles.js +65 -0
  101. package/dist/cjs/3-protocol/2-handles.js.map +7 -0
  102. package/dist/cjs/3-protocol/3-object-encoding-tests.js +253 -0
  103. package/dist/cjs/3-protocol/3-object-encoding-tests.js.map +7 -0
  104. package/dist/cjs/3-protocol/3-object-encoding.js +287 -0
  105. package/dist/cjs/3-protocol/3-object-encoding.js.map +7 -0
  106. package/dist/cjs/3-protocol/4-graffiti.js +937 -0
  107. package/dist/cjs/3-protocol/4-graffiti.js.map +7 -0
  108. package/dist/cjs/3-protocol/login-dialog.html.js +67 -0
  109. package/dist/cjs/3-protocol/login-dialog.html.js.map +7 -0
  110. package/dist/cjs/index.js +32 -0
  111. package/dist/cjs/index.js.map +7 -0
  112. package/dist/cjs/index.spec.js +130 -0
  113. package/dist/cjs/index.spec.js.map +7 -0
  114. package/dist/esm/1-services/1-authorization.js +304 -0
  115. package/dist/esm/1-services/1-authorization.js.map +7 -0
  116. package/dist/esm/1-services/2-dids-tests.js +24 -0
  117. package/dist/esm/1-services/2-dids-tests.js.map +7 -0
  118. package/dist/esm/1-services/2-dids.js +27 -0
  119. package/dist/esm/1-services/2-dids.js.map +7 -0
  120. package/dist/esm/1-services/3-storage-buckets-tests.js +103 -0
  121. package/dist/esm/1-services/3-storage-buckets-tests.js.map +7 -0
  122. package/dist/esm/1-services/3-storage-buckets.js +132 -0
  123. package/dist/esm/1-services/3-storage-buckets.js.map +7 -0
  124. package/dist/esm/1-services/4-inboxes-tests.js +125 -0
  125. package/dist/esm/1-services/4-inboxes-tests.js.map +7 -0
  126. package/dist/esm/1-services/4-inboxes.js +533 -0
  127. package/dist/esm/1-services/4-inboxes.js.map +7 -0
  128. package/dist/esm/1-services/utilities.js +60 -0
  129. package/dist/esm/1-services/utilities.js.map +7 -0
  130. package/dist/esm/2-primitives/1-string-encoding-tests.js +33 -0
  131. package/dist/esm/2-primitives/1-string-encoding-tests.js.map +7 -0
  132. package/dist/esm/2-primitives/1-string-encoding.js +26 -0
  133. package/dist/esm/2-primitives/1-string-encoding.js.map +7 -0
  134. package/dist/esm/2-primitives/2-content-addresses-tests.js +45 -0
  135. package/dist/esm/2-primitives/2-content-addresses-tests.js.map +7 -0
  136. package/dist/esm/2-primitives/2-content-addresses.js +33 -0
  137. package/dist/esm/2-primitives/2-content-addresses.js.map +7 -0
  138. package/dist/esm/2-primitives/3-channel-attestations-tests.js +116 -0
  139. package/dist/esm/2-primitives/3-channel-attestations-tests.js.map +7 -0
  140. package/dist/esm/2-primitives/3-channel-attestations.js +69 -0
  141. package/dist/esm/2-primitives/3-channel-attestations.js.map +7 -0
  142. package/dist/esm/2-primitives/4-allowed-attestations-tests.js +82 -0
  143. package/dist/esm/2-primitives/4-allowed-attestations-tests.js.map +7 -0
  144. package/dist/esm/2-primitives/4-allowed-attestations.js +51 -0
  145. package/dist/esm/2-primitives/4-allowed-attestations.js.map +7 -0
  146. package/dist/esm/3-protocol/1-sessions.js +465 -0
  147. package/dist/esm/3-protocol/1-sessions.js.map +7 -0
  148. package/dist/esm/3-protocol/2-handles-tests.js +19 -0
  149. package/dist/esm/3-protocol/2-handles-tests.js.map +7 -0
  150. package/dist/esm/3-protocol/2-handles.js +45 -0
  151. package/dist/esm/3-protocol/2-handles.js.map +7 -0
  152. package/dist/esm/3-protocol/3-object-encoding-tests.js +248 -0
  153. package/dist/esm/3-protocol/3-object-encoding-tests.js.map +7 -0
  154. package/dist/esm/3-protocol/3-object-encoding.js +280 -0
  155. package/dist/esm/3-protocol/3-object-encoding.js.map +7 -0
  156. package/dist/esm/3-protocol/4-graffiti.js +957 -0
  157. package/dist/esm/3-protocol/4-graffiti.js.map +7 -0
  158. package/dist/esm/3-protocol/login-dialog.html.js +47 -0
  159. package/dist/esm/3-protocol/login-dialog.html.js.map +7 -0
  160. package/dist/esm/index.js +14 -0
  161. package/dist/esm/index.js.map +7 -0
  162. package/dist/esm/index.spec.js +133 -0
  163. package/dist/esm/index.spec.js.map +7 -0
  164. package/dist/index.d.ts +10 -0
  165. package/dist/index.d.ts.map +1 -0
  166. package/dist/index.spec.d.ts +2 -0
  167. package/dist/index.spec.d.ts.map +1 -0
  168. package/package.json +62 -0
  169. package/src/1-services/1-authorization.ts +399 -0
  170. package/src/1-services/2-dids-tests.ts +24 -0
  171. package/src/1-services/2-dids.ts +30 -0
  172. package/src/1-services/3-storage-buckets-tests.ts +121 -0
  173. package/src/1-services/3-storage-buckets.ts +183 -0
  174. package/src/1-services/4-inboxes-tests.ts +154 -0
  175. package/src/1-services/4-inboxes.ts +722 -0
  176. package/src/1-services/utilities.ts +65 -0
  177. package/src/2-primitives/1-string-encoding-tests.ts +33 -0
  178. package/src/2-primitives/1-string-encoding.ts +33 -0
  179. package/src/2-primitives/2-content-addresses-tests.ts +46 -0
  180. package/src/2-primitives/2-content-addresses.ts +42 -0
  181. package/src/2-primitives/3-channel-attestations-tests.ts +125 -0
  182. package/src/2-primitives/3-channel-attestations.ts +95 -0
  183. package/src/2-primitives/4-allowed-attestations-tests.ts +86 -0
  184. package/src/2-primitives/4-allowed-attestations.ts +69 -0
  185. package/src/3-protocol/1-sessions.ts +601 -0
  186. package/src/3-protocol/2-handles-tests.ts +17 -0
  187. package/src/3-protocol/2-handles.ts +60 -0
  188. package/src/3-protocol/3-object-encoding-tests.ts +269 -0
  189. package/src/3-protocol/3-object-encoding.ts +396 -0
  190. package/src/3-protocol/4-graffiti.ts +1265 -0
  191. package/src/3-protocol/login-dialog.html.ts +43 -0
  192. package/src/index.spec.ts +158 -0
  193. package/src/index.ts +16 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/cross-fetch/dist/browser-ponyfill.js", "../../node_modules/@graffiti-garden/api/src/2-types.ts", "../../node_modules/@graffiti-garden/api/src/3-errors.ts", "../../node_modules/@graffiti-garden/api/src/4-utilities.ts", "../../node_modules/zod/v4/core/core.js", "../../node_modules/zod/v4/core/util.js", "../../node_modules/zod/v4/core/errors.js", "../../node_modules/zod/v4/core/parse.js", "../../node_modules/zod/v4/core/regexes.js", "../../node_modules/zod/v4/core/checks.js", "../../node_modules/zod/v4/core/versions.js", "../../node_modules/zod/v4/core/schemas.js", "../../node_modules/zod/v4/core/registries.js", "../../node_modules/zod/v4/core/api.js", "../../node_modules/zod/v4/mini/schemas.js", "../../node_modules/@graffiti-garden/api/src/5-runtime-types.ts", "../../node_modules/@noble/hashes/src/utils.ts", "../../node_modules/cborg/lib/is.js", "../../node_modules/cborg/lib/token.js", "../../node_modules/cborg/lib/byte-utils.js", "../../node_modules/cborg/lib/bl.js", "../../node_modules/cborg/lib/common.js", "../../node_modules/cborg/lib/0uint.js", "../../node_modules/cborg/lib/1negint.js", "../../node_modules/cborg/lib/2bytes.js", "../../node_modules/cborg/lib/3string.js", "../../node_modules/cborg/lib/4array.js", "../../node_modules/cborg/lib/5map.js", "../../node_modules/cborg/lib/6tag.js", "../../node_modules/cborg/lib/7float.js", "../../node_modules/cborg/lib/jump.js", "../../node_modules/cborg/lib/encode.js", "../../node_modules/cborg/lib/decode.js", "../../node_modules/multiformats/src/bytes.ts", "../../node_modules/multiformats/src/vendor/base-x.js", "../../node_modules/multiformats/src/bases/base.ts", "../../node_modules/multiformats/src/bases/base32.ts", "../../node_modules/multiformats/src/bases/base36.ts", "../../node_modules/multiformats/src/bases/base58.ts", "../../node_modules/multiformats/src/vendor/varint.js", "../../node_modules/multiformats/src/varint.ts", "../../node_modules/multiformats/src/hashes/digest.ts", "../../node_modules/multiformats/src/cid.ts", "../../node_modules/@ipld/dag-cbor/src/index.js", "../../node_modules/did-resolver/src/resolver.ts", "../../node_modules/axios/lib/helpers/bind.js", "../../node_modules/axios/lib/utils.js", "../../node_modules/axios/lib/core/AxiosError.js", "../../node_modules/axios/lib/helpers/null.js", "../../node_modules/axios/lib/helpers/toFormData.js", "../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js", "../../node_modules/axios/lib/helpers/buildURL.js", "../../node_modules/axios/lib/core/InterceptorManager.js", "../../node_modules/axios/lib/defaults/transitional.js", "../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js", "../../node_modules/axios/lib/platform/browser/classes/FormData.js", "../../node_modules/axios/lib/platform/browser/classes/Blob.js", "../../node_modules/axios/lib/platform/browser/index.js", "../../node_modules/axios/lib/platform/common/utils.js", "../../node_modules/axios/lib/platform/index.js", "../../node_modules/axios/lib/helpers/toURLEncodedForm.js", "../../node_modules/axios/lib/helpers/formDataToJSON.js", "../../node_modules/axios/lib/defaults/index.js", "../../node_modules/axios/lib/helpers/parseHeaders.js", "../../node_modules/axios/lib/core/AxiosHeaders.js", "../../node_modules/axios/lib/core/transformData.js", "../../node_modules/axios/lib/cancel/isCancel.js", "../../node_modules/axios/lib/cancel/CanceledError.js", "../../node_modules/axios/lib/core/settle.js", "../../node_modules/axios/lib/helpers/parseProtocol.js", "../../node_modules/axios/lib/helpers/speedometer.js", "../../node_modules/axios/lib/helpers/throttle.js", "../../node_modules/axios/lib/helpers/progressEventReducer.js", "../../node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../node_modules/axios/lib/helpers/cookies.js", "../../node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../node_modules/axios/lib/helpers/combineURLs.js", "../../node_modules/axios/lib/core/buildFullPath.js", "../../node_modules/axios/lib/core/mergeConfig.js", "../../node_modules/axios/lib/helpers/resolveConfig.js", "../../node_modules/axios/lib/adapters/xhr.js", "../../node_modules/axios/lib/helpers/composeSignals.js", "../../node_modules/axios/lib/helpers/trackStream.js", "../../node_modules/axios/lib/adapters/fetch.js", "../../node_modules/axios/lib/adapters/adapters.js", "../../node_modules/axios/lib/core/dispatchRequest.js", "../../node_modules/axios/lib/env/data.js", "../../node_modules/axios/lib/helpers/validator.js", "../../node_modules/axios/lib/core/Axios.js", "../../node_modules/axios/lib/cancel/CancelToken.js", "../../node_modules/axios/lib/helpers/spread.js", "../../node_modules/axios/lib/helpers/isAxiosError.js", "../../node_modules/axios/lib/helpers/HttpStatusCode.js", "../../node_modules/axios/lib/axios.js", "../../node_modules/axios/index.js", "../../node_modules/plc-did-resolver/src/resolver.ts", "../../node_modules/web-did-resolver/src/resolver.ts", "../../src/1-services/2-dids.ts", "../../node_modules/oauth4webapi/src/index.ts", "../../node_modules/openid-client/src/index.ts", "../../src/1-services/1-authorization.ts", "../../src/1-services/utilities.ts", "../../src/1-services/3-storage-buckets.ts", "../../src/1-services/4-inboxes.ts", "../../src/2-primitives/1-string-encoding.ts", "../../node_modules/@noble/hashes/src/webcrypto.ts", "../../src/2-primitives/2-content-addresses.ts", "../../node_modules/@noble/ed25519/index.js", "../../src/2-primitives/3-channel-attestations.ts", "../../src/2-primitives/4-allowed-attestations.ts", "../../src/3-protocol/2-handles.ts", "../../src/3-protocol/1-sessions.ts", "../../src/3-protocol/3-object-encoding.ts", "../../node_modules/@graffiti-garden/modal/src/index.ts", "../../src/3-protocol/4-graffiti.ts", "../../src/index.ts"],
4
+ "sourcesContent": ["// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n /* eslint-disable no-prototype-builtins */\n var g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {};\n\n var support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n var encoding = match ? match[1] : 'utf-8';\n reader.readAsText(blob, encoding);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._noBody = true;\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n };\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n try {\n headers.append(key, value);\n } catch (error) {\n console.warn('Response ' + error.message);\n }\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 200, statusText: ''});\n response.ok = false;\n response.status = 0;\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = g.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name));\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value);\n }\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!g.fetch) {\n g.fetch = fetch;\n g.Headers = Headers;\n g.Request = Request;\n g.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n", "import type { JSONSchema, FromSchema } from \"json-schema-to-ts\";\n\n/**\n * Objects are the atomic unit in Graffiti that can represent both data (*e.g.* a social media post or profile)\n * and activities (*e.g.* a like or follow).\n *\n * Each object embeds the {@link actor | `actor`} that created it.\n * Object content and metadata are static but an object may be deleted by\n * its creating {@link actor | `actor`}.\n *\n * An object's content is stored in its {@link value | `value`} property, which can be any JSON\n * object. However, it is recommended to use properties from the\n * [Activity Vocabulary](https://www.w3.org/TR/activitystreams-vocabulary/)\n * or properties that emerge in the Graffiti [folksonomy](https://en.wikipedia.org/wiki/Folksonomy)\n * to promote interoperability.\n *\n * Each object is globally addressable via its {@link url | `url`}.\n *\n * An object's {@link channels | `channels`} and {@link allowed | `allowed`} properties\n * are set by an objects creator to shape the visibility of and access to their object.\n */\nexport interface GraffitiObjectBase {\n /**\n * The object's content as freeform JSON. We recommend using properties from the\n * [Activity Vocabulary](https://www.w3.org/TR/activitystreams-vocabulary/)\n * or properties that emerge in the Graffiti [folksonomy](https://en.wikipedia.org/wiki/Folksonomy)\n * to promote interoperability.\n */\n value: {};\n\n /**\n * An array of URIs the creator associates with the object. Objects can only be found by querying\n * one of the object's channels using the\n * {@link Graffiti.discover} method. This allows creators to express the intended audience of their object\n * which helps to prevent [context collapse](https://en.wikipedia.org/wiki/Context_collapse) even\n * in the highly interoperable ecosystem that Graffiti envisions. For example, channel URIs may be:\n * - A actor's own {@link actor | `actor`} URI. Posting an object to this channel is a way to broadcast\n * the object to the actor's followers, like posting a tweet.\n * - The URL of a Graffiti post. Posting an object to this channel is a way to broadcast to anyone viewing\n * the post, like commenting on a tweet.\n * - A URI representing a topic. Posting an object to this channel is a way to broadcast to anyone interested\n * in that topic, like posting in a subreddit.\n */\n channels: string[];\n\n /**\n * An optional array of {@link actor | `actor`} URIs that the creator allows to access the object.\n * If no `allowed` array is provided, the object can be accessed by anyone (so long as they\n * also know the right {@link channels | `channel` } to look in). An object can always be accessed by its creator, even if\n * the `allowed` array is empty.\n *\n * The `allowed` array is not revealed to actors other than the creator, like\n * a BCC email. An actor may choose to add a `to` property to the object's {@link value | `value`} to indicate\n * other recipients, however this is not enforced by Graffiti and may not accurately reflect the actual `allowed` array.\n *\n * `allowed` can be combined with {@link channels | `channels`}. For example, to send someone a direct message\n * the sender should post their object to the channel of the recipient's {@link actor | `actor`} URI to notify them of the message and also add\n * the recipient's {@link actor | `actor`} URI to the `allowed` array to prevent others from seeing the message.\n */\n allowed?: string[] | null;\n\n /**\n * The URI of the `actor` that {@link Graffiti.post | created } the object.\n * This `actor` has the unique permission to\n * {@link Graffiti.delete | delete} the object.\n *\n * We borrow the term actor from the ActivityPub because\n * [like in ActivityPub](https://www.w3.org/TR/activitypub/#h-note-0)\n * there is not necessarily a one-to-one mapping between actors and people/users.\n * Multiple people can share the same actor or one person can have multiple actors.\n * Actors can also be bots.\n *\n * In Graffiti, actors are always globally unique URIs which\n * allows them to also function as {@link channels | `channels`}.\n */\n actor: string;\n\n /**\n * A globally unique identifier and locator for the object. It can be used to point to\n * an object or to retrieve the object directly with {@link Graffiti.get}.\n *\n * An object's URL is generated when the object is first created and\n * should include sufficient randomness to prevent collisions\n * and guessing. The URL starts with a \"scheme,\" just like web URLs start with `http` or `https`, to indicate\n * to indicate the particular Graffiti implementation. This allows for applications\n * to pull from multiple coexisting Graffiti implementations without collision.\n * Existing schemes include `graffiti:local:` for objects stored locally\n * (see the [local implementation](https://github.com/graffiti-garden/implementation-local))\n * and `graffiti:remote:` for objects stored on Graffiti-specific web servers (see the [remote implementation](https://github.com/graffiti-garden/implementation-remote))\n * Options available in the future might include `graffiti:solid:` for objects stored on Solid servers\n * or `graffiti:p2p:` for objects stored on a peer-to-peer network.\n */\n url: string;\n}\n\n/**\n * This type constrains the {@link GraffitiObjectBase} type to adhere to a\n * particular [JSON schema](https://json-schema.org/).\n * This allows for static type-checking of an object's {@link GraffitiObjectBase.value | `value`}\n * which is otherwise a freeform JSON object.\n *\n * Schema-aware objects are returned by {@link Graffiti.get} and {@link Graffiti.discover}.\n */\nexport type GraffitiObject<Schema extends JSONSchema> = GraffitiObjectBase &\n FromSchema<Schema & typeof GraffitiPostObjectJSONSchema>;\n\n/**\n * A JSON Schema equivalent to the {@link GraffitiObjectBase} type.\n * Needed internally for type inference of JSON Schemas, but can\n * be used by implementations to validate objects.\n */\nexport const GraffitiObjectJSONSchema = {\n type: \"object\",\n properties: {\n value: { type: \"object\" },\n channels: { type: \"array\", items: { type: \"string\" } },\n allowed: { type: \"array\", items: { type: \"string\" }, nullable: true },\n url: { type: \"string\" },\n actor: { type: \"string\" },\n },\n additionalProperties: false,\n required: [\"value\", \"channels\", \"actor\", \"url\"],\n} as const satisfies JSONSchema;\n\n/**\n * This is an object containing only the {@link GraffitiObjectBase.url | `url`}\n * property of a {@link GraffitiObjectBase | GraffitiObject}.\n * It is used as a utility type so that applications can call\n * {@link Graffiti.delete} directly on an object\n * rather than on `object.url`.\n */\nexport type GraffitiObjectUrl = Pick<GraffitiObjectBase, \"url\">;\n\n/**\n * This object is a subset of {@link GraffitiObjectBase} that must be constructed locally before calling {@link Graffiti.post}.\n * This local copy ignores system-generated properties\n * ({@link GraffitiObjectBase.url | `url`} and {@link GraffitiObjectBase.actor | `actor`}),\n * and may be statically typed with\n * a [JSON schema](https://json-schema.org/) to prevent the accidental creation of erroneous objects.\n *\n * This local object must have a {@link GraffitiObjectBase.value | `value`} and {@link GraffitiObjectBase.channels | `channels`}\n * and may optionally have an {@link GraffitiObjectBase.allowed | `allowed`} property.\n */\nexport type GraffitiPostObject<Schema extends JSONSchema> = Pick<\n GraffitiObjectBase,\n \"value\" | \"channels\" | \"allowed\"\n> &\n FromSchema<Schema & typeof GraffitiPostObjectJSONSchema>;\n\n/**\n * A JSON Schema equivalent to the {@link GraffitiPostObject} type.\n * Needed internally for type inference of JSON Schemas, but can\n * be used by implementations to validate objects.\n */\nexport const GraffitiPostObjectJSONSchema = {\n ...GraffitiObjectJSONSchema,\n required: [\"value\", \"channels\"],\n} as const satisfies JSONSchema;\n\n/**\n * This object contains information that the underlying implementation can\n * use to authenticate a particular {@link GraffitiObjectBase.actor | `actor`}.\n * This object is required of all {@link Graffiti} methods\n * that modify objects or media and is optional for methods that read objects.\n *\n * At a minimum the `session` object must contain the\n * {@link GraffitiSession.actor | `actor`} URI to authenticate with.\n * However it is likely that the `session` object must contain other\n * implementation-specific properties.\n * For example, a Solid implementation might include a\n * [`fetch`](https://docs.inrupt.com/developer-tools/api/javascript/solid-client-authn-browser/functions.html#fetch)\n * function. A distributed implementation may include\n * a cryptographic signature.\n *\n * As to why the `session` object is passed as an argument to every method\n * rather than being an internal property of the {@link Graffiti} instance,\n * this is primarily for type-checking to catch bugs related to login state.\n * Graffiti applications can expose some functionality to people who are not logged in\n * with {@link Graffiti.get} and {@link Graffiti.discover} but without type-checking\n * the `session` it can be easy to forget to hide buttons that trigger\n * other methods that require login.\n *\n * Passing the `session` object per-method also allows for multiple sessions\n * to be used within the same application, like an Email client fetching from\n * multiple accounts.\n */\nexport interface GraffitiSession {\n /**\n * The {@link GraffitiObjectBase.actor | `actor`} to authenticate with.\n */\n actor: string;\n}\n\n/**\n * A stream of data that are returned by {@link Graffiti.discover}.\n *\n * Errors are returned within the stream rather than as\n * exceptions that would halt the entire stream. This is because\n * some implementations may pull data from multiple sources\n * including some that may be unreliable. In many cases,\n * these errors can be safely ignored.\n * See {@link GraffitiObjectStreamError}.\n *\n * The stream is an [`AsyncGenerator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function)\n * that can be iterated over using `for await` loops or calling `next` on the generator.\n * The stream can be terminated by breaking out of a loop calling `return` on the generator.\n *\n * The stream ends by returning a {@link GraffitiObjectStreamReturn.continue | `continue`}\n * function and a {@link GraffitiObjectStreamReturn.cursor | `cursor`} string,\n * each of which can be used to resume the stream from where it left off.\n */\nexport type GraffitiObjectStream<Schema extends JSONSchema> = AsyncGenerator<\n | GraffitiObjectStreamError\n | GraffitiObjectStreamEntry<Schema>\n | GraffitiObjectStreamTombstone,\n GraffitiObjectStreamReturn<Schema>\n>;\n\n/**\n * An error that can occur in a {@link GraffitiObjectStream}.\n *\n * @internal\n */\nexport interface GraffitiObjectStreamError {\n /**\n * The error that occurred while streaming data.\n */\n error: Error;\n /**\n * The origin that the error occurred. It will include\n * the scheme of the Graffiti implementation used and other\n * implementation-specific information like a hostname.\n */\n origin: string;\n}\n\n/**\n * A successful result from a {@link GraffitiObjectStream}\n * that includes an object.\n *\n * @internal\n */\nexport interface GraffitiObjectStreamEntry<Schema extends JSONSchema> {\n /**\n * Empty property for compatibility with {@link GraffitiObjectStreamError}\n */\n error?: undefined;\n /**\n * Empty property for compatibility with {@link GraffitiObjectStreamTombstone}\n */\n tombstone?: undefined;\n /**\n * The object returned by the stream.\n */\n object: GraffitiObject<Schema>;\n}\n\n/**\n * A result from a {@link GraffitiObjectStream} that indicated\n * an object has been deleted since the original stream was run.\n * Only sparse metadata about the deleted object is returned to respect\n * the deleting actor's privacy.\n *\n * @internal\n */\nexport interface GraffitiObjectStreamTombstone {\n /**\n * Empty property for compatibility with {@link GraffitiObjectStreamError}\n */\n error?: undefined;\n /**\n * Use this property to differentiate a tombstone from a\n * {@link GraffitiObjectStreamEntry}.\n */\n tombstone: true;\n /**\n * Sparse metadata about the deleted object. The full object is not returned\n * to respect an actor's privacy.\n */\n object: {\n /**\n * The {@link GraffitiObjectBase.url | `url`} of the deleted object.\n */\n url: string;\n };\n}\n\n/**\n * The output of a {@link GraffitiObjectStream}\n * that allows the stream to be continued from where it left off.\n *\n * The {@link continue} function preserves the typing of the original stream,\n * where as the {@link cursor} string can be serialized for use after a person\n * has closed and reopened an application.\n *\n * The continued stream may include `tombstone`s of objects that have been\n * deleted since the original stream was run. See {@link GraffitiObjectStreamTombstone}.\n * The continued stream may also return some objects that were already\n * returned by the original stream, depending on how much state the\n * underlying implementation is able to preserve.\n *\n * @internal\n */\nexport interface GraffitiObjectStreamReturn<Schema extends JSONSchema> {\n /**\n * @returns A function that creates new stream that continues from where the original stream left off.\n * It preserves the typing of the original stream.\n */\n continue: (session?: GraffitiSession | null) => GraffitiObjectStream<Schema>;\n /**\n * A string that can be serialized and stored to resume the stream later.\n * It must be passed to the {@link Graffiti.continueDiscover} method\n * to resume the stream.\n */\n cursor: string;\n}\n\n/**\n * The event type produced in {@link Graffiti.sessionEvents}\n * when a actor logs in manually from {@link Graffiti.login}\n * or when their session is restored from a previous login.\n * The event name to listen for is `login`.\n */\nexport type GraffitiLoginEvent = CustomEvent<\n | {\n error: Error;\n session?: GraffitiSession;\n }\n | {\n error?: undefined;\n session: GraffitiSession;\n }\n>;\n\n/**\n * The event type produced in {@link Graffiti.sessionEvents}\n * when a actor logs out either manually with {@link Graffiti.logout}\n * or when their session times out or otherwise becomes invalid.\n * The event name to listen for is `logout`.\n */\nexport type GraffitiLogoutEvent = CustomEvent<\n | {\n error: Error;\n actor?: string;\n }\n | {\n error?: undefined;\n actor: string;\n }\n>;\n\n/**\n * The event type produced in {@link Graffiti.sessionEvents}\n * after an application has attempted to complete any login redirects\n * and restore any previously active sessions.\n * Successful session restores will be returned in parallel as\n * their own {@link GraffitiLoginEvent} events.\n *\n * This event optionally returns an `href` property\n * representing the URL that originated a login request,\n * which may be useful for redirecting the user back to\n * the page they were on after login.\n * The event name to listen for is `initialized`.\n */\nexport type GraffitiSessionInitializedEvent = CustomEvent<\n | {\n error?: Error;\n href?: string;\n }\n | null\n | undefined\n>;\n\nexport type GraffitiMedia = {\n /**\n * The binary data of the media to be uploaded,\n * along with its [media type](https://www.iana.org/assignments/media-types/media-types.xhtml),\n * formatted as a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob).\n */\n data: Blob;\n /**\n * The {@link GraffitiObjectBase.actor | `actor`} that\n * {@link Graffiti.postMedia | `post`ed} the media.\n */\n actor: string;\n /**\n * An optional list, identical in function to an object's\n * {@link GraffitiObjectBase.allowed | `allowed`} property,\n * that specifies the {@link GraffitiObjectBase.actor | `actor`}s\n * who are allowed to access the media. If the list is `undefined`\n * or `null`, anyone with the URL can access the media. If the list\n * is empty, only the {@link GraffitiObjectBase.actor | `actor`}\n * who {@link Graffiti.postMedia | `post`ed} the media can access it.\n */\n allowed?: string[] | null;\n};\n\nexport type GraffitiPostMedia = Pick<GraffitiMedia, \"data\" | \"allowed\">;\n\nexport type GraffitiMediaAccept = {\n /**\n * A list of acceptable media types for the retrieved media.\n * Each type in the list may be of the form `<type>/<subtype>`,\n * `<type>/*`, or `&#42;/*`, just as types are formatted in\n * an [HTTP Accept header](https://httpwg.org/specs/rfc9110.html#field.accept).\n */\n types?: string[];\n /**\n * The maximum acceptable size, in bytes, of the media.\n */\n maxBytes?: number;\n};\n", "export class GraffitiErrorForbidden extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorForbidden\";\n Object.setPrototypeOf(this, GraffitiErrorForbidden.prototype);\n }\n}\n\nexport class GraffitiErrorNotFound extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorNotFound\";\n Object.setPrototypeOf(this, GraffitiErrorNotFound.prototype);\n }\n}\n\nexport class GraffitiErrorInvalidSchema extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorInvalidSchema\";\n Object.setPrototypeOf(this, GraffitiErrorInvalidSchema.prototype);\n }\n}\n\nexport class GraffitiErrorSchemaMismatch extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorSchemaMismatch\";\n Object.setPrototypeOf(this, GraffitiErrorSchemaMismatch.prototype);\n }\n}\n\nexport class GraffitiErrorTooLarge extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorTooLarge\";\n Object.setPrototypeOf(this, GraffitiErrorTooLarge.prototype);\n }\n}\n\nexport class GraffitiErrorNotAcceptable extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorNotAcceptable\";\n Object.setPrototypeOf(this, GraffitiErrorNotAcceptable.prototype);\n }\n}\n\nexport class GraffitiErrorCursorExpired extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorCursorExpired\";\n Object.setPrototypeOf(this, GraffitiErrorCursorExpired.prototype);\n }\n}\n", "import type {\n GraffitiObject,\n GraffitiObjectBase,\n GraffitiObjectUrl,\n GraffitiSession,\n} from \"./2-types.js\";\nimport { GraffitiErrorInvalidSchema } from \"./3-errors.js\";\nimport type { JSONSchema } from \"json-schema-to-ts\";\nimport type Ajv from \"ajv\";\n\nexport function unpackObjectUrl(url: string | GraffitiObjectUrl) {\n return typeof url === \"string\" ? url : url.url;\n}\n\nexport function isActorAllowedGraffitiObject(\n object: GraffitiObjectBase,\n session?: GraffitiSession | null,\n) {\n return (\n // If there is no allowed list, the actor is allowed.\n !Array.isArray(object.allowed) ||\n // Otherwise...\n (typeof session?.actor === \"string\" &&\n // The actor must be the creator of the object\n (object.actor === session.actor ||\n // Or be on the allowed list\n object.allowed.includes(session.actor)))\n );\n}\n\nexport function maskGraffitiObject(\n object: GraffitiObjectBase,\n channels: string[],\n actor?: string | null,\n): GraffitiObjectBase {\n // If the actor is the creator, return the object as is\n if (actor === object.actor) return object;\n\n // If there is an allowed list, mask it to only include the actor\n // (This assumes the actor is already allowed to access the object)\n const allowedMasked = object.allowed && actor ? [actor] : undefined;\n // Mask the channels to only include the channels that are being queried\n const channelsMasked = object.channels.filter((c) => channels.includes(c));\n\n return {\n ...object,\n ...(allowedMasked ? { allowed: allowedMasked } : {}),\n channels: channelsMasked,\n };\n}\n\nexport function isMediaAcceptable(\n mediaType: string,\n acceptableMediaTypes: string[],\n): boolean {\n const [type, subtype] = mediaType.toLowerCase().split(\";\")[0].split(\"/\");\n\n if (!type || !subtype) return false;\n\n return acceptableMediaTypes.some((acceptable) => {\n const [accType, accSubtype] = acceptable\n .toLowerCase()\n .split(\";\")[0]\n .split(\"/\");\n\n if (!accType || !accSubtype) return false;\n\n return (\n (accType === type || accType === \"*\") &&\n (accSubtype === subtype || accSubtype === \"*\")\n );\n });\n}\n\nlet ajv: Ajv | undefined = undefined;\nexport async function compileGraffitiObjectSchema<Schema extends JSONSchema>(\n schema: Schema,\n) {\n if (!ajv) {\n const { default: Ajv } = await import(\"ajv\");\n ajv = new Ajv({ strict: false });\n }\n\n try {\n // Force the validation guard because\n // it is too big for the type checker.\n // Fortunately json-schema-to-ts is\n // well tested against ajv.\n return ajv.compile(schema) as (\n data: GraffitiObjectBase,\n ) => data is GraffitiObject<Schema>;\n } catch (error) {\n throw new GraffitiErrorInvalidSchema(\n error instanceof Error ? error.message : String(error),\n );\n }\n}\n", "/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n", "// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n", "import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * \u2716 Expected number, received string at \"username\n * favoriteNumbers[0]\n * \u2716 Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`\u2716 ${issue.message}`);\n if (issue.path?.length)\n lines.push(` \u2192 at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n", "import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n", "import * as util from \"./util.js\";\nexport const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n", "// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n", "export const version = {\n major: 4,\n minor: 3,\n patch: 5,\n};\n", "import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n if (result.issues.length) {\n // For optional-out schemas, ignore errors on absent keys\n if (isOptionalOut && !(key in input)) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalOut) {\n // For optional-out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex;\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig\n ? { code: \"too_big\", maximum: items.length, inclusive: true }\n : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key failed with \"expected number\", retry with Number(key)\n const checkNumericKey = typeof key === \"string\" &&\n regexes.number.test(key) &&\n keyResult.issues.length &&\n keyResult.issues.some((iss) => iss.code === \"invalid_type\" && iss.expected === \"number\");\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n", "var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n", "import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n", "import * as core from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodMiniType = /*@__PURE__*/ core.$constructor(\"ZodMiniType\", (inst, def) => {\n if (!inst._zod)\n throw new Error(\"Uninitialized schema in ZodMiniType.\");\n core.$ZodType.init(inst, def);\n inst.def = def;\n inst.type = def.type;\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.check = (...checks) => {\n return inst.clone({\n ...def,\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }, { parent: true });\n };\n inst.with = inst.check;\n inst.clone = (_def, params) => core.clone(inst, _def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n inst.apply = (fn) => fn(inst);\n});\nexport const ZodMiniString = /*@__PURE__*/ core.$constructor(\"ZodMiniString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function string(params) {\n return core._string(ZodMiniString, params);\n}\nexport const ZodMiniStringFormat = /*@__PURE__*/ core.$constructor(\"ZodMiniStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n ZodMiniString.init(inst, def);\n});\nexport const ZodMiniEmail = /*@__PURE__*/ core.$constructor(\"ZodMiniEmail\", (inst, def) => {\n core.$ZodEmail.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function email(params) {\n return core._email(ZodMiniEmail, params);\n}\nexport const ZodMiniGUID = /*@__PURE__*/ core.$constructor(\"ZodMiniGUID\", (inst, def) => {\n core.$ZodGUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function guid(params) {\n return core._guid(ZodMiniGUID, params);\n}\nexport const ZodMiniUUID = /*@__PURE__*/ core.$constructor(\"ZodMiniUUID\", (inst, def) => {\n core.$ZodUUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function uuid(params) {\n return core._uuid(ZodMiniUUID, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function uuidv4(params) {\n return core._uuidv4(ZodMiniUUID, params);\n}\n// ZodMiniUUIDv6\n// @__NO_SIDE_EFFECTS__\nexport function uuidv6(params) {\n return core._uuidv6(ZodMiniUUID, params);\n}\n// ZodMiniUUIDv7\n// @__NO_SIDE_EFFECTS__\nexport function uuidv7(params) {\n return core._uuidv7(ZodMiniUUID, params);\n}\nexport const ZodMiniURL = /*@__PURE__*/ core.$constructor(\"ZodMiniURL\", (inst, def) => {\n core.$ZodURL.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function url(params) {\n return core._url(ZodMiniURL, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function httpUrl(params) {\n return core._url(ZodMiniURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniEmoji = /*@__PURE__*/ core.$constructor(\"ZodMiniEmoji\", (inst, def) => {\n core.$ZodEmoji.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function emoji(params) {\n return core._emoji(ZodMiniEmoji, params);\n}\nexport const ZodMiniNanoID = /*@__PURE__*/ core.$constructor(\"ZodMiniNanoID\", (inst, def) => {\n core.$ZodNanoID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function nanoid(params) {\n return core._nanoid(ZodMiniNanoID, params);\n}\nexport const ZodMiniCUID = /*@__PURE__*/ core.$constructor(\"ZodMiniCUID\", (inst, def) => {\n core.$ZodCUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function cuid(params) {\n return core._cuid(ZodMiniCUID, params);\n}\nexport const ZodMiniCUID2 = /*@__PURE__*/ core.$constructor(\"ZodMiniCUID2\", (inst, def) => {\n core.$ZodCUID2.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function cuid2(params) {\n return core._cuid2(ZodMiniCUID2, params);\n}\nexport const ZodMiniULID = /*@__PURE__*/ core.$constructor(\"ZodMiniULID\", (inst, def) => {\n core.$ZodULID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function ulid(params) {\n return core._ulid(ZodMiniULID, params);\n}\nexport const ZodMiniXID = /*@__PURE__*/ core.$constructor(\"ZodMiniXID\", (inst, def) => {\n core.$ZodXID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function xid(params) {\n return core._xid(ZodMiniXID, params);\n}\nexport const ZodMiniKSUID = /*@__PURE__*/ core.$constructor(\"ZodMiniKSUID\", (inst, def) => {\n core.$ZodKSUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function ksuid(params) {\n return core._ksuid(ZodMiniKSUID, params);\n}\nexport const ZodMiniIPv4 = /*@__PURE__*/ core.$constructor(\"ZodMiniIPv4\", (inst, def) => {\n core.$ZodIPv4.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function ipv4(params) {\n return core._ipv4(ZodMiniIPv4, params);\n}\nexport const ZodMiniIPv6 = /*@__PURE__*/ core.$constructor(\"ZodMiniIPv6\", (inst, def) => {\n core.$ZodIPv6.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function ipv6(params) {\n return core._ipv6(ZodMiniIPv6, params);\n}\nexport const ZodMiniCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodMiniCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function cidrv4(params) {\n return core._cidrv4(ZodMiniCIDRv4, params);\n}\nexport const ZodMiniCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodMiniCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function cidrv6(params) {\n return core._cidrv6(ZodMiniCIDRv6, params);\n}\nexport const ZodMiniMAC = /*@__PURE__*/ core.$constructor(\"ZodMiniMAC\", (inst, def) => {\n core.$ZodMAC.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function mac(params) {\n return core._mac(ZodMiniMAC, params);\n}\nexport const ZodMiniBase64 = /*@__PURE__*/ core.$constructor(\"ZodMiniBase64\", (inst, def) => {\n core.$ZodBase64.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function base64(params) {\n return core._base64(ZodMiniBase64, params);\n}\nexport const ZodMiniBase64URL = /*@__PURE__*/ core.$constructor(\"ZodMiniBase64URL\", (inst, def) => {\n core.$ZodBase64URL.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function base64url(params) {\n return core._base64url(ZodMiniBase64URL, params);\n}\nexport const ZodMiniE164 = /*@__PURE__*/ core.$constructor(\"ZodMiniE164\", (inst, def) => {\n core.$ZodE164.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function e164(params) {\n return core._e164(ZodMiniE164, params);\n}\nexport const ZodMiniJWT = /*@__PURE__*/ core.$constructor(\"ZodMiniJWT\", (inst, def) => {\n core.$ZodJWT.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function jwt(params) {\n return core._jwt(ZodMiniJWT, params);\n}\nexport const ZodMiniCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodMiniCustomStringFormat\", (inst, def) => {\n core.$ZodCustomStringFormat.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodMiniCustomStringFormat, format, fnOrRegex, _params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function hostname(_params) {\n return core._stringFormat(ZodMiniCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function hex(_params) {\n return core._stringFormat(ZodMiniCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n // check for unrecognized format\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodMiniCustomStringFormat, format, regex, params);\n}\nexport const ZodMiniNumber = /*@__PURE__*/ core.$constructor(\"ZodMiniNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function number(params) {\n return core._number(ZodMiniNumber, params);\n}\nexport const ZodMiniNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodMiniNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodMiniNumber.init(inst, def);\n});\n// int\n// @__NO_SIDE_EFFECTS__\nexport function int(params) {\n return core._int(ZodMiniNumberFormat, params);\n}\n// float32\n// @__NO_SIDE_EFFECTS__\nexport function float32(params) {\n return core._float32(ZodMiniNumberFormat, params);\n}\n// float64\n// @__NO_SIDE_EFFECTS__\nexport function float64(params) {\n return core._float64(ZodMiniNumberFormat, params);\n}\n// int32\n// @__NO_SIDE_EFFECTS__\nexport function int32(params) {\n return core._int32(ZodMiniNumberFormat, params);\n}\n// uint32\n// @__NO_SIDE_EFFECTS__\nexport function uint32(params) {\n return core._uint32(ZodMiniNumberFormat, params);\n}\nexport const ZodMiniBoolean = /*@__PURE__*/ core.$constructor(\"ZodMiniBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function boolean(params) {\n return core._boolean(ZodMiniBoolean, params);\n}\nexport const ZodMiniBigInt = /*@__PURE__*/ core.$constructor(\"ZodMiniBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function bigint(params) {\n return core._bigint(ZodMiniBigInt, params);\n}\nexport const ZodMiniBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodMiniBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodMiniBigInt.init(inst, def);\n});\n// int64\n// @__NO_SIDE_EFFECTS__\nexport function int64(params) {\n return core._int64(ZodMiniBigIntFormat, params);\n}\n// uint64\n// @__NO_SIDE_EFFECTS__\nexport function uint64(params) {\n return core._uint64(ZodMiniBigIntFormat, params);\n}\nexport const ZodMiniSymbol = /*@__PURE__*/ core.$constructor(\"ZodMiniSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function symbol(params) {\n return core._symbol(ZodMiniSymbol, params);\n}\nexport const ZodMiniUndefined = /*@__PURE__*/ core.$constructor(\"ZodMiniUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nfunction _undefined(params) {\n return core._undefined(ZodMiniUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodMiniNull = /*@__PURE__*/ core.$constructor(\"ZodMiniNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nfunction _null(params) {\n return core._null(ZodMiniNull, params);\n}\nexport { _null as null };\nexport const ZodMiniAny = /*@__PURE__*/ core.$constructor(\"ZodMiniAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function any() {\n return core._any(ZodMiniAny);\n}\nexport const ZodMiniUnknown = /*@__PURE__*/ core.$constructor(\"ZodMiniUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function unknown() {\n return core._unknown(ZodMiniUnknown);\n}\nexport const ZodMiniNever = /*@__PURE__*/ core.$constructor(\"ZodMiniNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function never(params) {\n return core._never(ZodMiniNever, params);\n}\nexport const ZodMiniVoid = /*@__PURE__*/ core.$constructor(\"ZodMiniVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nfunction _void(params) {\n return core._void(ZodMiniVoid, params);\n}\nexport { _void as void };\nexport const ZodMiniDate = /*@__PURE__*/ core.$constructor(\"ZodMiniDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function date(params) {\n return core._date(ZodMiniDate, params);\n}\nexport const ZodMiniArray = /*@__PURE__*/ core.$constructor(\"ZodMiniArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function array(element, params) {\n return new ZodMiniArray({\n type: \"array\",\n element: element,\n ...util.normalizeParams(params),\n });\n}\n// .keyof\n// @__NO_SIDE_EFFECTS__\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodMiniObject = /*@__PURE__*/ core.$constructor(\"ZodMiniObject\", (inst, def) => {\n core.$ZodObject.init(inst, def);\n ZodMiniType.init(inst, def);\n util.defineLazy(inst, \"shape\", () => def.shape);\n});\n// @__NO_SIDE_EFFECTS__\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodMiniObject(def);\n}\n// strictObject\n// @__NO_SIDE_EFFECTS__\nexport function strictObject(shape, params) {\n return new ZodMiniObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\n// @__NO_SIDE_EFFECTS__\nexport function looseObject(shape, params) {\n return new ZodMiniObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\n// object methods\n// @__NO_SIDE_EFFECTS__\nexport function extend(schema, shape) {\n return util.extend(schema, shape);\n}\n// @__NO_SIDE_EFFECTS__\nexport function safeExtend(schema, shape) {\n return util.safeExtend(schema, shape);\n}\n// @__NO_SIDE_EFFECTS__\nexport function merge(schema, shape) {\n return util.extend(schema, shape);\n}\n// @__NO_SIDE_EFFECTS__\nexport function pick(schema, mask) {\n return util.pick(schema, mask);\n}\n// .omit\n// @__NO_SIDE_EFFECTS__\nexport function omit(schema, mask) {\n return util.omit(schema, mask);\n}\n// @__NO_SIDE_EFFECTS__\nexport function partial(schema, mask) {\n return util.partial(ZodMiniOptional, schema, mask);\n}\n// @__NO_SIDE_EFFECTS__\nexport function required(schema, mask) {\n return util.required(ZodMiniNonOptional, schema, mask);\n}\n// @__NO_SIDE_EFFECTS__\nexport function catchall(inst, catchall) {\n return inst.clone({ ...inst._zod.def, catchall: catchall });\n}\nexport const ZodMiniUnion = /*@__PURE__*/ core.$constructor(\"ZodMiniUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function union(options, params) {\n return new ZodMiniUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniXor = /*@__PURE__*/ core.$constructor(\"ZodMiniXor\", (inst, def) => {\n ZodMiniUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodMiniXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodMiniDiscriminatedUnion\", (inst, def) => {\n core.$ZodDiscriminatedUnion.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function discriminatedUnion(discriminator, options, params) {\n return new ZodMiniDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniIntersection = /*@__PURE__*/ core.$constructor(\"ZodMiniIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function intersection(left, right) {\n return new ZodMiniIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodMiniTuple = /*@__PURE__*/ core.$constructor(\"ZodMiniTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodMiniTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniRecord = /*@__PURE__*/ core.$constructor(\"ZodMiniRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function record(keyType, valueType, params) {\n return new ZodMiniRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodMiniRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodMiniRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniMap = /*@__PURE__*/ core.$constructor(\"ZodMiniMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function map(keyType, valueType, params) {\n return new ZodMiniMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniSet = /*@__PURE__*/ core.$constructor(\"ZodMiniSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function set(valueType, params) {\n return new ZodMiniSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniEnum = /*@__PURE__*/ core.$constructor(\"ZodMiniEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodMiniType.init(inst, def);\n inst.options = Object.values(def.entries);\n});\n// @__NO_SIDE_EFFECTS__\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodMiniEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodMiniEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniLiteral = /*@__PURE__*/ core.$constructor(\"ZodMiniLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function literal(value, params) {\n return new ZodMiniLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniFile = /*@__PURE__*/ core.$constructor(\"ZodMiniFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function file(params) {\n return core._file(ZodMiniFile, params);\n}\nexport const ZodMiniTransform = /*@__PURE__*/ core.$constructor(\"ZodMiniTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function transform(fn) {\n return new ZodMiniTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodMiniOptional = /*@__PURE__*/ core.$constructor(\"ZodMiniOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function optional(innerType) {\n return new ZodMiniOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodMiniExactOptional = /*@__PURE__*/ core.$constructor(\"ZodMiniExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function exactOptional(innerType) {\n return new ZodMiniExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodMiniNullable = /*@__PURE__*/ core.$constructor(\"ZodMiniNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function nullable(innerType) {\n return new ZodMiniNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\n// @__NO_SIDE_EFFECTS__\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodMiniDefault = /*@__PURE__*/ core.$constructor(\"ZodMiniDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function _default(innerType, defaultValue) {\n return new ZodMiniDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodMiniPrefault = /*@__PURE__*/ core.$constructor(\"ZodMiniPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function prefault(innerType, defaultValue) {\n return new ZodMiniPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodMiniNonOptional = /*@__PURE__*/ core.$constructor(\"ZodMiniNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function nonoptional(innerType, params) {\n return new ZodMiniNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniSuccess = /*@__PURE__*/ core.$constructor(\"ZodMiniSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function success(innerType) {\n return new ZodMiniSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodMiniCatch = /*@__PURE__*/ core.$constructor(\"ZodMiniCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nfunction _catch(innerType, catchValue) {\n return new ZodMiniCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodMiniNaN = /*@__PURE__*/ core.$constructor(\"ZodMiniNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function nan(params) {\n return core._nan(ZodMiniNaN, params);\n}\nexport const ZodMiniPipe = /*@__PURE__*/ core.$constructor(\"ZodMiniPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function pipe(in_, out) {\n return new ZodMiniPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n });\n}\nexport const ZodMiniCodec = /*@__PURE__*/ core.$constructor(\"ZodMiniCodec\", (inst, def) => {\n ZodMiniPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function codec(in_, out, params) {\n return new ZodMiniCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodMiniReadonly = /*@__PURE__*/ core.$constructor(\"ZodMiniReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function readonly(innerType) {\n return new ZodMiniReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodMiniTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodMiniTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function templateLiteral(parts, params) {\n return new ZodMiniTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMiniLazy = /*@__PURE__*/ core.$constructor(\"ZodMiniLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// export function lazy<T extends object>(getter: () => T): T {\n// return util.createTransparentProxy<T>(getter);\n// }\n// @__NO_SIDE_EFFECTS__\nfunction _lazy(getter) {\n return new ZodMiniLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport { _lazy as lazy };\nexport const ZodMiniPromise = /*@__PURE__*/ core.$constructor(\"ZodMiniPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function promise(innerType) {\n return new ZodMiniPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodMiniCustom = /*@__PURE__*/ core.$constructor(\"ZodMiniCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// custom checks\n// @__NO_SIDE_EFFECTS__\nexport function check(fn, params) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// ZodCustom\n// custom schema\n// @__NO_SIDE_EFFECTS__\nexport function custom(fn, _params) {\n return core._custom(ZodMiniCustom, fn ?? (() => true), _params);\n}\n// refine\n// @__NO_SIDE_EFFECTS__\nexport function refine(fn, _params = {}) {\n return core._refine(ZodMiniCustom, fn, _params);\n}\n// superRefine\n// @__NO_SIDE_EFFECTS__\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\n// instanceof\nclass Class {\n constructor(..._args) { }\n}\n// @__NO_SIDE_EFFECTS__\nfunction _instanceof(cls, params = {}) {\n const inst = custom((data) => data instanceof cls, params);\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodMiniCodec,\n Boolean: ZodMiniBoolean,\n String: ZodMiniString,\n}, ...args);\n// @__NO_SIDE_EFFECTS__\nexport function json() {\n const jsonSchema = _lazy(() => {\n return union([string(), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\nexport const ZodMiniFunction = /*@__PURE__*/ core.$constructor(\"ZodMiniFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// @__NO_SIDE_EFFECTS__\nexport function _function(params) {\n return new ZodMiniFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\n", "import {\n looseObject,\n array,\n string,\n url,\n union,\n instanceof as instanceof_,\n int,\n tuple,\n nullable,\n optional,\n nonnegative,\n extend,\n} from \"zod/mini\";\nimport type { Graffiti } from \"./1-api.js\";\nimport type { GraffitiObjectStream } from \"./2-types.js\";\nimport type { JSONSchema } from \"json-schema-to-ts\";\n\nexport const GraffitiPostObjectSchema = looseObject({\n value: looseObject({}),\n channels: array(string()),\n allowed: optional(nullable(array(url()))),\n});\nexport const GraffitiObjectSchema = extend(GraffitiPostObjectSchema, {\n url: url(),\n actor: url(),\n});\n\nexport const GraffitiObjectUrlSchema = union([\n looseObject({\n url: url(),\n }),\n url(),\n]);\n\nexport const GraffitiSessionSchema = looseObject({\n actor: url(),\n});\nexport const GraffitiOptionalSessionSchema = optional(\n nullable(GraffitiSessionSchema),\n);\n\nexport const GraffitiPostMediaSchema = looseObject({\n data: instanceof_(Blob),\n allowed: optional(nullable(array(url()))),\n});\nexport const GraffitiMediaSchema = extend(GraffitiPostMediaSchema, {\n actor: url(),\n});\nexport const GraffitiMediaAcceptSchema = looseObject({\n types: optional(array(string())),\n maxBytes: optional(int().check(nonnegative())),\n});\n\nasync function* wrapGraffitiStream<Schema extends JSONSchema>(\n stream: GraffitiObjectStream<Schema>,\n): GraffitiObjectStream<Schema> {\n while (true) {\n const next = await stream.next();\n if (next.done) {\n const { cursor, continue: continue_ } = next.value;\n return {\n cursor,\n continue: (...args) => {\n const typedArgs = tuple([GraffitiOptionalSessionSchema]).parse(args);\n return continue_(...typedArgs);\n },\n };\n } else {\n yield next.value;\n }\n }\n}\n\nexport class GraffitiRuntimeTypes implements Graffiti {\n sessionEvents: Graffiti[\"sessionEvents\"];\n constructor(protected readonly graffiti: Graffiti) {\n this.sessionEvents = this.graffiti.sessionEvents;\n }\n\n login: Graffiti[\"login\"] = (...args) => {\n const typedArgs = tuple([optional(url())]).parse(args);\n return this.graffiti.login(...typedArgs);\n };\n\n logout: Graffiti[\"logout\"] = (...args) => {\n const typedArgs = tuple([GraffitiSessionSchema]).parse(args);\n return this.graffiti.logout(...typedArgs);\n };\n\n handleToActor: Graffiti[\"handleToActor\"] = (...args) => {\n const typedArgs = tuple([string()]).parse(args);\n return this.graffiti.handleToActor(...typedArgs);\n };\n\n actorToHandle: Graffiti[\"actorToHandle\"] = (...args) => {\n const typedArgs = tuple([url()]).parse(args);\n return this.graffiti.actorToHandle(...typedArgs);\n };\n\n // @ts-ignore - inferred types on post do not effect output\n post: Graffiti[\"post\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiPostObjectSchema,\n GraffitiSessionSchema,\n ]).parse(args);\n\n return this.graffiti.post<{}>(...typedArgs);\n };\n\n get: Graffiti[\"get\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiObjectUrlSchema,\n looseObject({}),\n GraffitiOptionalSessionSchema,\n ]).parse(args);\n\n return this.graffiti.get<(typeof args)[1]>(\n typedArgs[0],\n typedArgs[1] as (typeof args)[1],\n typedArgs[2],\n );\n };\n\n delete: Graffiti[\"delete\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiObjectUrlSchema,\n GraffitiSessionSchema,\n ]).parse(args);\n return this.graffiti.delete(...typedArgs);\n };\n\n postMedia: Graffiti[\"postMedia\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiPostMediaSchema,\n GraffitiSessionSchema,\n ]).parse(args);\n return this.graffiti.postMedia(...typedArgs);\n };\n\n getMedia: Graffiti[\"getMedia\"] = (...args) => {\n const typedArgs = tuple([\n url(),\n GraffitiMediaAcceptSchema,\n GraffitiOptionalSessionSchema,\n ]).parse(args);\n\n return this.graffiti.getMedia(...typedArgs);\n };\n\n deleteMedia: Graffiti[\"deleteMedia\"] = (...args) => {\n const typedArgs = tuple([url(), GraffitiSessionSchema]).parse(args);\n\n return this.graffiti.deleteMedia(...typedArgs);\n };\n\n discover: Graffiti[\"discover\"] = (...args) => {\n const typedArgs = tuple([\n array(string()),\n looseObject({}),\n GraffitiOptionalSessionSchema,\n ]).parse(args);\n const stream = this.graffiti.discover<(typeof args)[1]>(\n typedArgs[0],\n typedArgs[1] as (typeof args)[1],\n typedArgs[2],\n );\n return wrapGraffitiStream<(typeof args)[1]>(stream);\n };\n\n continueDiscover: Graffiti[\"continueDiscover\"] = (...args) => {\n const typedArgs = tuple([string(), GraffitiOptionalSessionSchema]).parse(\n args,\n );\n\n const stream = this.graffiti.continueDiscover(...typedArgs);\n return wrapGraffitiStream<{}>(stream);\n };\n}\n", "/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number, title: string = ''): void {\n if (!Number.isSafeInteger(n) || n < 0) {\n const prefix = title && `\"${title}\" `;\n throw new Error(`${prefix}expected integer >= 0, got ${n}`);\n }\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(value: Uint8Array, length?: number, title: string = ''): Uint8Array {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n\n/** Asserts something is hash */\nexport function ahash(h: CHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash must wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out, undefined, 'digestInto() output');\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('\"digestInto() output\" expected to be of length >=' + min);\n }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n ? (u: Uint32Array) => u\n : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise<void> {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * Built-in doesn't validate input to be string: we do the check.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput, errorTitle = ''): Uint8Array {\n if (typeof data === 'string') return utf8ToBytes(data);\n return abytes(data, undefined, errorTitle);\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\ntype EmptyObj = {};\n/** Merges default options and passed options. */\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options must be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Common interface for all hashes. */\nexport interface Hash<T> {\n blockLen: number; // Bytes per block\n outputLen: number; // Bytes in output\n update(buf: Uint8Array): this;\n digestInto(buf: Uint8Array): void;\n digest(): Uint8Array;\n destroy(): void;\n _cloneInto(to?: T): T;\n clone(): T;\n}\n\n/** PseudoRandom (number) Generator */\nexport interface PRG {\n addEntropy(seed: Uint8Array): void;\n randomBytes(length: number): Uint8Array;\n clean(): void;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash constructor */\nexport type HasherCons<T, Opts = undefined> = Opts extends undefined ? () => T : (opts?: Opts) => T;\n/** Optional hash params. */\nexport type HashInfo = {\n oid?: Uint8Array; // DER encoded OID in bytes\n};\n/** Hash function */\nexport type CHash<T extends Hash<T> = Hash<any>, Opts = undefined> = {\n outputLen: number;\n blockLen: number;\n} & HashInfo &\n (Opts extends undefined\n ? {\n (msg: Uint8Array): Uint8Array;\n create(): T;\n }\n : {\n (msg: Uint8Array, opts?: Opts): Uint8Array;\n create(opts?: Opts): T;\n });\n/** XOF with output */\nexport type CHashXOF<T extends HashXOF<T> = HashXOF<any>, Opts = undefined> = CHash<T, Opts>;\n\n/** Creates function with outputLen, blockLen, create properties from a class constructor. */\nexport function createHasher<T extends Hash<T>, Opts = undefined>(\n hashCons: HasherCons<T, Opts>,\n info: HashInfo = {}\n): CHash<T, Opts> {\n const hashC: any = (msg: Uint8Array, opts?: Opts) => hashCons(opts).update(msg).digest();\n const tmp = hashCons(undefined);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: Opts) => hashCons(opts);\n Object.assign(hashC, info);\n return Object.freeze(hashC);\n}\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n const cr = typeof globalThis === 'object' ? (globalThis as any).crypto : null;\n if (typeof cr?.getRandomValues !== 'function')\n throw new Error('crypto.getRandomValues must be defined');\n return cr.getRandomValues(new Uint8Array(bytesLength));\n}\n\n/** Creates OID opts for NIST hashes, with prefix 06 09 60 86 48 01 65 03 04 02. */\nexport const oidNist = (suffix: number): Required<HashInfo> => ({\n oid: Uint8Array.from([0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, suffix]),\n});\n", "// This is an unfortunate replacement for @sindresorhus/is that we need to\n// re-implement for performance purposes. In particular the is.observable()\n// check is expensive, and unnecessary for our purposes. The values returned\n// are compatible with @sindresorhus/is, however.\n\n// Types that reach getObjectType() - excludes types with fast-paths above:\n// primitives (typeof), Array (isArray), Uint8Array (instanceof), plain Object (constructor)\nconst objectTypeNames = [\n 'Object', // for Object.create(null) and other non-plain objects\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'HTMLElement',\n 'Int8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array'\n]\n\n/**\n * @param {any} value\n * @returns {string}\n */\nexport function is (value) {\n if (value === null) {\n return 'null'\n }\n if (value === undefined) {\n return 'undefined'\n }\n if (value === true || value === false) {\n return 'boolean'\n }\n const typeOf = typeof value\n if (typeOf === 'string' || typeOf === 'number' || typeOf === 'bigint' || typeOf === 'symbol') {\n return typeOf\n }\n /* c8 ignore next 3 */\n if (typeOf === 'function') {\n return 'Function'\n }\n if (Array.isArray(value)) {\n return 'Array'\n }\n // Also catches Node.js Buffer which extends Uint8Array\n if (value instanceof Uint8Array) {\n return 'Uint8Array'\n }\n // Fast path for plain objects (most common case after primitives/arrays/bytes)\n if (value.constructor === Object) {\n return 'Object'\n }\n const objectType = getObjectType(value)\n if (objectType) {\n return objectType\n }\n /* c8 ignore next */\n return 'Object'\n}\n\n/**\n * @param {any} value\n * @returns {string|undefined}\n */\nfunction getObjectType (value) {\n const objectTypeName = Object.prototype.toString.call(value).slice(8, -1)\n if (objectTypeNames.includes(objectTypeName)) {\n return objectTypeName\n }\n /* c8 ignore next */\n return undefined\n}\n", "class Type {\n /**\n * @param {number} major\n * @param {string} name\n * @param {boolean} terminal\n */\n constructor (major, name, terminal) {\n this.major = major\n this.majorEncoded = major << 5\n this.name = name\n this.terminal = terminal\n }\n\n /* c8 ignore next 3 */\n toString () {\n return `Type[${this.major}].${this.name}`\n }\n\n /**\n * @param {Type} typ\n * @returns {number}\n */\n compare (typ) {\n /* c8 ignore next 1 */\n return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0\n }\n\n /**\n * Check equality between two Type instances. Safe to use across different\n * copies of the Type class (e.g., when bundlers duplicate the module).\n * (major, name) uniquely identifies a Type; terminal is implied by these.\n * @param {Type} a\n * @param {Type} b\n * @returns {boolean}\n */\n static equals (a, b) {\n return a === b || (a.major === b.major && a.name === b.name)\n }\n}\n\n// convert to static fields when better supported\nType.uint = new Type(0, 'uint', true)\nType.negint = new Type(1, 'negint', true)\nType.bytes = new Type(2, 'bytes', true)\nType.string = new Type(3, 'string', true)\nType.array = new Type(4, 'array', false)\nType.map = new Type(5, 'map', false)\nType.tag = new Type(6, 'tag', false) // terminal?\nType.float = new Type(7, 'float', true)\nType.false = new Type(7, 'false', true)\nType.true = new Type(7, 'true', true)\nType.null = new Type(7, 'null', true)\nType.undefined = new Type(7, 'undefined', true)\nType.break = new Type(7, 'break', true)\n// Type.indefiniteLength = new Type(0, 'indefiniteLength', true)\n\nclass Token {\n /**\n * @param {Type} type\n * @param {any} [value]\n * @param {number} [encodedLength]\n */\n constructor (type, value, encodedLength) {\n this.type = type\n this.value = value\n this.encodedLength = encodedLength\n /** @type {Uint8Array|undefined} */\n this.encodedBytes = undefined\n /** @type {Uint8Array|undefined} */\n this.byteValue = undefined\n }\n\n /* c8 ignore next 3 */\n toString () {\n return `Token[${this.type}].${this.value}`\n }\n}\n\nexport { Type, Token }\n", "// Use Uint8Array directly in the browser, use Buffer in Node.js but don't\n// speak its name directly to avoid bundlers pulling in the `Buffer` polyfill\n\n// @ts-ignore\nexport const useBuffer = globalThis.process &&\n // @ts-ignore\n !globalThis.process.browser &&\n // @ts-ignore\n globalThis.Buffer &&\n // @ts-ignore\n typeof globalThis.Buffer.isBuffer === 'function'\n\nconst textEncoder = new TextEncoder()\n\n/**\n * @param {Uint8Array} buf\n * @returns {boolean}\n */\nfunction isBuffer (buf) {\n // @ts-ignore\n return useBuffer && globalThis.Buffer.isBuffer(buf)\n}\n\n/**\n * @param {Uint8Array|number[]} buf\n * @returns {Uint8Array}\n */\nexport function asU8A (buf) {\n /* c8 ignore next */\n if (!(buf instanceof Uint8Array)) {\n return Uint8Array.from(buf)\n }\n return isBuffer(buf) ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength) : buf\n}\n\nexport const fromString = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {string} string\n */\n (string) => {\n return string.length > 64\n ? // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(string)\n : utf8ToBytes(string)\n }\n /* c8 ignore next 7 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {string} string\n */\n (string) => {\n return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string)\n }\n\n/**\n * Buffer variant not fast enough for what we need\n * @param {number[]} arr\n * @returns {Uint8Array}\n */\nexport const fromArray = (arr) => {\n return Uint8Array.from(arr)\n}\n\nexport const slice = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n // Buffer.slice() returns a view, not a copy, so we need special handling\n (bytes, start, end) => {\n if (isBuffer(bytes)) {\n return new Uint8Array(bytes.subarray(start, end))\n }\n return bytes.slice(start, end)\n }\n /* c8 ignore next 9 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return bytes.slice(start, end)\n }\n\nexport const concat = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\n (chunks, length) => {\n // might get a stray plain Array here\n /* c8 ignore next 1 */\n chunks = chunks.map((c) => c instanceof Uint8Array\n ? c\n // this case is occasionally missed during test runs so becomes coverage-flaky\n /* c8 ignore next 4 */\n : // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(c))\n // @ts-ignore\n return asU8A(globalThis.Buffer.concat(chunks, length))\n }\n /* c8 ignore next 19 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\n (chunks, length) => {\n const out = new Uint8Array(length)\n let off = 0\n for (let b of chunks) {\n if (off + b.length > out.length) {\n // final chunk that's bigger than we need\n b = b.subarray(0, out.length - off)\n }\n out.set(b, off)\n off += b.length\n }\n return out\n }\n\nexport const alloc = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {number} size\n * @returns {Uint8Array}\n */\n (size) => {\n // we always write over the contents we expose so this should be safe\n // @ts-ignore\n return globalThis.Buffer.allocUnsafe(size)\n }\n /* c8 ignore next 8 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {number} size\n * @returns {Uint8Array}\n */\n (size) => {\n return new Uint8Array(size)\n }\n\nexport const toHex = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} d\n * @returns {string}\n */\n (d) => {\n if (typeof d === 'string') {\n return d\n }\n // @ts-ignore\n return globalThis.Buffer.from(toBytes(d)).toString('hex')\n }\n /* c8 ignore next 12 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} d\n * @returns {string}\n */\n (d) => {\n if (typeof d === 'string') {\n return d\n }\n // @ts-ignore not smart enough to figure this out\n return Array.prototype.reduce.call(toBytes(d), (p, c) => `${p}${c.toString(16).padStart(2, '0')}`, '')\n }\n\nexport const fromHex = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {string|Uint8Array} hex\n * @returns {Uint8Array}\n */\n (hex) => {\n if (hex instanceof Uint8Array) {\n return hex\n }\n // @ts-ignore\n return globalThis.Buffer.from(hex, 'hex')\n }\n /* c8 ignore next 17 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {string|Uint8Array} hex\n * @returns {Uint8Array}\n */\n (hex) => {\n if (hex instanceof Uint8Array) {\n return hex\n }\n if (!hex.length) {\n return new Uint8Array(0)\n }\n return new Uint8Array(hex.split('')\n .map((/** @type {string} */ c, /** @type {number} */ i, /** @type {string[]} */ d) => i % 2 === 0 ? `0x${c}${d[i + 1]}` : '')\n .filter(Boolean)\n .map((/** @type {string} */ e) => parseInt(e, 16)))\n }\n\n/**\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} obj\n * @returns {Uint8Array}\n */\nfunction toBytes (obj) {\n if (obj instanceof Uint8Array && obj.constructor.name === 'Uint8Array') {\n return obj\n }\n if (obj instanceof ArrayBuffer) {\n return new Uint8Array(obj)\n }\n if (ArrayBuffer.isView(obj)) {\n return new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength)\n }\n /* c8 ignore next */\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {Uint8Array} b1\n * @param {Uint8Array} b2\n * @returns {number}\n */\nexport function compare (b1, b2) {\n /* c8 ignore next 5 */\n if (isBuffer(b1) && isBuffer(b2)) {\n // probably not possible to get here in the current API\n // @ts-ignore Buffer\n return b1.compare(b2)\n }\n for (let i = 0; i < b1.length; i++) {\n if (b1[i] === b2[i]) {\n continue\n }\n return b1[i] < b2[i] ? -1 : 1\n } /* c8 ignore next 3 */\n return 0\n}\n\n// The below code is taken from https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n// Licensed Apache-2.0.\n\n/**\n * @param {string} str\n * @returns {number[]}\n */\nfunction utf8ToBytes (str) {\n const out = []\n let p = 0\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i)\n if (c < 128) {\n out[p++] = c\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192\n out[p++] = (c & 63) | 128\n } else if (\n ((c & 0xFC00) === 0xD800) && (i + 1) < str.length &&\n ((str.charCodeAt(i + 1) & 0xFC00) === 0xDC00)) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03FF) << 10) + (str.charCodeAt(++i) & 0x03FF)\n out[p++] = (c >> 18) | 240\n out[p++] = ((c >> 12) & 63) | 128\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n } else {\n if ((c >= 0xD800) && (c <= 0xDFFF)) {\n c = 0xFFFD // Unpaired Surrogate\n }\n out[p++] = (c >> 12) | 224\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n }\n }\n return out\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\n/**\n * @param {number[]} codePoints\n * @returns {string}\n */\nexport function decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n /* c8 ignore next 10 */\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n", "/**\n * Bl is a list of byte chunks, similar to https://github.com/rvagg/bl but for\n * writing rather than reading.\n * A Bl object accepts set() operations for individual bytes and copyTo() for\n * inserting byte arrays. These write operations don't automatically increment\n * the internal cursor so its \"length\" won't be changed. Instead, increment()\n * must be called to extend its length to cover the inserted data.\n * The toBytes() call will convert all internal memory to a single Uint8Array of\n * the correct length, truncating any data that is stored but hasn't been\n * included by an increment().\n * get() can retrieve a single byte.\n * All operations (except toBytes()) take an \"offset\" argument that will perform\n * the write at the offset _from the current cursor_. For most operations this\n * will be `0` to write at the current cursor position but it can be ahead of\n * the current cursor. Negative offsets probably work but are untested.\n */\n\n// TODO: ipjs doesn't support this, only for test files: https://github.com/mikeal/ipjs/blob/master/src/package/testFile.js#L39\nimport { alloc, concat, slice } from './byte-utils.js'\n\n// the ts-ignores in this file are almost all for the `Uint8Array|number[]` duality that exists\n// for perf reasons. Consider better approaches to this or removing it entirely, it is quite\n// risky because of some assumptions about small chunks === number[] and everything else === Uint8Array.\n\nconst defaultChunkSize = 256\n\nexport class Bl {\n /**\n * @param {number} [chunkSize]\n */\n constructor (chunkSize = defaultChunkSize) {\n this.chunkSize = chunkSize\n /** @type {number} */\n this.cursor = 0\n /** @type {number} */\n this.maxCursor = -1\n /** @type {(Uint8Array|number[])[]} */\n this.chunks = []\n // keep the first chunk around if we can to save allocations for future encodes\n /** @type {Uint8Array|number[]|null} */\n this._initReuseChunk = null\n }\n\n reset () {\n this.cursor = 0\n this.maxCursor = -1\n if (this.chunks.length) {\n this.chunks = []\n }\n if (this._initReuseChunk !== null) {\n this.chunks.push(this._initReuseChunk)\n this.maxCursor = this._initReuseChunk.length - 1\n }\n }\n\n /**\n * @param {Uint8Array|number[]} bytes\n */\n push (bytes) {\n let topChunk = this.chunks[this.chunks.length - 1]\n const newMax = this.cursor + bytes.length\n if (newMax <= this.maxCursor + 1) {\n // we have at least one chunk and we can fit these bytes into that chunk\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1\n // @ts-ignore\n topChunk.set(bytes, chunkPos)\n } else {\n // can't fit it in\n if (topChunk) {\n // trip the last chunk to `cursor` if we need to\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1\n if (chunkPos < topChunk.length) {\n // @ts-ignore\n this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos)\n this.maxCursor = this.cursor - 1\n }\n }\n if (bytes.length < 64 && bytes.length < this.chunkSize) {\n // make a new chunk and copy the new one into it\n topChunk = alloc(this.chunkSize)\n this.chunks.push(topChunk)\n this.maxCursor += topChunk.length\n if (this._initReuseChunk === null) {\n this._initReuseChunk = topChunk\n }\n // @ts-ignore\n topChunk.set(bytes, 0)\n } else {\n // push the new bytes in as its own chunk\n this.chunks.push(bytes)\n this.maxCursor += bytes.length\n }\n }\n this.cursor += bytes.length\n }\n\n /**\n * @param {boolean} [reset]\n * @returns {Uint8Array}\n */\n toBytes (reset = false) {\n let byts\n if (this.chunks.length === 1) {\n const chunk = this.chunks[0]\n if (reset && this.cursor > chunk.length / 2) {\n /* c8 ignore next 2 */\n // @ts-ignore\n byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor)\n this._initReuseChunk = null\n this.chunks = []\n } else {\n // @ts-ignore\n byts = slice(chunk, 0, this.cursor)\n }\n } else {\n // @ts-ignore\n byts = concat(this.chunks, this.cursor)\n }\n if (reset) {\n this.reset()\n }\n return byts\n }\n}\n\n/**\n * U8Bl is a buffer list that writes directly to a user-provided Uint8Array.\n * It provides the same interface as Bl but writes to a fixed destination.\n */\nexport class U8Bl {\n /**\n * @param {Uint8Array} dest\n */\n constructor (dest) {\n this.dest = dest\n /** @type {number} */\n this.cursor = 0\n // chunks is for interface compatibility with Bl - encode.js checks chunks.length\n // as a sanity check for pre-calculated sizes. For U8Bl this is always [dest].\n /** @type {Uint8Array[]} */\n this.chunks = [dest]\n }\n\n reset () {\n this.cursor = 0\n }\n\n /**\n * @param {Uint8Array|number[]} bytes\n */\n push (bytes) {\n if (this.cursor + bytes.length > this.dest.length) {\n throw new Error('write out of bounds, destination buffer is too small')\n }\n this.dest.set(bytes, this.cursor)\n this.cursor += bytes.length\n }\n\n /**\n * @param {boolean} [reset]\n * @returns {Uint8Array}\n */\n toBytes (reset = false) {\n const byts = this.dest.subarray(0, this.cursor)\n if (reset) {\n this.reset()\n }\n return byts\n }\n}\n", "const decodeErrPrefix = 'CBOR decode error:'\nconst encodeErrPrefix = 'CBOR encode error:'\n\nconst uintMinorPrefixBytes = []\nuintMinorPrefixBytes[23] = 1\nuintMinorPrefixBytes[24] = 2\nuintMinorPrefixBytes[25] = 3\nuintMinorPrefixBytes[26] = 5\nuintMinorPrefixBytes[27] = 9\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} need\n */\nfunction assertEnoughData (data, pos, need) {\n if (data.length - pos < need) {\n throw new Error(`${decodeErrPrefix} not enough data for type`)\n }\n}\n\nexport {\n decodeErrPrefix,\n encodeErrPrefix,\n uintMinorPrefixBytes,\n assertEnoughData\n}\n", "/* globals BigInt */\n\nimport { Token, Type } from './token.js'\nimport { decodeErrPrefix, assertEnoughData } from './common.js'\n\nexport const uintBoundaries = [24, 256, 65536, 4294967296, BigInt('18446744073709551616')]\n\n/**\n * @typedef {import('../interface').ByteWriter} ByteWriter\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint8 (data, offset, options) {\n assertEnoughData(data, offset, 1)\n const value = data[offset]\n if (options.strict === true && value < uintBoundaries[0]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint16 (data, offset, options) {\n assertEnoughData(data, offset, 2)\n const value = (data[offset] << 8) | data[offset + 1]\n if (options.strict === true && value < uintBoundaries[1]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint32 (data, offset, options) {\n assertEnoughData(data, offset, 4)\n const value = (data[offset] * 16777216 /* 2 ** 24 */) + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3]\n if (options.strict === true && value < uintBoundaries[2]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n return value\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number|bigint}\n */\nexport function readUint64 (data, offset, options) {\n // assume BigInt, convert back to Number if within safe range\n assertEnoughData(data, offset, 8)\n const hi = (data[offset] * 16777216 /* 2 ** 24 */) + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3]\n const lo = (data[offset + 4] * 16777216 /* 2 ** 24 */) + (data[offset + 5] << 16) + (data[offset + 6] << 8) + data[offset + 7]\n const value = (BigInt(hi) << BigInt(32)) + BigInt(lo)\n if (options.strict === true && value < uintBoundaries[3]) {\n throw new Error(`${decodeErrPrefix} integer encoded in more bytes than necessary (strict decode)`)\n }\n if (value <= Number.MAX_SAFE_INTEGER) {\n return Number(value)\n }\n if (options.allowBigInt === true) {\n return value\n }\n throw new Error(`${decodeErrPrefix} integers outside of the safe integer range are not supported`)\n}\n\n/* not required thanks to quick[] list\nconst oneByteTokens = new Array(24).fill(0).map((v, i) => new Token(Type.uint, i, 1))\nexport function decodeUintCompact (data, pos, minor, options) {\n return oneByteTokens[minor]\n}\n*/\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint8 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint16 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint32 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint32(data, pos + 1, options), 5)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint64 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint64(data, pos + 1, options), 9)\n}\n\n/**\n * @param {ByteWriter} writer\n * @param {Token} token\n */\nexport function encodeUint (writer, token) {\n return encodeUintValue(writer, 0, token.value)\n}\n\n/**\n * @param {ByteWriter} writer\n * @param {number} major\n * @param {number|bigint} uint\n */\nexport function encodeUintValue (writer, major, uint) {\n if (uint < uintBoundaries[0]) {\n const nuint = Number(uint)\n // pack into one byte, minor=0, additional=value\n writer.push([major | nuint])\n } else if (uint < uintBoundaries[1]) {\n const nuint = Number(uint)\n // pack into two byte, minor=0, additional=24\n writer.push([major | 24, nuint])\n } else if (uint < uintBoundaries[2]) {\n const nuint = Number(uint)\n // pack into three byte, minor=0, additional=25\n writer.push([major | 25, nuint >>> 8, nuint & 0xff])\n } else if (uint < uintBoundaries[3]) {\n const nuint = Number(uint)\n // pack into five byte, minor=0, additional=26\n writer.push([major | 26, (nuint >>> 24) & 0xff, (nuint >>> 16) & 0xff, (nuint >>> 8) & 0xff, nuint & 0xff])\n } else {\n const buint = BigInt(uint)\n if (buint < uintBoundaries[4]) {\n // pack into nine byte, minor=0, additional=27\n const set = [major | 27, 0, 0, 0, 0, 0, 0, 0]\n // simulate bitwise above 32 bits\n let lo = Number(buint & BigInt(0xffffffff))\n let hi = Number(buint >> BigInt(32) & BigInt(0xffffffff))\n set[8] = lo & 0xff\n lo = lo >> 8\n set[7] = lo & 0xff\n lo = lo >> 8\n set[6] = lo & 0xff\n lo = lo >> 8\n set[5] = lo & 0xff\n set[4] = hi & 0xff\n hi = hi >> 8\n set[3] = hi & 0xff\n hi = hi >> 8\n set[2] = hi & 0xff\n hi = hi >> 8\n set[1] = hi & 0xff\n writer.push(set)\n } else {\n throw new Error(`${decodeErrPrefix} encountered BigInt larger than allowable range`)\n }\n }\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeUint.encodedSize = function encodedSize (token) {\n return encodeUintValue.encodedSize(token.value)\n}\n\n/**\n * @param {number} uint\n * @returns {number}\n */\nencodeUintValue.encodedSize = function encodedSize (uint) {\n if (uint < uintBoundaries[0]) {\n return 1\n }\n if (uint < uintBoundaries[1]) {\n return 2\n }\n if (uint < uintBoundaries[2]) {\n return 3\n }\n if (uint < uintBoundaries[3]) {\n return 5\n }\n return 9\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeUint.compareTokens = function compareTokens (tok1, tok2) {\n return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : /* c8 ignore next */ 0\n}\n", "/* eslint-env es2020 */\n\nimport { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('../interface').ByteWriter} ByteWriter\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint8 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint16 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint32 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5)\n}\n\nconst neg1b = BigInt(-1)\nconst pos1b = BigInt(1)\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint64 (data, pos, _minor, options) {\n const int = uint.readUint64(data, pos + 1, options)\n if (typeof int !== 'bigint') {\n const value = -1 - int\n if (value >= Number.MIN_SAFE_INTEGER) {\n return new Token(Type.negint, value, 9)\n }\n }\n if (options.allowBigInt !== true) {\n throw new Error(`${decodeErrPrefix} integers outside of the safe integer range are not supported`)\n }\n return new Token(Type.negint, neg1b - BigInt(int), 9)\n}\n\n/**\n * @param {ByteWriter} writer\n * @param {Token} token\n */\nexport function encodeNegint (writer, token) {\n const negint = token.value\n const unsigned = (typeof negint === 'bigint' ? (negint * neg1b - pos1b) : (negint * -1 - 1))\n uint.encodeUintValue(writer, token.type.majorEncoded, unsigned)\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeNegint.encodedSize = function encodedSize (token) {\n const negint = token.value\n const unsigned = (typeof negint === 'bigint' ? (negint * neg1b - pos1b) : (negint * -1 - 1))\n /* c8 ignore next 4 */\n // handled by quickEncode, we shouldn't get here but it's included for completeness\n if (unsigned < uint.uintBoundaries[0]) {\n return 1\n }\n if (unsigned < uint.uintBoundaries[1]) {\n return 2\n }\n if (unsigned < uint.uintBoundaries[2]) {\n return 3\n }\n if (unsigned < uint.uintBoundaries[3]) {\n return 5\n }\n return 9\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeNegint.compareTokens = function compareTokens (tok1, tok2) {\n // opposite of the uint comparison since we store the uint version in bytes\n return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : /* c8 ignore next */ 0\n}\n", "import { Token, Type } from './token.js'\nimport { assertEnoughData, decodeErrPrefix } from './common.js'\nimport * as uint from './0uint.js'\nimport { compare, fromString, slice } from './byte-utils.js'\n\n/**\n * @typedef {import('../interface').ByteWriter} ByteWriter\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (data, pos, prefix, length) {\n assertEnoughData(data, pos, prefix + length)\n const buf = slice(data, pos + prefix, pos + prefix + length)\n return new Token(Type.bytes, buf, prefix + length)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeBytesCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer bytes lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * `encodedBytes` allows for caching when we do a byte version of a string\n * for key sorting purposes\n * @param {Token} token\n * @returns {Uint8Array}\n */\nfunction tokenBytes (token) {\n if (token.encodedBytes === undefined) {\n token.encodedBytes = Type.equals(token.type, Type.string) ? fromString(token.value) : token.value\n }\n // @ts-ignore c'mon\n return token.encodedBytes\n}\n\n/**\n * @param {ByteWriter} writer\n * @param {Token} token\n */\nexport function encodeBytes (writer, token) {\n const bytes = tokenBytes(token)\n uint.encodeUintValue(writer, token.type.majorEncoded, bytes.length)\n writer.push(bytes)\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeBytes.encodedSize = function encodedSize (token) {\n const bytes = tokenBytes(token)\n return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeBytes.compareTokens = function compareTokens (tok1, tok2) {\n return compareBytes(tokenBytes(tok1), tokenBytes(tok2))\n}\n\n/**\n * @param {Uint8Array} b1\n * @param {Uint8Array} b2\n * @returns {number}\n */\nexport function compareBytes (b1, b2) {\n return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2)\n}\n", "import { Token, Type } from './token.js'\nimport { assertEnoughData, decodeErrPrefix } from './common.js'\nimport * as uint from './0uint.js'\nimport { encodeBytes } from './2bytes.js'\nimport { slice } from './byte-utils.js'\n\nconst textDecoder = new TextDecoder()\n\n// Threshold for ASCII fast-path vs TextDecoder. Short ASCII strings (common for\n// map keys) are faster to decode with a simple loop than TextDecoder overhead.\nconst ASCII_THRESHOLD = 32\n\n/**\n * @typedef {import('../interface').ByteWriter} ByteWriter\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * Decode UTF-8 bytes to string. For short ASCII strings (common case for map keys),\n * a simple loop is faster than TextDecoder.\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n * @returns {string}\n */\nfunction toStr (bytes, start, end) {\n const len = end - start\n if (len < ASCII_THRESHOLD) {\n let str = ''\n for (let i = start; i < end; i++) {\n const c = bytes[i]\n if (c & 0x80) { // non-ASCII, fall back to TextDecoder\n return textDecoder.decode(bytes.subarray(start, end))\n }\n str += String.fromCharCode(c)\n }\n return str\n }\n return textDecoder.decode(bytes.subarray(start, end))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} prefix\n * @param {number} length\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nfunction toToken (data, pos, prefix, length, options) {\n const totLength = prefix + length\n assertEnoughData(data, pos, totLength)\n const tok = new Token(Type.string, toStr(data, pos + prefix, pos + totLength), totLength)\n if (options.retainStringBytes === true) {\n tok.byteValue = slice(data, pos + prefix, pos + totLength)\n }\n return tok\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeStringCompact (data, pos, minor, options) {\n return toToken(data, pos, 1, minor, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options)\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer string lengths not supported`)\n }\n return toToken(data, pos, 9, l, options)\n}\n\nexport const encodeString = encodeBytes\n", "import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('../interface').ByteWriter} ByteWriter\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (_data, _pos, prefix, length) {\n return new Token(Type.array, length, prefix)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeArrayCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer array lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArrayIndefinite (data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return toToken(data, pos, 1, Infinity)\n}\n\n/**\n * @param {ByteWriter} writer\n * @param {Token} token\n */\nexport function encodeArray (writer, token) {\n uint.encodeUintValue(writer, Type.array.majorEncoded, token.value)\n}\n\n// using an array as a map key, are you sure about this? we can only sort\n// by map length here, it's up to the encoder to decide to look deeper\nencodeArray.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeArray.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n", "import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('../interface').ByteWriter} ByteWriter\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (_data, _pos, prefix, length) {\n return new Token(Type.map, length, prefix)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeMapCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap64 (data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options)\n if (typeof l === 'bigint') {\n throw new Error(`${decodeErrPrefix} 64-bit integer map lengths not supported`)\n }\n return toToken(data, pos, 9, l)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMapIndefinite (data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return toToken(data, pos, 1, Infinity)\n}\n\n/**\n * @param {ByteWriter} writer\n * @param {Token} token\n */\nexport function encodeMap (writer, token) {\n uint.encodeUintValue(writer, Type.map.majorEncoded, token.value)\n}\n\n// using a map as a map key, are you sure about this? we can only sort\n// by map length here, it's up to the encoder to decide to look deeper\nencodeMap.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeMap.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n", "import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\n\n/**\n * @typedef {import('../interface').ByteWriter} ByteWriter\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeTagCompact (_data, _pos, minor, _options) {\n return new Token(Type.tag, minor, 1)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag8 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag16 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag32 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag64 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9)\n}\n\n/**\n * @param {ByteWriter} writer\n * @param {Token} token\n */\nexport function encodeTag (writer, token) {\n uint.encodeUintValue(writer, Type.tag.majorEncoded, token.value)\n}\n\nencodeTag.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeTag.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n", "// TODO: shift some of the bytes logic to bytes-utils so we can use Buffer\n// where possible\n\nimport { Token, Type } from './token.js'\nimport { decodeErrPrefix } from './common.js'\nimport { encodeUint } from './0uint.js'\n\n/**\n * @typedef {import('../interface').ByteWriter} ByteWriter\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../interface').EncodeOptions} EncodeOptions\n */\n\nexport const MINOR_FALSE = 20\nexport const MINOR_TRUE = 21\nexport const MINOR_NULL = 22\nexport const MINOR_UNDEFINED = 23\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUndefined (_data, _pos, _minor, options) {\n if (options.allowUndefined === false) {\n throw new Error(`${decodeErrPrefix} undefined values are not supported`)\n } else if (options.coerceUndefinedToNull === true) {\n return new Token(Type.null, null, 1)\n }\n return new Token(Type.undefined, undefined, 1)\n}\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBreak (_data, _pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${decodeErrPrefix} indefinite length items not allowed`)\n }\n return new Token(Type.break, undefined, 1)\n}\n\n/**\n * @param {number} value\n * @param {number} bytes\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nfunction createToken (value, bytes, options) {\n if (options) {\n if (options.allowNaN === false && Number.isNaN(value)) {\n throw new Error(`${decodeErrPrefix} NaN values are not supported`)\n }\n if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {\n throw new Error(`${decodeErrPrefix} Infinity values are not supported`)\n }\n }\n return new Token(Type.float, value, bytes)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat16 (data, pos, _minor, options) {\n return createToken(readFloat16(data, pos + 1), 3, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat32 (data, pos, _minor, options) {\n return createToken(readFloat32(data, pos + 1), 5, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat64 (data, pos, _minor, options) {\n return createToken(readFloat64(data, pos + 1), 9, options)\n}\n\n/**\n * @param {ByteWriter} writer\n * @param {Token} token\n * @param {EncodeOptions} options\n */\nexport function encodeFloat (writer, token, options) {\n const float = token.value\n\n if (float === false) {\n writer.push([Type.float.majorEncoded | MINOR_FALSE])\n } else if (float === true) {\n writer.push([Type.float.majorEncoded | MINOR_TRUE])\n } else if (float === null) {\n writer.push([Type.float.majorEncoded | MINOR_NULL])\n } else if (float === undefined) {\n writer.push([Type.float.majorEncoded | MINOR_UNDEFINED])\n } else {\n let decoded\n let success = false\n if (!options || options.float64 !== true) {\n encodeFloat16(float)\n decoded = readFloat16(ui8a, 1)\n if (float === decoded || Number.isNaN(float)) {\n ui8a[0] = 0xf9\n writer.push(ui8a.slice(0, 3))\n success = true\n } else {\n encodeFloat32(float)\n decoded = readFloat32(ui8a, 1)\n if (float === decoded) {\n ui8a[0] = 0xfa\n writer.push(ui8a.slice(0, 5))\n success = true\n }\n }\n }\n if (!success) {\n encodeFloat64(float)\n decoded = readFloat64(ui8a, 1)\n ui8a[0] = 0xfb\n writer.push(ui8a.slice(0, 9))\n }\n }\n}\n\n/**\n * @param {Token} token\n * @param {EncodeOptions} options\n * @returns {number}\n */\nencodeFloat.encodedSize = function encodedSize (token, options) {\n const float = token.value\n\n if (float === false || float === true || float === null || float === undefined) {\n return 1\n }\n\n if (!options || options.float64 !== true) {\n encodeFloat16(float)\n let decoded = readFloat16(ui8a, 1)\n if (float === decoded || Number.isNaN(float)) {\n return 3\n }\n encodeFloat32(float)\n decoded = readFloat32(ui8a, 1)\n if (float === decoded) {\n return 5\n }\n }\n return 9\n}\n\nconst buffer = new ArrayBuffer(9)\nconst dataView = new DataView(buffer, 1)\nconst ui8a = new Uint8Array(buffer, 0)\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat16 (inp) {\n if (inp === Infinity) {\n dataView.setUint16(0, 0x7c00, false)\n } else if (inp === -Infinity) {\n dataView.setUint16(0, 0xfc00, false)\n } else if (Number.isNaN(inp)) {\n dataView.setUint16(0, 0x7e00, false)\n } else {\n dataView.setFloat32(0, inp)\n const valu32 = dataView.getUint32(0)\n const exponent = (valu32 & 0x7f800000) >> 23\n const mantissa = valu32 & 0x7fffff\n\n /* c8 ignore next 6 */\n if (exponent === 0xff) {\n // too big, Infinity, but this should be hard (impossible?) to trigger\n dataView.setUint16(0, 0x7c00, false)\n } else if (exponent === 0x00) {\n // 0.0, -0.0 and subnormals, shouldn't be possible to get here because 0.0 should be counted as an int\n dataView.setUint16(0, ((inp & 0x80000000) >> 16) | (mantissa >> 13), false)\n } else { // standard numbers\n // chunks of logic here borrowed from https://github.com/PJK/libcbor/blob/c78f437182533e3efa8d963ff4b945bb635c2284/src/cbor/encoding.c#L127\n const logicalExponent = exponent - 127\n // Now we know that 2^exponent <= 0 logically\n /* c8 ignore next 6 */\n if (logicalExponent < -24) {\n /* No unambiguous representation exists, this float is not a half float\n and is too small to be represented using a half, round off to zero.\n Consistent with the reference implementation. */\n // should be difficult (impossible?) to get here in JS\n dataView.setUint16(0, 0)\n } else if (logicalExponent < -14) {\n /* Offset the remaining decimal places by shifting the significand, the\n value is lost. This is an implementation decision that works around the\n absence of standard half-float in the language. */\n dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | /* sign bit */ (1 << (24 + logicalExponent)), false)\n } else {\n dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | ((logicalExponent + 15) << 10) | (mantissa >> 13), false)\n }\n }\n }\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat16 (ui8a, pos) {\n if (ui8a.length - pos < 2) {\n throw new Error(`${decodeErrPrefix} not enough data for float16`)\n }\n\n const half = (ui8a[pos] << 8) + ui8a[pos + 1]\n if (half === 0x7c00) {\n return Infinity\n }\n if (half === 0xfc00) {\n return -Infinity\n }\n if (half === 0x7e00) {\n return NaN\n }\n const exp = (half >> 10) & 0x1f\n const mant = half & 0x3ff\n let val\n if (exp === 0) {\n val = mant * (2 ** -24)\n } else if (exp !== 31) {\n val = (mant + 1024) * (2 ** (exp - 25))\n /* c8 ignore next 4 */\n } else {\n // may not be possible to get here\n val = mant === 0 ? Infinity : NaN\n }\n return (half & 0x8000) ? -val : val\n}\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat32 (inp) {\n dataView.setFloat32(0, inp, false)\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat32 (ui8a, pos) {\n if (ui8a.length - pos < 4) {\n throw new Error(`${decodeErrPrefix} not enough data for float32`)\n }\n const offset = (ui8a.byteOffset || 0) + pos\n return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false)\n}\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat64 (inp) {\n dataView.setFloat64(0, inp, false)\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat64 (ui8a, pos) {\n if (ui8a.length - pos < 8) {\n throw new Error(`${decodeErrPrefix} not enough data for float64`)\n }\n const offset = (ui8a.byteOffset || 0) + pos\n return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false)\n}\n\n/**\n * @param {Token} _tok1\n * @param {Token} _tok2\n * @returns {number}\n */\nencodeFloat.compareTokens = encodeUint.compareTokens\n/*\nencodeFloat.compareTokens = function compareTokens (_tok1, _tok2) {\n return _tok1\n throw new Error(`${encodeErrPrefix} cannot use floats as map keys`)\n}\n*/\n", "import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport * as negint from './1negint.js'\nimport * as bytes from './2bytes.js'\nimport * as string from './3string.js'\nimport * as array from './4array.js'\nimport * as map from './5map.js'\nimport * as tag from './6tag.js'\nimport * as float from './7float.js'\nimport { decodeErrPrefix } from './common.js'\nimport { fromArray } from './byte-utils.js'\n\n/**\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n */\nfunction invalidMinor (data, pos, minor) {\n throw new Error(`${decodeErrPrefix} encountered invalid minor (${minor}) for major ${data[pos] >>> 5}`)\n}\n\n/**\n * @param {string} msg\n * @returns {()=>any}\n */\nfunction errorer (msg) {\n return () => { throw new Error(`${decodeErrPrefix} ${msg}`) }\n}\n\n/** @type {((data:Uint8Array, pos:number, minor:number, options?:DecodeOptions) => any)[]} */\nexport const jump = []\n\n// unsigned integer, 0x00..0x17 (0..23)\nfor (let i = 0; i <= 0x17; i++) {\n jump[i] = invalidMinor // uint.decodeUintCompact, handled by quick[]\n}\njump[0x18] = uint.decodeUint8 // unsigned integer, one-byte uint8_t follows\njump[0x19] = uint.decodeUint16 // unsigned integer, two-byte uint16_t follows\njump[0x1a] = uint.decodeUint32 // unsigned integer, four-byte uint32_t follows\njump[0x1b] = uint.decodeUint64 // unsigned integer, eight-byte uint64_t follows\njump[0x1c] = invalidMinor\njump[0x1d] = invalidMinor\njump[0x1e] = invalidMinor\njump[0x1f] = invalidMinor\n// negative integer, -1-0x00..-1-0x17 (-1..-24)\nfor (let i = 0x20; i <= 0x37; i++) {\n jump[i] = invalidMinor // negintDecode, handled by quick[]\n}\njump[0x38] = negint.decodeNegint8 // negative integer, -1-n one-byte uint8_t for n follows\njump[0x39] = negint.decodeNegint16 // negative integer, -1-n two-byte uint16_t for n follows\njump[0x3a] = negint.decodeNegint32 // negative integer, -1-n four-byte uint32_t for follows\njump[0x3b] = negint.decodeNegint64 // negative integer, -1-n eight-byte uint64_t for follows\njump[0x3c] = invalidMinor\njump[0x3d] = invalidMinor\njump[0x3e] = invalidMinor\njump[0x3f] = invalidMinor\n// byte string, 0x00..0x17 bytes follow\nfor (let i = 0x40; i <= 0x57; i++) {\n jump[i] = bytes.decodeBytesCompact\n}\njump[0x58] = bytes.decodeBytes8 // byte string, one-byte uint8_t for n, and then n bytes follow\njump[0x59] = bytes.decodeBytes16 // byte string, two-byte uint16_t for n, and then n bytes follow\njump[0x5a] = bytes.decodeBytes32 // byte string, four-byte uint32_t for n, and then n bytes follow\njump[0x5b] = bytes.decodeBytes64 // byte string, eight-byte uint64_t for n, and then n bytes follow\njump[0x5c] = invalidMinor\njump[0x5d] = invalidMinor\njump[0x5e] = invalidMinor\njump[0x5f] = errorer('indefinite length bytes/strings are not supported') // byte string, byte strings follow, terminated by \"break\"\n// UTF-8 string 0x00..0x17 bytes follow\nfor (let i = 0x60; i <= 0x77; i++) {\n jump[i] = string.decodeStringCompact\n}\njump[0x78] = string.decodeString8 // UTF-8 string, one-byte uint8_t for n, and then n bytes follow\njump[0x79] = string.decodeString16 // UTF-8 string, two-byte uint16_t for n, and then n bytes follow\njump[0x7a] = string.decodeString32 // UTF-8 string, four-byte uint32_t for n, and then n bytes follow\njump[0x7b] = string.decodeString64 // UTF-8 string, eight-byte uint64_t for n, and then n bytes follow\njump[0x7c] = invalidMinor\njump[0x7d] = invalidMinor\njump[0x7e] = invalidMinor\njump[0x7f] = errorer('indefinite length bytes/strings are not supported') // UTF-8 strings follow, terminated by \"break\"\n// array, 0x00..0x17 data items follow\nfor (let i = 0x80; i <= 0x97; i++) {\n jump[i] = array.decodeArrayCompact\n}\njump[0x98] = array.decodeArray8 // array, one-byte uint8_t for n, and then n data items follow\njump[0x99] = array.decodeArray16 // array, two-byte uint16_t for n, and then n data items follow\njump[0x9a] = array.decodeArray32 // array, four-byte uint32_t for n, and then n data items follow\njump[0x9b] = array.decodeArray64 // array, eight-byte uint64_t for n, and then n data items follow\njump[0x9c] = invalidMinor\njump[0x9d] = invalidMinor\njump[0x9e] = invalidMinor\njump[0x9f] = array.decodeArrayIndefinite // array, data items follow, terminated by \"break\"\n// map, 0x00..0x17 pairs of data items follow\nfor (let i = 0xa0; i <= 0xb7; i++) {\n jump[i] = map.decodeMapCompact\n}\njump[0xb8] = map.decodeMap8 // map, one-byte uint8_t for n, and then n pairs of data items follow\njump[0xb9] = map.decodeMap16 // map, two-byte uint16_t for n, and then n pairs of data items follow\njump[0xba] = map.decodeMap32 // map, four-byte uint32_t for n, and then n pairs of data items follow\njump[0xbb] = map.decodeMap64 // map, eight-byte uint64_t for n, and then n pairs of data items follow\njump[0xbc] = invalidMinor\njump[0xbd] = invalidMinor\njump[0xbe] = invalidMinor\njump[0xbf] = map.decodeMapIndefinite // map, pairs of data items follow, terminated by \"break\"\n// tags\nfor (let i = 0xc0; i <= 0xd7; i++) {\n jump[i] = tag.decodeTagCompact\n}\njump[0xd8] = tag.decodeTag8\njump[0xd9] = tag.decodeTag16\njump[0xda] = tag.decodeTag32\njump[0xdb] = tag.decodeTag64\njump[0xdc] = invalidMinor\njump[0xdd] = invalidMinor\njump[0xde] = invalidMinor\njump[0xdf] = invalidMinor\n// 0xe0..0xf3 simple values, unsupported\nfor (let i = 0xe0; i <= 0xf3; i++) {\n jump[i] = errorer('simple values are not supported')\n}\njump[0xf4] = invalidMinor // false, handled by quick[]\njump[0xf5] = invalidMinor // true, handled by quick[]\njump[0xf6] = invalidMinor // null, handled by quick[]\njump[0xf7] = float.decodeUndefined // undefined\njump[0xf8] = errorer('simple values are not supported') // simple value, one byte follows, unsupported\njump[0xf9] = float.decodeFloat16 // half-precision float (two-byte IEEE 754)\njump[0xfa] = float.decodeFloat32 // single-precision float (four-byte IEEE 754)\njump[0xfb] = float.decodeFloat64 // double-precision float (eight-byte IEEE 754)\njump[0xfc] = invalidMinor\njump[0xfd] = invalidMinor\njump[0xfe] = invalidMinor\njump[0xff] = float.decodeBreak // \"break\" stop code\n\n/** @type {Token[]} */\nexport const quick = []\n// ints <24\nfor (let i = 0; i < 24; i++) {\n quick[i] = new Token(Type.uint, i, 1)\n}\n// negints >= -24\nfor (let i = -1; i >= -24; i--) {\n quick[31 - i] = new Token(Type.negint, i, 1)\n}\n// empty bytes\nquick[0x40] = new Token(Type.bytes, new Uint8Array(0), 1)\n// empty string\nquick[0x60] = new Token(Type.string, '', 1)\n// empty list\nquick[0x80] = new Token(Type.array, 0, 1)\n// empty map\nquick[0xa0] = new Token(Type.map, 0, 1)\n// false\nquick[0xf4] = new Token(Type.false, false, 1)\n// true\nquick[0xf5] = new Token(Type.true, true, 1)\n// null\nquick[0xf6] = new Token(Type.null, null, 1)\n\n/**\n * @param {Token} token\n * @returns {Uint8Array|undefined}\n */\nexport function quickEncodeToken (token) {\n switch (token.type) {\n case Type.false:\n return fromArray([0xf4])\n case Type.true:\n return fromArray([0xf5])\n case Type.null:\n return fromArray([0xf6])\n case Type.bytes:\n if (!token.value.length) {\n return fromArray([0x40])\n }\n return\n case Type.string:\n if (token.value === '') {\n return fromArray([0x60])\n }\n return\n case Type.array:\n if (token.value === 0) {\n return fromArray([0x80])\n }\n /* c8 ignore next 2 */\n // shouldn't be possible if this were called when there was only one token\n return\n case Type.map:\n if (token.value === 0) {\n return fromArray([0xa0])\n }\n /* c8 ignore next 2 */\n // shouldn't be possible if this were called when there was only one token\n return\n case Type.uint:\n if (token.value < 24) {\n return fromArray([Number(token.value)])\n }\n return\n case Type.negint:\n if (token.value >= -24) {\n return fromArray([31 - Number(token.value)])\n }\n }\n}\n", "import { is } from './is.js'\nimport { Token, Type } from './token.js'\nimport { Bl, U8Bl } from './bl.js'\nimport { encodeErrPrefix } from './common.js'\nimport { quickEncodeToken } from './jump.js'\nimport { asU8A, compare, fromString } from './byte-utils.js'\n\nimport { encodeUint, encodeUintValue } from './0uint.js'\nimport { encodeNegint } from './1negint.js'\nimport { encodeBytes } from './2bytes.js'\nimport { encodeString } from './3string.js'\nimport { encodeArray } from './4array.js'\nimport { encodeMap } from './5map.js'\nimport { encodeTag } from './6tag.js'\nimport { encodeFloat, MINOR_FALSE, MINOR_TRUE, MINOR_NULL, MINOR_UNDEFINED } from './7float.js'\n\n/**\n * @typedef {import('../interface').EncodeOptions} EncodeOptions\n * @typedef {import('../interface').OptionalTypeEncoder} OptionalTypeEncoder\n * @typedef {import('../interface').Reference} Reference\n * @typedef {import('../interface').StrictTypeEncoder} StrictTypeEncoder\n * @typedef {import('../interface').TokenTypeEncoder} TokenTypeEncoder\n * @typedef {import('../interface').TokenOrNestedTokens} TokenOrNestedTokens\n * @typedef {import('../interface').ByteWriter} ByteWriter\n */\n\n/** @type {EncodeOptions} */\nconst defaultEncodeOptions = {\n float64: false,\n mapSorter,\n quickEncodeToken\n}\n\n/** @type {EncodeOptions} */\nexport const rfc8949EncodeOptions = Object.freeze({\n float64: true,\n mapSorter: rfc8949MapSorter,\n quickEncodeToken\n})\n\n/** @returns {TokenTypeEncoder[]} */\nexport function makeCborEncoders () {\n const encoders = []\n encoders[Type.uint.major] = encodeUint\n encoders[Type.negint.major] = encodeNegint\n encoders[Type.bytes.major] = encodeBytes\n encoders[Type.string.major] = encodeString\n encoders[Type.array.major] = encodeArray\n encoders[Type.map.major] = encodeMap\n encoders[Type.tag.major] = encodeTag\n encoders[Type.float.major] = encodeFloat\n return encoders\n}\n\nconst cborEncoders = makeCborEncoders()\n\nconst defaultWriter = new Bl()\n\n/** @implements {Reference} */\nclass Ref {\n /**\n * @param {object|any[]} obj\n * @param {Reference|undefined} parent\n */\n constructor (obj, parent) {\n this.obj = obj\n this.parent = parent\n }\n\n /**\n * @param {object|any[]} obj\n * @returns {boolean}\n */\n includes (obj) {\n /** @type {Reference|undefined} */\n let p = this\n do {\n if (p.obj === obj) {\n return true\n }\n } while (p = p.parent) // eslint-disable-line\n return false\n }\n\n /**\n * @param {Reference|undefined} stack\n * @param {object|any[]} obj\n * @returns {Reference}\n */\n static createCheck (stack, obj) {\n if (stack && stack.includes(obj)) {\n throw new Error(`${encodeErrPrefix} object contains circular references`)\n }\n return new Ref(obj, stack)\n }\n}\n\nconst simpleTokens = {\n null: new Token(Type.null, null),\n undefined: new Token(Type.undefined, undefined),\n true: new Token(Type.true, true),\n false: new Token(Type.false, false),\n emptyArray: new Token(Type.array, 0),\n emptyMap: new Token(Type.map, 0)\n}\n\n/** @type {{[typeName: string]: StrictTypeEncoder}} */\nconst typeEncoders = {\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n number (obj, _typ, _options, _refStack) {\n if (!Number.isInteger(obj) || !Number.isSafeInteger(obj)) {\n return new Token(Type.float, obj)\n } else if (obj >= 0) {\n return new Token(Type.uint, obj)\n } else {\n return new Token(Type.negint, obj)\n }\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n bigint (obj, _typ, _options, _refStack) {\n if (obj >= BigInt(0)) {\n return new Token(Type.uint, obj)\n } else {\n return new Token(Type.negint, obj)\n }\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n Uint8Array (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, obj)\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n string (obj, _typ, _options, _refStack) {\n return new Token(Type.string, obj)\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n boolean (obj, _typ, _options, _refStack) {\n return obj ? simpleTokens.true : simpleTokens.false\n },\n\n /**\n * @param {any} _obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n null (_obj, _typ, _options, _refStack) {\n return simpleTokens.null\n },\n\n /**\n * @param {any} _obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n undefined (_obj, _typ, _options, _refStack) {\n return simpleTokens.undefined\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n ArrayBuffer (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj))\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n DataView (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength))\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} options\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\n Array (obj, _typ, options, refStack) {\n if (!obj.length) {\n if (options.addBreakTokens === true) {\n return [simpleTokens.emptyArray, new Token(Type.break)]\n }\n return simpleTokens.emptyArray\n }\n refStack = Ref.createCheck(refStack, obj)\n const entries = []\n let i = 0\n for (const e of obj) {\n entries[i++] = objectToTokens(e, options, refStack)\n }\n if (options.addBreakTokens) {\n return [new Token(Type.array, obj.length), entries, new Token(Type.break)]\n }\n return [new Token(Type.array, obj.length), entries]\n },\n\n /**\n * @param {any} obj\n * @param {string} typ\n * @param {EncodeOptions} options\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\n Object (obj, typ, options, refStack) {\n // could be an Object or a Map\n const isMap = typ !== 'Object'\n // it's slightly quicker to use Object.keys() than Object.entries()\n const keys = isMap ? obj.keys() : Object.keys(obj)\n const maxLength = isMap ? obj.size : keys.length\n\n /** @type {undefined | [TokenOrNestedTokens, TokenOrNestedTokens][]} */\n let entries\n\n if (maxLength) {\n // Pre-allocate the array with the expected size\n entries = new Array(maxLength)\n refStack = Ref.createCheck(refStack, obj)\n const skipUndefined = !isMap && options.ignoreUndefinedProperties\n\n let i = 0\n for (const key of keys) {\n const value = isMap ? obj.get(key) : obj[key]\n if (skipUndefined && value === undefined) {\n continue\n }\n entries[i++] = [\n objectToTokens(key, options, refStack),\n objectToTokens(value, options, refStack)\n ]\n }\n\n // Truncate only if properties were skipped\n if (i < maxLength) {\n entries.length = i\n }\n }\n\n if (!entries?.length) {\n if (options.addBreakTokens === true) {\n return [simpleTokens.emptyMap, new Token(Type.break)]\n }\n return simpleTokens.emptyMap\n }\n\n sortMapEntries(entries, options)\n if (options.addBreakTokens) {\n return [new Token(Type.map, entries.length), entries, new Token(Type.break)]\n }\n return [new Token(Type.map, entries.length), entries]\n }\n}\n\ntypeEncoders.Map = typeEncoders.Object\ntypeEncoders.Buffer = typeEncoders.Uint8Array\nfor (const typ of 'Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64'.split(' ')) {\n typeEncoders[`${typ}Array`] = typeEncoders.DataView\n}\n\n/**\n * @param {any} obj\n * @param {EncodeOptions} [options]\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\nfunction objectToTokens (obj, options = {}, refStack) {\n const typ = is(obj)\n const customTypeEncoder = (options && options.typeEncoders && /** @type {OptionalTypeEncoder} */ options.typeEncoders[typ]) || typeEncoders[typ]\n if (typeof customTypeEncoder === 'function') {\n const tokens = customTypeEncoder(obj, typ, options, refStack)\n if (tokens != null) {\n return tokens\n }\n }\n const typeEncoder = typeEncoders[typ]\n if (!typeEncoder) {\n throw new Error(`${encodeErrPrefix} unsupported type: ${typ}`)\n }\n return typeEncoder(obj, typ, options, refStack)\n}\n\n/*\nCBOR key sorting is a mess.\n\nThe canonicalisation recommendation from https://tools.ietf.org/html/rfc7049#section-3.9\nincludes the wording:\n\n> The keys in every map must be sorted lowest value to highest.\n> Sorting is performed on the bytes of the representation of the key\n> data items without paying attention to the 3/5 bit splitting for\n> major types.\n> ...\n> * If two keys have different lengths, the shorter one sorts\n earlier;\n> * If two keys have the same length, the one with the lower value\n in (byte-wise) lexical order sorts earlier.\n\n1. It is not clear what \"bytes of the representation of the key\" means: is it\n the CBOR representation, or the binary representation of the object itself?\n Consider the int and uint difference here.\n2. It is not clear what \"without paying attention to\" means: do we include it\n and compare on that? Or do we omit the special prefix byte, (mostly) treating\n the key in its plain binary representation form.\n\nThe FIDO 2.0: Client To Authenticator Protocol spec takes the original CBOR\nwording and clarifies it according to their understanding.\nhttps://fidoalliance.org/specs/fido-v2.0-rd-20170927/fido-client-to-authenticator-protocol-v2.0-rd-20170927.html#message-encoding\n\n> The keys in every map must be sorted lowest value to highest. Sorting is\n> performed on the bytes of the representation of the key data items without\n> paying attention to the 3/5 bit splitting for major types. The sorting rules\n> are:\n> * If the major types are different, the one with the lower value in numerical\n> order sorts earlier.\n> * If two keys have different lengths, the shorter one sorts earlier;\n> * If two keys have the same length, the one with the lower value in\n> (byte-wise) lexical order sorts earlier.\n\nSome other implementations, such as borc, do a full encode then do a\nlength-first, byte-wise-second comparison:\nhttps://github.com/dignifiedquire/borc/blob/b6bae8b0bcde7c3976b0f0f0957208095c392a36/src/encoder.js#L358\nhttps://github.com/dignifiedquire/borc/blob/b6bae8b0bcde7c3976b0f0f0957208095c392a36/src/utils.js#L143-L151\n\nThis has the benefit of being able to easily handle arbitrary keys, including\ncomplex types (maps and arrays).\n\nWe'll opt for the FIDO approach, since it affords some efficies since we don't\nneed a full encode of each key to determine order and can defer to the types\nto determine how to most efficiently order their values (i.e. int and uint\nordering can be done on the numbers, no need for byte-wise, for example).\n\nRecommendation: stick to single key types or you'll get into trouble, and prefer\nstring keys because it's much simpler that way.\n*/\n\n/**\n * @param {TokenOrNestedTokens[]} entries\n * @param {EncodeOptions} options\n */\nfunction sortMapEntries (entries, options) {\n if (options.mapSorter) {\n entries.sort(options.mapSorter)\n }\n}\n\n/**\n * @param {(Token|Token[])[]} e1\n * @param {(Token|Token[])[]} e2\n * @returns {number}\n */\nfunction mapSorter (e1, e2) {\n // the key position ([0]) could have a single token or an array\n // almost always it'll be a single token but complex key might get involved\n /* c8 ignore next 2 */\n const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0]\n const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0]\n\n // different key types\n if (keyToken1.type !== keyToken2.type) {\n return keyToken1.type.compare(keyToken2.type)\n }\n\n const major = keyToken1.type.major\n // TODO: handle case where cmp === 0 but there are more keyToken e. complex type)\n const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2)\n /* c8 ignore next 5 */\n if (tcmp === 0) {\n // duplicate key or complex type where the first token matched,\n // i.e. a map or array and we're only comparing the opening token\n console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone')\n }\n return tcmp\n}\n\n/**\n * @typedef {Token & { _keyBytes?: Uint8Array }} TokenEx\n *\n * @param {(Token|Token[])[]} e1\n * @param {(Token|Token[])[]} e2\n * @returns {number}\n */\nfunction rfc8949MapSorter (e1, e2) {\n if (e1[0] instanceof Token && e2[0] instanceof Token) {\n const t1 = /** @type {TokenEx} */ (e1[0])\n const t2 = /** @type {TokenEx} */ (e2[0])\n\n if (!t1._keyBytes) {\n t1._keyBytes = encodeRfc8949(t1.value)\n }\n\n if (!t2._keyBytes) {\n t2._keyBytes = encodeRfc8949(t2.value)\n }\n\n return compare(t1._keyBytes, t2._keyBytes)\n }\n\n throw new Error('rfc8949MapSorter: complex key types are not supported yet')\n}\n\n/**\n * @param {any} data\n * @returns {Uint8Array}\n */\nfunction encodeRfc8949 (data) {\n return encodeCustom(data, cborEncoders, rfc8949EncodeOptions)\n}\n\n/**\n * @param {ByteWriter} writer\n * @param {TokenOrNestedTokens} tokens\n * @param {TokenTypeEncoder[]} encoders\n * @param {EncodeOptions} options\n */\nfunction tokensToEncoded (writer, tokens, encoders, options) {\n if (Array.isArray(tokens)) {\n for (const token of tokens) {\n tokensToEncoded(writer, token, encoders, options)\n }\n } else {\n encoders[tokens.type.major](writer, tokens, options)\n }\n}\n\n// CBOR major type prefixes, cached from Type for hot path performance\nconst MAJOR_UINT = Type.uint.majorEncoded\nconst MAJOR_NEGINT = Type.negint.majorEncoded\nconst MAJOR_BYTES = Type.bytes.majorEncoded\nconst MAJOR_STRING = Type.string.majorEncoded\nconst MAJOR_ARRAY = Type.array.majorEncoded\n\n// Simple value bytes (CBOR major type 7 + minor value)\nconst SIMPLE_FALSE = Type.float.majorEncoded | MINOR_FALSE\nconst SIMPLE_TRUE = Type.float.majorEncoded | MINOR_TRUE\nconst SIMPLE_NULL = Type.float.majorEncoded | MINOR_NULL\nconst SIMPLE_UNDEFINED = Type.float.majorEncoded | MINOR_UNDEFINED\n\nconst neg1b = BigInt(-1)\nconst pos1b = BigInt(1)\n\n/**\n * Check if direct encoding can be used for the given options.\n * Direct encoding bypasses token creation for most values.\n * @param {EncodeOptions} options\n * @returns {boolean}\n */\nfunction canDirectEncode (options) {\n // Cannot use direct encode with addBreakTokens (needs special break token handling).\n // Direct encode checks typeEncoders per-value, falling back to tokens as needed.\n // Maps fall back to token-based encoding for efficient key sorting.\n return options.addBreakTokens !== true\n}\n\n/**\n * Direct encode a value to the writer, bypassing token creation for most types.\n * Falls back to token-based encoding for custom type encoders.\n * @param {ByteWriter} writer\n * @param {any} data\n * @param {EncodeOptions} options\n * @param {Reference|undefined} refStack\n */\nfunction directEncode (writer, data, options, refStack) {\n const typ = is(data)\n\n // Check for custom encoder for THIS specific type\n const customEncoder = options.typeEncoders && options.typeEncoders[typ]\n if (customEncoder) {\n const tokens = customEncoder(data, typ, options, refStack)\n if (tokens != null) {\n // Custom encoder returned tokens, serialize immediately\n tokensToEncoded(writer, tokens, cborEncoders, options)\n return\n }\n // Custom encoder returned null, fall through to default handling\n }\n\n // Direct encode based on type\n switch (typ) {\n case 'null':\n writer.push([SIMPLE_NULL])\n return\n\n case 'undefined':\n writer.push([SIMPLE_UNDEFINED])\n return\n\n case 'boolean':\n writer.push([data ? SIMPLE_TRUE : SIMPLE_FALSE])\n return\n\n case 'number':\n if (!Number.isInteger(data) || !Number.isSafeInteger(data)) {\n // Float, use token encoder for complex float encoding\n encodeFloat(writer, new Token(Type.float, data), options)\n } else if (data >= 0) {\n encodeUintValue(writer, MAJOR_UINT, data)\n } else {\n // Negative integer\n encodeUintValue(writer, MAJOR_NEGINT, data * -1 - 1)\n }\n return\n\n case 'bigint':\n if (data >= BigInt(0)) {\n encodeUintValue(writer, MAJOR_UINT, data)\n } else {\n encodeUintValue(writer, MAJOR_NEGINT, data * neg1b - pos1b)\n }\n return\n\n case 'string': {\n const bytes = fromString(data)\n encodeUintValue(writer, MAJOR_STRING, bytes.length)\n writer.push(bytes)\n return\n }\n\n case 'Uint8Array':\n encodeUintValue(writer, MAJOR_BYTES, data.length)\n writer.push(data)\n return\n\n case 'Array':\n if (!data.length) {\n writer.push([MAJOR_ARRAY]) // Empty array: 0x80\n return\n }\n refStack = Ref.createCheck(refStack, data)\n encodeUintValue(writer, MAJOR_ARRAY, data.length)\n for (const elem of data) {\n directEncode(writer, elem, options, refStack)\n }\n return\n\n case 'Object':\n case 'Map':\n // Maps require key sorting, use token-based encoding for efficiency\n // (pre-encoding all keys for sorting is expensive)\n {\n const tokens = typeEncoders.Object(data, typ, options, refStack)\n tokensToEncoded(writer, tokens, cborEncoders, options)\n }\n return\n\n default:\n // Fall back to token-based encoding for other types (DataView, TypedArrays, etc.)\n {\n const typeEncoder = typeEncoders[typ]\n if (!typeEncoder) {\n throw new Error(`${encodeErrPrefix} unsupported type: ${typ}`)\n }\n const tokens = typeEncoder(data, typ, options, refStack)\n tokensToEncoded(writer, tokens, cborEncoders, options)\n }\n }\n}\n\n/**\n * @param {any} data\n * @param {TokenTypeEncoder[]} encoders\n * @param {EncodeOptions} options\n * @param {Uint8Array} [destination]\n * @returns {Uint8Array}\n */\nfunction encodeCustom (data, encoders, options, destination) {\n // arg ordering is different to encodeInto for backward compatibility\n const hasDest = destination instanceof Uint8Array\n let writeTo = hasDest ? new U8Bl(destination) : defaultWriter\n\n const tokens = objectToTokens(data, options)\n if (!Array.isArray(tokens) && options.quickEncodeToken) {\n const quickBytes = options.quickEncodeToken(tokens)\n if (quickBytes) {\n if (hasDest) {\n // Copy quick bytes into destination buffer\n writeTo.push(quickBytes)\n return writeTo.toBytes()\n }\n return quickBytes\n }\n const encoder = encoders[tokens.type.major]\n if (encoder.encodedSize) {\n const size = encoder.encodedSize(tokens, options)\n if (!hasDest) {\n writeTo = new Bl(size)\n }\n encoder(writeTo, tokens, options)\n /* c8 ignore next 4 */\n // this would be a problem with encodedSize() functions\n if (writeTo.chunks.length !== 1) {\n throw new Error(`Unexpected error: pre-calculated length for ${tokens} was wrong`)\n }\n return hasDest ? writeTo.toBytes() : asU8A(writeTo.chunks[0])\n }\n }\n writeTo.reset()\n tokensToEncoded(writeTo, tokens, encoders, options)\n return writeTo.toBytes(true)\n}\n\n/**\n * @param {any} data\n * @param {EncodeOptions} [options]\n * @returns {Uint8Array}\n */\nfunction encode (data, options) {\n options = Object.assign({}, defaultEncodeOptions, options)\n\n // Use direct encode path when possible\n if (canDirectEncode(options)) {\n defaultWriter.reset()\n directEncode(defaultWriter, data, options, undefined)\n return defaultWriter.toBytes(true)\n }\n\n return encodeCustom(data, cborEncoders, options)\n}\n\n/**\n * @param {any} data\n * @param {Uint8Array} destination\n * @param {EncodeOptions} [options]\n * @returns {{ written: number }}\n */\nfunction encodeInto (data, destination, options) {\n options = Object.assign({}, defaultEncodeOptions, options)\n\n // Use direct encode path when possible\n if (canDirectEncode(options)) {\n const writer = new U8Bl(destination)\n directEncode(writer, data, options, undefined)\n return { written: writer.toBytes().length }\n }\n\n const result = encodeCustom(data, cborEncoders, options, destination)\n return { written: result.length }\n}\n\nexport { objectToTokens, encode, encodeCustom, encodeInto, Ref }\n", "import { decodeErrPrefix } from './common.js'\nimport { Type } from './token.js'\nimport { jump, quick } from './jump.js'\n\n/**\n * @typedef {import('./token.js').Token} Token\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../interface').DecodeTokenizer} DecodeTokenizer\n */\n\nconst defaultDecodeOptions = {\n strict: false,\n allowIndefinite: true,\n allowUndefined: true,\n allowBigInt: true\n}\n\n/**\n * @implements {DecodeTokenizer}\n */\nclass Tokeniser {\n /**\n * @param {Uint8Array} data\n * @param {DecodeOptions} options\n */\n constructor (data, options = {}) {\n this._pos = 0\n this.data = data\n this.options = options\n }\n\n pos () {\n return this._pos\n }\n\n done () {\n return this._pos >= this.data.length\n }\n\n next () {\n const byt = this.data[this._pos]\n let token = quick[byt]\n if (token === undefined) {\n const decoder = jump[byt]\n /* c8 ignore next 4 */\n // if we're here then there's something wrong with our jump or quick lists!\n if (!decoder) {\n throw new Error(`${decodeErrPrefix} no decoder for major type ${byt >>> 5} (byte 0x${byt.toString(16).padStart(2, '0')})`)\n }\n const minor = byt & 31\n token = decoder(this.data, this._pos, minor, this.options)\n }\n // @ts-ignore we get to assume encodedLength is set (crossing fingers slightly)\n this._pos += token.encodedLength\n return token\n }\n}\n\nconst DONE = Symbol.for('DONE')\nconst BREAK = Symbol.for('BREAK')\n\n/**\n * @param {Token} token\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokenToArray (token, tokeniser, options) {\n const arr = []\n for (let i = 0; i < token.value; i++) {\n const value = tokensToObject(tokeniser, options)\n if (value === BREAK) {\n if (token.value === Infinity) {\n // normal end to indefinite length array\n break\n }\n throw new Error(`${decodeErrPrefix} got unexpected break to lengthed array`)\n }\n if (value === DONE) {\n throw new Error(`${decodeErrPrefix} found array but not enough entries (got ${i}, expected ${token.value})`)\n }\n arr[i] = value\n }\n return arr\n}\n\n/**\n * @param {Token} token\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokenToMap (token, tokeniser, options) {\n const useMaps = options.useMaps === true\n const rejectDuplicateMapKeys = options.rejectDuplicateMapKeys === true\n const obj = useMaps ? undefined : {}\n const m = useMaps ? new Map() : undefined\n for (let i = 0; i < token.value; i++) {\n const key = tokensToObject(tokeniser, options)\n if (key === BREAK) {\n if (token.value === Infinity) {\n // normal end to indefinite length map\n break\n }\n throw new Error(`${decodeErrPrefix} got unexpected break to lengthed map`)\n }\n if (key === DONE) {\n throw new Error(`${decodeErrPrefix} found map but not enough entries (got ${i} [no key], expected ${token.value})`)\n }\n if (!useMaps && typeof key !== 'string') {\n throw new Error(`${decodeErrPrefix} non-string keys not supported (got ${typeof key})`)\n }\n if (rejectDuplicateMapKeys) {\n // @ts-ignore\n if ((useMaps && m.has(key)) || (!useMaps && Object.hasOwn(obj, key))) {\n throw new Error(`${decodeErrPrefix} found repeat map key \"${key}\"`)\n }\n }\n const value = tokensToObject(tokeniser, options)\n if (value === DONE) {\n throw new Error(`${decodeErrPrefix} found map but not enough entries (got ${i} [no value], expected ${token.value})`)\n }\n if (useMaps) {\n // @ts-ignore TODO reconsider this .. maybe needs to be strict about key types\n m.set(key, value)\n } else {\n // @ts-ignore TODO reconsider this .. maybe needs to be strict about key types\n obj[key] = value\n }\n }\n // @ts-ignore c'mon man\n return useMaps ? m : obj\n}\n\n/**\n * @param {DecodeTokenizer} tokeniser\n * @param {DecodeOptions} options\n * @returns {any|BREAK|DONE}\n */\nfunction tokensToObject (tokeniser, options) {\n // should we support array as an argument?\n // check for tokenIter[Symbol.iterator] and replace tokenIter with what that returns?\n if (tokeniser.done()) {\n return DONE\n }\n\n const token = tokeniser.next()\n\n if (Type.equals(token.type, Type.break)) {\n return BREAK\n }\n\n if (token.type.terminal) {\n return token.value\n }\n\n if (Type.equals(token.type, Type.array)) {\n return tokenToArray(token, tokeniser, options)\n }\n\n if (Type.equals(token.type, Type.map)) {\n return tokenToMap(token, tokeniser, options)\n }\n\n if (Type.equals(token.type, Type.tag)) {\n if (options.tags && typeof options.tags[token.value] === 'function') {\n const tagged = tokensToObject(tokeniser, options)\n return options.tags[token.value](tagged)\n }\n throw new Error(`${decodeErrPrefix} tag not supported (${token.value})`)\n }\n /* c8 ignore next */\n throw new Error('unsupported')\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {[any, Uint8Array]}\n */\nfunction decodeFirst (data, options) {\n if (!(data instanceof Uint8Array)) {\n throw new Error(`${decodeErrPrefix} data to decode must be a Uint8Array`)\n }\n options = Object.assign({}, defaultDecodeOptions, options)\n const tokeniser = options.tokenizer || new Tokeniser(data, options)\n const decoded = tokensToObject(tokeniser, options)\n if (decoded === DONE) {\n throw new Error(`${decodeErrPrefix} did not find any content to decode`)\n }\n if (decoded === BREAK) {\n throw new Error(`${decodeErrPrefix} got unexpected break`)\n }\n return [decoded, data.subarray(tokeniser.pos())]\n}\n\n/**\n * @param {Uint8Array} data\n * @param {DecodeOptions} [options]\n * @returns {any}\n */\nfunction decode (data, options) {\n const [decoded, remainder] = decodeFirst(data, options)\n if (remainder.length > 0) {\n throw new Error(`${decodeErrPrefix} too many terminals, data makes no sense`)\n }\n return decoded\n}\n\nexport { Tokeniser, tokensToObject, decode, decodeFirst }\n", "export const empty = new Uint8Array(0)\n\nexport function toHex (d: Uint8Array): string {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n}\n\nexport function fromHex (hex: string): Uint8Array {\n const hexes = hex.match(/../g)\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\nexport function equals (aa: Uint8Array, bb: Uint8Array): boolean {\n if (aa === bb) { return true }\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\nexport function coerce (o: ArrayBufferView | ArrayBuffer | Uint8Array): Uint8Array {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') { return o }\n if (o instanceof ArrayBuffer) { return new Uint8Array(o) }\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\nexport function isBinary (o: unknown): o is ArrayBuffer | ArrayBufferView {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n}\n\nexport function fromString (str: string): Uint8Array {\n return new TextEncoder().encode(str)\n}\n\nexport function toString (b: Uint8Array): string {\n return new TextDecoder().decode(b)\n}\n", "/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable<number>} source\n */\n function encode (source) {\n // @ts-ignore\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n /**\n * @param {string | string[]} string\n */\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n", "import { coerce } from '../bytes.js'\nimport basex from '../vendor/base-x.js'\nimport type { BaseCodec, BaseDecoder, BaseEncoder, CombobaseDecoder, Multibase, MultibaseCodec, MultibaseDecoder, MultibaseEncoder, UnibaseDecoder } from './interface.js'\n\ninterface EncodeFn { (bytes: Uint8Array): string }\ninterface DecodeFn { (text: string): Uint8Array }\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder<Base extends string, Prefix extends string> implements MultibaseEncoder<Prefix>, BaseEncoder {\n readonly name: Base\n readonly prefix: Prefix\n readonly baseEncode: EncodeFn\n\n constructor (name: Base, prefix: Prefix, baseEncode: EncodeFn) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n encode (bytes: Uint8Array): Multibase<Prefix> {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder<Base extends string, Prefix extends string> implements MultibaseDecoder<Prefix>, UnibaseDecoder<Prefix>, BaseDecoder {\n readonly name: Base\n readonly prefix: Prefix\n readonly baseDecode: DecodeFn\n private readonly prefixCodePoint: number\n\n constructor (name: Base, prefix: Prefix, baseDecode: DecodeFn) {\n this.name = name\n this.prefix = prefix\n const prefixCodePoint = prefix.codePointAt(0)\n /* c8 ignore next 3 */\n if (prefixCodePoint === undefined) {\n throw new Error('Invalid prefix character')\n }\n this.prefixCodePoint = prefixCodePoint\n this.baseDecode = baseDecode\n }\n\n decode (text: string): Uint8Array {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n or<OtherPrefix extends string> (decoder: UnibaseDecoder<OtherPrefix> | ComposedDecoder<OtherPrefix>): ComposedDecoder<Prefix | OtherPrefix> {\n return or(this, decoder)\n }\n}\n\ntype Decoders<Prefix extends string> = Record<Prefix, UnibaseDecoder<Prefix>>\n\nclass ComposedDecoder<Prefix extends string> implements MultibaseDecoder<Prefix>, CombobaseDecoder<Prefix> {\n readonly decoders: Decoders<Prefix>\n\n constructor (decoders: Decoders<Prefix>) {\n this.decoders = decoders\n }\n\n or <OtherPrefix extends string> (decoder: UnibaseDecoder<OtherPrefix> | ComposedDecoder<OtherPrefix>): ComposedDecoder<Prefix | OtherPrefix> {\n return or(this, decoder)\n }\n\n decode (input: string): Uint8Array {\n const prefix = input[0] as Prefix\n const decoder = this.decoders[prefix]\n if (decoder != null) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\nexport function or <L extends string, R extends string> (left: UnibaseDecoder<L> | CombobaseDecoder<L>, right: UnibaseDecoder<R> | CombobaseDecoder<R>): ComposedDecoder<L | R> {\n return new ComposedDecoder({\n ...(left.decoders ?? { [(left as UnibaseDecoder<L>).prefix]: left }),\n ...(right.decoders ?? { [(right as UnibaseDecoder<R>).prefix]: right })\n } as Decoders<L | R>)\n}\n\nexport class Codec<Base extends string, Prefix extends string> implements MultibaseCodec<Prefix>, MultibaseEncoder<Prefix>, MultibaseDecoder<Prefix>, BaseCodec, BaseEncoder, BaseDecoder {\n readonly name: Base\n readonly prefix: Prefix\n readonly baseEncode: EncodeFn\n readonly baseDecode: DecodeFn\n readonly encoder: Encoder<Base, Prefix>\n readonly decoder: Decoder<Base, Prefix>\n\n constructor (name: Base, prefix: Prefix, baseEncode: EncodeFn, baseDecode: DecodeFn) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n encode (input: Uint8Array): string {\n return this.encoder.encode(input)\n }\n\n decode (input: string): Uint8Array {\n return this.decoder.decode(input)\n }\n}\n\nexport function from <Base extends string, Prefix extends string> ({ name, prefix, encode, decode }: { name: Base, prefix: Prefix, encode: EncodeFn, decode: DecodeFn }): Codec<Base, Prefix> {\n return new Codec(name, prefix, encode, decode)\n}\n\nexport function baseX <Base extends string, Prefix extends string> ({ name, prefix, alphabet }: { name: Base, prefix: Prefix, alphabet: string }): Codec<Base, Prefix> {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n decode: (text: string): Uint8Array => coerce(decode(text))\n })\n}\n\nfunction decode (string: string, alphabetIdx: Record<string, number>, bitsPerChar: number, name: string): Uint8Array {\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = alphabetIdx[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\nfunction encode (data: Uint8Array, alphabet: string, bitsPerChar: number): string {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '='\n }\n }\n\n return out\n}\n\nfunction createAlphabetIdx (alphabet: string): Record<string, number> {\n // Build the character lookup table:\n const alphabetIdx: Record<string, number> = {}\n for (let i = 0; i < alphabet.length; ++i) {\n alphabetIdx[alphabet[i]] = i\n }\n return alphabetIdx\n}\n\n/**\n * RFC4648 Factory\n */\nexport function rfc4648 <Base extends string, Prefix extends string> ({ name, prefix, bitsPerChar, alphabet }: { name: Base, prefix: Prefix, bitsPerChar: number, alphabet: string }): Codec<Base, Prefix> {\n const alphabetIdx = createAlphabetIdx(alphabet)\n return from({\n prefix,\n name,\n encode (input: Uint8Array): string {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input: string): Uint8Array {\n return decode(input, alphabetIdx, bitsPerChar, name)\n }\n })\n}\n", "import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n", "import { baseX } from './base.js'\n\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n})\n\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n})\n", "import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n", "/* eslint-disable */\nvar encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n // @ts-ignore\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n // @ts-ignore\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (/** @type {number} */ value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n", "import varint from './vendor/varint.js'\n\nexport function decode (data: Uint8Array, offset = 0): [number, number] {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\nexport function encodeTo (int: number, target: Uint8Array, offset = 0): Uint8Array {\n varint.encode(int, target, offset)\n return target\n}\n\nexport function encodingLength (int: number): number {\n return varint.encodingLength(int)\n}\n", "import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\nimport type { MultihashDigest } from './interface.js'\n\n/**\n * Creates a multihash digest.\n */\nexport function create <Code extends number> (code: Code, digest: Uint8Array): Digest<Code, number> {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function decode (multihash: Uint8Array): MultihashDigest {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\nexport function equals (a: MultihashDigest, b: unknown): b is MultihashDigest {\n if (a === b) {\n return true\n } else {\n const data = b as { code?: unknown, size?: unknown, bytes?: unknown }\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest<Code extends number, Size extends number> implements MultihashDigest {\n readonly code: Code\n readonly size: Size\n readonly digest: Uint8Array\n readonly bytes: Uint8Array\n\n /**\n * Creates a multihash digest.\n */\n constructor (code: Code, size: Size, digest: Uint8Array, bytes: Uint8Array) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n\n/**\n * Used to check that the passed multihash has the passed code\n */\nexport function hasCode <T extends number> (digest: MultihashDigest, code: T): digest is MultihashDigest<T> {\n return digest.code === code\n}\n", "import { base32 } from './bases/base32.js'\nimport { base36 } from './bases/base36.js'\nimport { base58btc } from './bases/base58.js'\nimport { coerce } from './bytes.js'\nimport * as Digest from './hashes/digest.js'\nimport * as varint from './varint.js'\nimport type * as API from './link/interface.js'\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\nexport function format <T extends API.Link<unknown, number, number, API.Version>, Prefix extends string> (link: T, base?: API.MultibaseEncoder<Prefix>): API.ToString<T, Prefix> {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n base as API.MultibaseEncoder<'z'> ?? base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n (base ?? base32.encoder) as API.MultibaseEncoder<Prefix>\n )\n }\n}\n\nexport function toJSON <Link extends API.UnknownLink> (link: Link): API.LinkJSON<Link> {\n return {\n '/': format(link)\n }\n}\n\nexport function fromJSON <Link extends API.UnknownLink> (json: API.LinkJSON<Link>): CID<unknown, number, number, API.Version> {\n return CID.parse(json['/'])\n}\n\nconst cache = new WeakMap<API.UnknownLink, Map<string, string>>()\n\nfunction baseCache (cid: API.UnknownLink): Map<string, string> {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\nexport class CID<Data = unknown, Format extends number = number, Alg extends number = number, Version extends API.Version = API.Version> implements API.Link<Data, Format, Alg, Version> {\n readonly code: Format\n readonly version: Version\n readonly multihash: API.MultihashDigest<Alg>\n readonly bytes: Uint8Array\n readonly '/': Uint8Array\n\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor (version: Version, code: Format, multihash: API.MultihashDigest<Alg>, bytes: Uint8Array) {\n this.code = code\n this.version = version\n this.multihash = multihash\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID (): this {\n return this\n }\n\n // ArrayBufferView\n get byteOffset (): number {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength (): number {\n return this.bytes.byteLength\n }\n\n toV0 (): CID<Data, API.DAG_PB, API.SHA_256, 0> {\n switch (this.version) {\n case 0: {\n return this as CID<Data, API.DAG_PB, API.SHA_256, 0>\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return (\n CID.createV0(\n multihash as API.MultihashDigest<API.SHA_256>\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n toV1 (): CID<Data, Format, Alg, 1> {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return this as CID<Data, Format, Alg, 1>\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n equals (other: unknown): other is CID<Data, Format, Alg, Version> {\n return CID.equals(this, other)\n }\n\n static equals <Data, Format extends number, Alg extends number, Version extends API.Version>(self: API.Link<Data, Format, Alg, Version>, other: unknown): other is CID {\n const unknown = other as { code?: unknown, version?: unknown, multihash?: unknown }\n return (\n unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n toString (base?: API.MultibaseEncoder<string>): string {\n return format(this, base)\n }\n\n toJSON (): API.LinkJSON<this> {\n return { '/': format(this) }\n }\n\n link (): this {\n return this\n }\n\n readonly [Symbol.toStringTag] = 'CID';\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] (): string {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n */\n static asCID <Data, Format extends number, Alg extends number, Version extends API.Version, U>(input: API.Link<Data, Format, Alg, Version> | U): CID<Data, Format, Alg, Version> | null {\n if (input == null) {\n return null\n }\n\n const value = input as any\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n multihash as API.MultihashDigest<Alg>,\n bytes ?? encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest = Digest.decode(multihash) as API.MultihashDigest<Alg>\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create <Data, Format extends number, Alg extends number, Version extends API.Version>(version: Version, code: Format, digest: API.MultihashDigest<Alg>): CID<Data, Format, Alg, Version> {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n */\n static createV0 <T = unknown>(digest: API.MultihashDigest<typeof SHA_256_CODE>): CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0> {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1 <Data, Code extends number, Alg extends number>(code: Code, digest: API.MultihashDigest<Alg>): CID<Data, Code, Alg, 1> {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n */\n static decode <Data, Code extends number, Alg extends number, Version extends API.Version>(bytes: API.ByteView<API.Link<Data, Code, Alg, Version>>): CID<Data, Code, Alg, Version> {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length !== 0) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n */\n static decodeFirst <T, C extends number, A extends number, V extends API.Version>(bytes: API.ByteView<API.Link<T, C, A, V>>): [CID<T, C, A, V>, Uint8Array] {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(digest as API.MultihashDigest<API.SHA_256>)\n : CID.createV1(specs.codec, digest)\n return [cid as CID<T, C, A, V>, bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n */\n static inspectBytes <T, C extends number, A extends number, V extends API.Version>(initialBytes: API.ByteView<API.Link<T, C, A, V>>): { version: V, codec: C, multihashCode: A, digestSize: number, multihashSize: number, size: number } {\n let offset = 0\n const next = (): number => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = next() as V\n let codec = DAG_PB_CODE as C\n if (version as number === 18) {\n // CIDv0\n version = 0 as V\n offset = 0\n } else {\n codec = next() as C\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = next() as A // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n */\n static parse <Prefix extends string, Data, Code extends number, Alg extends number, Version extends API.Version>(source: API.ToString<API.Link<Data, Code, Alg, Version>, Prefix>, base?: API.MultibaseDecoder<Prefix>): CID<Data, Code, Alg, Version> {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\nfunction parseCIDtoBytes <Prefix extends string, Data, Code extends number, Alg extends number, Version extends API.Version> (source: API.ToString<API.Link<Data, Code, Alg, Version>, Prefix>, base?: API.MultibaseDecoder<Prefix>): [Prefix, API.ByteView<API.Link<Data, Code, Alg, Version>>] {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc\n return [\n base58btc.prefix as Prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc\n return [base58btc.prefix as Prefix, decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base ?? base32\n return [base32.prefix as Prefix, decoder.decode(source)]\n }\n case base36.prefix: {\n const decoder = base ?? base36\n return [base36.prefix as Prefix, decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [source[0] as Prefix, base.decode(source)]\n }\n }\n}\n\nfunction toStringV0 (bytes: Uint8Array, cache: Map<string, string>, base: API.MultibaseEncoder<'z'>): string {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nfunction toStringV1 <Prefix extends string> (bytes: Uint8Array, cache: Map<string, string>, base: API.MultibaseEncoder<Prefix>): string {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\nfunction encodeCID (version: API.Version, code: number, multihash: Uint8Array): Uint8Array {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n", "import * as cborg from 'cborg'\nimport { CID } from 'multiformats/cid'\n\n// https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692\nconst CID_CBOR_TAG = 42\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView<T>} ByteView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView<T>} ArrayBufferView\n */\n\n/**\n * @template T\n * @param {ByteView<T> | ArrayBufferView<T>} buf\n * @returns {ByteView<T>}\n */\nexport function toByteView (buf) {\n if (buf instanceof ArrayBuffer) {\n return new Uint8Array(buf, 0, buf.byteLength)\n }\n\n return buf\n}\n\n/**\n * cidEncoder will receive all Objects during encode, it needs to filter out\n * anything that's not a CID and return `null` for that so it's encoded as\n * normal.\n *\n * @param {any} obj\n * @returns {cborg.Token[]|null}\n */\nfunction cidEncoder (obj) {\n if (obj.asCID !== obj && obj['/'] !== obj.bytes) {\n return null // any other kind of object\n }\n const cid = CID.asCID(obj)\n /* c8 ignore next 4 */\n // very unlikely case, and it'll probably throw a recursion error in cborg\n if (!cid) {\n return null\n }\n const bytes = new Uint8Array(cid.bytes.byteLength + 1)\n bytes.set(cid.bytes, 1) // prefix is 0x00, for historical reasons\n return [\n new cborg.Token(cborg.Type.tag, CID_CBOR_TAG),\n new cborg.Token(cborg.Type.bytes, bytes)\n ]\n}\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * Intercept all `undefined` values from an object walk and reject the entire\n * object if we find one.\n *\n * @returns {null}\n */\nfunction undefinedEncoder () {\n throw new Error('`undefined` is not supported by the IPLD Data Model and cannot be encoded')\n}\n\n/**\n * Intercept all `number` values from an object walk and reject the entire\n * object if we find something that doesn't fit the IPLD data model (NaN &\n * Infinity).\n *\n * @param {number} num\n * @returns {null}\n */\nfunction numberEncoder (num) {\n if (Number.isNaN(num)) {\n throw new Error('`NaN` is not supported by the IPLD Data Model and cannot be encoded')\n }\n if (num === Infinity || num === -Infinity) {\n throw new Error('`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded')\n }\n return null\n}\n\n/**\n * @param {Map<any, any>} map\n * @returns {null}\n */\nfunction mapEncoder (map) {\n for (const key of map.keys()) {\n if (typeof key !== 'string' || key.length === 0) {\n throw new Error('Non-string Map keys are not supported by the IPLD Data Model and cannot be encoded')\n }\n }\n return null\n}\n\nconst _encodeOptions = {\n float64: true,\n typeEncoders: {\n Map: mapEncoder,\n Object: cidEncoder,\n undefined: undefinedEncoder,\n number: numberEncoder\n }\n}\n\nexport const encodeOptions = {\n ..._encodeOptions,\n typeEncoders: {\n ..._encodeOptions.typeEncoders\n }\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {CID}\n */\nfunction cidDecoder (bytes) {\n if (bytes[0] !== 0) {\n throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00')\n }\n return CID.decode(bytes.subarray(1)) // ignore leading 0x00\n}\n\nconst _decodeOptions = {\n allowIndefinite: false,\n coerceUndefinedToNull: true,\n allowNaN: false,\n allowInfinity: false,\n allowBigInt: true, // this will lead to BigInt for ints outside of\n // safe-integer range, which may surprise users\n strict: true,\n useMaps: false,\n rejectDuplicateMapKeys: true,\n /** @type {import('cborg').TagDecoder[]} */\n tags: []\n}\n_decodeOptions.tags[CID_CBOR_TAG] = cidDecoder\n\nexport const decodeOptions = {\n ..._decodeOptions,\n tags: _decodeOptions.tags.slice()\n}\n\nexport const name = 'dag-cbor'\nexport const code = 0x71\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView<T>}\n */\nexport const encode = (node) => cborg.encode(node, _encodeOptions)\n\n/**\n * @template T\n * @param {ByteView<T> | ArrayBufferView<T>} data\n * @returns {T}\n */\nexport const decode = (data) => cborg.decode(toByteView(data), _decodeOptions)\n", "// Copyright 2018 Consensys AG\n\n// Licensed under the Apache License, Version 2.0(the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n// http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/**\n * Defines an object type that can be extended with other properties.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Extensible = Record<string, any>\n\n/**\n * Defines the result of a DID resolution operation.\n *\n * @see {@link Resolvable.resolve}\n * @see {@link https://www.w3.org/TR/did-core/#did-resolution}\n */\nexport interface DIDResolutionResult {\n '@context'?: 'https://w3id.org/did-resolution/v1' | string | string[]\n didResolutionMetadata: DIDResolutionMetadata\n didDocument: DIDDocument | null\n didDocumentMetadata: DIDDocumentMetadata\n}\n\n/**\n * Describes the options forwarded to the resolver when executing a {@link Resolvable.resolve} operation.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-resolution-options}\n */\nexport interface DIDResolutionOptions extends Extensible {\n accept?: string\n}\n\n/**\n * Encapsulates the resolution metadata resulting from a {@link Resolvable.resolve} operation.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-resolution-metadata}\n */\nexport interface DIDResolutionMetadata extends Extensible {\n contentType?: string\n error?: 'invalidDid' | 'notFound' | 'representationNotSupported' | 'unsupportedDidMethod' | string\n}\n\n/**\n * Represents metadata about the DID document resulting from a {@link Resolvable.resolve} operation.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-document-metadata}\n */\nexport interface DIDDocumentMetadata extends Extensible {\n created?: string\n updated?: string\n deactivated?: boolean\n versionId?: string\n nextUpdate?: string\n nextVersionId?: string\n equivalentId?: string\n canonicalId?: string\n}\n\n/**\n * Represents the Verification Relationship between a DID subject and a Verification Method.\n *\n * @see {@link https://www.w3.org/TR/did-core/#verification-relationships}\n */\nexport type KeyCapabilitySection =\n | 'authentication'\n | 'assertionMethod'\n | 'keyAgreement'\n | 'capabilityInvocation'\n | 'capabilityDelegation'\n\n/**\n * Represents a DID document.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-document-properties}\n */\nexport type DIDDocument = {\n '@context'?: 'https://www.w3.org/ns/did/v1' | string | string[]\n id: string\n alsoKnownAs?: string[]\n controller?: string | string[]\n verificationMethod?: VerificationMethod[]\n service?: Service[]\n /**\n * @deprecated\n */\n publicKey?: VerificationMethod[]\n} & {\n [x in KeyCapabilitySection]?: (string | VerificationMethod)[]\n}\n\n/**\n * Represents a Service entry in a {@link https://www.w3.org/TR/did-core/#did-document-properties | DID document}.\n *\n * @see {@link https://www.w3.org/TR/did-core/#services}\n * @see {@link https://www.w3.org/TR/did-core/#service-properties}\n */\nexport interface Service {\n id: string\n type: string\n serviceEndpoint: ServiceEndpoint | ServiceEndpoint[]\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any\n}\n\n/**\n * Represents an endpoint of a Service entry in a DID document.\n *\n * @see {@link https://www.w3.org/TR/did-core/#dfn-serviceendpoint}\n * @see {@link https://www.w3.org/TR/did-core/#services}\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ServiceEndpoint = string | Record<string, any>\n\n/**\n * Encapsulates a JSON web key type that includes only the public properties that\n * can be used in DID documents.\n *\n * The private properties are intentionally omitted to discourage the use\n * (and accidental disclosure) of private keys in DID documents.\n *\n * @see {@link https://www.rfc-editor.org/rfc/rfc7517 | RFC7517 JsonWebKey (JWK)}\n */\nexport interface JsonWebKey extends Extensible {\n alg?: string\n crv?: string\n e?: string\n ext?: boolean\n key_ops?: string[]\n kid?: string\n kty: string\n n?: string\n use?: string\n x?: string\n y?: string\n}\n\n/**\n * Represents the properties of a Verification Method listed in a DID document.\n *\n * This data type includes public key representations that are no longer present in the spec but are still used by\n * several DID methods / resolvers and kept for backward compatibility.\n *\n * @see {@link https://www.w3.org/TR/did-core/#verification-methods}\n * @see {@link https://www.w3.org/TR/did-core/#verification-method-properties}\n */\nexport interface VerificationMethod {\n id: string\n type: string\n controller: string\n publicKeyBase58?: string\n publicKeyBase64?: string\n publicKeyJwk?: JsonWebKey\n publicKeyHex?: string\n publicKeyMultibase?: string\n blockchainAccountId?: string\n ethereumAddress?: string\n\n // ConditionalProof2022 subtypes\n conditionOr?: VerificationMethod[]\n conditionAnd?: VerificationMethod[]\n threshold?: number\n conditionThreshold?: VerificationMethod[]\n conditionWeightedThreshold?: ConditionWeightedThreshold[]\n conditionDelegated?: string\n relationshipParent?: string[]\n relationshipChild?: string[]\n relationshipSibling?: string[]\n}\n\nexport interface ConditionWeightedThreshold {\n condition: VerificationMethod\n weight: number\n}\n\n/**\n * URI params resulting from parsing a DID URI\n */\nexport interface Params {\n [index: string]: string\n}\n\n/**\n * An object containing the results of parsing a DID URI string.\n *\n * This is forwarded to implementations of particular DID resolvers when calling the `resolve` method.\n *\n * @see {@link Resolver}\n * @see {@link Resolvable.resolve}\n */\nexport interface ParsedDID {\n did: string\n didUrl: string\n method: string\n id: string\n path?: string\n fragment?: string\n query?: string\n params?: Params\n}\n\n/**\n * The DID resolution function that DID Resolver implementations must implement.\n */\nexport type DIDResolver = (\n did: string,\n parsed: ParsedDID,\n resolver: Resolvable,\n options: DIDResolutionOptions\n) => Promise<DIDResolutionResult>\nexport type WrappedResolver = () => Promise<DIDResolutionResult>\nexport type DIDCache = (parsed: ParsedDID, resolve: WrappedResolver) => Promise<DIDResolutionResult>\nexport type LegacyDIDResolver = (did: string, parsed: ParsedDID, resolver: Resolvable) => Promise<DIDDocument>\n\nexport type ResolverRegistry = Record<string, DIDResolver>\n\nexport interface LegacyResolverRegistry {\n [index: string]: LegacyDIDResolver\n}\n\nexport interface ResolverOptions {\n cache?: DIDCache | boolean | undefined\n legacyResolvers?: LegacyResolverRegistry\n}\n\nexport function inMemoryCache(): DIDCache {\n const cache: Map<string, DIDResolutionResult> = new Map()\n return async (parsed: ParsedDID, resolve) => {\n if (parsed.params && parsed.params['no-cache'] === 'true') return await resolve()\n\n const cached = cache.get(parsed.didUrl)\n if (cached !== undefined) return cached\n const result = await resolve()\n if (result.didResolutionMetadata?.error !== 'notFound') {\n cache.set(parsed.didUrl, result)\n }\n return result\n }\n}\n\nexport function noCache(parsed: ParsedDID, resolve: WrappedResolver): Promise<DIDResolutionResult> {\n return resolve()\n}\n\nconst PCT_ENCODED = '(?:%[0-9a-fA-F]{2})'\nconst ID_CHAR = `(?:[a-zA-Z0-9._-]|${PCT_ENCODED})`\nconst METHOD = '([a-z0-9]+)'\nconst METHOD_ID = `((?:${ID_CHAR}*:)*(${ID_CHAR}+))`\nconst PARAM_CHAR = '[a-zA-Z0-9_.:%-]'\nconst PARAM = `;${PARAM_CHAR}+=${PARAM_CHAR}*`\nconst PARAMS = `((${PARAM})*)`\nconst PATH = `(/[^#?]*)?`\nconst QUERY = `([?][^#]*)?`\nconst FRAGMENT = `(#.*)?`\nconst DID_MATCHER = new RegExp(`^did:${METHOD}:${METHOD_ID}${PARAMS}${PATH}${QUERY}${FRAGMENT}$`)\n\n/**\n * Parses a DID URL and builds a {@link ParsedDID | ParsedDID object}\n *\n * @param didUrl - the DID URL string to be parsed\n * @returns a ParsedDID object, or null if the input is not a DID URL\n */\nexport function parse(didUrl: string): ParsedDID | null {\n if (didUrl === '' || !didUrl) return null\n const sections = didUrl.match(DID_MATCHER)\n if (sections) {\n const parts: ParsedDID = {\n did: `did:${sections[1]}:${sections[2]}`,\n method: sections[1],\n id: sections[2],\n didUrl,\n }\n if (sections[4]) {\n const params = sections[4].slice(1).split(';')\n parts.params = {}\n for (const p of params) {\n const kv = p.split('=')\n parts.params[kv[0]] = kv[1]\n }\n }\n if (sections[6]) parts.path = sections[6]\n if (sections[7]) parts.query = sections[7].slice(1)\n if (sections[8]) parts.fragment = sections[8].slice(1)\n return parts\n }\n return null\n}\n\nconst EMPTY_RESULT: DIDResolutionResult = {\n didResolutionMetadata: {},\n didDocument: null,\n didDocumentMetadata: {},\n}\n\nexport function wrapLegacyResolver(resolve: LegacyDIDResolver): DIDResolver {\n return async (did, parsed, resolver) => {\n try {\n const doc = await resolve(did, parsed, resolver)\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: doc,\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: {\n error: 'notFound',\n message: e.toString(), // This is not in spec, but may be helpful\n },\n }\n }\n }\n}\n\n/**\n * The method signature implemented by this resolver.\n */\nexport interface Resolvable {\n resolve: (didUrl: string, options?: DIDResolutionOptions) => Promise<DIDResolutionResult>\n}\n\n/**\n * This implementation of {@link Resolvable} bundles together multiple implementations of {@link DIDResolver} and\n * presents a single function call to users.\n */\nexport class Resolver implements Resolvable {\n private readonly registry: ResolverRegistry\n private readonly cache: DIDCache\n\n constructor(registry: ResolverRegistry = {}, options: ResolverOptions = {}) {\n this.registry = registry\n this.cache = options.cache === true ? inMemoryCache() : options.cache || noCache\n if (options.legacyResolvers) {\n Object.keys(options.legacyResolvers).map((methodName) => {\n if (!this.registry[methodName]) {\n this.registry[methodName] = wrapLegacyResolver(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.legacyResolvers![methodName]\n )\n }\n })\n }\n }\n\n async resolve(didUrl: string, options: DIDResolutionOptions = {}): Promise<DIDResolutionResult> {\n const parsed = parse(didUrl)\n if (parsed === null) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { error: 'invalidDid' },\n }\n }\n const resolver = this.registry[parsed.method]\n if (!resolver) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { error: 'unsupportedDidMethod' },\n }\n }\n return this.cache(parsed, () => resolver(parsed.did, parsed, this, options))\n }\n}\n", "'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n", "'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n", "// eslint-disable-next-line strict\nexport default null;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n", "'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n", "'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n", "'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n", "'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n", "'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n", "import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n", "const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n", "import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n", "'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n", "'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n", "'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n", "'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n", "'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n", "'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n", "'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n", "/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n", "import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n", "import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n", "import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n", "'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n", "import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n", "import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n", "\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n", "import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n * \n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n * \n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n * \n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n * \n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object<string, Function|Object>}\n */\n adapters: knownAdapters\n};\n", "'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n", "export const VERSION = \"1.13.2\";", "'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n", "'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n", "'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n", "const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n", "'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n", "import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n", "import axios from 'axios'\nimport { DIDDocument, DIDResolutionResult, DIDResolver, ParsedDID } from 'did-resolver'\n\nexport function getResolver(): Record<string, DIDResolver> {\n async function resolve(did: string, parsed: ParsedDID): Promise<DIDResolutionResult> {\n let err = null\n const url = `https://plc.directory/${encodeURIComponent(did)}`\n\n const didDocumentMetadata = {}\n let didDocument: DIDDocument | null = null\n\n do {\n try {\n didDocument = (await axios.get(url)).data\n } catch (error) {\n err = `resolver_error: '\"https://plc.directory/\" + DID' must resolve to a valid https URL containing a JSON document: ${error}`\n break\n }\n\n // TODO: this excludes the use of query params\n const docIdMatchesDid = didDocument?.id === did\n if (!docIdMatchesDid) {\n err = 'resolver_error: DID document id does not match requested did'\n // break // uncomment this when adding more checks\n }\n // eslint-disable-next-line no-constant-condition\n } while (false)\n\n const contentType =\n typeof didDocument?.['@context'] !== 'undefined' ? 'application/did+ld+json' : 'application/did+json'\n\n if (err) {\n return {\n didDocument,\n didDocumentMetadata,\n didResolutionMetadata: {\n error: 'notFound',\n message: err,\n },\n }\n } else {\n return {\n didDocument,\n didDocumentMetadata,\n didResolutionMetadata: { contentType },\n }\n }\n }\n\n return { plc: resolve }\n}\n", "import fetch from 'cross-fetch'\nimport { DIDDocument, DIDResolutionResult, DIDResolver, ParsedDID } from 'did-resolver'\n\nconst DOC_PATH = '/.well-known/did.json'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function get(url: string): Promise<any> {\n const res = await fetch(url, { mode: 'cors' })\n if (res.status >= 400) {\n throw new Error(`Bad response ${res.statusText}`)\n }\n return res.json()\n}\n\nexport function getResolver(): Record<string, DIDResolver> {\n async function resolve(did: string, parsed: ParsedDID): Promise<DIDResolutionResult> {\n let err = null\n let path = decodeURIComponent(parsed.id) + DOC_PATH\n const id = parsed.id.split(':')\n if (id.length > 1) {\n path = id.map(decodeURIComponent).join('/') + '/did.json'\n }\n\n const url = `https://${path}`\n\n const didDocumentMetadata = {}\n let didDocument: DIDDocument | null = null\n\n do {\n try {\n didDocument = await get(url)\n } catch (error) {\n err = `resolver_error: DID must resolve to a valid https URL containing a JSON document: ${error}`\n break\n }\n\n // TODO: this excludes the use of query params\n const docIdMatchesDid = didDocument?.id === did\n if (!docIdMatchesDid) {\n err = 'resolver_error: DID document id does not match requested did'\n // break // uncomment this when adding more checks\n }\n // eslint-disable-next-line no-constant-condition\n } while (false)\n\n const contentType =\n typeof didDocument?.['@context'] !== 'undefined' ? 'application/did+ld+json' : 'application/did+json'\n\n if (err) {\n return {\n didDocument,\n didDocumentMetadata,\n didResolutionMetadata: {\n error: 'notFound',\n message: err,\n },\n }\n } else {\n return {\n didDocument,\n didDocumentMetadata,\n didResolutionMetadata: { contentType },\n }\n }\n }\n\n return { web: resolve }\n}\n", "import { GraffitiErrorNotFound } from \"@graffiti-garden/api\";\nimport { Resolver, type DIDDocument } from \"did-resolver\";\nimport { getResolver as plcResolver } from \"plc-did-resolver\";\nimport { getResolver as webResolver } from \"web-did-resolver\";\n\nexport class DecentralizedIdentifiers {\n protected readonly methods = {\n ...plcResolver(),\n ...webResolver(),\n };\n\n protected readonly resolver = new Resolver(this.methods, { cache: true });\n\n async resolve(did: string): Promise<DIDDocument> {\n if (\n !Object.keys(this.methods).some((method) =>\n did.startsWith(`did:${method}:`),\n )\n ) {\n throw new Error(`Unrecognized DID method: ${did}`);\n }\n\n const { didDocument } = await this.resolver.resolve(did);\n if (!didDocument) {\n throw new GraffitiErrorNotFound(`DID not found: ${did}`);\n }\n\n return didDocument;\n }\n}\n", null, null, "import {\n discovery,\n randomState,\n buildAuthorizationUrl,\n authorizationCodeGrant,\n tokenRevocation,\n} from \"openid-client\";\nimport {\n type infer as infer_,\n string,\n url,\n array,\n object,\n optional,\n nullable,\n instanceof as instanceof_,\n undefined as undefined_,\n intersection,\n union,\n} from \"zod/mini\";\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type { Socket } from \"node:net\";\n\nconst AUTHORIZATION_ENDPOINT_METHOD_PREFIX_OAUTH2 = \"oauth2:\";\nconst LOCAL_STORAGE_OAUTH2_KEY = \"graffiti-auth-oauth2-data\";\n\nexport class Authorization {\n eventTarget: EventTarget = new EventTarget();\n\n constructor() {\n // Extract oauth redirect synchronously so the route\n // can be changed before any SPA routers (e.g. vue router)\n // start messing with things\n const oauthPromise = this.completeOauth();\n\n (async () => {\n // Allow listeners to be added first\n await new Promise((resolve) => setTimeout(resolve, 0));\n\n // Complete the oauth flow\n await oauthPromise;\n\n // Send an initialized event\n const initializedEvent: InitializedEvent = new CustomEvent(\"initialized\");\n this.eventTarget.dispatchEvent(initializedEvent);\n })();\n }\n\n async login(...args: Parameters<typeof this.login_>): Promise<void> {\n try {\n await this.login_(...args);\n } catch (e) {\n const error = e instanceof Error ? e : new Error(\"Unknown error\");\n const detail: LoginEvent[\"detail\"] = { loginId: args[1], error };\n this.eventTarget.dispatchEvent(new CustomEvent(\"login\", { detail }));\n }\n }\n protected async login_(\n authorizationEndpoint: string,\n loginId: string,\n serviceEndpoints: string[],\n ): Promise<void> {\n const configuration = await this.getAuthorizationConfiguration(\n authorizationEndpoint,\n );\n\n const scope = serviceEndpoints.map(encodeURIComponent).join(\" \");\n const state = randomState();\n\n let redirectUri: string;\n let waitForCallback: Promise<void> | undefined = undefined;\n if (typeof window !== \"undefined\") {\n // If in a browser, prepare for a redirect by\n // storing the configuration, expected state,\n // current URL, and endpoints in local storage\n redirectUri = window.location.href;\n const data: infer_<typeof OAuth2LoginDataSchema> = {\n loginId,\n redirectUri,\n authorizationEndpoint,\n state,\n serviceEndpoints,\n };\n window.localStorage.setItem(\n LOCAL_STORAGE_OAUTH2_KEY,\n JSON.stringify(data),\n );\n } else {\n // Otherwise, in node, start a local server to receive the callback\n const http = await import(\"node:http\").catch((e) => {\n throw new Error(\n \"Unrecognized environment: cannot find window or node:http\",\n );\n });\n const server = http.createServer();\n\n try {\n await new Promise<void>((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(0, \"::1\", resolve);\n });\n } catch (e) {\n try {\n server.close();\n } catch {}\n throw new Error(\"Failed to start local oauth callback server.\");\n }\n\n const address = server.address();\n if (!address) {\n try {\n server.close();\n } catch {}\n throw new Error(\"Failed to get local oauth callback server address.\");\n }\n redirectUri =\n typeof address === \"string\"\n ? `http://${address}`\n : `http://${address.family === \"IPv6\" ? `[${address.address}]` : address.address}:${address.port}`;\n\n // Wait for a callback request\n waitForCallback = new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(\n () => {\n try {\n server.close();\n } catch {}\n reject(\"Oauth callback timed out.\");\n },\n 5 * 60 * 1000, // 5 minutes\n );\n\n const sockets = new Set<Socket>();\n server.on(\"connection\", (socket: Socket) => {\n sockets.add(socket);\n socket.on(\"close\", () => {\n sockets.delete(socket);\n });\n });\n\n // Set up the actual request handler\n const onRequest = async (req: IncomingMessage, res: ServerResponse) => {\n try {\n const callbackUrl = new URL(req.url ?? \"/\", redirectUri);\n await this.onCallbackUrl({\n loginId,\n callbackUrl,\n configuration,\n expectedState: state,\n serviceEndpoints,\n });\n\n res.statusCode = 200;\n res.setHeader(\"Content-Type\", \"text/plain\");\n res.end(\"You may now close this window.\");\n } catch (e) {\n res.statusCode = 500;\n res.setHeader(\"Content-Type\", \"text/plain\");\n res.end(\"Error processing OAuth callback.\");\n\n throw e;\n } finally {\n clearTimeout(timeout);\n server.off(\"request\", onRequest);\n\n for (const socket of sockets) {\n socket.destroy();\n }\n\n server.close(() => resolve());\n }\n };\n\n server.on(\"request\", onRequest);\n });\n }\n\n // Construct the authorization URL\n const redirectUriStripped = new URL(redirectUri);\n redirectUriStripped.hash = \"\";\n redirectUriStripped.search = \"\";\n\n const redirectTo = buildAuthorizationUrl(configuration, {\n scope,\n redirect_uri: redirectUriStripped.toString(),\n state,\n });\n\n // Either redirect (browser) or print the URL and wait (node)\n if (typeof window !== \"undefined\") {\n window.location.href = redirectTo.toString();\n } else {\n console.log(\"Please open the following URL in your browser:\");\n console.log(redirectTo.toString());\n await waitForCallback;\n }\n }\n\n protected completeOauth() {\n if (typeof window === \"undefined\") return;\n\n // Look in local storage to see if we have a pending login\n const data = window.localStorage.getItem(LOCAL_STORAGE_OAUTH2_KEY);\n if (!data) return;\n\n let json: unknown;\n try {\n json = JSON.parse(data);\n } catch {\n console.error(\"Invalid OAuth2 login data in local storage.\");\n window.localStorage.removeItem(LOCAL_STORAGE_OAUTH2_KEY);\n return;\n }\n\n const parseResult = OAuth2LoginDataSchema.safeParse(json);\n if (!parseResult.success) {\n console.error(\n \"Invalid OAuth2 login data structure in local storage.\",\n parseResult.error,\n );\n window.localStorage.removeItem(LOCAL_STORAGE_OAUTH2_KEY);\n return;\n }\n\n const {\n loginId,\n redirectUri,\n authorizationEndpoint,\n state,\n serviceEndpoints,\n } = parseResult.data;\n\n try {\n // Make sure that we redirected back to the correct page\n const expectedUrl = new URL(redirectUri);\n const callbackUrl = new URL(window.location.href);\n if (expectedUrl.pathname !== callbackUrl.pathname) return;\n // Make sure it is actually an oauth call\n const params = callbackUrl.searchParams;\n if (!params.has(\"code\") && !params.has(\"error\")) return;\n\n // Restore the hash and query parameters to the expected URL,\n // removing the code, state, and error parameters\n window.history.replaceState({}, document.title, expectedUrl.toString());\n window.localStorage.removeItem(LOCAL_STORAGE_OAUTH2_KEY);\n\n return new Promise<void>((resolve) => setTimeout(resolve, 0))\n .then(() => this.getAuthorizationConfiguration(authorizationEndpoint))\n .then((configuration) =>\n this.onCallbackUrl({\n loginId,\n callbackUrl,\n configuration,\n expectedState: state,\n serviceEndpoints,\n }),\n )\n .catch((e) => {\n const error = e instanceof Error ? e : new Error(\"Unknown error\");\n const detail: LoginEvent[\"detail\"] = { loginId, error };\n this.eventTarget.dispatchEvent(new CustomEvent(\"login\", { detail }));\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n protected async onCallbackUrl(args: {\n loginId: string;\n callbackUrl: URL;\n configuration: any;\n expectedState: string;\n serviceEndpoints: string[];\n }) {\n const {\n loginId,\n callbackUrl,\n configuration,\n expectedState,\n serviceEndpoints,\n } = args;\n\n const response = await authorizationCodeGrant(configuration, callbackUrl, {\n expectedState,\n });\n\n const token = response.access_token;\n const scope = response.scope;\n const grantedEndpoints =\n scope?.split(\" \").map(decodeURIComponent) || serviceEndpoints;\n\n // Make sure granted endpoints cover the requested endpoints\n if (\n !serviceEndpoints.every((endpoint) => grantedEndpoints.includes(endpoint))\n ) {\n throw new Error(\"Not all requested service endpoints were granted.\");\n }\n\n // Send a logged in event\n const loginEvent: LoginEvent = new CustomEvent(\"login\", {\n detail: {\n loginId,\n token,\n },\n });\n this.eventTarget.dispatchEvent(loginEvent);\n }\n\n async logout(\n authorizationEndpoint: string,\n logoutId: string,\n token: string,\n ): Promise<void> {\n try {\n await this.logout_(authorizationEndpoint, logoutId, token);\n } catch (e) {\n const error = e instanceof Error ? e : new Error(\"Unknown error\");\n const detail: LogoutEvent[\"detail\"] = { logoutId, error };\n this.eventTarget.dispatchEvent(new CustomEvent(\"logout\", { detail }));\n }\n }\n protected async logout_(\n authorizationEndpoint: string,\n logoutId: string,\n token: string,\n ): Promise<void> {\n const configuration = await this.getAuthorizationConfiguration(\n authorizationEndpoint,\n );\n await tokenRevocation(configuration, token);\n const detail: LogoutEvent[\"detail\"] = { logoutId };\n this.eventTarget.dispatchEvent(new CustomEvent(\"logout\", { detail }));\n }\n\n protected async getAuthorizationConfiguration(\n authorizationEndpoint: string,\n ): Promise<any> {\n // Parse the authorization endpoint\n if (\n !authorizationEndpoint.startsWith(\n AUTHORIZATION_ENDPOINT_METHOD_PREFIX_OAUTH2,\n )\n ) {\n throw new Error(\n `Unrecognized authorization endpoint method: ${authorizationEndpoint}`,\n );\n }\n const issuer = authorizationEndpoint.slice(\n AUTHORIZATION_ENDPOINT_METHOD_PREFIX_OAUTH2.length,\n );\n\n // Look up the oauth configuration\n let issuerUrl: URL;\n try {\n issuerUrl = new URL(issuer);\n } catch (e) {\n throw new Error(\"Invalid issuer URL.\");\n }\n\n return await discovery(issuerUrl, \"graffiti-client\");\n }\n}\n\nexport const LoginEventDetailSchema = intersection(\n object({\n loginId: string(),\n }),\n union([\n object({ token: string(), error: optional(undefined_()) }),\n object({ error: instanceof_(Error) }),\n ]),\n);\n\nexport const LogoutEventDetailSchema = object({\n logoutId: string(),\n error: optional(instanceof_(Error)),\n});\n\nexport const InitializedEventDetailSchema = optional(\n nullable(\n object({\n error: optional(instanceof_(Error)),\n }),\n ),\n);\n\nexport type LoginEvent = CustomEvent<infer_<typeof LoginEventDetailSchema>>;\nexport type LogoutEvent = CustomEvent<infer_<typeof LogoutEventDetailSchema>>;\nexport type InitializedEvent = CustomEvent<\n infer_<typeof InitializedEventDetailSchema>\n>;\n\nconst OAuth2LoginDataSchema = object({\n loginId: string(),\n redirectUri: url(),\n authorizationEndpoint: url(),\n state: string(),\n serviceEndpoints: array(url()),\n});\n", "import {\n GraffitiErrorCursorExpired,\n GraffitiErrorForbidden,\n GraffitiErrorNotFound,\n GraffitiErrorTooLarge,\n} from \"@graffiti-garden/api\";\n\nconst SERVICE_ENDPOINT_PREFIX_HTTPS = \"https://\";\nexport function verifyHTTPSEndpoint(endpoint: string): void {\n if (!endpoint.startsWith(SERVICE_ENDPOINT_PREFIX_HTTPS)) {\n throw new Error(\"Unrecognized storage bucket endpoint type\");\n }\n}\n\nexport async function getAuthorizationEndpoint(\n serviceEndpoint: string,\n): Promise<string> {\n verifyHTTPSEndpoint(serviceEndpoint);\n const authUrl = `${serviceEndpoint}/auth`;\n\n const response = await fetch(authUrl);\n if (!response.ok) {\n throw new Error(\"Failed to get storage bucket authorization endpoint\");\n }\n return await response.text();\n}\n\nexport class GraffitiErrorUnauthorized extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraffitiErrorUnauthorized\";\n Object.setPrototypeOf(this, GraffitiErrorUnauthorized.prototype);\n }\n}\n\nexport async function fetchWithErrorHandling(\n ...args: Parameters<typeof fetch>\n) {\n const response = await fetch(...args);\n\n if (!response.ok) {\n let errorText: string;\n try {\n errorText = await response.text();\n } catch {\n errorText = response.statusText;\n }\n\n if (response.status === 401) {\n throw new GraffitiErrorUnauthorized(errorText);\n } else if (response.status === 403) {\n throw new GraffitiErrorForbidden(errorText);\n } else if (response.status === 404) {\n throw new GraffitiErrorNotFound(errorText);\n } else if (response.status === 410) {\n throw new GraffitiErrorCursorExpired(errorText);\n } else if (response.status === 413) {\n throw new GraffitiErrorTooLarge(errorText);\n } else {\n throw new Error(errorText);\n }\n }\n\n return response;\n}\n", "import {\n fetchWithErrorHandling,\n getAuthorizationEndpoint,\n verifyHTTPSEndpoint,\n} from \"./utilities\";\nimport { string, array, object, optional, nullable } from \"zod/mini\";\nimport { decode as dagCborDecode } from \"@ipld/dag-cbor\";\n\nexport class StorageBuckets {\n getAuthorizationEndpoint = getAuthorizationEndpoint;\n\n async put(\n storageBucketEndpoint: string,\n key: string,\n value: Uint8Array,\n authorizationToken: string,\n ): Promise<void> {\n verifyHTTPSEndpoint(storageBucketEndpoint);\n const url = `${storageBucketEndpoint}/value/${encodeURIComponent(key)}`;\n\n await fetchWithErrorHandling(url, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/octet-stream\",\n Authorization: `Bearer ${authorizationToken}`,\n },\n body: value.slice(),\n });\n }\n\n async delete(\n storageBucketEndpoint: string,\n key: string,\n authorizationToken: string,\n ): Promise<void> {\n verifyHTTPSEndpoint(storageBucketEndpoint);\n const url = `${storageBucketEndpoint}/value/${encodeURIComponent(key)}`;\n\n await fetchWithErrorHandling(url, {\n method: \"DELETE\",\n headers: {\n Authorization: `Bearer ${authorizationToken}`,\n },\n });\n }\n\n async get(\n storageBucketEndpoint: string,\n key: string,\n maxBytes?: number,\n ): Promise<Uint8Array> {\n verifyHTTPSEndpoint(storageBucketEndpoint);\n const url = `${storageBucketEndpoint}/value/${encodeURIComponent(key)}`;\n\n const response = await fetchWithErrorHandling(url);\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"Failed to read value from storage bucket\");\n }\n\n const contentLengthHeader = response.headers.get(\"Content-Length\");\n const parsedContentLength = contentLengthHeader\n ? Number(contentLengthHeader)\n : undefined;\n\n const hasValidContentLength =\n !!parsedContentLength &&\n !!Number.isFinite(parsedContentLength) &&\n parsedContentLength >= 0;\n\n // Fast path: Content-Length exists and is valid\n if (hasValidContentLength) {\n const contentLength = parsedContentLength!;\n if (maxBytes !== undefined && contentLength > maxBytes) {\n throw new Error(\"Value exceeds maximum byte limit\");\n }\n\n const out = new Uint8Array(contentLength);\n let offset = 0;\n let completed = false;\n\n try {\n while (offset <= out.length) {\n const { done, value } = await reader.read();\n\n if (done) {\n completed = true;\n break;\n }\n if (!value || value.length === 0) continue;\n\n const nextOffset = offset + value.length;\n if (nextOffset > out.length) {\n throw new Error(\"Received more data than expected\");\n }\n\n out.set(value, offset);\n offset = nextOffset;\n }\n } finally {\n reader.releaseLock();\n }\n\n if (!completed) {\n throw new Error(\"Failed to read complete value from storage bucket\");\n }\n\n return offset === contentLength ? out : out.slice(0, offset);\n }\n\n // Fallback path: no (usable) Content-Length\n const chunks: Uint8Array[] = [];\n let total = 0;\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) break;\n if (!value || value.length === 0) continue;\n\n total += value.length;\n if (maxBytes !== undefined && total > maxBytes) {\n throw new Error(\"Value exceeds maximum byte limit\");\n }\n\n // Copy because some implementations reuse the underlying buffer\n chunks.push(value.slice());\n }\n } finally {\n reader.releaseLock();\n }\n\n // Concatenate chunks into one Uint8Array\n const out = new Uint8Array(total);\n let offset = 0;\n for (const c of chunks) {\n out.set(c, offset);\n offset += c.length;\n }\n return out;\n }\n\n async *export(\n storageBucketEndpoint: string,\n authorizationToken: string,\n ): AsyncGenerator<{ key: string }> {\n verifyHTTPSEndpoint(storageBucketEndpoint);\n const url = `${storageBucketEndpoint}/export`;\n\n let cursor: string | undefined = undefined;\n while (true) {\n const response = await fetchWithErrorHandling(\n cursor ? `${url}?cursor=${encodeURIComponent(cursor)}` : url,\n {\n headers: {\n Authorization: `Bearer ${authorizationToken}`,\n },\n },\n );\n\n const blob = await response.blob();\n const cbor = dagCborDecode(await blob.arrayBuffer());\n const data = ExportSchema.parse(cbor);\n\n for (const key of data.keys) {\n yield { key };\n }\n\n if (data.cursor) {\n cursor = data.cursor;\n } else {\n break;\n }\n }\n }\n}\n\nconst ExportSchema = object({\n keys: array(string()),\n cursor: optional(nullable(string())),\n});\n", "import type { JSONSchema, GraffitiObject } from \"@graffiti-garden/api\";\nimport {\n getAuthorizationEndpoint,\n fetchWithErrorHandling,\n verifyHTTPSEndpoint,\n} from \"./utilities\";\nimport {\n compileGraffitiObjectSchema,\n GraffitiErrorCursorExpired,\n} from \"@graffiti-garden/api\";\nimport {\n encode as dagCborEncode,\n decode as dagCborDecode,\n} from \"@ipld/dag-cbor\";\nimport {\n type infer as infer_,\n string,\n url,\n array,\n optional,\n nullable,\n strictObject,\n looseObject,\n nonnegative,\n int,\n boolean,\n custom,\n number,\n union,\n} from \"zod/mini\";\n\nexport class Inboxes {\n getAuthorizationEndpoint = getAuthorizationEndpoint;\n protected cache_: Promise<Cache> | null = null;\n protected get cache() {\n if (!this.cache_) {\n this.cache_ = createCache();\n }\n return this.cache_;\n }\n\n async send(inboxUrl: string, message: Message<{}>): Promise<string> {\n verifyHTTPSEndpoint(inboxUrl);\n const url = `${inboxUrl}/send`;\n\n const response = await fetchWithErrorHandling(url, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/cbor\",\n },\n body: new Uint8Array(dagCborEncode({ m: message })),\n });\n\n const blob = await response.blob();\n const cbor = dagCborDecode(await blob.arrayBuffer());\n const parsed = SendResponseSchema.parse(cbor);\n return parsed.id;\n }\n\n async get(\n inboxUrl: string,\n messageId: string,\n inboxToken?: string | null,\n ): Promise<LabeledMessageBase> {\n const messageCacheKey = getMessageCacheKey(inboxUrl, messageId);\n const cache = await this.cache;\n const cached = await cache.messages.get(messageCacheKey);\n if (cached) return cached;\n\n const url = `${inboxUrl}/message/${messageId}`;\n const response = await fetchWithErrorHandling(url, {\n method: \"GET\",\n headers: {\n ...(inboxToken\n ? {\n Authorization: `Bearer ${inboxToken}`,\n }\n : {}),\n },\n });\n\n const blob = await response.blob();\n const cbor = dagCborDecode(await blob.arrayBuffer());\n const parsed = LabeledMessageBaseSchema.parse(cbor);\n\n await cache.messages.set(messageCacheKey, parsed);\n return parsed;\n }\n\n async label(\n inboxUrl: string,\n messageId: string,\n label: number,\n inboxToken?: string | null,\n ): Promise<void> {\n verifyHTTPSEndpoint(inboxUrl);\n\n if (inboxToken) {\n const url = `${inboxUrl}/label/${messageId}`;\n\n await fetchWithErrorHandling(url, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/cbor\",\n Authorization: `Bearer ${inboxToken}`,\n },\n body: new Uint8Array(dagCborEncode({ l: label })),\n });\n }\n\n // Update the cache, even if no token.\n // Therefore people not logged in do not need to\n // repeatedly re-validate objects.\n const cache = await this.cache;\n const messageCacheKey = getMessageCacheKey(inboxUrl, messageId);\n const result = await cache.messages.get(messageCacheKey);\n if (result) {\n await cache.messages.set(messageCacheKey, {\n ...result,\n l: label,\n });\n }\n }\n\n protected async fetchMessageBatch(\n inboxUrl: string,\n type: \"query\" | \"export\",\n body: Uint8Array<ArrayBuffer> | undefined,\n inboxToken?: string | null,\n cursor?: string,\n ) {\n const response = await fetchWithErrorHandling(\n `${inboxUrl}/${type}${cursor ? `?cursor=${encodeURIComponent(cursor)}` : \"\"}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/cbor\",\n ...(inboxToken\n ? {\n Authorization: `Bearer ${inboxToken}`,\n }\n : {}),\n },\n body,\n },\n );\n const retryAfterHeader = response.headers.get(\"Retry-After\");\n const retryAfter = retryAfterHeader\n ? parseInt(retryAfterHeader)\n : undefined;\n\n const waitTil =\n retryAfter && Number.isFinite(retryAfter)\n ? Date.now() + retryAfter * 1000\n : undefined;\n\n return { response, waitTil };\n }\n\n protected async *yieldFromCache(\n cache: Cache,\n inboxUrl: string,\n messageIdsCacheKey: string,\n cachedMessageIds: CacheQueryValue,\n cacheNumSeen: number = 0,\n ): AsyncGenerator<LabeledMessageBase> {\n // Filter out all messageIds before\n // the number already seen\n const messageIds = cachedMessageIds.messageIds.slice(cacheNumSeen);\n\n // Get all the messages pointed to in the cache\n const messages = await Promise.all(\n messageIds.map(async (id) => {\n const message = await cache.messages.get(\n getMessageCacheKey(inboxUrl, id),\n );\n if (!message) {\n // Something is very wrong with the cache,\n // it refers to message IDs that are not cached\n try {\n await cache.messageIds.del(messageIdsCacheKey);\n } catch {}\n throw new Error(\"Cache out of sync - perhaps clear browser storage\");\n }\n return message;\n }),\n );\n\n yield* messages;\n }\n\n protected async *lockedMessageStreamer<Schema extends JSONSchema>(\n ...args: Parameters<typeof this.messageStreamer<Schema>>\n ): MessageStream<Schema> {\n if (typeof window === \"undefined\" || !(await canUseIDB())) {\n // TODO: implement locking in node as well, but not\n // high priority since most use will be in browser\n const streamer = this.messageStreamer<Schema>(...args);\n while (true) {\n const next = await streamer.next();\n if (next.done) return next.value;\n yield next.value;\n }\n }\n\n // Request the lock\n const messageIdsCacheKey = await args[0];\n const lockKey = `graffiti:inbox:${messageIdsCacheKey}`;\n let releaseLock = () => {};\n let hasLock: boolean = false;\n await new Promise<void>((resolvehasLock) => {\n window.navigator.locks.request(\n lockKey,\n {\n mode: \"exclusive\",\n ifAvailable: true,\n },\n async (lock) => {\n // Immediately return whether we\n // acquired the lock or not\n hasLock = !!lock;\n resolvehasLock();\n\n // Then wait for the release to be called\n await new Promise<void>((r) => (releaseLock = r));\n },\n );\n });\n if (hasLock) {\n // If we have the lock, simply proceed with the regular streamer\n try {\n const streamer = this.messageStreamer<Schema>(...args);\n while (true) {\n const next = await streamer.next();\n if (next.done) return next.value;\n yield next.value;\n }\n } finally {\n // Release the lock when all done\n releaseLock();\n }\n }\n\n // Someone else has the lock,\n // so wait until the lock is released,\n // then just return from the cache\n releaseLock();\n await window.navigator.locks.request(lockKey, () => {});\n\n // TODO: the arguments here are brittle\n // at some point, refactor things\n const inboxUrl = args[1];\n const objectSchema = args[5] ?? {};\n const cacheVersion = args[6];\n const cacheNumSeen = args[7];\n\n const cache = await this.cache;\n const cachedMessageIds = await cache.messageIds.get(messageIdsCacheKey);\n if (!cachedMessageIds) {\n throw new Error(\"Cache not found\");\n }\n if (\n cacheVersion !== undefined &&\n cacheVersion !== cachedMessageIds.version\n ) {\n throw new GraffitiErrorCursorExpired(\"Cursor is stale\");\n }\n\n const iterator = this.yieldFromCache(\n cache,\n inboxUrl,\n messageIdsCacheKey,\n cachedMessageIds,\n cacheNumSeen,\n );\n for await (const m of iterator) yield m as LabeledMessage<Schema>;\n\n const outputCursor: infer_<typeof CursorSchema> = {\n numSeen: cachedMessageIds.messageIds.length,\n version: cachedMessageIds.version,\n messageIdsCacheKey,\n objectSchema,\n };\n\n return JSON.stringify(outputCursor);\n }\n\n protected async *messageStreamer<Schema extends JSONSchema>(\n messageIdsCacheKey_: Promise<string>,\n inboxUrl: string,\n type: \"export\" | \"query\",\n body: Uint8Array<ArrayBuffer> | undefined,\n inboxToken?: string | null,\n objectSchema: Schema = {} as Schema,\n cacheVersion?: string,\n cacheNumSeen: number = 0,\n ): MessageStream<Schema> {\n const validator = await compileGraffitiObjectSchema(objectSchema);\n const messageIdsCacheKey = await messageIdsCacheKey_;\n const cache = await this.cache;\n\n let cachedMessageIds = await cache.messageIds.get(messageIdsCacheKey);\n if (\n cacheVersion !== undefined &&\n cacheVersion !== cachedMessageIds?.version\n ) {\n throw new GraffitiErrorCursorExpired(\"Cursor is stale\");\n }\n\n // If we are rate-limited, wait\n let waitTil = cachedMessageIds?.waitTil;\n await waitFor(waitTil);\n\n // See if the cursor is still active by\n // requesting an initial batch of messages\n const cachedCursor = cachedMessageIds?.cursor;\n let firstResponse: Response | undefined = undefined;\n try {\n const out = await this.fetchMessageBatch(\n inboxUrl,\n type,\n body,\n inboxToken,\n cachedCursor,\n );\n firstResponse = out.response;\n waitTil = out.waitTil;\n } catch (e) {\n if (!(e instanceof GraffitiErrorCursorExpired && cachedCursor)) {\n console.error(\n \"Unexpected error in stream, waiting 5 seconds before continuing...\",\n );\n await new Promise((resolve) => setTimeout(resolve, 5000));\n throw e;\n }\n\n // The cursor is stale\n await cache.messageIds.del(messageIdsCacheKey);\n if (cacheVersion === undefined) {\n // The query is not a continuation\n // so we can effectively ignore the error\n cachedMessageIds = undefined;\n } else {\n // Otherwise propogate it up so the\n // consumer can clear their message history\n throw e;\n }\n }\n\n if (firstResponse !== undefined && cachedMessageIds) {\n // Cursor is valid! Yield from the cache\n const iterator = this.yieldFromCache(\n cache,\n inboxUrl,\n messageIdsCacheKey,\n cachedMessageIds,\n cacheNumSeen,\n );\n for await (const m of iterator) yield m as LabeledMessage<Schema>;\n }\n\n if (firstResponse === undefined) {\n // The cursor was stale: try again\n const out = await this.fetchMessageBatch(\n inboxUrl,\n type,\n body,\n inboxToken,\n );\n firstResponse = out.response;\n waitTil = out.waitTil;\n }\n\n // Continue streaming results\n let response = firstResponse;\n let cursor: string;\n const version = cachedMessageIds?.version ?? crypto.randomUUID();\n let messageIds = cachedMessageIds?.messageIds ?? [];\n while (true) {\n const blob = await response.blob();\n const decoded = dagCborDecode(await blob.arrayBuffer());\n const {\n results,\n hasMore,\n cursor: nextCursor,\n } = MessageResultSchema.parse(decoded);\n cursor = nextCursor;\n\n const labeledMessages: LabeledMessage<Schema>[] = results.map(\n (result) => {\n const object =\n result[LABELED_MESSAGE_MESSAGE_KEY][MESSAGE_OBJECT_KEY];\n if (!validator(object)) {\n throw new Error(\"Server returned data that does not match schema\");\n }\n return {\n ...result,\n [LABELED_MESSAGE_MESSAGE_KEY]: {\n ...result[LABELED_MESSAGE_MESSAGE_KEY],\n [MESSAGE_OBJECT_KEY]: object,\n },\n };\n },\n );\n\n // First cache the messages with their labels\n await Promise.all(\n labeledMessages.map((m: LabeledMessageBase) =>\n cache.messages.set(\n getMessageCacheKey(inboxUrl, m[LABELED_MESSAGE_ID_KEY]),\n m,\n ),\n ),\n );\n // Then store all the messageids\n messageIds = [\n ...messageIds,\n ...labeledMessages.map(\n (m: LabeledMessageBase) => m[LABELED_MESSAGE_ID_KEY],\n ),\n ];\n await cache.messageIds.set(messageIdsCacheKey, {\n cursor,\n version,\n messageIds,\n waitTil,\n });\n\n // Update how many we've seen\n cacheNumSeen += labeledMessages.length;\n\n // Return the values\n for (const m of labeledMessages) yield m;\n\n if (!hasMore) break;\n\n // Otherwise get another response (after waiting for rate-limit)\n await waitFor(waitTil);\n const out = await this.fetchMessageBatch(\n inboxUrl,\n type,\n undefined, // Body is never past the first time\n inboxToken,\n cursor,\n );\n response = out.response;\n waitTil = out.waitTil;\n }\n\n const outputCursor: infer_<typeof CursorSchema> = {\n numSeen: cacheNumSeen,\n version,\n messageIdsCacheKey,\n objectSchema,\n };\n\n return JSON.stringify(outputCursor);\n }\n\n query<Schema extends JSONSchema>(\n inboxUrl: string,\n tags: Uint8Array[],\n objectSchema: Schema,\n inboxToken?: string | null,\n ): MessageStream<Schema> {\n verifyHTTPSEndpoint(inboxUrl);\n\n const body = dagCborEncode({\n tags,\n schema: objectSchema,\n });\n\n const messageIdsCacheKey = getMessageIdsCacheKey(inboxUrl, \"query\", body);\n return this.lockedMessageStreamer<Schema>(\n messageIdsCacheKey,\n inboxUrl,\n \"query\",\n new Uint8Array(body),\n inboxToken,\n objectSchema,\n );\n }\n\n continueQuery(\n inboxUrl: string,\n cursor: string,\n inboxToken?: string | null,\n ): MessageStream<{}> {\n verifyHTTPSEndpoint(inboxUrl);\n\n const decodedCursor = JSON.parse(cursor);\n const { messageIdsCacheKey, numSeen, objectSchema, version } =\n CursorSchema.parse(decodedCursor);\n\n return this.lockedMessageStreamer<{}>(\n Promise.resolve(messageIdsCacheKey),\n inboxUrl,\n \"query\",\n undefined,\n inboxToken,\n objectSchema,\n version,\n numSeen,\n );\n }\n\n export(inboxUrl: string, inboxToken: string): MessageStream<{}> {\n verifyHTTPSEndpoint(inboxUrl);\n const messageIdsCacheKey = getMessageIdsCacheKey(inboxUrl, \"export\");\n return this.lockedMessageStreamer<{}>(\n messageIdsCacheKey,\n inboxUrl,\n \"export\",\n undefined,\n inboxToken,\n );\n }\n}\n\nconst GraffitiObjectSchema = strictObject({\n value: looseObject({}),\n channels: array(string()),\n allowed: optional(nullable(array(url()))),\n url: url(),\n actor: url(),\n});\nexport const Uint8ArraySchema = custom<Uint8Array>(\n (v): v is Uint8Array => v instanceof Uint8Array,\n);\nexport const TagsSchema = array(Uint8ArraySchema);\n\nexport const MESSAGE_TAGS_KEY = \"t\";\nexport const MESSAGE_OBJECT_KEY = \"o\";\nexport const MESSAGE_METADATA_KEY = \"m\";\nexport const MessageBaseSchema = strictObject({\n [MESSAGE_TAGS_KEY]: TagsSchema,\n [MESSAGE_OBJECT_KEY]: GraffitiObjectSchema,\n [MESSAGE_METADATA_KEY]: Uint8ArraySchema,\n});\ntype MessageBase = infer_<typeof MessageBaseSchema>;\n\nexport const LABELED_MESSAGE_ID_KEY = \"id\";\nexport const LABELED_MESSAGE_MESSAGE_KEY = \"m\";\nexport const LABELED_MESSAGE_LABEL_KEY = \"l\";\nexport const LabeledMessageBaseSchema = strictObject({\n [LABELED_MESSAGE_ID_KEY]: string(),\n [LABELED_MESSAGE_MESSAGE_KEY]: MessageBaseSchema,\n [LABELED_MESSAGE_LABEL_KEY]: number(),\n});\ntype LabeledMessageBase = infer_<typeof LabeledMessageBaseSchema>;\n\nexport type Message<Schema extends JSONSchema> = MessageBase & {\n [MESSAGE_OBJECT_KEY]: GraffitiObject<Schema>;\n};\nexport type LabeledMessage<Schema extends JSONSchema> = LabeledMessageBase & {\n [LABELED_MESSAGE_MESSAGE_KEY]: {\n [MESSAGE_OBJECT_KEY]: GraffitiObject<Schema>;\n };\n};\n\nconst SendResponseSchema = strictObject({ id: string() });\n\nconst MessageResultSchema = strictObject({\n results: array(LabeledMessageBaseSchema),\n hasMore: boolean(),\n cursor: string(),\n});\n\nconst CursorSchema = strictObject({\n messageIdsCacheKey: string(),\n version: string(),\n numSeen: int().check(nonnegative()),\n objectSchema: union([looseObject({}), boolean()]),\n});\n\nexport interface MessageStream<\n Schema extends JSONSchema,\n> extends AsyncGenerator<LabeledMessage<Schema>, string> {}\n\ntype CacheQueryValue = {\n cursor: string;\n version: string;\n messageIds: string[];\n waitTil?: number;\n};\n\nasync function canUseIDB(): Promise<boolean> {\n try {\n if (!globalThis.indexedDB) return false;\n\n // Small probe database\n await new Promise<void>((resolve, reject) => {\n const req = indexedDB.open(\"__idb_probe__\", 1);\n req.onupgradeneeded = () => req.result.createObjectStore(\"k\");\n req.onsuccess = () => {\n req.result.close();\n resolve();\n };\n req.onerror = () => reject(req.error);\n });\n\n return true;\n } catch {\n return false;\n }\n}\n\ntype Cache = {\n messages: {\n get(k: string): Promise<LabeledMessageBase | undefined>;\n set(k: string, value: LabeledMessageBase): Promise<void>;\n del(k: string): Promise<void>;\n };\n messageIds: {\n get(k: string): Promise<CacheQueryValue | undefined>;\n set(k: string, value: CacheQueryValue): Promise<void>;\n del(k: string): Promise<void>;\n };\n};\n\nfunction getMessageCacheKey(inboxUrl: string, messageId: string) {\n return `${encodeURIComponent(inboxUrl)}:${encodeURIComponent(messageId)}`;\n}\nasync function getMessageIdsCacheKey(\n inboxUrl: string,\n type: \"query\" | \"export\",\n body?: Uint8Array,\n): Promise<string> {\n const cacheIdData = dagCborEncode({\n inboxUrl,\n type,\n body: body ?? null,\n });\n return crypto.subtle\n .digest(\"SHA-256\", new Uint8Array(cacheIdData))\n .then((bytes) =>\n Array.from(new Uint8Array(bytes))\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\"),\n );\n}\n\nasync function resetCacheDB() {\n await new Promise<void>((resolve) => {\n const req = indexedDB.deleteDatabase(\"graffiti-inbox-cache\");\n req.onsuccess = () => resolve();\n req.onerror = () => resolve(); // best effort\n req.onblocked = () => resolve(); // best effort\n });\n}\n\nasync function createCache(): Promise<Cache> {\n if (await canUseIDB()) {\n const { openDB } = await import(\"idb\");\n const db = await openDB(\"graffiti-inbox-cache\", 1, {\n upgrade(db) {\n if (!db.objectStoreNames.contains(\"m\")) db.createObjectStore(\"m\");\n if (!db.objectStoreNames.contains(\"q\")) db.createObjectStore(\"q\");\n },\n });\n\n return {\n messages: {\n get: async (k) => {\n try {\n return db.get(\"m\", k);\n } catch (error) {\n console.error(\"Error getting message from cache:\", error);\n console.error(\"resetting cache...\");\n await resetCacheDB();\n return undefined;\n }\n },\n set: async (k, v) => {\n await db.put(\"m\", v, k);\n },\n del: (k) => db.delete(\"m\", k),\n },\n messageIds: {\n get: async (k) => {\n try {\n return await db.get(\"q\", k);\n } catch (error) {\n console.error(\"Error getting message IDs from cache:\", error);\n console.error(\"resetting cache...\");\n await resetCacheDB();\n return undefined;\n }\n },\n set: async (k, v) => {\n await db.put(\"q\", v, k);\n },\n del: (k) => db.delete(\"q\", k),\n },\n };\n }\n\n const m = new Map<string, LabeledMessageBase>();\n const q = new Map<string, CacheQueryValue>();\n\n return {\n messages: {\n get: async (k) => m.get(k),\n set: async (k, v) => void m.set(k, v),\n del: async (k) => void m.delete(k),\n },\n messageIds: {\n get: async (k) => q.get(k),\n set: async (k, v) => void q.set(k, v),\n del: async (k) => void q.delete(k),\n },\n };\n}\n\nasync function waitFor(waitTil?: number) {\n if (waitTil !== undefined) {\n const waitFor = waitTil - Date.now();\n if (waitFor > 0) {\n await new Promise((resolve) => setTimeout(resolve, waitFor));\n }\n }\n}\n", "// https://github.com/multiformats/multibase/blob/master/multibase.csv\nexport const STRING_ENCODER_METHOD_BASE64URL = \"base64url\";\nconst STRING_ENCODER_PREFIX_BASE64URL = \"u\";\n\nexport class StringEncoder {\n async encode(method: string, bytes: Uint8Array): Promise<string> {\n if (method !== STRING_ENCODER_METHOD_BASE64URL) {\n throw new Error(`Unsupported string encoding method: ${method}`);\n }\n // Convert it to base64\n const base64 = btoa(String.fromCodePoint(...bytes));\n // Make sure it is url safe\n const encoded = base64\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/\\=+$/, \"\");\n // Append method prefix\n return STRING_ENCODER_PREFIX_BASE64URL + encoded;\n }\n\n async decode(base64Url: string): Promise<Uint8Array> {\n if (!base64Url.startsWith(STRING_ENCODER_PREFIX_BASE64URL)) {\n throw new Error(`Unsupported string encoding prefix: ${base64Url[0]}`);\n }\n base64Url = base64Url.slice(1);\n // Undo url-safe base64\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Add padding if necessary\n while (base64.length % 4 !== 0) base64 += \"=\";\n // Decode\n return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));\n }\n}\n", "import { type Pbkdf2Opt } from './pbkdf2.ts';\nimport {\n abytes,\n ahash,\n anumber,\n checkOpts,\n kdfInputToBytes,\n type CHash,\n type KDFInput,\n} from './utils.ts';\n\nfunction _subtle(): typeof crypto.subtle {\n const cr = typeof globalThis === 'object' ? (globalThis as any).crypto : null;\n const sb = cr?.subtle;\n if (typeof sb === 'object' && sb != null) return sb;\n throw new Error('crypto.subtle must be defined');\n}\n\nexport type WebHash = {\n (msg: Uint8Array): Promise<Uint8Array>;\n webCryptoName: string;\n outputLen: number;\n blockLen: number;\n};\n\nfunction createWebHash(name: string, blockLen: number, outputLen: number): WebHash {\n const hashC: any = async (msg: Uint8Array) => {\n abytes(msg);\n const crypto = _subtle();\n return new Uint8Array(await crypto.digest(name, msg as BufferSource));\n };\n hashC.webCryptoName = name; // make sure it won't interfere with function name\n hashC.outputLen = outputLen;\n hashC.blockLen = blockLen;\n hashC.create = () => {\n throw new Error('not implemented');\n };\n return hashC;\n}\n\nfunction ahashWeb(hash: WebHash) {\n ahash(hash as any as CHash);\n if (typeof hash.webCryptoName !== 'string') throw new Error('non-web hash');\n}\n\n/** WebCrypto SHA1 (RFC 3174) legacy hash function. It was cryptographically broken. */\n// export const sha1: WebHash = createHash('SHA-1', 64, 20);\n\n/** WebCrypto SHA2-256 hash function from RFC 4634. */\nexport const sha256: WebHash = /* @__PURE__ */ createWebHash('SHA-256', 64, 32);\n/** WebCrypto SHA2-384 hash function from RFC 4634. */\nexport const sha384: WebHash = /* @__PURE__ */ createWebHash('SHA-384', 128, 48);\n/** WebCrypto SHA2-512 hash function from RFC 4634. */\nexport const sha512: WebHash = /* @__PURE__ */ createWebHash('SHA-512', 128, 64);\n\n/**\n * WebCrypto HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256. Webcrypto version.\n * @param key - key which would be used to authenticate message\n * @param message - message\n * @example\n * ```js\n * import { hmac, sha256 } from '@noble/hashes/webcrypto.js';\n * const mac1 = await hmac(sha256, 'key', 'message');\n * ```\n */\nexport const hmac: {\n (hash: WebHash, key: Uint8Array, message: Uint8Array): Promise<Uint8Array>;\n create(hash: WebHash, key: Uint8Array): any;\n} = /* @__PURE__ */ (() => {\n const hmac_ = async (\n hash: WebHash,\n key: Uint8Array,\n message: Uint8Array\n ): Promise<Uint8Array> => {\n const crypto = _subtle();\n abytes(key, undefined, 'key');\n abytes(message, undefined, 'message');\n ahashWeb(hash);\n // WebCrypto keys can't be zeroized\n // prettier-ignore\n const wkey = await crypto.importKey(\n 'raw',\n key as BufferSource,\n { name: 'HMAC', hash: hash.webCryptoName },\n false,\n ['sign']\n );\n return new Uint8Array(await crypto.sign('HMAC', wkey, message as BufferSource));\n };\n hmac_.create = (_hash: WebHash, _key: Uint8Array) => {\n throw new Error('not implemented');\n };\n return hmac_;\n})();\n\n/**\n * WebCrypto HKDF (RFC 5869): derive keys from an initial input.\n * Combines hkdf_extract + hkdf_expand in one step\n * @param hash - hash function that would be used (e.g. sha256). Webcrypto version.\n * @param ikm - input keying material, the initial key\n * @param salt - optional salt value (a non-secret random value)\n * @param info - optional context and application specific information (can be a zero-length string)\n * @param length - length of output keying material in bytes\n * @example\n * ```js\n * import { hkdf, sha256 } from '@noble/hashes/webcrypto.js';\n * import { randomBytes } from '@noble/hashes/utils.js';\n * const inputKey = randomBytes(32);\n * const salt = randomBytes(32);\n * const info = 'application-key';\n * const hk1w = await hkdf(sha256, inputKey, salt, info, 32);\n * ```\n */\nexport async function hkdf(\n hash: WebHash,\n ikm: Uint8Array,\n salt: Uint8Array | undefined,\n info: Uint8Array | undefined,\n length: number\n): Promise<Uint8Array> {\n const crypto = _subtle();\n ahashWeb(hash);\n abytes(ikm, undefined, 'ikm');\n anumber(length, 'length');\n if (salt !== undefined) abytes(salt, undefined, 'salt');\n if (info !== undefined) abytes(info, undefined, 'info');\n const wkey = await crypto.importKey('raw', ikm as BufferSource, 'HKDF', false, ['deriveBits']);\n const opts = {\n name: 'HKDF',\n hash: hash.webCryptoName,\n salt: salt === undefined ? new Uint8Array(0) : salt,\n info: info === undefined ? new Uint8Array(0) : info,\n };\n return new Uint8Array(await crypto.deriveBits(opts, wkey, 8 * length));\n}\n\n/**\n * WebCrypto PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256. Webcrypto version.\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n * @example\n * ```js\n * const key = await pbkdf2(sha256, 'password', 'salt', { dkLen: 32, c: Math.pow(2, 18) });\n * ```\n */\nexport async function pbkdf2(\n hash: WebHash,\n password: KDFInput,\n salt: KDFInput,\n opts: Pbkdf2Opt\n): Promise<Uint8Array> {\n const crypto = _subtle();\n ahashWeb(hash);\n const _opts = checkOpts({ dkLen: 32 }, opts);\n const { c, dkLen } = _opts;\n anumber(c, 'c');\n anumber(dkLen, 'dkLen');\n const _password = kdfInputToBytes(password, 'password');\n const _salt = kdfInputToBytes(salt, 'salt');\n const key = await crypto.importKey('raw', _password as BufferSource, 'PBKDF2', false, [\n 'deriveBits',\n ]);\n const deriveOpts = { name: 'PBKDF2', salt: _salt, iterations: c, hash: hash.webCryptoName };\n return new Uint8Array(await crypto.deriveBits(deriveOpts, key, 8 * dkLen));\n}\n", "import { sha256 } from \"@noble/hashes/webcrypto.js\";\n\nexport const CONTENT_ADDRESS_METHOD_SHA256 = \"sha2-256\";\n\n// Multihash code and length for SHA2-256\n// https://multiformats.io/multihash/#sha2-256---256-bits-aka-sha256\nexport const MULTIHASH_CODE_SHA256 = 0x12;\nexport const MULTIHASH_LENGTH_SHA256 = 32;\n\nexport class ContentAddresses {\n async register(\n contentAddressMethod: string,\n data: Uint8Array,\n ): Promise<Uint8Array> {\n if (contentAddressMethod !== CONTENT_ADDRESS_METHOD_SHA256) {\n throw new Error(\n `Unsupported content address method: ${contentAddressMethod}`,\n );\n }\n\n const hash = await sha256(data);\n\n const prefixedHash = new Uint8Array(2 + hash.length);\n prefixedHash[0] = MULTIHASH_CODE_SHA256;\n prefixedHash[1] = MULTIHASH_LENGTH_SHA256;\n prefixedHash.set(hash, 2);\n\n return prefixedHash;\n }\n\n async getMethod(contentAddress: Uint8Array): Promise<string> {\n if (\n contentAddress[0] === MULTIHASH_CODE_SHA256 &&\n contentAddress[1] === MULTIHASH_LENGTH_SHA256 &&\n contentAddress.length === 2 + MULTIHASH_LENGTH_SHA256\n ) {\n return CONTENT_ADDRESS_METHOD_SHA256;\n } else {\n throw new Error(`Unrecognized content address format.`);\n }\n }\n}\n", "/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\n/**\n * 5KB JS implementation of ed25519 EdDSA signatures.\n * Compliant with RFC8032, FIPS 186-5 & ZIP215.\n * @module\n * @example\n * ```js\nimport * as ed from '@noble/ed25519';\n(async () => {\n const secretKey = ed.utils.randomSecretKey();\n const message = Uint8Array.from([0xab, 0xbc, 0xcd, 0xde]);\n const pubKey = await ed.getPublicKeyAsync(secretKey); // Sync methods are also present\n const signature = await ed.signAsync(message, secretKey);\n const isValid = await ed.verifyAsync(signature, message, pubKey);\n})();\n```\n */\n/**\n * Curve params. ed25519 is twisted edwards curve. Equation is \u2212x\u00B2 + y\u00B2 = -a + dx\u00B2y\u00B2.\n * * P = `2n**255n - 19n` // field over which calculations are done\n * * N = `2n**252n + 27742317777372353535851937790883648493n` // group order, amount of curve points\n * * h = 8 // cofactor\n * * a = `Fp.create(BigInt(-1))` // equation param\n * * d = -121665/121666 a.k.a. `Fp.neg(121665 * Fp.inv(121666))` // equation param\n * * Gx, Gy are coordinates of Generator / base point\n */\nconst ed25519_CURVE = {\n p: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,\n n: 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,\n h: 8n,\n a: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,\n d: 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,\n Gx: 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,\n Gy: 0x6666666666666666666666666666666666666666666666666666666666666658n,\n};\nconst { p: P, n: N, Gx, Gy, a: _a, d: _d, h } = ed25519_CURVE;\nconst L = 32; // field / group byte length\nconst L2 = 64;\n// Helpers and Precomputes sections are reused between libraries\n// ## Helpers\n// ----------\nconst captureTrace = (...args) => {\n if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(...args);\n }\n};\nconst err = (message = '') => {\n const e = new Error(message);\n captureTrace(e, err);\n throw e;\n};\nconst isBig = (n) => typeof n === 'bigint'; // is big integer\nconst isStr = (s) => typeof s === 'string'; // is string\nconst isBytes = (a) => a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n/** Asserts something is Uint8Array. */\nconst abytes = (value, length, title = '') => {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n err(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n};\n/** create Uint8Array */\nconst u8n = (len) => new Uint8Array(len);\nconst u8fr = (buf) => Uint8Array.from(buf);\nconst padh = (n, pad) => n.toString(16).padStart(pad, '0');\nconst bytesToHex = (b) => Array.from(abytes(b))\n .map((e) => padh(e, 2))\n .join('');\nconst C = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; // ASCII characters\nconst _ch = (ch) => {\n if (ch >= C._0 && ch <= C._9)\n return ch - C._0; // '2' => 50-48\n if (ch >= C.A && ch <= C.F)\n return ch - (C.A - 10); // 'B' => 66-(65-10)\n if (ch >= C.a && ch <= C.f)\n return ch - (C.a - 10); // 'b' => 98-(97-10)\n return;\n};\nconst hexToBytes = (hex) => {\n const e = 'hex invalid';\n if (!isStr(hex))\n return err(e);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n return err(e);\n const array = u8n(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n // treat each char as ASCII\n const n1 = _ch(hex.charCodeAt(hi)); // parse first char, multiply it by 16\n const n2 = _ch(hex.charCodeAt(hi + 1)); // parse second char\n if (n1 === undefined || n2 === undefined)\n return err(e);\n array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9\n }\n return array;\n};\nconst cr = () => globalThis?.crypto; // WebCrypto is available in all modern environments\nconst subtle = () => cr()?.subtle ?? err('crypto.subtle must be defined, consider polyfill');\n// prettier-ignore\nconst concatBytes = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + abytes(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\n/** WebCrypto OS-level CSPRNG (random number generator). Will throw when not available. */\nconst randomBytes = (len = L) => {\n const c = cr();\n return c.getRandomValues(u8n(len));\n};\nconst big = BigInt;\nconst assertRange = (n, min, max, msg = 'bad number: out of range') => (isBig(n) && min <= n && n < max ? n : err(msg));\n/** modular division */\nconst M = (a, b = P) => {\n const r = a % b;\n return r >= 0n ? r : b + r;\n};\nconst modN = (a) => M(a, N);\n/** Modular inversion using euclidean GCD (non-CT). No negative exponent for now. */\n// prettier-ignore\nconst invert = (num, md) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md);\n let a = M(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) {\n const q = b / a, r = b % a;\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? M(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst callHash = (name) => {\n // @ts-ignore\n const fn = hashes[name];\n if (typeof fn !== 'function')\n err('hashes.' + name + ' not set');\n return fn;\n};\nconst hash = (msg) => callHash('sha512')(msg);\nconst apoint = (p) => (p instanceof Point ? p : err('Point expected'));\n// ## End of Helpers\n// -----------------\nconst B256 = 2n ** 256n;\n/** Point in XYZT extended coordinates. */\nclass Point {\n static BASE;\n static ZERO;\n X;\n Y;\n Z;\n T;\n constructor(X, Y, Z, T) {\n const max = B256;\n this.X = assertRange(X, 0n, max);\n this.Y = assertRange(Y, 0n, max);\n this.Z = assertRange(Z, 1n, max);\n this.T = assertRange(T, 0n, max);\n Object.freeze(this);\n }\n static CURVE() {\n return ed25519_CURVE;\n }\n static fromAffine(p) {\n return new Point(p.x, p.y, 1n, M(p.x * p.y));\n }\n /** RFC8032 5.1.3: Uint8Array to Point. */\n static fromBytes(hex, zip215 = false) {\n const d = _d;\n // Copy array to not mess it up.\n const normed = u8fr(abytes(hex, L));\n // adjust first LE byte = last BE byte\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80;\n const y = bytesToNumLE(normed);\n // zip215=true: 0 <= y < 2^256\n // zip215=false, RFC8032: 0 <= y < 2^255-19\n const max = zip215 ? B256 : P;\n assertRange(y, 0n, max);\n const y2 = M(y * y); // y\u00B2\n const u = M(y2 - 1n); // u=y\u00B2-1\n const v = M(d * y2 + 1n); // v=dy\u00B2+1\n let { isValid, value: x } = uvRatio(u, v); // (uv\u00B3)(uv\u2077)^(p-5)/8; square root\n if (!isValid)\n err('bad point: y not sqrt'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad point: x==0, isLastByteOdd'); // x=0, x_0=1\n if (isLastByteOdd !== isXOdd)\n x = M(-x);\n return new Point(x, y, 1n, M(x * y)); // Z=1, T=xy\n }\n static fromHex(hex, zip215) {\n return Point.fromBytes(hexToBytes(hex), zip215);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /** Checks if the point is valid and on-curve. */\n assertValidity() {\n const a = _a;\n const d = _d;\n const p = this;\n if (p.is0())\n return err('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax\u00B2 + y\u00B2 = 1 + dx\u00B2y\u00B2\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX\u00B2 + Y\u00B2)Z\u00B2 = Z\u2074 + dX\u00B2Y\u00B2\n const { X, Y, Z, T } = p;\n const X2 = M(X * X); // X\u00B2\n const Y2 = M(Y * Y); // Y\u00B2\n const Z2 = M(Z * Z); // Z\u00B2\n const Z4 = M(Z2 * Z2); // Z\u2074\n const aX2 = M(X2 * a); // aX\u00B2\n const left = M(Z2 * M(aX2 + Y2)); // (aX\u00B2 + Y\u00B2)Z\u00B2\n const right = M(Z4 + M(d * M(X2 * Y2))); // Z\u2074 + dX\u00B2Y\u00B2\n if (left !== right)\n return err('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = M(X * Y);\n const ZT = M(Z * T);\n if (XY !== ZT)\n return err('bad point: equation left != right (2)');\n return this;\n }\n /** Equality check: compare points P&Q. */\n equals(other) {\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = apoint(other); // checks class equality\n const X1Z2 = M(X1 * Z2);\n const X2Z1 = M(X2 * Z1);\n const Y1Z2 = M(Y1 * Z2);\n const Y2Z1 = M(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(I);\n }\n /** Flip point over y coordinate. */\n negate() {\n return new Point(M(-this.X), this.Y, this.Z, M(-this.T));\n }\n /** Point doubling. Complete formula. Cost: `4M + 4S + 1*a + 6add + 1*2`. */\n double() {\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const a = _a;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = M(X1 * X1);\n const B = M(Y1 * Y1);\n const C = M(2n * M(Z1 * Z1));\n const D = M(a * A);\n const x1y1 = X1 + Y1;\n const E = M(M(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /** Point addition. Complete formula. Cost: `8M + 1*k + 8add + 1*2`. */\n add(other) {\n const { X: X1, Y: Y1, Z: Z1, T: T1 } = this;\n const { X: X2, Y: Y2, Z: Z2, T: T2 } = apoint(other); // doesn't check if other on-curve\n const a = _a;\n const d = _d;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = M(X1 * X2);\n const B = M(Y1 * Y2);\n const C = M(T1 * d * T2);\n const D = M(Z1 * Z2);\n const E = M((X1 + Y1) * (X2 + Y2) - A - B);\n const F = M(D - C);\n const G = M(D + C);\n const H = M(B - a * A);\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(apoint(other).negate());\n }\n /**\n * Point-by-scalar multiplication. Scalar must be in range 1 <= n < CURVE.n.\n * Uses {@link wNAF} for base point.\n * Uses fake point to mitigate side-channel leakage.\n * @param n scalar by which point is multiplied\n * @param safe safe mode guards against timing attacks; unsafe mode is faster\n */\n multiply(n, safe = true) {\n if (!safe && (n === 0n || this.is0()))\n return I;\n assertRange(n, 1n, N);\n if (n === 1n)\n return this;\n if (this.equals(G))\n return wNAF(n).p;\n // init result point & fake point\n let p = I;\n let f = G;\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) {\n // if bit is present, add to point\n // if not present, add to fake, for timing safety\n if (n & 1n)\n p = p.add(d);\n else if (safe)\n f = f.add(d);\n }\n return p;\n }\n multiplyUnsafe(scalar) {\n return this.multiply(scalar, false);\n }\n /** Convert point to 2d xy affine point. (X, Y, Z) \u220B (x=X/Z, y=Y/Z) */\n toAffine() {\n const { X, Y, Z } = this;\n // fast-paths for ZERO point OR Z=1\n if (this.equals(I))\n return { x: 0n, y: 1n };\n const iz = invert(Z, P);\n // (Z * Z^-1) must be 1, otherwise bad math\n if (M(Z * iz) !== 1n)\n err('invalid inverse');\n // x = X*Z^-1; y = Y*Z^-1\n const x = M(X * iz);\n const y = M(Y * iz);\n return { x, y };\n }\n toBytes() {\n const { x, y } = this.assertValidity().toAffine();\n const b = numTo32bLE(y);\n // store sign in first LE byte\n b[31] |= x & 1n ? 0x80 : 0;\n return b;\n }\n toHex() {\n return bytesToHex(this.toBytes());\n }\n clearCofactor() {\n return this.multiply(big(h), false);\n }\n isSmallOrder() {\n return this.clearCofactor().is0();\n }\n isTorsionFree() {\n // Multiply by big number N. We can't `mul(N)` because of checks. Instead, we `mul(N/2)*2+1`\n let p = this.multiply(N / 2n, false).double();\n if (N % 2n)\n p = p.add(this);\n return p.is0();\n }\n}\n/** Generator / base point */\nconst G = new Point(Gx, Gy, 1n, M(Gx * Gy));\n/** Identity / zero point */\nconst I = new Point(0n, 1n, 1n, 0n);\n// Static aliases\nPoint.BASE = G;\nPoint.ZERO = I;\nconst numTo32bLE = (num) => hexToBytes(padh(assertRange(num, 0n, B256), L2)).reverse();\nconst bytesToNumLE = (b) => big('0x' + bytesToHex(u8fr(abytes(b)).reverse()));\nconst pow2 = (x, power) => {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\n// prettier-ignore\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n; // \u221A-1\n// for sqrt comp\n// prettier-ignore\nconst uvRatio = (u, v) => {\n const v3 = M(v * v * v); // v\u00B3\n const v7 = M(v3 * v3 * v); // v\u2077\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv\u2077)^(p-5)/8\n let x = M(u * v3 * pow); // (uv\u00B3)(uv\u2077)^(p-5)/8\n const vx2 = M(v * x * x); // vx\u00B2\n const root1 = x; // First root candidate\n const root2 = M(x * RM1); // Second root candidate; RM1 is \u221A-1\n const useRoot1 = vx2 === u; // If vx\u00B2 = u (mod p), x is a square root\n const useRoot2 = vx2 === M(-u); // If vx\u00B2 = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === M(-u * RM1); // There is no valid root, vx\u00B2 = -u\u221A-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((M(x) & 1n) === 1n)\n x = M(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\n// N == L, just weird naming\nconst modL_LE = (hash) => modN(bytesToNumLE(hash)); // modulo L; but little-endian\n/** hashes.sha512 should conform to the interface. */\n// TODO: rename\nconst sha512a = (...m) => hashes.sha512Async(concatBytes(...m)); // Async SHA512\nconst sha512s = (...m) => callHash('sha512')(concatBytes(...m));\n// RFC8032 5.1.5\nconst hash2extK = (hashed) => {\n // slice creates a copy, unlike subarray\n const head = hashed.slice(0, L);\n head[0] &= 248; // Clamp bits: 0b1111_1000\n head[31] &= 127; // 0b0111_1111\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(L, L2); // secret key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.multiply(scalar); // public key point\n const pointBytes = point.toBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (secretKey) => sha512a(abytes(secretKey, L)).then(hash2extK);\nconst getExtendedPublicKey = (secretKey) => hash2extK(sha512s(abytes(secretKey, L)));\n/** Creates 32-byte ed25519 public key from 32-byte secret key. Async. */\nconst getPublicKeyAsync = (secretKey) => getExtendedPublicKeyAsync(secretKey).then((p) => p.pointBytes);\n/** Creates 32-byte ed25519 public key from 32-byte secret key. To use, set `hashes.sha512` first. */\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nconst hashFinishA = (res) => sha512a(res.hashable).then(res.finish);\nconst hashFinishS = (res) => res.finish(sha512s(res.hashable));\n// Code, shared between sync & async sign\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.multiply(r).toBytes(); // R = [r]B\n const hashable = concatBytes(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n const S = modN(r + modL_LE(hashed) * s); // S = (r + k * s) mod L; 0 <= s < l\n return abytes(concatBytes(R, numTo32bLE(S)), L2); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\n/**\n * Signs message using secret key. Async.\n * Follows RFC8032 5.1.6.\n */\nconst signAsync = async (message, secretKey) => {\n const m = abytes(message);\n const e = await getExtendedPublicKeyAsync(secretKey);\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishA(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\n/**\n * Signs message using secret key. To use, set `hashes.sha512` first.\n * Follows RFC8032 5.1.6.\n */\nconst sign = (message, secretKey) => {\n const m = abytes(message);\n const e = getExtendedPublicKey(secretKey);\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishS(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst defaultVerifyOpts = { zip215: true };\nconst _verify = (sig, msg, pub, opts = defaultVerifyOpts) => {\n sig = abytes(sig, L2); // Signature hex str/Bytes, must be 64 bytes\n msg = abytes(msg); // Message hex str/Bytes\n pub = abytes(pub, L);\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A;\n let R;\n let s;\n let SB;\n let hashable = Uint8Array.of();\n try {\n A = Point.fromBytes(pub, zip215); // public key A decoded\n R = Point.fromBytes(sig.slice(0, L), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = bytesToNumLE(sig.slice(L, L2)); // Decode second half as an integer S\n SB = G.multiply(s, false); // in the range 0 <= s < L\n hashable = concatBytes(R.toBytes(), A.toBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.multiply(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n/** Verifies signature on message and public key. Async. Follows RFC8032 5.1.7. */\nconst verifyAsync = async (signature, message, publicKey, opts = defaultVerifyOpts) => hashFinishA(_verify(signature, message, publicKey, opts));\n/** Verifies signature on message and public key. To use, set `hashes.sha512` first. Follows RFC8032 5.1.7. */\nconst verify = (signature, message, publicKey, opts = defaultVerifyOpts) => hashFinishS(_verify(signature, message, publicKey, opts));\n/** Math, hex, byte helpers. Not in `utils` because utils share API with noble-curves. */\nconst etc = {\n bytesToHex: bytesToHex,\n hexToBytes: hexToBytes,\n concatBytes: concatBytes,\n mod: M,\n invert: invert,\n randomBytes: randomBytes,\n};\nconst hashes = {\n sha512Async: async (message) => {\n const s = subtle();\n const m = concatBytes(message);\n return u8n(await s.digest('SHA-512', m.buffer));\n },\n sha512: undefined,\n};\n// FIPS 186 B.4.1 compliant key generation produces private keys\n// with modulo bias being neglible. takes >N+16 bytes, returns (hash mod n-1)+1\nconst randomSecretKey = (seed = randomBytes(L)) => seed;\nconst keygen = (seed) => {\n const secretKey = randomSecretKey(seed);\n const publicKey = getPublicKey(secretKey);\n return { secretKey, publicKey };\n};\nconst keygenAsync = async (seed) => {\n const secretKey = randomSecretKey(seed);\n const publicKey = await getPublicKeyAsync(secretKey);\n return { secretKey, publicKey };\n};\n/** ed25519-specific key utilities. */\nconst utils = {\n getExtendedPublicKeyAsync: getExtendedPublicKeyAsync,\n getExtendedPublicKey: getExtendedPublicKey,\n randomSecretKey: randomSecretKey,\n};\n// ## Precomputes\n// --------------\nconst W = 8; // W is window size\nconst scalarBits = 256;\nconst pwindows = Math.ceil(scalarBits / W) + 1; // 33 for W=8, NOT 32 - see wNAF loop\nconst pwindowSize = 2 ** (W - 1); // 128 for W=8\nconst precompute = () => {\n const points = [];\n let p = G;\n let b = p;\n for (let w = 0; w < pwindows; w++) {\n b = p;\n points.push(b);\n for (let i = 1; i < pwindowSize; i++) {\n b = b.add(p);\n points.push(b);\n } // i=1, bc we skip 0\n p = b.double();\n }\n return points;\n};\nlet Gpows = undefined; // precomputes for base point G\n// const-time negate\nconst ctneg = (cnd, p) => {\n const n = p.negate();\n return cnd ? n : p;\n};\n/**\n * Precomputes give 12x faster getPublicKey(), 10x sign(), 2x verify() by\n * caching multiples of G (base point). Cache is stored in 32MB of RAM.\n * Any time `G.multiply` is done, precomputes are used.\n * Not used for getSharedSecret, which instead multiplies random pubkey `P.multiply`.\n *\n * w-ary non-adjacent form (wNAF) precomputation method is 10% slower than windowed method,\n * but takes 2x less RAM. RAM reduction is possible by utilizing `.subtract`.\n *\n * !! Precomputes can be disabled by commenting-out call of the wNAF() inside Point#multiply().\n */\nconst wNAF = (n) => {\n const comp = Gpows || (Gpows = precompute());\n let p = I;\n let f = G; // f must be G, or could become I in the end\n const pow_2_w = 2 ** W; // 256 for W=8\n const maxNum = pow_2_w; // 256 for W=8\n const mask = big(pow_2_w - 1); // 255 for W=8 == mask 0b11111111\n const shiftBy = big(W); // 8 for W=8\n for (let w = 0; w < pwindows; w++) {\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n // We use negative indexes to reduce size of precomputed table by 2x.\n // Instead of needing precomputes 0..256, we only calculate them for 0..128.\n // If an index > 128 is found, we do (256-index) - where 256 is next window.\n // Naive: index +127 => 127, +224 => 224\n // Optimized: index +127 => 127, +224 => 256-32\n if (wbits > pwindowSize) {\n wbits -= maxNum;\n n += 1n;\n }\n const off = w * pwindowSize;\n const offF = off; // offsets, evaluate both\n const offP = off + Math.abs(wbits) - 1;\n const isEven = w % 2 !== 0; // conditions, evaluate both\n const isNeg = wbits < 0;\n if (wbits === 0) {\n // off == I: can't add it. Adding random offF instead.\n f = f.add(ctneg(isEven, comp[offF])); // bits are 0: add garbage to fake point\n }\n else {\n p = p.add(ctneg(isNeg, comp[offP])); // bits are 1: add to result point\n }\n }\n if (n !== 0n)\n err('invalid wnaf');\n return { p, f }; // return both real and fake points for JIT\n};\n// !! Remove the export to easily use in REPL / browser console\nexport { etc, getPublicKey, getPublicKeyAsync, hash, hashes, keygen, keygenAsync, Point, sign, signAsync, utils, verify, verifyAsync, };\n", "import {\n getPublicKeyAsync,\n signAsync,\n verifyAsync,\n hashes,\n} from \"@noble/ed25519\";\nimport { sha256, sha512 } from \"@noble/hashes/webcrypto.js\";\nhashes.sha512Async = sha512;\n\nexport const CHANNEL_ATTESTATION_METHOD_SHA256_ED25519 = \"pk:sha2-256+ed25519\";\nconst CHANNEL_ATTESTATION_METHOD_PREFIX_SHA256_ED25519 = 0;\n\nexport class ChannelAttestations {\n async register(\n channelAttestationMethod: string,\n channel: string,\n ): Promise<Uint8Array> {\n if (\n channelAttestationMethod !== CHANNEL_ATTESTATION_METHOD_SHA256_ED25519\n ) {\n throw new Error(\n `Unsupported channel attestation method: ${channelAttestationMethod}`,\n );\n }\n const privateKey = await this.channelToPrivateKey(channel);\n return await this.channelPublicIdFromPrivateKey(privateKey);\n }\n\n async getMethod(channelPublicId: Uint8Array): Promise<string> {\n if (\n channelPublicId[0] === CHANNEL_ATTESTATION_METHOD_PREFIX_SHA256_ED25519\n ) {\n return CHANNEL_ATTESTATION_METHOD_SHA256_ED25519;\n } else {\n throw new Error(`Unrecognized channel attestation method.`);\n }\n }\n\n protected async channelToPrivateKey(channel: string): Promise<Uint8Array> {\n const channelBytes = new TextEncoder().encode(channel);\n return await sha256(channelBytes);\n }\n protected async channelPublicIdFromPrivateKey(\n privateKey: Uint8Array,\n ): Promise<Uint8Array> {\n const channelPublicIdRaw = await getPublicKeyAsync(privateKey);\n const channelPublicId = new Uint8Array(channelPublicIdRaw.length + 1);\n channelPublicId[0] = CHANNEL_ATTESTATION_METHOD_PREFIX_SHA256_ED25519;\n channelPublicId.set(channelPublicIdRaw, 1);\n return channelPublicId;\n }\n\n async attest(\n channelAttestationMethod: string,\n actor: string,\n channel: string,\n ): Promise<{\n attestation: Uint8Array;\n channelPublicId: Uint8Array;\n }> {\n if (\n channelAttestationMethod !== CHANNEL_ATTESTATION_METHOD_SHA256_ED25519\n ) {\n throw new Error(\n `Unsupported channel attestation method: ${channelAttestationMethod}`,\n );\n }\n const privateKey = await this.channelToPrivateKey(channel);\n const channelPublicId =\n await this.channelPublicIdFromPrivateKey(privateKey);\n\n const actorBytes = new TextEncoder().encode(actor);\n const attestation = await signAsync(actorBytes, privateKey);\n return { attestation, channelPublicId };\n }\n\n async validate(\n attestation: Uint8Array,\n actor: string,\n channelPublicId: Uint8Array,\n ): Promise<boolean> {\n const prefix = channelPublicId[0];\n if (prefix !== CHANNEL_ATTESTATION_METHOD_PREFIX_SHA256_ED25519) {\n throw new Error(\n `Unrecognized channel attestation method prefix: ${prefix}`,\n );\n }\n\n return await verifyAsync(\n attestation,\n new TextEncoder().encode(actor),\n channelPublicId.slice(1),\n );\n }\n}\n", "import { sha256, hmac } from \"@noble/hashes/webcrypto.js\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport {\n MULTIHASH_CODE_SHA256,\n MULTIHASH_LENGTH_SHA256,\n} from \"./2-content-addresses\";\n\nexport const ALLOWED_ATTESTATION_METHOD_HMAC_SHA256 = \"hmac:sha2-256\";\nconst ALLOWED_ATTESTATION_METHOD_PREFIX_HMAC = 0;\n\nexport class AllowedAttestations {\n async attest(\n allowedAttestationMethod: string,\n actor: string,\n ): Promise<{\n attestation: Uint8Array;\n ticket: Uint8Array;\n }> {\n if (allowedAttestationMethod !== ALLOWED_ATTESTATION_METHOD_HMAC_SHA256) {\n throw new Error(\n `Unsupported allowed attestation method: ${allowedAttestationMethod}`,\n );\n }\n\n const ticket = randomBytes();\n const attestation = await hmac(\n sha256,\n ticket,\n new TextEncoder().encode(actor),\n );\n\n const prefixedTicket = new Uint8Array(ticket.length + 3);\n prefixedTicket[0] = ALLOWED_ATTESTATION_METHOD_PREFIX_HMAC;\n prefixedTicket[1] = MULTIHASH_CODE_SHA256;\n prefixedTicket[2] = MULTIHASH_LENGTH_SHA256;\n prefixedTicket.set(ticket, 3);\n\n return { attestation, ticket: prefixedTicket };\n }\n\n async validate(\n attestation: Uint8Array,\n actor: string,\n ticket: Uint8Array,\n ): Promise<boolean> {\n const typePrefix = ticket[0];\n const hashPrefix = ticket[1];\n const lengthPrefix = ticket[2];\n if (\n typePrefix !== ALLOWED_ATTESTATION_METHOD_PREFIX_HMAC ||\n hashPrefix !== MULTIHASH_CODE_SHA256 ||\n lengthPrefix !== MULTIHASH_LENGTH_SHA256\n ) {\n throw new Error(`Unrecognized allowed ticket format`);\n }\n\n const expected = await hmac(\n sha256,\n ticket.slice(3),\n new TextEncoder().encode(actor),\n );\n\n // Make sure the bytes are exactly equal\n if (attestation.length !== expected.length) {\n return false;\n }\n return expected.every((b, i) => attestation[i] === b);\n }\n}\n", "import type { Graffiti } from \"@graffiti-garden/api\";\nimport { GraffitiErrorNotFound } from \"@graffiti-garden/api\";\nimport { DecentralizedIdentifiers } from \"../1-services/2-dids\";\n\n// Handles used a fixed method\nconst HANDLE_DID_PREFIX = \"did:web:\";\n\nexport class Handles {\n constructor(\n protected readonly services: { dids: DecentralizedIdentifiers },\n ) {}\n\n actorToHandle: Graffiti[\"actorToHandle\"] = async (actor) => {\n const actorDocument = await this.services.dids.resolve(actor);\n\n const handleDid = actorDocument.alsoKnownAs?.at(0);\n if (!handleDid) {\n throw new GraffitiErrorNotFound(\n `Handle for actor DID ${actor} not found`,\n );\n }\n if (!handleDid.startsWith(HANDLE_DID_PREFIX)) {\n throw new Error(`Handle DID ${handleDid} is not a valid handle`);\n }\n\n const handle = handleDid.slice(HANDLE_DID_PREFIX.length);\n\n const handleDocument = await this.services.dids.resolve(handleDid);\n if (\n !handleDocument.alsoKnownAs ||\n !handleDocument.alsoKnownAs.includes(actor)\n ) {\n throw new Error(`Handle ${handle} does not match actor ${actor}`);\n }\n\n return handle;\n };\n\n handleToActor: Graffiti[\"handleToActor\"] = async (handle) => {\n const handleDid = `${HANDLE_DID_PREFIX}${handle}`;\n const handleDocument = await this.services.dids.resolve(handleDid);\n\n const actor = handleDocument.alsoKnownAs?.at(0);\n if (!actor) {\n throw new GraffitiErrorNotFound(\n `Actor for handle DID ${handleDid} not found`,\n );\n }\n\n const actorDocument = await this.services.dids.resolve(actor);\n if (\n !actorDocument.alsoKnownAs ||\n !actorDocument.alsoKnownAs.includes(handleDid)\n ) {\n throw new Error(`Actor ${actor} does not match handle ${handle}`);\n }\n\n return actor;\n };\n}\n", "import type {\n Graffiti,\n GraffitiLoginEvent,\n GraffitiLogoutEvent,\n GraffitiSession,\n GraffitiSessionInitializedEvent,\n} from \"@graffiti-garden/api\";\nimport { DecentralizedIdentifiers } from \"../1-services/2-dids\";\nimport {\n InitializedEventDetailSchema,\n LoginEventDetailSchema,\n LogoutEventDetailSchema,\n type Authorization,\n} from \"../1-services/1-authorization\";\nimport { StorageBuckets } from \"../1-services/3-storage-buckets\";\nimport type { Inboxes } from \"../1-services/4-inboxes\";\nimport type { Service } from \"did-resolver\";\nimport {\n type infer as infer_,\n extend,\n array,\n string,\n object,\n url,\n tuple,\n enum as enum_,\n} from \"zod/mini\";\n\nexport const DID_SERVICE_TYPE_GRAFFITI_INBOX = \"GraffitiInbox\";\nexport const DID_SERVICE_TYPE_GRAFFITI_STORAGE_BUCKET = \"GraffitiStorageBucket\";\nexport const DID_SERVICE_ID_GRAFFITI_PERSONAL_INBOX = \"#graffitiPersonalInbox\";\nexport const DID_SERVICE_ID_GRAFFITI_STORAGE_BUCKET = \"#graffitiStorageBucket\";\nexport const DID_SERVICE_ID_GRAFFITI_SHARED_INBOX_PREFIX =\n \"#graffitiSharedInbox_\";\n\nexport class Sessions {\n sessionEvents: Graffiti[\"sessionEvents\"] = new EventTarget();\n\n constructor(\n protected readonly services: {\n readonly dids: DecentralizedIdentifiers;\n readonly authorization: Authorization;\n readonly storageBuckets: StorageBuckets;\n readonly inboxes: Inboxes;\n },\n ) {\n const initializedPromise = new Promise<void>((resolve) => {\n this.services.authorization.eventTarget.addEventListener(\n \"initialized\",\n (e) => {\n if (!(e instanceof CustomEvent)) return;\n const parsed = InitializedEventDetailSchema.safeParse(e.detail);\n if (!parsed.success) return;\n const error = parsed.data?.error;\n if (error) console.log(error);\n resolve();\n },\n );\n });\n this.services.authorization.eventTarget.addEventListener(\n \"login\",\n this.onLogin.bind(this),\n );\n this.services.authorization.eventTarget.addEventListener(\n \"logout\",\n this.onLogout.bind(this),\n );\n\n // Handle account registration redirect immediately,\n // to prevent SPA routers from hijacking the URL too soon\n let loginPromise: Promise<void> | undefined;\n if (typeof window !== \"undefined\") {\n const actorEncoded = new URLSearchParams(window.location.search).get(\n \"actor\",\n );\n if (actorEncoded) {\n try {\n // Get the actor\n const actor = decodeURIComponent(actorEncoded);\n // Strip it from the URL\n const url = new URL(window.location.toString());\n url.searchParams.delete(\"actor\");\n window.history.replaceState({}, \"\", url.toString());\n // Complete the login\n loginPromise = this.login(actor);\n } catch (error) {\n console.error(\"Error decoding actor:\", error);\n }\n }\n }\n\n (async () => {\n // Allow listeners to be added before dispatching events\n await new Promise((resolve) => setTimeout(resolve, 0));\n\n // Wait for login to complete, if there\n await loginPromise;\n\n for (const session of this.loggedInSessions) {\n const loginEvent: GraffitiLoginEvent = new CustomEvent(\"login\", {\n detail: { session: { actor: session.actor } },\n });\n this.sessionEvents.dispatchEvent(loginEvent);\n }\n\n await initializedPromise;\n\n // Send own initialized event\n const initializedEvent: GraffitiSessionInitializedEvent = new CustomEvent(\n \"initialized\",\n );\n this.sessionEvents.dispatchEvent(initializedEvent);\n })();\n }\n\n protected inProgressLogin: infer_<typeof InProgressSchema> | undefined =\n undefined;\n protected inProgressLogout: infer_<typeof InProgressSchema> | undefined =\n undefined;\n\n async login(actor: string) {\n try {\n await this.login_(actor);\n } catch (e) {\n const loginEvent: GraffitiLoginEvent = new CustomEvent(\"login\", {\n detail: {\n error: e instanceof Error ? e : new Error(String(e)),\n session: { actor },\n },\n });\n this.sessionEvents.dispatchEvent(loginEvent);\n }\n }\n protected async login_(actor: string) {\n // First look to see if we're already logged in\n const existingSession = this.loggedInSessions.find(\n (session) => session.actor === actor,\n );\n if (existingSession) {\n this.sessionEvents.dispatchEvent(\n new CustomEvent(\"login\", { detail: { session: { actor } } }),\n );\n return;\n }\n\n const actorDocument = await this.services.dids.resolve(actor);\n\n const services = actorDocument.service;\n if (!services) {\n throw new Error(`No services found in actor document for ${actor}`);\n }\n\n const storageBucketService = services.find(\n (service) =>\n service.id === DID_SERVICE_ID_GRAFFITI_STORAGE_BUCKET &&\n service.type === DID_SERVICE_TYPE_GRAFFITI_STORAGE_BUCKET,\n );\n const personalInboxService = services.find(\n (service) =>\n service.id === DID_SERVICE_ID_GRAFFITI_PERSONAL_INBOX &&\n service.type === DID_SERVICE_TYPE_GRAFFITI_INBOX,\n );\n const sharedInboxServices = services.filter(\n (service) =>\n service.id.match(\n new RegExp(`^${DID_SERVICE_ID_GRAFFITI_SHARED_INBOX_PREFIX}\\\\d+$`),\n ) && service.type === DID_SERVICE_TYPE_GRAFFITI_INBOX,\n );\n\n if (\n !personalInboxService ||\n !storageBucketService ||\n sharedInboxServices.length === 0\n ) {\n throw new Error(\n `Required services not found in actor document for ${actor}`,\n );\n }\n\n // Massage the services into a list of endpoints with types\n const storageBucketEndpoint: string =\n serviceToEndpoint(storageBucketService);\n const personalInboxEndpoint: string =\n serviceToEndpoint(personalInboxService);\n const sharedInboxEndpoints: string[] =\n sharedInboxServices.map(serviceToEndpoint);\n const servicesWithTypes = [\n { endpoint: storageBucketEndpoint, type: \"bucket\" } as const,\n { endpoint: personalInboxEndpoint, type: \"personal-inbox\" } as const,\n ...sharedInboxEndpoints.map(\n (endpoint) =>\n ({\n endpoint,\n type: \"shared-inbox\",\n }) as const,\n ),\n ];\n\n // Fetch the authorization endpoints for each service\n const servicesWithAuthorizationEndpoints = await Promise.all(\n servicesWithTypes.map(async ({ endpoint, type }) => {\n const authorizationEndpoint = await (type === \"bucket\"\n ? this.services.storageBuckets.getAuthorizationEndpoint(endpoint)\n : this.services.inboxes.getAuthorizationEndpoint(endpoint));\n return { endpoint, authorizationEndpoint, type };\n }),\n );\n\n // Group the endpoints according to their authorization endpoints\n const servicesByAuthorizationMap: Map<\n string,\n {\n endpoint: string;\n type: \"bucket\" | \"personal-inbox\" | \"shared-inbox\";\n }[]\n > = new Map();\n servicesWithAuthorizationEndpoints.forEach(\n ({ authorizationEndpoint, endpoint, type }) => {\n if (!servicesByAuthorizationMap.has(authorizationEndpoint)) {\n servicesByAuthorizationMap.set(authorizationEndpoint, []);\n }\n servicesByAuthorizationMap\n .get(authorizationEndpoint)!\n .push({ endpoint, type });\n },\n );\n const servicesByAuthorization = [...servicesByAuthorizationMap.entries()];\n\n const session: GraffitiSession = { actor };\n\n const inProgressLogin: infer_<typeof InProgressSchema> = {\n ...session,\n tokens: [],\n servicesByAuthorization,\n };\n\n if (typeof window !== \"undefined\") {\n // Store the in-progress session in localStorage\n window.localStorage.setItem(\n LOCAL_STORAGE_IN_PROGRESS_LOGIN_KEY,\n JSON.stringify(inProgressLogin),\n );\n } else {\n this.inProgressLogin = inProgressLogin;\n }\n\n // Start the login process with the first endpoint\n const [firstAuthorizationEndpoint, firstServices] =\n servicesByAuthorization[0];\n await this.services.authorization.login(\n firstAuthorizationEndpoint,\n actor,\n firstServices.map((s) => s.endpoint),\n );\n }\n\n protected async onLogin(event: unknown) {\n if (!(event instanceof CustomEvent)) return;\n const parsed = LoginEventDetailSchema.safeParse(event.detail);\n if (!parsed.success) return;\n\n const actor = parsed.data.loginId;\n\n try {\n await this.onLogin_(parsed.data);\n } catch (e) {\n const LoginEvent: GraffitiLoginEvent = new CustomEvent(\"login\", {\n detail: {\n error: e instanceof Error ? e : new Error(String(e)),\n session: { actor },\n },\n });\n this.sessionEvents.dispatchEvent(LoginEvent);\n }\n }\n protected async onLogin_(loginDetail: infer_<typeof LoginEventDetailSchema>) {\n if (loginDetail.error) throw loginDetail.error;\n\n const token = loginDetail.token;\n const actor = loginDetail.loginId;\n\n // Lookup the in-progress session\n let inProgressLogin: infer_<typeof InProgressSchema>;\n if (typeof window !== \"undefined\") {\n const inProgressLoginString = window.localStorage.getItem(\n LOCAL_STORAGE_IN_PROGRESS_LOGIN_KEY,\n );\n if (!inProgressLoginString) {\n throw new Error(\"No in-progress login found\");\n }\n\n const json = JSON.parse(inProgressLoginString);\n inProgressLogin = InProgressSchema.parse(json);\n } else {\n if (!this.inProgressLogin) {\n throw new Error(\"No in-progress login found\");\n }\n inProgressLogin = this.inProgressLogin;\n }\n\n if (inProgressLogin.actor !== actor) {\n throw new Error(\"Actor mismatch in login response - concurrent logins?\");\n }\n\n inProgressLogin.tokens.push(token);\n\n if (\n inProgressLogin.tokens.length ===\n inProgressLogin.servicesByAuthorization.length\n ) {\n // Login complete!\n if (typeof window === \"undefined\") {\n this.inProgressLogin = undefined;\n } else {\n window.localStorage.removeItem(LOCAL_STORAGE_IN_PROGRESS_LOGIN_KEY);\n }\n\n // Build the completed session\n const services = inProgressLogin.servicesByAuthorization.flatMap(\n ([authorizationEndpoint, services], index) =>\n services.map((service) => ({\n token: inProgressLogin.tokens[index],\n serviceEndpoint: service.endpoint,\n authorizationEndpoint,\n type: service.type,\n })),\n );\n\n const session: StoredSession = {\n ...inProgressLogin,\n storageBucket: services.find((s) => s.type === \"bucket\")!,\n personalInbox: services.find((s) => s.type === \"personal-inbox\")!,\n sharedInboxes: services.filter((s) => s.type === \"shared-inbox\")!,\n };\n\n // Store the completed session\n const sessions = this.loggedInSessions;\n sessions.push(session);\n this.loggedInSessions = sessions;\n\n // Return the completed session\n const loginEvent: GraffitiLoginEvent = new CustomEvent(\"login\", {\n detail: { session: { actor } },\n });\n this.sessionEvents.dispatchEvent(loginEvent);\n } else {\n // Store the in progress and continue\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(\n LOCAL_STORAGE_IN_PROGRESS_LOGIN_KEY,\n JSON.stringify(inProgressLogin),\n );\n } else {\n this.inProgressLogin = inProgressLogin;\n }\n\n // Continue to the next authorization endpoint\n const [authorizationEndpoint, services] =\n inProgressLogin.servicesByAuthorization[inProgressLogin.tokens.length];\n await this.services.authorization.login(\n authorizationEndpoint,\n actor,\n services.map((s) => s.endpoint),\n );\n }\n }\n\n async logout(actor: string) {\n try {\n await this.logout_(actor);\n } catch (e) {\n const logoutEvent: GraffitiLogoutEvent = new CustomEvent(\"logout\", {\n detail: {\n error: e instanceof Error ? e : new Error(String(e)),\n actor,\n },\n });\n this.sessionEvents.dispatchEvent(logoutEvent);\n }\n }\n protected async logout_(actor: string) {\n const session = this.loggedInSessions.find(\n (session) => session.actor === actor,\n );\n if (!session) {\n throw new Error(`No session found for actor ${actor}`);\n }\n\n // Remove the session(s)\n this.loggedInSessions = this.loggedInSessions.filter(\n (session) => session.actor !== actor,\n );\n\n // Begin the logout\n const token = session.tokens.pop();\n if (!token) {\n throw new Error(\"No tokens found in session\");\n }\n // Store the in progress logout\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(\n LOCAL_STORAGE_IN_PROGRESS_LOGOUT_KEY,\n JSON.stringify(session),\n );\n } else {\n this.inProgressLogout = session;\n }\n const [authorizationEndpoint, _] =\n session.servicesByAuthorization[session.tokens.length];\n await this.services.authorization.logout(\n authorizationEndpoint,\n actor,\n token,\n );\n }\n\n protected async onLogout(event: unknown) {\n if (!(event instanceof CustomEvent)) return;\n const parsed = LogoutEventDetailSchema.safeParse(event.detail);\n if (!parsed.success) return;\n\n const actor = parsed.data.logoutId;\n\n try {\n await this.onLogout_(parsed.data);\n } catch (e) {\n const logoutEvent: GraffitiLogoutEvent = new CustomEvent(\"logout\", {\n detail: {\n error: e instanceof Error ? e : new Error(String(e)),\n actor,\n },\n });\n this.sessionEvents.dispatchEvent(logoutEvent);\n }\n }\n protected async onLogout_(\n logoutDetail: infer_<typeof LogoutEventDetailSchema>,\n ) {\n if (logoutDetail.error) throw logoutDetail.error;\n\n const actor = logoutDetail.logoutId;\n\n // Lookup the in-progress session\n let inProgressLogout: infer_<typeof InProgressSchema>;\n if (typeof window !== \"undefined\") {\n const inProgressLogoutString = window.localStorage.getItem(\n LOCAL_STORAGE_IN_PROGRESS_LOGOUT_KEY,\n );\n if (!inProgressLogoutString) {\n throw new Error(\"No in-progress logout found\");\n }\n\n const json = JSON.parse(inProgressLogoutString);\n inProgressLogout = InProgressSchema.parse(json);\n } else {\n if (!this.inProgressLogout) {\n throw new Error(\"No in-progress logout found\");\n }\n inProgressLogout = this.inProgressLogout;\n }\n\n if (inProgressLogout.actor !== actor) {\n throw new Error(\n \"Actor mismatch in logout response - concurrent logouts?\",\n );\n }\n\n const token = inProgressLogout.tokens.pop();\n if (!token) {\n // Logout complete\n if (typeof window === \"undefined\") {\n this.inProgressLogout = undefined;\n } else {\n window.localStorage.removeItem(LOCAL_STORAGE_IN_PROGRESS_LOGOUT_KEY);\n }\n\n const logoutEvent: GraffitiLogoutEvent = new CustomEvent(\"logout\", {\n detail: { actor },\n });\n this.sessionEvents.dispatchEvent(logoutEvent);\n } else {\n // Store the in progress and continue\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(\n LOCAL_STORAGE_IN_PROGRESS_LOGOUT_KEY,\n JSON.stringify(inProgressLogout),\n );\n } else {\n this.inProgressLogout = inProgressLogout;\n }\n\n // Continue to the next authorization endpoint\n const [authorizationEndpoint, _] =\n inProgressLogout.servicesByAuthorization[\n inProgressLogout.tokens.length\n ];\n await this.services.authorization.logout(\n authorizationEndpoint,\n actor,\n token,\n );\n }\n }\n\n protected get loggedInSessions(): StoredSession[] {\n if (typeof window === \"undefined\") return loggedInSessions_;\n\n const data = window.localStorage.getItem(\n LOCAL_STORAGE_LOGGED_IN_SESSIONS_KEY,\n );\n if (!data) return [];\n\n let json: unknown;\n try {\n json = JSON.parse(data);\n } catch {\n console.error(\"Error parsing stored session data\");\n window.localStorage.removeItem(LOCAL_STORAGE_LOGGED_IN_SESSIONS_KEY);\n return [];\n }\n\n const parsed = array(StoredSessionSchema).safeParse(json);\n if (!parsed.success) {\n console.error(\"Stored session data is invalid\");\n window.localStorage.removeItem(LOCAL_STORAGE_LOGGED_IN_SESSIONS_KEY);\n return [];\n }\n return parsed.data;\n }\n protected set loggedInSessions(sessions: StoredSession[]) {\n if (typeof window === \"undefined\") {\n loggedInSessions_ = sessions;\n return;\n }\n\n window.localStorage.setItem(\n LOCAL_STORAGE_LOGGED_IN_SESSIONS_KEY,\n JSON.stringify(sessions),\n );\n }\n\n resolveSession(session: GraffitiSession): StoredSession {\n const resolvedSession = this.loggedInSessions.find(\n (s) => s.actor === session.actor,\n );\n if (!resolvedSession) {\n const logoutEvent: GraffitiLogoutEvent = new CustomEvent(\"logout\", {\n detail: { actor: session.actor },\n });\n this.sessionEvents.dispatchEvent(logoutEvent);\n throw new Error(\"Not logged in\");\n }\n return resolvedSession;\n }\n}\nlet loggedInSessions_: StoredSession[] = [];\n\nconst LOCAL_STORAGE_IN_PROGRESS_LOGIN_KEY = \"graffiti-login-in-progress\";\nconst LOCAL_STORAGE_IN_PROGRESS_LOGOUT_KEY = \"graffiti-logout-in-progress\";\nconst LOCAL_STORAGE_LOGGED_IN_SESSIONS_KEY = \"graffiti-sessions-logged-in\";\n\nconst GraffitiSessionSchema = object({\n actor: url(),\n});\n\nconst ServiceSessionSchema = object({\n token: string(),\n serviceEndpoint: url(),\n authorizationEndpoint: url(),\n});\n\nconst ServicesByAuthorizationSchema = array(\n tuple([\n url(), // Authorization endpoint\n array(\n object({\n endpoint: url(), // Service endpoint\n type: enum_([\"bucket\", \"personal-inbox\", \"shared-inbox\"]),\n }),\n ),\n ]),\n);\n\nconst InProgressSchema = extend(GraffitiSessionSchema, {\n tokens: array(string()),\n servicesByAuthorization: ServicesByAuthorizationSchema,\n});\n\nconst StoredSessionSchema = extend(InProgressSchema, {\n storageBucket: ServiceSessionSchema,\n personalInbox: ServiceSessionSchema,\n sharedInboxes: array(ServiceSessionSchema),\n});\n\ntype StoredSession = infer_<typeof StoredSessionSchema>;\n\nfunction serviceToEndpoint(service: Service): string {\n if (typeof service.serviceEndpoint === \"string\")\n return service.serviceEndpoint;\n throw new Error(`Service endpoint for ${service.id} is not a string`);\n}\n", "import type { JSONSchema } from \"json-schema-to-ts\";\nimport type {\n GraffitiObject,\n GraffitiObjectBase,\n GraffitiPostObject,\n} from \"@graffiti-garden/api\";\nimport type { ChannelAttestations } from \"../2-primitives/3-channel-attestations\";\nimport type { AllowedAttestations } from \"../2-primitives/4-allowed-attestations\";\nimport {\n CONTENT_ADDRESS_METHOD_SHA256,\n type ContentAddresses,\n} from \"../2-primitives/2-content-addresses\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport {\n encode as dagCborEncode,\n decode as dagCborDecode,\n} from \"@ipld/dag-cbor\";\nimport {\n type infer as infer_,\n array,\n custom,\n looseObject,\n optional,\n strictObject,\n} from \"zod/mini\";\nimport { CHANNEL_ATTESTATION_METHOD_SHA256_ED25519 } from \"../2-primitives/3-channel-attestations\";\nimport { ALLOWED_ATTESTATION_METHOD_HMAC_SHA256 } from \"../2-primitives/4-allowed-attestations\";\nimport {\n STRING_ENCODER_METHOD_BASE64URL,\n type StringEncoder,\n} from \"../2-primitives/1-string-encoding\";\n\n// Objects have a max size of 32kb\n// If each channel and allowed actor takes 32 bytes\n// of space (i.e. they are hashed with 256 bit security)\n// then this means that the combined number of channels\n// and recipients of object has cannot exceed one thousand.\n// This seems like a reasonable limit and on par with\n// signal's group chat limit of 1000\nexport const MAX_OBJECT_SIZE_BYTES = 32 * 1024;\n\nexport class ObjectEncoding {\n constructor(\n protected readonly primitives: {\n readonly stringEncoder: StringEncoder;\n readonly channelAttestations: ChannelAttestations;\n readonly allowedAttestations: AllowedAttestations;\n readonly contentAddresses: ContentAddresses;\n },\n ) {}\n\n async encode<Schema extends JSONSchema>(\n partialObject: GraffitiPostObject<Schema>,\n actor: string,\n ): Promise<{\n object: GraffitiObject<Schema>;\n tags: Uint8Array[];\n objectBytes: Uint8Array;\n allowedTickets: Uint8Array[] | undefined;\n }> {\n // Clean out any undefineds\n partialObject = cleanUndefined(partialObject);\n\n // Create a verifiable attestation that the actor\n // knows the included channels without\n // directly revealing any channel to anyone who doesn't\n // know the channel already\n const channelAttestationAndPublicIds = await Promise.all(\n partialObject.channels.map((channel) =>\n this.primitives.channelAttestations.attest(\n // TODO: get this from the DID document of the actor\n CHANNEL_ATTESTATION_METHOD_SHA256_ED25519,\n actor,\n channel,\n ),\n ),\n );\n const channelAttestations = channelAttestationAndPublicIds.map(\n (c) => c.attestation,\n );\n const channelPublicIds = channelAttestationAndPublicIds.map(\n (c) => c.channelPublicId,\n );\n\n const objectData: infer_<typeof ObjectDataSchema> = {\n [VALUE_PROPERTY]: partialObject.value,\n [CHANNEL_ATTESTATIONS_PROPERTY]: channelAttestations,\n [NONCE_PROPERTY]: randomBytes(32),\n };\n\n let allowedTickets: Uint8Array[] | undefined = undefined;\n\n // If the object is private...\n if (Array.isArray(partialObject.allowed)) {\n // Create an attestation that the object's allowed list\n // includes the given actors, without revealing the\n // presence of an actor on the list to anyone except\n // that actor themselves. Each actor will receive a\n // \"ticket\" that they can use to verify their own membership\n // on the allowed list.\n const allowedAttestations = await Promise.all(\n partialObject.allowed.map(async (allowedActor) =>\n this.primitives.allowedAttestations.attest(\n // TODO: get this from the DID document of the actor\n ALLOWED_ATTESTATION_METHOD_HMAC_SHA256,\n allowedActor,\n ),\n ),\n );\n objectData[ALLOWED_ATTESTATIONS_PROPERTY] = allowedAttestations.map(\n (a) => a.attestation,\n );\n allowedTickets = allowedAttestations.map((a) => a.ticket);\n }\n\n // Encode the mixed JSON/binary data using CBOR\n const objectBytes = dagCborEncode(objectData);\n if (objectBytes.byteLength > MAX_OBJECT_SIZE_BYTES) {\n throw new Error(\"The object is too large\");\n }\n\n // Compute a public identifier (hash) of the object data\n const objectContentAddressBytes =\n await this.primitives.contentAddresses.register(\n // TODO: get this from the DID document of the actor\n CONTENT_ADDRESS_METHOD_SHA256,\n objectBytes,\n );\n const objectContentAddress = await this.primitives.stringEncoder.encode(\n STRING_ENCODER_METHOD_BASE64URL,\n objectContentAddressBytes,\n );\n // Use it to compute the object's URL\n const objectUrl = encodeObjectUrl(actor, objectContentAddress);\n\n const tags = [new TextEncoder().encode(objectUrl), ...channelPublicIds];\n\n const object: GraffitiObject<Schema> = {\n value: partialObject.value,\n channels: partialObject.channels,\n url: objectUrl,\n actor,\n ...(partialObject.allowed\n ? {\n allowed: partialObject.allowed,\n }\n : {}),\n } as GraffitiObject<Schema>;\n\n // Return object URL and allowed secrets\n return {\n object,\n tags,\n objectBytes,\n allowedTickets,\n };\n }\n\n async validate(\n object: GraffitiObjectBase,\n tags: Uint8Array[],\n objectBytes: Uint8Array,\n privateObjectInfo?:\n | {\n recipient: string;\n allowedTicket: Uint8Array;\n allowedIndex: number;\n }\n | {\n allowedTickets: Uint8Array[];\n },\n ): Promise<void> {\n if (objectBytes.byteLength > MAX_OBJECT_SIZE_BYTES) {\n throw new Error(\"Object is too big\");\n }\n const { actor, contentAddress } = decodeObjectUrl(object.url);\n if (actor !== object.actor) {\n throw new Error(\"Object actor does not match URL actor\");\n }\n\n const objectUrlTag = tags.at(0);\n if (!objectUrlTag) {\n throw new Error(\"No object URL tag\");\n }\n if (new TextDecoder().decode(objectUrlTag) !== object.url) {\n throw new Error(\"Object URL tag does not match object URL\");\n }\n const channelPublicIds = tags.slice(1);\n\n // Make sure the object content address matches the object content\n const contentAddressBytes =\n await this.primitives.stringEncoder.decode(contentAddress);\n const contentAddressMethod =\n await this.primitives.contentAddresses.getMethod(contentAddressBytes);\n const expectedContentAddress =\n await this.primitives.contentAddresses.register(\n contentAddressMethod,\n objectBytes,\n );\n if (\n expectedContentAddress.length !== contentAddressBytes.length ||\n !expectedContentAddress.every((b, i) => b === contentAddressBytes[i])\n ) {\n throw new Error(\"Content address is invalid\");\n }\n\n // Convert the raw object data from CBOR\n // back to a javascript object\n const objectDataUnknown = dagCborDecode(objectBytes);\n const objectData = ObjectDataSchema.parse(objectDataUnknown);\n\n // And extract the values\n const value = objectData[VALUE_PROPERTY];\n const channelAttestations = objectData[CHANNEL_ATTESTATIONS_PROPERTY];\n const allowedAttestations = objectData[ALLOWED_ATTESTATIONS_PROPERTY];\n\n // Validate that the object's value matches\n const valueBytes = dagCborEncode(value);\n const expectedValueBytes = dagCborEncode(object.value);\n if (\n valueBytes.length !== expectedValueBytes.length ||\n !valueBytes.every((b, i) => b === expectedValueBytes[i])\n ) {\n throw new Error(\"Object value does not match storage value\");\n }\n\n // Validate the object's channels\n if (channelAttestations.length !== channelPublicIds.length) {\n throw new Error(\"Not as many channel attestations and public ids\");\n }\n for (const [index, attestation] of channelAttestations.entries()) {\n const channelPublicId = channelPublicIds[index];\n const isValid = await this.primitives.channelAttestations.validate(\n attestation,\n actor,\n channelPublicId,\n );\n if (!isValid) {\n throw new Error(\"Invalid channel attestation\");\n }\n }\n if (object.channels.length) {\n // If any channels are included, they all must be included\n if (object.channels.length !== channelPublicIds.length) {\n throw new Error(\n \"Number of claimed channels does not match attestations/public IDs\",\n );\n }\n const channelAttestationMethod =\n await this.primitives.channelAttestations.getMethod(\n channelPublicIds[0],\n );\n const expectedChannelPublicIds = await Promise.all(\n object.channels.map((channel) =>\n this.primitives.channelAttestations.register(\n channelAttestationMethod,\n channel,\n ),\n ),\n );\n for (const [\n index,\n expectedPublicId,\n ] of expectedChannelPublicIds.entries()) {\n const actualPublicId = channelPublicIds[index];\n if (\n expectedPublicId.length !== actualPublicId.length ||\n !expectedPublicId.every((b, i) => b === actualPublicId[i])\n ) {\n throw new Error(\"Channel public id does not match expected\");\n }\n }\n }\n\n // Validate the recipient\n if (privateObjectInfo) {\n if (!allowedAttestations) {\n throw new Error(\"Object is public but thought to be private\");\n }\n\n let recipients: string[];\n let allowedTickets: Uint8Array[];\n let attestations: Uint8Array[];\n if (\"recipient\" in privateObjectInfo) {\n recipients = [privateObjectInfo.recipient];\n allowedTickets = [privateObjectInfo.allowedTicket];\n attestations = allowedAttestations.filter(\n (_, i) => i === privateObjectInfo.allowedIndex,\n );\n } else {\n recipients = [...(object.allowed ?? [])];\n allowedTickets = privateObjectInfo.allowedTickets;\n attestations = allowedAttestations;\n }\n\n // All recipients must be in the allowed list\n if (recipients.length !== object.allowed?.length) {\n throw new Error(\"Recipient count does not match object allowed list\");\n }\n if (!recipients.every((r) => object.allowed?.includes(r))) {\n throw new Error(\"Recipient not in object allowed list\");\n }\n\n for (const [index, recipient] of recipients.entries()) {\n const allowedTicket = allowedTickets.at(index);\n const allowedAttestation = attestations.at(index);\n if (!allowedTicket) {\n throw new Error(\"Missing allowed ticket for recipient\");\n }\n if (!allowedAttestation) {\n throw new Error(\"Missing allowed attestation for recipient\");\n }\n const isValid = await this.primitives.allowedAttestations.validate(\n allowedAttestation,\n recipient,\n allowedTicket,\n );\n\n if (!isValid) {\n throw new Error(\"Invalid allowed attestation for recipient\");\n }\n }\n } else if (allowedAttestations) {\n throw new Error(\"Object is private but no recipient info provided\");\n }\n }\n}\n\n// A compact data representation of the object data\nconst VALUE_PROPERTY = \"v\";\nconst CHANNEL_ATTESTATIONS_PROPERTY = \"c\";\nconst ALLOWED_ATTESTATIONS_PROPERTY = \"a\";\nconst NONCE_PROPERTY = \"n\";\n\nconst Uint8ArraySchema = custom<Uint8Array>(\n (v): v is Uint8Array => v instanceof Uint8Array,\n);\n\nconst ObjectDataSchema = strictObject({\n [VALUE_PROPERTY]: looseObject({}),\n [CHANNEL_ATTESTATIONS_PROPERTY]: array(Uint8ArraySchema),\n [ALLOWED_ATTESTATIONS_PROPERTY]: optional(array(Uint8ArraySchema)),\n [NONCE_PROPERTY]: Uint8ArraySchema,\n});\n\nexport const GRAFFITI_OBJECT_URL_PREFIX = \"graffiti:\";\n\n// Methods to encode and decode object URLs\nexport function encodeObjectUrlComponent(value: string) {\n const replaced = value.replace(/:/g, \"!\").replace(/\\//g, \"~\");\n return encodeURIComponent(replaced);\n}\nexport function decodeObjectUrlComponent(value: string) {\n const decoded = decodeURIComponent(value);\n return decoded.replace(/!/g, \":\").replace(/~/g, \"/\");\n}\nexport function encodeObjectUrl(actor: string, contentAddress: string) {\n return `${GRAFFITI_OBJECT_URL_PREFIX}${encodeObjectUrlComponent(actor)}:${encodeObjectUrlComponent(contentAddress)}`;\n}\nexport function decodeObjectUrl(objectUrl: string) {\n if (!objectUrl.startsWith(GRAFFITI_OBJECT_URL_PREFIX)) {\n throw new Error(\"Invalid object URL\");\n }\n\n const rest = objectUrl.slice(GRAFFITI_OBJECT_URL_PREFIX.length);\n const parts = rest.split(\":\");\n\n if (parts.length !== 2) {\n throw new Error(\"Invalid object URL format\");\n }\n\n const [actor, contentAddress] = parts;\n\n return {\n actor: decodeObjectUrlComponent(actor),\n contentAddress: decodeObjectUrlComponent(contentAddress),\n };\n}\n\nfunction cleanUndefined(value: any): any {\n if (value === undefined) return null;\n\n if (Array.isArray(value)) {\n return value.map(cleanUndefined);\n }\n\n if (typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, cleanUndefined(v)]),\n );\n }\n\n return value;\n}\n", "export class GraffitiModal {\n protected dialog = document.createElement(\"dialog\");\n protected shadow: ShadowRoot;\n protected main_: Promise<HTMLElement> | undefined;\n protected useTemplateHTML: () => Promise<string> | string;\n protected templates_: Promise<Map<string, HTMLTemplateElement>> | undefined;\n protected onManualClose?: () => any;\n\n constructor(options: {\n useTemplateHTML: () => Promise<string> | string;\n onManualClose?: () => any;\n }) {\n this.useTemplateHTML = options.useTemplateHTML;\n this.onManualClose = options.onManualClose;\n\n this.dialog.className = \"graffiti-modal\";\n\n // Click outside of dialog to close\n this.dialog.addEventListener(\"click\", (e) => {\n if (\"pointerType\" in e && !e.pointerType) return;\n const rect = this.dialog.getBoundingClientRect();\n if (\n rect.top > e.clientY ||\n rect.left > e.clientX ||\n e.clientY > rect.top + rect.height ||\n e.clientX > rect.left + rect.width\n ) {\n this.close();\n this.onManualClose?.();\n }\n });\n\n const host = document.createElement(\"div\");\n this.shadow = host.attachShadow({ mode: \"closed\" });\n this.shadow.appendChild(this.dialog);\n document.body.append(host);\n }\n\n protected get templates() {\n if (!this.templates_) {\n this.main_; // Start loading main, too\n this.templates_ = new Promise<string>(async (r) =>\n r(await this.useTemplateHTML()),\n ).then((html) => {\n const doc = new DOMParser().parseFromString(html, \"text/html\");\n const templates = new Map<string, HTMLTemplateElement>();\n doc.querySelectorAll(\"template\").forEach((template) => {\n const id = template.id;\n if (!id) return;\n templates.set(id, template);\n });\n return templates;\n });\n }\n return this.templates_;\n }\n\n protected get main() {\n if (!this.main_) {\n this.templates_; // Start loading templates, too\n this.main_ = Promise.all([\n import(\"./style.css\"),\n import(\"./graffiti.webp\"),\n import(\"./rock-salt.woff2\"),\n ]).then(\n async ([{ default: style }, { default: image }, { default: font }]) => {\n const header = document.createElement(\"header\");\n const closeButton = document.createElement(\"button\");\n closeButton.className = \"secondary\";\n closeButton.textContent = \"Close\";\n closeButton?.addEventListener(\"click\", () => {\n this.close();\n this.onManualClose?.();\n });\n header.appendChild(closeButton);\n\n const main = document.createElement(\"main\");\n\n this.dialog.appendChild(header);\n this.dialog.appendChild(main);\n\n const ff = new FontFace(\"Rock Salt\", `url(${font})`, {\n style: \"normal\",\n weight: \"400\",\n });\n document.fonts.add(ff);\n await ff.load();\n\n style = style.replace(\"url(graffiti.jpg)\", `url(${image})`);\n\n const sheet = new CSSStyleSheet();\n sheet.replace(style).then(() => {\n this.shadow.adoptedStyleSheets = [sheet];\n });\n\n return main;\n },\n );\n }\n return this.main_;\n }\n\n async open() {\n await this.main;\n this.dialog.showModal();\n this.dialog.focus();\n }\n\n close() {\n this.dialog.close();\n }\n\n async displayTemplate(templateId: string) {\n const main = await this.main;\n main.innerHTML = \"\";\n const template = (await this.templates).get(templateId);\n if (!template) {\n throw new Error(`Template not found: ${templateId}`);\n }\n const content = template.content.cloneNode(true);\n main.appendChild(content);\n return main;\n }\n}\n", "import type { JSONSchema } from \"json-schema-to-ts\";\nimport {\n GraffitiErrorNotFound,\n maskGraffitiObject,\n type Graffiti,\n type GraffitiLoginEvent,\n type GraffitiObjectBase,\n type GraffitiSession,\n type GraffitiObject,\n unpackObjectUrl,\n compileGraffitiObjectSchema,\n GraffitiErrorSchemaMismatch,\n GraffitiErrorForbidden,\n GraffitiErrorTooLarge,\n isMediaAcceptable,\n GraffitiErrorNotAcceptable,\n GraffitiErrorCursorExpired,\n GraffitiErrorInvalidSchema,\n type GraffitiObjectStream,\n} from \"@graffiti-garden/api\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport {\n encode as dagCborEncode,\n decode as dagCborDecode,\n} from \"@ipld/dag-cbor\";\n\nimport { DecentralizedIdentifiers } from \"../1-services/2-dids\";\nimport { Authorization } from \"../1-services/1-authorization\";\nimport { StorageBuckets } from \"../1-services/3-storage-buckets\";\nimport {\n Inboxes,\n LABELED_MESSAGE_MESSAGE_KEY,\n MESSAGE_METADATA_KEY,\n MESSAGE_OBJECT_KEY,\n MESSAGE_TAGS_KEY,\n type MessageStream,\n} from \"../1-services/4-inboxes\";\n\nimport {\n StringEncoder,\n STRING_ENCODER_METHOD_BASE64URL,\n} from \"../2-primitives/1-string-encoding\";\nimport { ContentAddresses } from \"../2-primitives/2-content-addresses\";\nimport {\n CHANNEL_ATTESTATION_METHOD_SHA256_ED25519,\n ChannelAttestations,\n} from \"../2-primitives/3-channel-attestations\";\nimport { AllowedAttestations } from \"../2-primitives/4-allowed-attestations\";\n\nimport { Handles } from \"./2-handles\";\nimport {\n Sessions,\n DID_SERVICE_ID_GRAFFITI_PERSONAL_INBOX,\n DID_SERVICE_TYPE_GRAFFITI_INBOX,\n DID_SERVICE_ID_GRAFFITI_STORAGE_BUCKET,\n DID_SERVICE_TYPE_GRAFFITI_STORAGE_BUCKET,\n} from \"./1-sessions\";\nimport {\n decodeObjectUrl,\n MAX_OBJECT_SIZE_BYTES,\n ObjectEncoding,\n} from \"./3-object-encoding\";\n\nimport { GraffitiModal } from \"@graffiti-garden/modal\";\nimport {\n type infer as infer_,\n custom,\n string,\n boolean,\n strictObject,\n array,\n int,\n nonnegative,\n optional,\n extend,\n union,\n record,\n url,\n} from \"zod/mini\";\n\nconst Uint8ArraySchema = custom<Uint8Array>(\n (v): v is Uint8Array => v instanceof Uint8Array,\n);\nconst MESSAGE_DATA_STORAGE_BUCKET_KEY = \"k\";\nconst MESSAGE_DATA_TOMBSTONED_MESSAGE_ID_KEY = \"t\";\nconst MessageMetadataBaseSchema = strictObject({\n [MESSAGE_DATA_STORAGE_BUCKET_KEY]: string(),\n [MESSAGE_DATA_TOMBSTONED_MESSAGE_ID_KEY]: optional(string()),\n});\nconst MESSAGE_DATA_ANNOUNCEMENT_MESSAGE_ID_KEY = \"id\";\nconst MESSAGE_DATA_ANNOUNCEMENT_ENDPOINT_KEY = \"e\";\nconst MESSAGE_DATA_ANNOUNCEMENT_ACTOR_KEY = \"a\";\nconst MessageMetadataAnnouncementsSchema = array(\n strictObject({\n [MESSAGE_DATA_ANNOUNCEMENT_MESSAGE_ID_KEY]: string(),\n [MESSAGE_DATA_ANNOUNCEMENT_ENDPOINT_KEY]: optional(url()),\n [MESSAGE_DATA_ANNOUNCEMENT_ACTOR_KEY]: optional(url()),\n }),\n);\nconst MESSAGE_DATA_ALLOWED_TICKETS_KEY = \"s\";\nconst MESSAGE_DATA_ANNOUNCEMENTS_KEY = \"n\";\nconst MessageMetaDataSelfSchema = extend(MessageMetadataBaseSchema, {\n [MESSAGE_DATA_ALLOWED_TICKETS_KEY]: optional(array(Uint8ArraySchema)),\n [MESSAGE_DATA_ANNOUNCEMENTS_KEY]: MessageMetadataAnnouncementsSchema,\n});\nconst MESSAGE_DATA_ALLOWED_TICKET_KEY = \"a\";\nconst MESSAGE_DATA_ALLOWED_TICKET_INDEX_KEY = \"i\";\nconst MessageMetadataPrivateSchema = extend(MessageMetadataBaseSchema, {\n [MESSAGE_DATA_ALLOWED_TICKET_KEY]: Uint8ArraySchema,\n [MESSAGE_DATA_ALLOWED_TICKET_INDEX_KEY]: int().check(nonnegative()),\n});\nconst MessageMetadataSchema = union([\n MessageMetadataBaseSchema,\n MessageMetaDataSelfSchema,\n MessageMetadataPrivateSchema,\n]);\ntype MessageMetadataBase = infer_<typeof MessageMetadataBaseSchema>;\ntype MessageMetadata = infer_<typeof MessageMetadataSchema>;\ntype MessageMetadataAnnouncements = infer_<\n typeof MessageMetadataAnnouncementsSchema\n>;\n\nconst MESSAGE_LABEL_UNLABELED = 0;\nconst MESSAGE_LABEL_VALID = 1;\nconst MESSAGE_LABEL_TRASH = 2;\nconst MESSAGE_LABEL_INVALID = 3;\n\nexport interface GraffitiDecentralizedOptions {\n identityCreatorEndpoint?: string;\n defaultInboxEndpoints?: string[];\n}\n\nexport class GraffitiDecentralized implements Graffiti {\n protected readonly dids = new DecentralizedIdentifiers();\n protected readonly authorization = new Authorization();\n protected readonly storageBuckets = new StorageBuckets();\n protected readonly inboxes = new Inboxes();\n\n protected readonly stringEncoder = new StringEncoder();\n protected readonly contentAddresses = new ContentAddresses();\n protected readonly channelAttestations = new ChannelAttestations();\n protected readonly allowedAttestations = new AllowedAttestations();\n\n protected readonly sessions = new Sessions({\n dids: this.dids,\n authorization: this.authorization,\n storageBuckets: this.storageBuckets,\n inboxes: this.inboxes,\n });\n protected readonly handles = new Handles({ dids: this.dids });\n protected readonly objectEncoding = new ObjectEncoding({\n stringEncoder: this.stringEncoder,\n contentAddresses: this.contentAddresses,\n channelAttestations: this.channelAttestations,\n allowedAttestations: this.allowedAttestations,\n });\n\n protected readonly modal: GraffitiModal | undefined =\n typeof window === \"undefined\"\n ? undefined\n : new GraffitiModal({\n useTemplateHTML: () =>\n import(\"./login-dialog.html\").then(({ template }) => template),\n onManualClose: () => {\n const event = new CustomEvent(\"login\", {\n detail: {\n error: new Error(\"User cancelled login\"),\n manual: true,\n },\n });\n this.sessionEvents.dispatchEvent(event);\n },\n });\n\n protected readonly defaultInboxEndpoints: string[];\n protected readonly identityCreatorEndpoint: string;\n constructor(options?: GraffitiDecentralizedOptions) {\n this.defaultInboxEndpoints = options?.defaultInboxEndpoints ?? [\n \"https://graffiti.actor/i/shared\",\n ];\n this.identityCreatorEndpoint =\n options?.identityCreatorEndpoint ?? \"https://graffiti.actor/create\";\n\n this.sessionEvents.addEventListener(\"login\", async (event) => {\n if (!(event instanceof CustomEvent)) return;\n const detail = event.detail as GraffitiLoginEvent[\"detail\"];\n if (\n detail.error !== undefined &&\n !(\"manual\" in detail && detail.manual)\n ) {\n alert(\"Login failed: \" + detail.error.message);\n const actor = detail.session?.actor;\n let handle: string | undefined;\n if (actor) {\n try {\n handle = await this.actorToHandle(actor);\n } catch (error) {\n console.error(\"Failed to handle actor:\", error);\n }\n }\n this.login_(handle);\n }\n });\n }\n\n readonly actorToHandle: Graffiti[\"actorToHandle\"] =\n this.handles.actorToHandle.bind(this.handles);\n readonly handleToActor: Graffiti[\"handleToActor\"] =\n this.handles.handleToActor.bind(this.handles);\n readonly sessionEvents: Graffiti[\"sessionEvents\"] =\n this.sessions.sessionEvents;\n\n login: Graffiti[\"login\"] = async (actor?: string) => {\n try {\n let proposedHandle: string | undefined;\n try {\n proposedHandle = actor ? await this.actorToHandle(actor) : undefined;\n } catch (error) {\n console.error(\"Error fetching handle for actor:\", error);\n }\n\n await this.login_(proposedHandle);\n } catch (e) {\n const loginError: GraffitiLoginEvent = new CustomEvent(\"login\", {\n detail: {\n error: e instanceof Error ? e : new Error(String(e)),\n },\n });\n this.sessionEvents.dispatchEvent(loginError);\n }\n };\n protected async login_(proposedHandle?: string) {\n if (typeof window !== \"undefined\") {\n let template: HTMLElement | undefined;\n if (proposedHandle !== undefined) {\n template = await this.modal?.displayTemplate(\"graffiti-login-handle\");\n const input = template?.querySelector(\n \"#username\",\n ) as HTMLInputElement | null;\n input?.setAttribute(\"value\", proposedHandle);\n input?.addEventListener(\"focus\", () => input?.select());\n new Promise<void>((r) => {\n setTimeout(() => r(), 0);\n }).then(() => {\n input?.focus();\n });\n\n template\n ?.querySelector(\"#graffiti-login-handle-form\")\n ?.addEventListener(\"submit\", async (e) => {\n e.preventDefault();\n input?.setAttribute(\"disabled\", \"true\");\n const submitButton = template?.querySelector(\n \"#graffiti-login-handle-submit\",\n ) as HTMLButtonElement | null;\n submitButton?.setAttribute(\"disabled\", \"true\");\n submitButton && (submitButton.innerHTML = \"Logging in...\");\n\n if (!input?.value) {\n alert(\"No handle provided\");\n this.login_(\"\");\n return;\n }\n\n let handle = input.value;\n if (!handle.includes(\".\") && !handle.startsWith(\"localhost\")) {\n const defaultHost = new URL(this.identityCreatorEndpoint).host;\n handle = `${handle}.${defaultHost}`;\n }\n\n let actor: string;\n try {\n actor = await this.handleToActor(handle);\n } catch (e) {\n alert(\"Could not find an identity associated with that handle.\");\n this.login_(handle);\n return;\n }\n\n try {\n await this.sessions.login(actor);\n } catch (e) {\n alert(\"Error logging in.\");\n console.error(e);\n this.login_(handle);\n }\n });\n } else {\n template = await this.modal?.displayTemplate(\"graffiti-login-welcome\");\n template\n ?.querySelector(\"#graffiti-login-existing\")\n ?.addEventListener(\"click\", (e) => {\n e.preventDefault();\n this.login_(\"\");\n });\n new Promise<void>((r) => {\n setTimeout(() => r(), 0);\n }).then(() => {\n (\n template?.querySelector(\"#graffiti-login-new\") as HTMLAnchorElement\n )?.focus();\n });\n }\n\n const createUrl = new URL(this.identityCreatorEndpoint);\n createUrl.searchParams.set(\n \"redirect_uri\",\n encodeURIComponent(window.location.toString()),\n );\n template\n ?.querySelector(\"#graffiti-login-new\")\n ?.setAttribute(\"href\", createUrl.toString());\n\n await this.modal?.open();\n } else {\n // Node.js environment\n const readline = await import(\"readline\").catch((e) => {\n throw new Error(\n \"Unrecognized environment: neither window nor readline\",\n );\n });\n\n console.log(\n \"If you do not already have a Graffiti handle, you can create one here:\",\n );\n console.log(this.identityCreatorEndpoint);\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n const handle: string | undefined = await new Promise((resolve) => {\n rl.question(\n `Please enter your handle${proposedHandle ? ` (default: ${proposedHandle})` : \"\"}: `,\n (input) => {\n rl.close();\n resolve(input || proposedHandle);\n },\n );\n });\n\n if (!handle) {\n throw new Error(\"No handle provided\");\n }\n\n // Convert the handle to an actor\n const actor = await this.handleToActor(handle);\n\n await this.sessions.login(actor);\n }\n }\n\n logout: Graffiti[\"logout\"] = async (session) => {\n await this.sessions.logout(session.actor);\n };\n\n // @ts-ignore\n post: Graffiti[\"post\"] = async (...args) => {\n const [partialObject, session] = args;\n const resolvedSession = this.sessions.resolveSession(session);\n\n // Encode the object\n const { object, tags, objectBytes, allowedTickets } =\n await this.objectEncoding.encode<{}>(partialObject, session.actor);\n\n // Generate a random key under which to store the object\n // If the object is private, this means no one will be able to\n // fetch the object, even if they know its URL.\n // If the object is public but in some secret channel, the storage\n // location means the object can be moved around or \"rotated\"\n // without changing its URL.\n const storageBucketKeyBytes = randomBytes();\n const storageBucketKey = await this.stringEncoder.encode(\n STRING_ENCODER_METHOD_BASE64URL,\n storageBucketKeyBytes,\n );\n\n // Store the object at the random key\n await this.storageBuckets.put(\n resolvedSession.storageBucket.serviceEndpoint,\n storageBucketKey,\n objectBytes,\n resolvedSession.storageBucket.token,\n );\n\n // Announce the object, its key,\n // and other metadata to appropriate inboxes\n await this.announceObject(\n object,\n tags,\n allowedTickets,\n storageBucketKey,\n session,\n );\n\n return object;\n };\n\n get: Graffiti[\"get\"] = async (...args) => {\n const [url, schema, session] = args;\n let services: { token?: string; serviceEndpoint: string }[];\n const validator = await compileGraffitiObjectSchema(schema);\n\n if (session) {\n // If logged in, first search one's\n // personal inbox, then any shared inboxes\n const resolvedSession = this.sessions.resolveSession(session);\n services = [\n resolvedSession.personalInbox,\n ...resolvedSession.sharedInboxes,\n ];\n } else {\n // Otherwise, search the default inboxes\n services = this.defaultInboxEndpoints.map((s) => ({\n serviceEndpoint: s,\n }));\n }\n\n // Search the inboxes for all objects\n // matching the tag, object.url\n const objectUrl = unpackObjectUrl(url);\n const tags = [new TextEncoder().encode(objectUrl)];\n for (const service of services) {\n let object: GraffitiObjectBase | undefined = undefined;\n\n const iterator = this.querySingleEndpoint<{}>(\n service.serviceEndpoint,\n {\n tags,\n objectSchema: {},\n },\n service.token,\n session?.actor,\n );\n\n for await (const result of iterator) {\n if (result.object.url !== objectUrl) continue;\n if (result.tombstone) {\n object = undefined;\n } else {\n object = result.object;\n }\n }\n\n if (object) {\n if (!validator(object)) {\n throw new GraffitiErrorSchemaMismatch(\n \"Object exists but does not match the supplied schema\",\n );\n }\n\n return object;\n }\n }\n\n throw new GraffitiErrorNotFound(\"Object not found\");\n };\n\n delete: Graffiti[\"delete\"] = async (url, session) => {\n const resolvedSession = this.sessions.resolveSession(session);\n\n const objectUrl = unpackObjectUrl(url);\n\n const { actor } = decodeObjectUrl(objectUrl);\n if (actor !== session.actor) {\n throw new GraffitiErrorForbidden(\"Cannot delete someone else's actor\");\n }\n\n // Look in one's personal inbox for the object\n const iterator = this.querySingleEndpoint<{}>(\n resolvedSession.personalInbox.serviceEndpoint,\n {\n tags: [new TextEncoder().encode(objectUrl)],\n objectSchema: {},\n },\n resolvedSession.personalInbox.token,\n );\n let existing: SingleEndpointQueryResult<{}> | undefined;\n for await (const result of iterator) {\n if (result.object.url !== objectUrl) continue;\n if (result.tombstone) {\n existing = undefined;\n } else {\n existing = result;\n }\n }\n if (!existing) {\n throw new GraffitiErrorNotFound(`Object ${objectUrl} not found`);\n }\n const {\n object,\n storageBucketKey,\n tags,\n allowedTickets,\n announcements,\n messageId,\n } = existing;\n\n // Delete the object from the actor's own storage bucket\n await this.storageBuckets.delete(\n resolvedSession.storageBucket.serviceEndpoint,\n storageBucketKey,\n resolvedSession.storageBucket.token,\n );\n\n // Announce the deletion to all inboxes\n await this.announceObject(\n object,\n tags,\n allowedTickets,\n storageBucketKey,\n session,\n [\n ...(announcements ?? []),\n // Make sure we delete from our own inbox too\n {\n [MESSAGE_DATA_ANNOUNCEMENT_ACTOR_KEY]: session.actor,\n [MESSAGE_DATA_ANNOUNCEMENT_MESSAGE_ID_KEY]: messageId,\n },\n ],\n );\n\n return object;\n };\n\n postMedia: Graffiti[\"postMedia\"] = async (...args) => {\n const [media, session] = args;\n\n const type = media.data.type;\n\n const resolvedSession = this.sessions.resolveSession(session);\n\n // Generate a random storage key\n const keyBytes = randomBytes();\n const key = await this.stringEncoder.encode(\n STRING_ENCODER_METHOD_BASE64URL,\n keyBytes,\n );\n\n // Store the media at that key\n await this.storageBuckets.put(\n resolvedSession.storageBucket.serviceEndpoint,\n key,\n new Uint8Array(await media.data.arrayBuffer()),\n resolvedSession.storageBucket.token,\n );\n\n // Create an object\n const { url } = await this.post<typeof MEDIA_OBJECT_SCHEMA>(\n {\n value: {\n key,\n type,\n size: media.data.size,\n },\n channels: [],\n allowed: media.allowed,\n },\n session,\n );\n\n return url;\n };\n\n getMedia: Graffiti[\"getMedia\"] = async (...args) => {\n const [mediaUrl, accept, session] = args;\n\n const object = await this.get<typeof MEDIA_OBJECT_SCHEMA>(\n mediaUrl,\n MEDIA_OBJECT_SCHEMA,\n session,\n );\n\n const { key, type, size } = object.value;\n\n if (accept?.maxBytes && size > accept.maxBytes) {\n throw new GraffitiErrorTooLarge(\"File size exceeds limit\");\n }\n\n // Make sure it adheres to requirements.accept\n if (accept?.types) {\n if (!isMediaAcceptable(type, accept.types)) {\n throw new GraffitiErrorNotAcceptable(\n `Unacceptable media type, ${type}`,\n );\n }\n }\n\n // Get the actor's storage bucket endpoint\n const actorDocument = await this.dids.resolve(object.actor);\n const storageBucketService = actorDocument?.service?.find(\n (service) =>\n service.id === DID_SERVICE_ID_GRAFFITI_STORAGE_BUCKET &&\n service.type === DID_SERVICE_TYPE_GRAFFITI_STORAGE_BUCKET,\n );\n if (!storageBucketService) {\n throw new GraffitiErrorNotFound(\n `Actor ${object.actor} has no storage bucket service`,\n );\n }\n if (typeof storageBucketService.serviceEndpoint !== \"string\") {\n throw new GraffitiErrorNotFound(\n `Actor ${object.actor} does not have a valid storage bucket endpoint`,\n );\n }\n const storageBucketEndpoint = storageBucketService.serviceEndpoint;\n\n const data = await this.storageBuckets.get(\n storageBucketEndpoint,\n key,\n size,\n );\n\n const blob = new Blob([data.slice()], { type });\n\n return {\n data: blob,\n actor: object.actor,\n allowed: object.allowed,\n };\n };\n\n deleteMedia: Graffiti[\"deleteMedia\"] = async (...args) => {\n const [mediaUrl, session] = args;\n\n const resolvedSession = this.sessions.resolveSession(session);\n\n const result = await this.delete(mediaUrl, session);\n\n if (!(\"key\" in result.value && typeof result.value.key === \"string\"))\n throw new Error(\n \"Deleted object was not media: \" + JSON.stringify(result, null, 2),\n );\n\n await this.storageBuckets.delete(\n resolvedSession.storageBucket.serviceEndpoint,\n result.value.key,\n resolvedSession.storageBucket.token,\n );\n };\n\n async *discoverMeta<Schema extends JSONSchema>(\n channels: string[],\n schema: Schema,\n cursors: {\n [endpoint: string]: string;\n },\n session?: GraffitiSession | null,\n ): GraffitiObjectStream<Schema> {\n const tombstones = new Map<string, boolean>();\n\n let allInboxes: { serviceEndpoint: string; token?: string }[];\n if (session) {\n const resolvedSession = this.sessions.resolveSession(session);\n allInboxes = [\n resolvedSession.personalInbox,\n ...resolvedSession.sharedInboxes,\n ];\n } else {\n allInboxes = this.defaultInboxEndpoints.map((e) => ({\n serviceEndpoint: e,\n }));\n }\n\n // Make sure all cursors are represented by an inbox\n for (const endpoint in cursors) {\n if (!allInboxes.some((i) => i.serviceEndpoint === endpoint)) {\n throw new GraffitiErrorForbidden(\n \"Cursor does not match actor's inboxes\",\n );\n }\n }\n\n // Turn the channels into tags\n const tags = await Promise.all(\n channels.map((c) =>\n this.channelAttestations.register(\n CHANNEL_ATTESTATION_METHOD_SHA256_ED25519,\n c,\n ),\n ),\n );\n\n const iterators: SingleEndpointQueryIterator<Schema>[] = allInboxes.map(\n (i) => {\n const cursor = cursors[i.serviceEndpoint];\n return this.querySingleEndpoint<Schema>(\n i.serviceEndpoint,\n cursor\n ? {\n cursor,\n }\n : {\n tags,\n objectSchema: schema,\n },\n i.token,\n session?.actor,\n );\n },\n );\n\n let indexedIteratorNexts = iterators.map<\n Promise<IndexedSingleEndpointQueryResult<Schema>>\n >(async (it, index) => indexedSingleEndpointQueryNext<Schema>(it, index));\n let active = indexedIteratorNexts.length;\n\n while (active > 0) {\n const next: IndexedSingleEndpointQueryResult<Schema> =\n await Promise.race<any>(indexedIteratorNexts);\n if (next.error !== undefined) {\n // Remove it from the race\n indexedIteratorNexts[next.index] = new Promise(() => {});\n active--;\n yield {\n error: next.error,\n origin: allInboxes[next.index].serviceEndpoint,\n };\n } else if (next.result.done) {\n // Store the cursor for future use\n const inbox = allInboxes[next.index];\n cursors[inbox.serviceEndpoint] = next.result.value;\n // Remove it from the race\n indexedIteratorNexts[next.index] = new Promise(() => {});\n active--;\n } else {\n // Re-arm the iterator\n indexedIteratorNexts[next.index] =\n indexedSingleEndpointQueryNext<Schema>(\n iterators[next.index],\n next.index,\n );\n const { object, tombstone, tags: receivedTags } = next.result.value;\n if (tombstone) {\n if (tombstones.get(object.url) === true) continue;\n tombstones.set(object.url, true);\n yield {\n tombstone,\n object: { url: object.url },\n };\n } else {\n // Filter already seen\n if (tombstones.get(object.url) === false) continue;\n\n // Fill in the matched channels\n const matchedTagIndices = tags.reduce<number[]>(\n (acc, tag, tagIndex) => {\n for (const receivedTag of receivedTags) {\n if (\n tag.length === receivedTag.length &&\n tag.every((b, i) => receivedTag[i] === b)\n ) {\n acc.push(tagIndex);\n break;\n }\n }\n return acc;\n },\n [],\n );\n const matchedChannels = matchedTagIndices.map(\n (index) => channels[index],\n );\n if (matchedChannels.length === 0) {\n yield {\n error: new Error(\n \"Inbox returned object without matching channels\",\n ),\n origin: allInboxes[next.index].serviceEndpoint,\n };\n }\n tombstones.set(object.url, false);\n yield {\n object: {\n ...object,\n channels: matchedChannels,\n },\n };\n }\n }\n }\n\n return {\n cursor: JSON.stringify({\n channels,\n cursors,\n } satisfies infer_<typeof CursorSchema>),\n continue: (session) =>\n this.discoverMeta<Schema>(channels, schema, cursors, session),\n };\n }\n\n discover: Graffiti[\"discover\"] = (...args) => {\n const [channels, schema, session] = args;\n return this.discoverMeta<(typeof args)[1]>(channels, schema, {}, session);\n };\n\n continueDiscover: Graffiti[\"continueDiscover\"] = (...args) => {\n const [cursor, session] = args;\n // Extract the channels from the cursor\n let channels: string[];\n let cursors: { [endpoint: string]: string };\n try {\n const json = JSON.parse(cursor);\n const parsed = CursorSchema.parse(json);\n channels = parsed.channels;\n cursors = parsed.cursors;\n } catch (error) {\n return (async function* () {\n throw new GraffitiErrorCursorExpired(\"Invalid cursor\");\n })();\n }\n return this.discoverMeta<{}>(channels, {}, cursors, session);\n };\n\n async announceObject(\n object: GraffitiObjectBase,\n tags: Uint8Array[],\n allowedTickets: Uint8Array[] | undefined,\n storageBucketKey: string,\n session: GraffitiSession,\n priorAnnouncements?: MessageMetadataAnnouncements,\n ): Promise<void> {\n const resolvedSession = this.sessions.resolveSession(session);\n\n const metadataBase: MessageMetadataBase = {\n [MESSAGE_DATA_STORAGE_BUCKET_KEY]: storageBucketKey,\n };\n\n const announcements: MessageMetadataAnnouncements = [];\n const allowed = object.allowed;\n if (Array.isArray(allowed)) {\n if (!allowedTickets || allowedTickets.length !== allowed.length) {\n throw new Error(\n \"If allowed actors are specified, there must be a corresponding ticket for each allowed actor\",\n );\n }\n\n // Send the object to each allowed recipient's personal inbox\n const results = await Promise.allSettled(\n allowed.map(async (recipient, recipientIndex) => {\n // Mask the object to not include any channels\n // and only include the recipient actor on the allowed list\n const copy = JSON.parse(JSON.stringify(object)) as GraffitiObjectBase;\n const masked = maskGraffitiObject(copy, [], recipient);\n\n // Get the recipient's inbox\n const actorDocument = await this.dids.resolve(recipient);\n const personalInbox = actorDocument.service?.find(\n (service) =>\n service.type === DID_SERVICE_TYPE_GRAFFITI_INBOX &&\n service.id === DID_SERVICE_ID_GRAFFITI_PERSONAL_INBOX,\n );\n if (!personalInbox) {\n throw new Error(\n `Recipient ${recipient} does not have a personal inbox`,\n );\n }\n if (typeof personalInbox.serviceEndpoint !== \"string\") {\n throw new Error(\n `Recipient ${recipient} does not have a valid personal inbox endpoint`,\n );\n }\n\n const tombstonedMessageId = priorAnnouncements\n ? priorAnnouncements.find(\n (a) => a[MESSAGE_DATA_ANNOUNCEMENT_ACTOR_KEY] === recipient,\n )?.[MESSAGE_DATA_ANNOUNCEMENT_MESSAGE_ID_KEY]\n : undefined;\n\n // Announce to the inbox\n const privateMetadata: MessageMetadata = {\n ...metadataBase,\n ...(tombstonedMessageId\n ? {\n [MESSAGE_DATA_TOMBSTONED_MESSAGE_ID_KEY]: tombstonedMessageId,\n }\n : {}),\n [MESSAGE_DATA_ALLOWED_TICKET_KEY]: allowedTickets[recipientIndex],\n [MESSAGE_DATA_ALLOWED_TICKET_INDEX_KEY]: recipientIndex,\n };\n const messageId = await this.inboxes.send(\n personalInbox.serviceEndpoint,\n {\n [MESSAGE_TAGS_KEY]: tags,\n [MESSAGE_OBJECT_KEY]: masked,\n [MESSAGE_METADATA_KEY]: dagCborEncode(privateMetadata),\n },\n );\n\n announcements.push({\n [MESSAGE_DATA_ANNOUNCEMENT_MESSAGE_ID_KEY]: messageId,\n [MESSAGE_DATA_ANNOUNCEMENT_ACTOR_KEY]: recipient,\n });\n }),\n );\n\n for (const [index, result] of results.entries()) {\n if (result.status === \"rejected\") {\n const recipient = allowed[index];\n console.error(\"Error sending to recipient:\", recipient);\n console.error(result.reason);\n }\n }\n } else {\n // Mask the object to not include any channels\n // and only include the recipient actor on the allowed list\n const copy = JSON.parse(JSON.stringify(object)) as GraffitiObjectBase;\n const masked = maskGraffitiObject(copy, []);\n\n // Send the object to each shared inbox\n const sharedInboxes = resolvedSession.sharedInboxes;\n const results = await Promise.allSettled(\n sharedInboxes.map(async (inbox) => {\n const tombstonedMessageId = priorAnnouncements\n ? priorAnnouncements.find(\n (a) =>\n a[MESSAGE_DATA_ANNOUNCEMENT_ENDPOINT_KEY] ===\n inbox.serviceEndpoint,\n )?.[MESSAGE_DATA_ANNOUNCEMENT_MESSAGE_ID_KEY]\n : undefined;\n const metadata: MessageMetadata = {\n ...metadataBase,\n ...(tombstonedMessageId\n ? {\n [MESSAGE_DATA_TOMBSTONED_MESSAGE_ID_KEY]: tombstonedMessageId,\n }\n : {}),\n };\n\n const messageId = await this.inboxes.send(inbox.serviceEndpoint, {\n ...(tombstonedMessageId\n ? {\n [MESSAGE_DATA_TOMBSTONED_MESSAGE_ID_KEY]: tombstonedMessageId,\n }\n : {}),\n [MESSAGE_TAGS_KEY]: tags,\n [MESSAGE_OBJECT_KEY]: masked,\n [MESSAGE_METADATA_KEY]: dagCborEncode(metadata),\n });\n announcements.push({\n [MESSAGE_DATA_ANNOUNCEMENT_MESSAGE_ID_KEY]: messageId,\n [MESSAGE_DATA_ANNOUNCEMENT_ENDPOINT_KEY]: inbox.serviceEndpoint,\n });\n }),\n );\n\n for (const [index, result] of results.entries()) {\n if (result.status === \"rejected\") {\n const inbox = sharedInboxes[index];\n console.error(\"Error sending to inbox:\", inbox);\n console.error(result.reason);\n }\n }\n }\n\n // Send the complete object to my own personal inbox\n // along with its key and allowed tickets\n const tombstonedMessageId = priorAnnouncements\n ? priorAnnouncements.find(\n (a) => a[MESSAGE_DATA_ANNOUNCEMENT_ACTOR_KEY] === session.actor,\n )?.[MESSAGE_DATA_ANNOUNCEMENT_MESSAGE_ID_KEY]\n : undefined;\n const selfMetadata: MessageMetadata = {\n ...metadataBase,\n ...(allowedTickets\n ? {\n [MESSAGE_DATA_ALLOWED_TICKETS_KEY]: allowedTickets,\n }\n : {}),\n ...(tombstonedMessageId\n ? {\n [MESSAGE_DATA_TOMBSTONED_MESSAGE_ID_KEY]: tombstonedMessageId,\n }\n : {}),\n [MESSAGE_DATA_ANNOUNCEMENTS_KEY]: announcements,\n };\n await this.inboxes.send(resolvedSession.personalInbox.serviceEndpoint, {\n [MESSAGE_TAGS_KEY]: tags,\n [MESSAGE_OBJECT_KEY]: object,\n [MESSAGE_METADATA_KEY]: dagCborEncode(selfMetadata),\n });\n }\n\n protected async *querySingleEndpoint<Schema extends JSONSchema>(\n inboxEndpoint: string,\n queryArguments:\n | {\n tags: Uint8Array[];\n objectSchema: Schema;\n }\n | {\n cursor: string;\n },\n inboxToken?: string | null,\n recipient?: string | null,\n ): SingleEndpointQueryIterator<Schema> {\n const iterator: MessageStream<Schema> =\n \"tags\" in queryArguments\n ? this.inboxes.query<Schema>(\n inboxEndpoint,\n queryArguments.tags,\n queryArguments.objectSchema,\n inboxToken,\n )\n : (this.inboxes.continueQuery(\n inboxEndpoint,\n queryArguments.cursor,\n inboxToken,\n ) as unknown as MessageStream<Schema>);\n\n while (true) {\n const itResult = await iterator.next();\n // Return the cursor if done\n if (itResult.done) return itResult.value;\n\n const result = itResult.value;\n\n const label = result.l;\n if (label !== MESSAGE_LABEL_VALID && label !== MESSAGE_LABEL_UNLABELED)\n continue;\n\n const messageId = result.id;\n const { o: object, m: metadataBytes, t: receivedTags } = result.m;\n\n let metadata: MessageMetadata;\n try {\n const metadataRaw = dagCborDecode(metadataBytes);\n metadata = MessageMetadataSchema.parse(metadataRaw);\n } catch (e) {\n this.inboxes.label(\n inboxEndpoint,\n messageId,\n MESSAGE_LABEL_INVALID,\n inboxToken,\n );\n continue;\n }\n\n const {\n [MESSAGE_DATA_STORAGE_BUCKET_KEY]: storageBucketKey,\n [MESSAGE_DATA_TOMBSTONED_MESSAGE_ID_KEY]: tombstonedMessageId,\n } = metadata;\n\n const allowedTickets =\n MESSAGE_DATA_ALLOWED_TICKETS_KEY in metadata\n ? metadata[MESSAGE_DATA_ALLOWED_TICKETS_KEY]\n : undefined;\n const announcements =\n MESSAGE_DATA_ANNOUNCEMENTS_KEY in metadata\n ? metadata[MESSAGE_DATA_ANNOUNCEMENTS_KEY]\n : undefined;\n\n if (label === MESSAGE_LABEL_VALID) {\n yield {\n messageId,\n object,\n storageBucketKey,\n allowedTickets,\n tags: receivedTags,\n announcements,\n };\n continue;\n }\n\n // Try to validate the object\n let validationError: unknown | undefined = undefined;\n try {\n const actor = object.actor;\n const actorDocument = await this.dids.resolve(actor);\n const storageBucketService = actorDocument?.service?.find(\n (service) =>\n service.id === DID_SERVICE_ID_GRAFFITI_STORAGE_BUCKET &&\n service.type === DID_SERVICE_TYPE_GRAFFITI_STORAGE_BUCKET,\n );\n if (!storageBucketService) {\n throw new GraffitiErrorNotFound(\n `Actor ${actor} has no storage bucket service`,\n );\n }\n if (typeof storageBucketService.serviceEndpoint !== \"string\") {\n throw new GraffitiErrorNotFound(\n `Actor ${actor} does not have a valid storage bucket endpoint`,\n );\n }\n const storageBucketEndpoint = storageBucketService.serviceEndpoint;\n\n const objectBytes = await this.storageBuckets.get(\n storageBucketEndpoint,\n storageBucketKey,\n MAX_OBJECT_SIZE_BYTES,\n );\n\n if (MESSAGE_DATA_ALLOWED_TICKET_KEY in metadata && !recipient) {\n throw new GraffitiErrorForbidden(\n `Recipient is required when allowed ticket is present`,\n );\n }\n const privateObjectInfo = allowedTickets\n ? { allowedTickets }\n : MESSAGE_DATA_ALLOWED_TICKET_KEY in metadata\n ? {\n recipient: recipient ?? \"null\",\n allowedTicket: metadata[MESSAGE_DATA_ALLOWED_TICKET_KEY],\n allowedIndex: metadata[MESSAGE_DATA_ALLOWED_TICKET_INDEX_KEY],\n }\n : undefined;\n\n await this.objectEncoding.validate(\n object,\n receivedTags,\n objectBytes,\n privateObjectInfo,\n );\n } catch (e) {\n validationError = e;\n }\n\n if (tombstonedMessageId) {\n if (validationError instanceof GraffitiErrorNotFound) {\n // Not found == The tombstone is correct\n this.inboxes\n // Get the referenced message\n .get(inboxEndpoint, tombstonedMessageId, inboxToken)\n .then((result) => {\n // Make sure that it actually references the object being deleted\n if (\n result &&\n result[LABELED_MESSAGE_MESSAGE_KEY][MESSAGE_OBJECT_KEY].url ===\n object.url\n ) {\n // If it does, label the message as trash, it is no longer needed\n this.inboxes.label(\n inboxEndpoint,\n tombstonedMessageId,\n MESSAGE_LABEL_TRASH,\n inboxToken,\n );\n }\n\n // Then, label the tombstone message as trash\n this.inboxes.label(\n inboxEndpoint,\n messageId,\n MESSAGE_LABEL_TRASH,\n inboxToken,\n );\n });\n\n yield {\n messageId,\n tombstone: true,\n object,\n storageBucketKey,\n allowedTickets,\n tags: receivedTags,\n announcements,\n };\n } else {\n console.error(\"Recieved an incorrect object\");\n console.error(validationError);\n this.inboxes.label(\n inboxEndpoint,\n messageId,\n MESSAGE_LABEL_INVALID,\n inboxToken,\n );\n }\n } else {\n if (validationError === undefined) {\n this.inboxes.label(\n inboxEndpoint,\n messageId,\n MESSAGE_LABEL_VALID,\n inboxToken,\n );\n yield {\n messageId,\n object,\n storageBucketKey,\n tags: receivedTags,\n allowedTickets,\n announcements,\n };\n } else {\n console.error(\"Recieved an incorrect object\");\n console.error(validationError);\n this.inboxes.label(\n inboxEndpoint,\n messageId,\n MESSAGE_LABEL_INVALID,\n inboxToken,\n );\n }\n }\n }\n }\n}\n\nconst MEDIA_OBJECT_SCHEMA = {\n properties: {\n value: {\n properties: {\n type: { type: \"string\" },\n size: { type: \"number\" },\n key: { type: \"string\" },\n },\n required: [\"type\", \"size\", \"key\"],\n },\n },\n} as const satisfies JSONSchema;\n\nconst CursorSchema = strictObject({\n cursors: record(url(), string()),\n channels: array(string()),\n});\n\ninterface SingleEndpointQueryResult<Schema extends JSONSchema> {\n messageId: string;\n object: GraffitiObject<Schema>;\n storageBucketKey: string;\n tags: Uint8Array[];\n allowedTickets: Uint8Array[] | undefined;\n tombstone?: boolean;\n announcements?: MessageMetadataAnnouncements | undefined;\n}\ninterface SingleEndpointQueryIterator<\n Schema extends JSONSchema,\n> extends AsyncGenerator<SingleEndpointQueryResult<Schema>, string> {}\ntype IndexedSingleEndpointQueryResult<Schema extends JSONSchema> =\n | {\n index: number;\n error?: undefined;\n result: IteratorResult<SingleEndpointQueryResult<Schema>, string>;\n }\n | {\n index: number;\n error: Error;\n result?: undefined;\n };\n\nasync function indexedSingleEndpointQueryNext<Schema extends JSONSchema>(\n it: SingleEndpointQueryIterator<Schema>,\n index: number,\n): Promise<IndexedSingleEndpointQueryResult<Schema>> {\n try {\n return {\n index: index,\n result: await it.next(),\n };\n } catch (e) {\n if (\n e instanceof GraffitiErrorCursorExpired ||\n e instanceof GraffitiErrorInvalidSchema\n ) {\n // Propogate these errors to the root\n throw e;\n }\n // Otherwise, silently pass them in the stream\n return {\n index,\n error: e instanceof Error ? e : new Error(String(e)),\n };\n }\n}\n", "import { Graffiti, GraffitiRuntimeTypes } from \"@graffiti-garden/api\";\nimport {\n GraffitiDecentralized as GraffitiDecentralized_,\n type GraffitiDecentralizedOptions,\n} from \"./3-protocol/4-graffiti\";\n\n/**\n * A decentralized implementation of the\n * [Graffiti API](https://api.graffiti.garden/classes/Graffiti.html).\n */\nexport class GraffitiDecentralized extends GraffitiRuntimeTypes {\n constructor(options?: GraffitiDecentralizedOptions) {\n const graffiti: Graffiti = new GraffitiDecentralized_(options);\n super(graffiti);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["require_browser_ponyfill", "__commonJSMin", "exports", "module", "__global__", "__globalThis__", "F", "globalThis", "irrelevant", "g", "support", "isDataView", "obj", "viewClasses", "isArrayBufferView", "normalizeName", "name", "normalizeValue", "value", "iteratorFor", "items", "iterator", "Headers", "headers", "header", "oldValue", "callback", "thisArg", "consumed", "body", "fileReaderReady", "reader", "resolve", "reject", "readBlobAsArrayBuffer", "blob", "promise", "readBlobAsText", "match", "encoding", "readArrayBufferAsText", "buf", "view", "chars", "i", "bufferClone", "Body", "rejected", "isConsumed", "decode", "methods", "normalizeMethod", "method", "upcased", "Request", "input", "options", "ctrl", "reParamSearch", "reQueryString", "form", "bytes", "split", "parseHeaders", "rawHeaders", "preProcessedHeaders", "line", "parts", "key", "error", "Response", "bodyInit", "response", "redirectStatuses", "url", "status", "message", "fetch", "init", "request", "xhr", "abortXhr", "fixUrl", "names", "ctx", "GraffitiObjectJSONSchema", "GraffitiPostObjectJSONSchema", "GraffitiErrorForbidden", "_GraffitiErrorForbidden", "message", "GraffitiErrorNotFound", "_GraffitiErrorNotFound", "GraffitiErrorInvalidSchema", "_GraffitiErrorInvalidSchema", "GraffitiErrorSchemaMismatch", "_GraffitiErrorSchemaMismatch", "GraffitiErrorTooLarge", "_GraffitiErrorTooLarge", "GraffitiErrorNotAcceptable", "_GraffitiErrorNotAcceptable", "GraffitiErrorCursorExpired", "_GraffitiErrorCursorExpired", "unpackObjectUrl", "url", "maskGraffitiObject", "object", "channels", "actor", "allowedMasked", "channelsMasked", "c", "isMediaAcceptable", "mediaType", "acceptableMediaTypes", "type", "subtype", "acceptable", "accType", "accSubtype", "ajv", "compileGraffitiObjectSchema", "schema", "Ajv", "error", "GraffitiErrorInvalidSchema", "NEVER", "$constructor", "name", "initializer", "params", "init", "inst", "def", "_", "proto", "keys", "i", "k", "Parent", "Definition", "_a", "fn", "$ZodAsyncError", "globalConfig", "config", "newConfig", "getEnumValues", "entries", "numericValues", "v", "k", "_", "jsonStringifyReplacer", "_", "value", "cached", "getter", "cleanRegex", "source", "start", "end", "EVALUATING", "defineLazy", "object", "key", "getter", "value", "v", "assignProp", "target", "prop", "value", "mergeDefs", "defs", "mergedDescriptors", "def", "descriptors", "captureStackTrace", "_args", "isObject", "data", "allowsEval", "cached", "F", "isPlainObject", "o", "ctor", "prot", "propertyKeyTypes", "escapeRegex", "str", "clone", "inst", "def", "params", "cl", "normalizeParams", "_params", "optionalKeys", "shape", "k", "NUMBER_FORMAT_RANGES", "extend", "schema", "shape", "isPlainObject", "checks", "existingShape", "key", "def", "mergeDefs", "_shape", "assignProp", "clone", "aborted", "x", "startIndex", "i", "prefixIssues", "path", "issues", "iss", "_a", "unwrapMessage", "message", "finalizeIssue", "ctx", "config", "full", "issue", "args", "iss", "input", "inst", "initializer", "inst", "def", "jsonStringifyReplacer", "$ZodError", "$constructor", "$ZodRealError", "_parse", "_Err", "schema", "value", "_ctx", "_params", "ctx", "result", "$ZodAsyncError", "e", "iss", "finalizeIssue", "config", "captureStackTrace", "parse", "$ZodRealError", "_parseAsync", "params", "parseAsync", "_safeParse", "$ZodError", "safeParse", "_safeParseAsync", "safeParseAsync", "dateSource", "date", "string", "params", "regex", "integer", "number", "boolean", "_undefined", "$ZodCheck", "$constructor", "inst", "def", "_a", "numericOriginMap", "$ZodCheckGreaterThan", "$constructor", "inst", "def", "$ZodCheck", "origin", "numericOriginMap", "bag", "curr", "payload", "$ZodCheckNumberFormat", "$constructor", "inst", "def", "$ZodCheck", "isInt", "origin", "minimum", "maximum", "NUMBER_FORMAT_RANGES", "bag", "integer", "payload", "input", "$ZodCheckStringFormat", "$constructor", "inst", "def", "_a", "_b", "$ZodCheck", "bag", "payload", "version", "$ZodType", "$constructor", "inst", "def", "_a", "version", "checks", "ch", "fn", "runChecks", "payload", "ctx", "isAborted", "aborted", "asyncResult", "currLen", "_", "$ZodAsyncError", "handleCanaryResult", "canary", "checkResult", "result", "defineLazy", "value", "r", "safeParse", "safeParseAsync", "$ZodString", "string", "$ZodStringFormat", "$ZodCheckStringFormat", "$ZodURL", "$constructor", "inst", "def", "$ZodStringFormat", "payload", "trimmed", "url", "$ZodNumber", "$constructor", "inst", "def", "$ZodType", "number", "payload", "_ctx", "input", "received", "$ZodNumberFormat", "$ZodCheckNumberFormat", "$ZodBoolean", "boolean", "$ZodUndefined", "$constructor", "inst", "def", "$ZodType", "_undefined", "payload", "_ctx", "input", "$ZodUnknown", "$constructor", "inst", "def", "$ZodType", "payload", "$ZodNever", "_ctx", "handleArrayResult", "result", "final", "index", "prefixIssues", "$ZodArray", "$constructor", "inst", "def", "$ZodType", "payload", "ctx", "input", "proms", "i", "item", "handlePropertyResult", "key", "isOptionalOut", "normalizeDef", "keys", "k", "okeys", "optionalKeys", "handleCatchall", "unrecognized", "keySet", "_catchall", "t", "r", "$ZodObject", "sh", "newSh", "_normalized", "cached", "defineLazy", "shape", "propValues", "field", "v", "isObject", "catchall", "value", "el", "handleUnionResults", "results", "final", "inst", "ctx", "result", "nonaborted", "r", "aborted", "iss", "finalizeIssue", "config", "$ZodUnion", "$constructor", "def", "$ZodType", "defineLazy", "option", "patterns", "o", "p", "cleanRegex", "single", "first", "payload", "async", "$ZodIntersection", "$constructor", "inst", "def", "$ZodType", "payload", "ctx", "input", "left", "right", "handleIntersectionResults", "mergeValues", "a", "b", "isPlainObject", "bKeys", "sharedKeys", "key", "newObj", "sharedValue", "newArray", "index", "itemA", "itemB", "result", "unrecKeys", "unrecIssue", "iss", "k", "bothKeys", "f", "aborted", "merged", "$ZodTuple", "items", "proms", "reversedIndex", "item", "optStart", "tooBig", "tooSmall", "i", "handleTupleResult", "rest", "el", "final", "prefixIssues", "$ZodRecord", "values", "recordKeys", "unrecognized", "keyResult", "number", "retryResult", "finalizeIssue", "config", "$ZodEnum", "$constructor", "inst", "def", "$ZodType", "values", "getEnumValues", "valuesSet", "k", "propertyKeyTypes", "escapeRegex", "payload", "_ctx", "input", "handleOptionalResult", "result", "input", "$ZodOptional", "$constructor", "inst", "def", "$ZodType", "defineLazy", "pattern", "cleanRegex", "payload", "ctx", "r", "$ZodNullable", "$constructor", "inst", "def", "$ZodType", "defineLazy", "pattern", "cleanRegex", "payload", "ctx", "$ZodCustom", "$constructor", "inst", "def", "$ZodCheck", "$ZodType", "payload", "_", "input", "r", "handleRefineResult", "result", "_iss", "issue", "_a", "$ZodRegistry", "schema", "_meta", "meta", "p", "pm", "f", "registry", "_a", "globalRegistry", "_string", "Class", "params", "normalizeParams", "_url", "Class", "params", "normalizeParams", "_number", "Class", "params", "normalizeParams", "_int", "Class", "params", "normalizeParams", "_boolean", "Class", "params", "normalizeParams", "_undefined", "Class", "params", "normalizeParams", "_unknown", "Class", "_never", "params", "normalizeParams", "_gte", "value", "params", "$ZodCheckGreaterThan", "normalizeParams", "_nonnegative", "params", "_gte", "_custom", "Class", "fn", "_params", "norm", "normalizeParams", "ZodMiniType", "$constructor", "inst", "def", "$ZodType", "data", "params", "parse", "safeParse", "parseAsync", "safeParseAsync", "checks", "ch", "_def", "clone", "reg", "meta", "fn", "ZodMiniString", "$ZodString", "string", "_string", "ZodMiniStringFormat", "$ZodStringFormat", "ZodMiniURL", "$constructor", "inst", "def", "$ZodURL", "ZodMiniStringFormat", "url", "params", "_url", "ZodMiniNumber", "$constructor", "inst", "def", "$ZodNumber", "ZodMiniType", "number", "params", "_number", "ZodMiniNumberFormat", "$ZodNumberFormat", "int", "_int", "ZodMiniBoolean", "$constructor", "inst", "def", "$ZodBoolean", "ZodMiniType", "boolean", "params", "_boolean", "ZodMiniUndefined", "$constructor", "inst", "def", "$ZodUndefined", "ZodMiniType", "_undefined", "params", "ZodMiniUnknown", "$constructor", "inst", "def", "$ZodUnknown", "ZodMiniType", "unknown", "_unknown", "ZodMiniNever", "$ZodNever", "never", "params", "_never", "ZodMiniArray", "$constructor", "inst", "def", "$ZodArray", "ZodMiniType", "array", "element", "params", "normalizeParams", "ZodMiniObject", "$constructor", "inst", "def", "$ZodObject", "ZodMiniType", "defineLazy", "object", "shape", "params", "normalizeParams", "strictObject", "never", "looseObject", "unknown", "extend", "schema", "ZodMiniUnion", "$constructor", "inst", "def", "$ZodUnion", "ZodMiniType", "union", "options", "params", "normalizeParams", "ZodMiniIntersection", "$constructor", "inst", "def", "$ZodIntersection", "ZodMiniType", "intersection", "left", "right", "ZodMiniTuple", "$ZodTuple", "tuple", "items", "_paramsOrRest", "_params", "hasRest", "$ZodType", "params", "rest", "normalizeParams", "ZodMiniRecord", "$ZodRecord", "record", "keyType", "valueType", "ZodMiniEnum", "$constructor", "inst", "def", "$ZodEnum", "ZodMiniType", "_enum", "values", "params", "entries", "v", "normalizeParams", "ZodMiniOptional", "$constructor", "inst", "def", "$ZodOptional", "ZodMiniType", "optional", "innerType", "ZodMiniNullable", "$constructor", "inst", "def", "$ZodNullable", "ZodMiniType", "nullable", "innerType", "ZodMiniCustom", "$constructor", "inst", "def", "$ZodCustom", "ZodMiniType", "custom", "fn", "_params", "_custom", "ZodMiniCustom", "_instanceof", "cls", "params", "inst", "custom", "data", "payload", "GraffitiPostObjectSchema", "looseObject", "array", "string", "optional", "nullable", "url", "GraffitiObjectSchema", "extend", "GraffitiObjectUrlSchema", "union", "GraffitiSessionSchema", "GraffitiOptionalSessionSchema", "GraffitiPostMediaSchema", "_instanceof", "GraffitiMediaSchema", "GraffitiMediaAcceptSchema", "int", "_nonnegative", "wrapGraffitiStream", "stream", "next", "cursor", "continue_", "args", "typedArgs", "tuple", "GraffitiRuntimeTypes", "graffiti", "isBytes", "a", "anumber", "n", "title", "prefix", "abytes", "value", "length", "bytes", "len", "needsLen", "ofLen", "got", "ahash", "h", "randomBytes", "bytesLength", "cr", "objectTypeNames", "is", "value", "typeOf", "objectType", "getObjectType", "objectTypeName", "Type", "major", "name", "terminal", "typ", "a", "b", "Token", "type", "value", "encodedLength", "useBuffer", "textEncoder", "isBuffer", "buf", "asU8A", "fromString", "string", "utf8ToBytes", "fromArray", "arr", "slice", "bytes", "start", "end", "concat", "chunks", "length", "c", "out", "off", "b", "alloc", "size", "compare", "b1", "b2", "isBuffer", "i", "utf8ToBytes", "str", "out", "p", "c", "defaultChunkSize", "Bl", "chunkSize", "bytes", "topChunk", "chunkPos", "alloc", "reset", "byts", "chunk", "slice", "concat", "U8Bl", "dest", "decodeErrPrefix", "encodeErrPrefix", "uintMinorPrefixBytes", "assertEnoughData", "data", "pos", "need", "uintBoundaries", "readUint8", "data", "offset", "options", "assertEnoughData", "value", "decodeErrPrefix", "readUint16", "readUint32", "readUint64", "hi", "lo", "decodeUint8", "pos", "_minor", "Token", "Type", "decodeUint16", "decodeUint32", "decodeUint64", "encodeUint", "writer", "token", "encodeUintValue", "major", "uint", "nuint", "buint", "set", "tok1", "tok2", "decodeNegint8", "data", "pos", "_minor", "options", "Token", "Type", "readUint8", "decodeNegint16", "readUint16", "decodeNegint32", "readUint32", "neg1b", "pos1b", "decodeNegint64", "int", "readUint64", "value", "decodeErrPrefix", "encodeNegint", "writer", "token", "negint", "unsigned", "encodeUintValue", "uintBoundaries", "tok1", "tok2", "toToken", "data", "pos", "prefix", "length", "assertEnoughData", "buf", "slice", "Token", "Type", "decodeBytesCompact", "minor", "_options", "decodeBytes8", "_minor", "options", "readUint8", "decodeBytes16", "readUint16", "decodeBytes32", "readUint32", "decodeBytes64", "l", "readUint64", "decodeErrPrefix", "tokenBytes", "token", "fromString", "encodeBytes", "writer", "bytes", "encodeUintValue", "tok1", "tok2", "compareBytes", "b1", "b2", "compare", "textDecoder", "ASCII_THRESHOLD", "toStr", "bytes", "start", "end", "str", "c", "toToken", "data", "pos", "prefix", "length", "options", "totLength", "assertEnoughData", "tok", "Token", "Type", "slice", "decodeStringCompact", "minor", "decodeString8", "_minor", "readUint8", "decodeString16", "readUint16", "decodeString32", "readUint32", "decodeString64", "l", "readUint64", "decodeErrPrefix", "encodeString", "encodeBytes", "toToken", "_data", "_pos", "prefix", "length", "Token", "Type", "decodeArrayCompact", "data", "pos", "minor", "_options", "decodeArray8", "_minor", "options", "readUint8", "decodeArray16", "readUint16", "decodeArray32", "readUint32", "decodeArray64", "l", "readUint64", "decodeErrPrefix", "decodeArrayIndefinite", "encodeArray", "writer", "token", "encodeUintValue", "encodeUint", "toToken", "_data", "_pos", "prefix", "length", "Token", "Type", "decodeMapCompact", "data", "pos", "minor", "_options", "decodeMap8", "_minor", "options", "readUint8", "decodeMap16", "readUint16", "decodeMap32", "readUint32", "decodeMap64", "l", "readUint64", "decodeErrPrefix", "decodeMapIndefinite", "encodeMap", "writer", "token", "encodeUintValue", "encodeUint", "decodeTagCompact", "_data", "_pos", "minor", "_options", "Token", "Type", "decodeTag8", "data", "pos", "_minor", "options", "readUint8", "decodeTag16", "readUint16", "decodeTag32", "readUint32", "decodeTag64", "readUint64", "encodeTag", "writer", "token", "encodeUintValue", "encodeUint", "MINOR_FALSE", "MINOR_TRUE", "MINOR_NULL", "MINOR_UNDEFINED", "decodeUndefined", "_data", "_pos", "_minor", "options", "decodeErrPrefix", "Token", "Type", "decodeBreak", "createToken", "value", "bytes", "decodeFloat16", "data", "pos", "readFloat16", "decodeFloat32", "readFloat32", "decodeFloat64", "readFloat64", "encodeFloat", "writer", "token", "float", "decoded", "success", "encodeFloat16", "ui8a", "encodeFloat32", "encodeFloat64", "buffer", "dataView", "inp", "valu32", "exponent", "mantissa", "logicalExponent", "half", "exp", "mant", "val", "offset", "encodeUint", "invalidMinor", "data", "pos", "minor", "decodeErrPrefix", "errorer", "msg", "jump", "i", "decodeUint8", "decodeUint16", "decodeUint32", "decodeUint64", "decodeNegint8", "decodeNegint16", "decodeNegint32", "decodeNegint64", "decodeBytesCompact", "decodeBytes8", "decodeBytes16", "decodeBytes32", "decodeBytes64", "decodeStringCompact", "decodeString8", "decodeString16", "decodeString32", "decodeString64", "decodeArrayCompact", "decodeArray8", "decodeArray16", "decodeArray32", "decodeArray64", "decodeArrayIndefinite", "decodeMapCompact", "decodeMap8", "decodeMap16", "decodeMap32", "decodeMap64", "decodeMapIndefinite", "decodeTagCompact", "decodeTag8", "decodeTag16", "decodeTag32", "decodeTag64", "decodeUndefined", "decodeFloat16", "decodeFloat32", "decodeFloat64", "decodeBreak", "quick", "Token", "Type", "quickEncodeToken", "token", "fromArray", "defaultEncodeOptions", "mapSorter", "quickEncodeToken", "rfc8949EncodeOptions", "rfc8949MapSorter", "makeCborEncoders", "encoders", "Type", "encodeUint", "encodeNegint", "encodeBytes", "encodeString", "encodeArray", "encodeMap", "encodeTag", "encodeFloat", "cborEncoders", "defaultWriter", "Bl", "Ref", "_Ref", "obj", "parent", "p", "stack", "encodeErrPrefix", "simpleTokens", "Token", "typeEncoders", "_typ", "_options", "_refStack", "_obj", "options", "refStack", "entries", "e", "objectToTokens", "typ", "isMap", "keys", "maxLength", "skipUndefined", "i", "key", "value", "sortMapEntries", "is", "customTypeEncoder", "tokens", "typeEncoder", "e1", "e2", "keyToken1", "keyToken2", "major", "tcmp", "t1", "t2", "encodeRfc8949", "compare", "data", "encodeCustom", "tokensToEncoded", "writer", "token", "MAJOR_UINT", "MAJOR_NEGINT", "MAJOR_BYTES", "MAJOR_STRING", "MAJOR_ARRAY", "SIMPLE_FALSE", "MINOR_FALSE", "SIMPLE_TRUE", "MINOR_TRUE", "SIMPLE_NULL", "MINOR_NULL", "SIMPLE_UNDEFINED", "MINOR_UNDEFINED", "neg1b", "pos1b", "canDirectEncode", "directEncode", "customEncoder", "encodeUintValue", "bytes", "fromString", "elem", "destination", "hasDest", "writeTo", "U8Bl", "quickBytes", "encoder", "size", "asU8A", "encode", "defaultDecodeOptions", "Tokeniser", "data", "options", "byt", "token", "quick", "decoder", "jump", "decodeErrPrefix", "minor", "DONE", "BREAK", "tokenToArray", "tokeniser", "arr", "i", "value", "tokensToObject", "tokenToMap", "useMaps", "rejectDuplicateMapKeys", "obj", "m", "key", "Type", "tagged", "decodeFirst", "decoded", "decode", "remainder", "empty", "equals", "aa", "bb", "ii", "coerce", "o", "base", "ALPHABET", "name", "BASE_MAP", "j", "i", "x", "xc", "BASE", "LEADER", "FACTOR", "iFACTOR", "encode", "source", "zeroes", "length", "pbegin", "pend", "size", "b58", "carry", "it1", "it2", "str", "decodeUnsafe", "psz", "b256", "it3", "it4", "vch", "decode", "string", "buffer", "src", "_brrp__multiformats_scope_baseX", "base_x_default", "Encoder", "name", "prefix", "baseEncode", "bytes", "Decoder", "baseDecode", "prefixCodePoint", "text", "decoder", "or", "ComposedDecoder", "decoders", "input", "left", "right", "Codec", "from", "encode", "decode", "baseX", "alphabet", "base_x_default", "coerce", "string", "alphabetIdx", "bitsPerChar", "end", "out", "bits", "buffer", "written", "i", "value", "data", "pad", "mask", "createAlphabetIdx", "rfc4648", "base32", "rfc4648", "base32upper", "base32pad", "base32padupper", "base32hex", "base32hexupper", "base32hexpad", "base32hexpadupper", "base32z", "base36", "baseX", "base36upper", "base58btc", "baseX", "base58flickr", "encode_1", "encode", "MSB", "REST", "MSBALL", "INT", "num", "out", "offset", "oldOffset", "decode", "read", "MSB$1", "REST$1", "buf", "res", "shift", "counter", "b", "l", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "length", "value", "varint", "_brrp_varint", "varint_default", "decode", "data", "offset", "varint_default", "encodeTo", "int", "target", "encodingLength", "create", "code", "digest", "size", "sizeOffset", "encodingLength", "digestOffset", "bytes", "encodeTo", "Digest", "decode", "multihash", "coerce", "equals", "a", "b", "data", "format", "link", "base", "bytes", "version", "toStringV0", "baseCache", "base58btc", "toStringV1", "base32", "cache", "baseCache", "cid", "CID", "_CID", "version", "code", "multihash", "bytes", "DAG_PB_CODE", "SHA_256_CODE", "digest", "create", "other", "self", "unknown", "equals", "base", "format", "input", "value", "encodeCID", "cidSymbol", "decode", "remainder", "specs", "prefixSize", "multihashBytes", "coerce", "digestBytes", "Digest", "initialBytes", "offset", "next", "i", "length", "codec", "multihashCode", "digestSize", "size", "multihashSize", "source", "prefix", "parseCIDtoBytes", "decoder", "base58btc", "base32", "base36", "toStringV0", "toStringV1", "codeOffset", "encodingLength", "hashOffset", "encodeTo", "CID_CBOR_TAG", "toByteView", "buf", "cidEncoder", "obj", "cid", "CID", "bytes", "Token", "Type", "undefinedEncoder", "numberEncoder", "num", "mapEncoder", "map", "key", "_encodeOptions", "encodeOptions", "cidDecoder", "_decodeOptions", "decodeOptions", "encode", "node", "_encodeOptions", "decode", "data", "toByteView", "_decodeOptions", "inMemoryCache", "cache", "Map", "parsed", "resolve", "_temp2", "_result", "_exit", "cached", "get", "didUrl", "undefined", "result", "_result$didResolution", "didResolutionMetadata", "error", "set", "_temp", "params", "_await$resolve", "e", "noCache", "PCT_ENCODED", "ID_CHAR", "METHOD", "METHOD_ID", "PARAM_CHAR", "PARAM", "PARAMS", "PATH", "QUERY", "FRAGMENT", "DID_MATCHER", "RegExp", "parse", "sections", "match", "parts", "did", "method", "id", "slice", "split", "p", "kv", "path", "query", "fragment", "EMPTY_RESULT", "didDocument", "didDocumentMetadata", "wrapLegacyResolver", "resolver", "_catch", "doc", "contentType", "message", "toString", "Resolver", "constructor", "registry", "options", "legacyResolvers", "Object", "keys", "map", "methodName", "_this", "bind", "fn", "thisArg", "toString", "getPrototypeOf", "iterator", "toStringTag", "kindOf", "cache", "thing", "str", "kindOfTest", "type", "typeOfTest", "isArray", "isUndefined", "isBuffer", "val", "isFunction", "isArrayBuffer", "isArrayBufferView", "result", "isString", "isNumber", "isObject", "isBoolean", "isPlainObject", "prototype", "isEmptyObject", "isDate", "isFile", "isBlob", "isFileList", "isStream", "isFormData", "kind", "isURLSearchParams", "isReadableStream", "isRequest", "isResponse", "isHeaders", "trim", "forEach", "obj", "fn", "allOwnKeys", "i", "l", "keys", "len", "key", "findKey", "_key", "_global", "isContextDefined", "context", "merge", "caseless", "skipUndefined", "assignValue", "targetKey", "extend", "a", "b", "thisArg", "bind", "stripBOM", "content", "inherits", "constructor", "superConstructor", "props", "descriptors", "toFlatObject", "sourceObj", "destObj", "filter", "propFilter", "prop", "merged", "endsWith", "searchString", "position", "lastIndex", "toArray", "arr", "isTypedArray", "TypedArray", "forEachEntry", "_iterator", "pair", "matchAll", "regExp", "matches", "isHTMLForm", "toCamelCase", "m", "p1", "p2", "hasOwnProperty", "isRegExp", "reduceDescriptors", "reducer", "reducedDescriptors", "descriptor", "name", "ret", "freezeMethods", "value", "toObjectSet", "arrayOrString", "delimiter", "define", "noop", "toFiniteNumber", "defaultValue", "isSpecCompliantForm", "toJSONObject", "stack", "visit", "source", "target", "reducedValue", "isAsyncFn", "isThenable", "_setImmediate", "setImmediateSupported", "postMessageSupported", "token", "callbacks", "data", "cb", "asap", "isIterable", "utils_default", "AxiosError", "message", "code", "config", "request", "response", "utils_default", "prototype", "descriptors", "error", "customProps", "axiosError", "obj", "prop", "msg", "errCode", "AxiosError_default", "null_default", "isVisitable", "thing", "utils_default", "removeBrackets", "key", "renderKey", "path", "dots", "token", "isFlatArray", "arr", "predicates", "prop", "toFormData", "obj", "formData", "options", "null_default", "option", "source", "metaTokens", "visitor", "defaultVisitor", "indexes", "useBlob", "convertValue", "value", "AxiosError_default", "el", "index", "stack", "exposedHelpers", "build", "toFormData_default", "encode", "str", "charMap", "match", "AxiosURLSearchParams", "params", "options", "toFormData_default", "prototype", "name", "value", "encoder", "_encode", "pair", "AxiosURLSearchParams_default", "encode", "val", "buildURL", "url", "params", "options", "_encode", "utils_default", "serializeFn", "serializedParams", "AxiosURLSearchParams_default", "hashmarkIndex", "InterceptorManager", "fulfilled", "rejected", "options", "id", "fn", "utils_default", "h", "InterceptorManager_default", "transitional_default", "URLSearchParams_default", "AxiosURLSearchParams_default", "FormData_default", "Blob_default", "browser_default", "URLSearchParams_default", "FormData_default", "Blob_default", "utils_exports", "__export", "hasBrowserEnv", "hasStandardBrowserEnv", "hasStandardBrowserWebWorkerEnv", "_navigator", "origin", "platform_default", "utils_exports", "browser_default", "toURLEncodedForm", "data", "options", "toFormData_default", "platform_default", "value", "key", "path", "helpers", "utils_default", "parsePropPath", "name", "utils_default", "match", "arrayToObject", "arr", "obj", "keys", "i", "len", "key", "formDataToJSON", "formData", "buildPath", "path", "value", "target", "index", "isNumericKey", "isLast", "formDataToJSON_default", "stringifySafely", "rawValue", "parser", "encoder", "utils_default", "e", "defaults", "transitional_default", "data", "headers", "contentType", "hasJSONContentType", "isObjectPayload", "formDataToJSON_default", "isFileList", "toURLEncodedForm", "_FormData", "toFormData_default", "transitional", "forcedJSONParsing", "JSONRequested", "strictJSONParsing", "AxiosError_default", "platform_default", "status", "method", "defaults_default", "ignoreDuplicateOf", "utils_default", "parseHeaders_default", "rawHeaders", "parsed", "key", "val", "i", "line", "$internals", "normalizeHeader", "header", "normalizeValue", "value", "utils_default", "parseTokens", "str", "tokens", "tokensRE", "match", "isValidHeaderName", "matchHeaderValue", "context", "filter", "isHeaderNameFilter", "formatHeader", "w", "char", "buildAccessors", "obj", "accessorName", "methodName", "arg1", "arg2", "arg3", "AxiosHeaders", "headers", "valueOrRewrite", "rewrite", "self", "setHeader", "_value", "_header", "_rewrite", "lHeader", "key", "setHeaders", "parseHeaders_default", "dest", "entry", "parser", "matcher", "deleted", "deleteHeader", "keys", "i", "format", "normalized", "targets", "asStrings", "thing", "first", "computed", "target", "accessors", "prototype", "defineAccessor", "mapped", "headerValue", "AxiosHeaders_default", "transformData", "fns", "response", "config", "defaults_default", "context", "headers", "AxiosHeaders_default", "data", "utils_default", "fn", "isCancel", "value", "CanceledError", "message", "config", "request", "AxiosError_default", "utils_default", "CanceledError_default", "settle", "resolve", "reject", "response", "validateStatus", "AxiosError_default", "parseProtocol", "url", "match", "speedometer", "samplesCount", "min", "bytes", "timestamps", "head", "tail", "firstSampleTS", "chunkLength", "now", "startedAt", "i", "bytesCount", "passed", "speedometer_default", "throttle", "fn", "freq", "timestamp", "threshold", "lastArgs", "timer", "invoke", "args", "now", "passed", "throttle_default", "progressEventReducer", "listener", "isDownloadStream", "freq", "bytesNotified", "_speedometer", "speedometer_default", "throttle_default", "e", "loaded", "total", "progressBytes", "rate", "inRange", "data", "progressEventDecorator", "throttled", "lengthComputable", "asyncDecorator", "fn", "args", "utils_default", "isURLSameOrigin_default", "platform_default", "origin", "isMSIE", "url", "cookies_default", "platform_default", "name", "value", "expires", "path", "domain", "secure", "sameSite", "cookie", "utils_default", "match", "isAbsoluteURL", "url", "combineURLs", "baseURL", "relativeURL", "buildFullPath", "baseURL", "requestedURL", "allowAbsoluteUrls", "isRelativeUrl", "isAbsoluteURL", "combineURLs", "headersToObject", "thing", "AxiosHeaders_default", "mergeConfig", "config1", "config2", "config", "getMergedValue", "target", "source", "prop", "caseless", "utils_default", "mergeDeepProperties", "a", "b", "valueFromConfig2", "defaultToConfig2", "mergeDirectKeys", "mergeMap", "merge", "configValue", "resolveConfig_default", "config", "newConfig", "mergeConfig", "data", "withXSRFToken", "xsrfHeaderName", "xsrfCookieName", "headers", "auth", "AxiosHeaders_default", "buildURL", "buildFullPath", "utils_default", "platform_default", "formHeaders", "allowedHeaders", "key", "val", "isURLSameOrigin_default", "xsrfValue", "cookies_default", "isXHRAdapterSupported", "xhr_default", "config", "resolve", "reject", "_config", "resolveConfig_default", "requestData", "requestHeaders", "AxiosHeaders_default", "responseType", "onUploadProgress", "onDownloadProgress", "onCanceled", "uploadThrottled", "downloadThrottled", "flushUpload", "flushDownload", "done", "request", "onloadend", "responseHeaders", "response", "settle", "value", "err", "AxiosError_default", "event", "msg", "timeoutErrorMessage", "transitional", "transitional_default", "utils_default", "val", "key", "progressEventReducer", "cancel", "CanceledError_default", "protocol", "parseProtocol", "platform_default", "composeSignals", "signals", "timeout", "length", "controller", "aborted", "onabort", "reason", "unsubscribe", "err", "AxiosError_default", "CanceledError_default", "timer", "signal", "utils_default", "composeSignals_default", "streamChunk", "chunk", "chunkSize", "len", "pos", "end", "readBytes", "iterable", "readStream", "stream", "reader", "done", "value", "trackStream", "onProgress", "onFinish", "iterator", "bytes", "_onFinish", "e", "controller", "loadedBytes", "err", "reason", "DEFAULT_CHUNK_SIZE", "isFunction", "utils_default", "globalFetchAPI", "Request", "Response", "ReadableStream", "TextEncoder", "test", "fn", "args", "factory", "env", "envFetch", "isFetchSupported", "isRequestSupported", "isResponseSupported", "isReadableStreamSupported", "encodeText", "encoder", "str", "supportsRequestStream", "duplexAccessed", "hasContentType", "platform_default", "supportsResponseStream", "resolvers", "res", "type", "config", "method", "AxiosError_default", "getBodyLength", "body", "resolveBodyLength", "headers", "length", "url", "data", "signal", "cancelToken", "timeout", "onDownloadProgress", "onUploadProgress", "responseType", "withCredentials", "fetchOptions", "resolveConfig_default", "_fetch", "composedSignal", "composeSignals_default", "request", "unsubscribe", "requestContentLength", "_request", "contentTypeHeader", "onProgress", "flush", "progressEventDecorator", "progressEventReducer", "asyncDecorator", "trackStream", "isCredentialsSupported", "resolvedOptions", "response", "isStreamResponse", "options", "prop", "responseContentLength", "responseData", "resolve", "reject", "settle", "AxiosHeaders_default", "err", "seedCache", "getFetch", "fetch", "seeds", "len", "i", "seed", "target", "map", "adapter", "knownAdapters", "null_default", "xhr_default", "getFetch", "utils_default", "fn", "value", "renderReason", "reason", "isResolvedHandle", "adapter", "getAdapter", "adapters", "config", "length", "nameOrAdapter", "rejectedReasons", "i", "id", "AxiosError_default", "reasons", "state", "adapters_default", "throwIfCancellationRequested", "config", "CanceledError_default", "dispatchRequest", "AxiosHeaders_default", "transformData", "adapters_default", "defaults_default", "response", "reason", "isCancel", "VERSION", "validators", "type", "i", "thing", "deprecatedWarnings", "validator", "version", "message", "formatMessage", "opt", "desc", "VERSION", "value", "opts", "AxiosError_default", "correctSpelling", "assertOptions", "options", "schema", "allowUnknown", "keys", "result", "validator_default", "validators", "validator_default", "Axios", "instanceConfig", "InterceptorManager_default", "configOrUrl", "config", "err", "dummy", "stack", "mergeConfig", "transitional", "paramsSerializer", "headers", "utils_default", "contextHeaders", "method", "AxiosHeaders_default", "requestInterceptorChain", "synchronousRequestInterceptors", "interceptor", "responseInterceptorChain", "promise", "i", "len", "chain", "dispatchRequest", "newConfig", "onFulfilled", "onRejected", "error", "fullPath", "buildFullPath", "buildURL", "url", "generateHTTPMethod", "isForm", "data", "Axios_default", "CancelToken", "_CancelToken", "executor", "resolvePromise", "resolve", "token", "cancel", "onfulfilled", "_resolve", "promise", "message", "config", "request", "CanceledError_default", "listener", "index", "controller", "abort", "err", "c", "CancelToken_default", "spread", "callback", "arr", "isAxiosError", "payload", "utils_default", "HttpStatusCode", "key", "value", "HttpStatusCode_default", "createInstance", "defaultConfig", "context", "Axios_default", "instance", "bind", "utils_default", "instanceConfig", "mergeConfig", "axios", "defaults_default", "CanceledError_default", "CancelToken_default", "isCancel", "VERSION", "toFormData_default", "AxiosError_default", "promises", "spread", "isAxiosError", "AxiosHeaders_default", "thing", "formDataToJSON_default", "adapters_default", "HttpStatusCode_default", "axios_default", "Axios", "AxiosError", "CanceledError", "isCancel", "CancelToken", "VERSION", "all", "Cancel", "isAxiosError", "spread", "toFormData", "AxiosHeaders", "HttpStatusCode", "formToJSON", "getAdapter", "mergeConfig", "axios_default", "pact", "state", "value", "s", "_Pact", "then", "onFulfilled", "onRejected", "result", "callback", "_settle", "v", "e", "_this", "getResolver", "plc", "did", "parsed", "_temp4", "contentType", "didDocument", "err", "didDocumentMetadata", "didResolutionMetadata", "error", "message", "_interrupt", "url", "encodeURIComponent", "_temp3", "_do", "_temp2", "id", "_temp", "_catch", "Promise", "resolve", "axios", "get", "_axios$get", "data", "reject", "get", "url", "Promise", "resolve", "fetch", "mode", "then", "res", "status", "Error", "statusText", "json", "e", "reject", "_settle", "pact", "state", "value", "_Pact", "s", "v", "bind", "DOC_PATH", "prototype", "onFulfilled", "onRejected", "result", "callback", "_this", "getResolver", "web", "did", "parsed", "_temp4", "contentType", "didDocument", "err", "didDocumentMetadata", "didResolutionMetadata", "error", "message", "_interrupt", "path", "decodeURIComponent", "id", "split", "length", "map", "join", "_temp3", "_do", "_temp2", "_temp", "_catch", "_get", "DecentralizedIdentifiers", "getResolver", "Resolver", "did", "method", "didDocument", "GraffitiErrorNotFound", "USER_AGENT", "looseInstanceOf", "input", "expected", "ERR_INVALID_ARG_VALUE", "ERR_INVALID_ARG_TYPE", "CodedTypeError", "message", "code", "cause", "err", "allowInsecureRequests", "clockSkew", "clockTolerance", "customFetch", "jweDecrypt", "encoder", "decoder", "buf", "input", "encodeBase64Url", "arr", "i", "decodeBase64Url", "cause", "CodedTypeError", "ERR_INVALID_ARG_VALUE", "binary", "bytes", "b64u", "UnsupportedOperationError", "message", "options", "UNSUPPORTED_OPERATION", "OperationProcessingError", "OPE", "code", "isJsonObject", "input", "prepareHeaders", "looseInstanceOf", "headers", "USER_AGENT", "CodedTypeError", "ERR_INVALID_ARG_VALUE", "signal", "url", "value", "ERR_INVALID_ARG_TYPE", "replaceDoubleSlash", "pathname", "prependWellKnown", "wellKnown", "allowTerminatingSlash", "appendWellKnown", "performDiscovery", "urlName", "transform", "options", "checkProtocol", "allowInsecureRequests", "customFetch", "discoveryRequest", "issuerIdentifier", "assertNumber", "allow0", "it", "code", "cause", "err", "OPE", "assertString", "processDiscoveryResponse", "expectedIssuerIdentifier", "response", "expected", "_nodiscoverycheck", "RESPONSE_IS_NOT_CONFORM", "assertReadableResponse", "json", "getResponseJsonBody", "INVALID_RESPONSE", "JSON_ATTRIBUTE_COMPARISON", "assertApplicationJson", "assertContentType", "notJson", "types", "msg", "last", "RESPONSE_IS_NOT_JSON", "assertContentType", "response", "contentType", "getContentType", "notJson", "randomBytes", "b64u", "generateRandomState", "randomBytes", "getClockSkew", "client", "skew", "clockSkew", "getClockTolerance", "tolerance", "clockTolerance", "epochTime", "assertAs", "as", "CodedTypeError", "ERR_INVALID_ARG_TYPE", "assertString", "assertClient", "ClientSecretPost", "clientSecret", "assertString", "_as", "client", "body", "_headers", "None", "_as", "client", "body", "_headers", "URLParse", "url", "base", "checkProtocol", "enforceHttps", "OPE", "HTTP_REQUEST_FORBIDDEN", "REQUEST_PROTOCOL_FORBIDDEN", "validateEndpoint", "value", "endpoint", "useMtlsAlias", "MISSING_SERVER_METADATA", "INVALID_SERVER_METADATA", "resolveEndpoint", "as", "isDPoPNonceError", "err", "WWWAuthenticateChallengeError", "challenge", "length", "ResponseBodyError", "ResponseBodyError", "message", "options", "RESPONSE_BODY_ERROR", "AuthorizationResponseError", "AUTHORIZATION_RESPONSE_ERROR", "WWWAuthenticateChallengeError", "WWW_AUTHENTICATE_CHALLENGE", "tokenMatch", "token68Match", "quotedMatch", "quotedParamMatcher", "paramMatcher", "schemeRE", "quotedParamRE", "unquotedParamRE", "token68ParamRE", "parseWwwAuthenticateChallenges", "response", "looseInstanceOf", "CodedTypeError", "ERR_INVALID_ARG_TYPE", "header", "challenges", "rest", "match", "scheme", "afterScheme", "spaceMatch", "hasParameters", "parameters", "token68", "key", "value", "challenge", "parseOAuthResponseErrorBody", "response", "assertReadableResponse", "assertApplicationJson", "json", "isJsonObject", "checkOAuthBodyError", "expected", "label", "checkAuthenticationChallenges", "err", "ResponseBodyError", "OPE", "RESPONSE_IS_NOT_CONFORM", "assertDPoP", "option", "branded", "CodedTypeError", "ERR_INVALID_ARG_VALUE", "getContentType", "input", "authenticatedRequest", "as", "client", "clientAuthentication", "url", "body", "headers", "options", "customFetch", "signal", "tokenEndpointRequest", "grantType", "parameters", "resolveEndpoint", "allowInsecureRequests", "prepareHeaders", "assertDPoP", "response", "idTokenClaims", "jwtRefs", "getValidatedIdTokenClaims", "ref", "claims", "CodedTypeError", "ERR_INVALID_ARG_VALUE", "processGenericAccessTokenResponse", "as", "client", "response", "additionalRequiredIdTokenClaims", "decryptFn", "recognizedTokenTypes", "assertAs", "assertClient", "looseInstanceOf", "CodedTypeError", "ERR_INVALID_ARG_TYPE", "checkOAuthBodyError", "assertReadableResponse", "json", "getResponseJsonBody", "assertString", "INVALID_RESPONSE", "expiresIn", "assertNumber", "OPE", "requiredClaims", "claims", "jwt", "validateJwt", "checkSigningAlgorithm", "getClockSkew", "getClockTolerance", "validatePresence", "validateIssuer", "validateAudience", "JWT_CLAIM_COMPARISON", "jwtRefs", "idTokenClaims", "UnsupportedOperationError", "checkAuthenticationChallenges", "challenges", "parseWwwAuthenticateChallenges", "WWWAuthenticateChallengeError", "validateAudience", "expected", "result", "OPE", "JWT_CLAIM_COMPARISON", "validateIssuer", "as", "result", "expected", "_expectedIssuer", "OPE", "JWT_CLAIM_COMPARISON", "branded", "brand", "searchParams", "nopkce", "authorizationCodeGrantRequest", "client", "clientAuthentication", "callbackParameters", "redirectUri", "codeVerifier", "options", "assertAs", "assertClient", "CodedTypeError", "ERR_INVALID_ARG_VALUE", "assertString", "code", "getURLSearchParameter", "INVALID_RESPONSE", "parameters", "tokenEndpointRequest", "jwtClaimNames", "validatePresence", "required", "claim", "expectNoNonce", "skipAuthTimeCheck", "processAuthorizationCodeResponse", "response", "processAuthorizationCodeOpenIDResponse", "jweDecrypt", "processAuthorizationCodeOAuth2Response", "expectedNonce", "maxAge", "decryptFn", "recognizedTokenTypes", "additionalRequiredClaims", "assertNumber", "processGenericAccessTokenResponse", "claims", "getValidatedIdTokenClaims", "now", "epochTime", "getClockSkew", "tolerance", "getClockTolerance", "JWT_TIMESTAMP_CHECK", "WWW_AUTHENTICATE_CHALLENGE", "RESPONSE_BODY_ERROR", "UNSUPPORTED_OPERATION", "AUTHORIZATION_RESPONSE_ERROR", "PARSE_ERROR", "INVALID_RESPONSE", "RESPONSE_IS_NOT_JSON", "RESPONSE_IS_NOT_CONFORM", "HTTP_REQUEST_FORBIDDEN", "REQUEST_PROTOCOL_FORBIDDEN", "JWT_TIMESTAMP_CHECK", "JWT_CLAIM_COMPARISON", "JSON_ATTRIBUTE_COMPARISON", "MISSING_SERVER_METADATA", "INVALID_SERVER_METADATA", "revocationRequest", "as", "client", "clientAuthentication", "token", "options", "assertAs", "assertClient", "assertString", "url", "resolveEndpoint", "allowInsecureRequests", "body", "headers", "prepareHeaders", "authenticatedRequest", "processRevocationResponse", "response", "looseInstanceOf", "CodedTypeError", "ERR_INVALID_ARG_TYPE", "checkOAuthBodyError", "assertReadableResponse", "ERR_INVALID_ARG_VALUE", "validateJwt", "jws", "checkAlg", "clockSkew", "clockTolerance", "decryptJwt", "protectedHeader", "payload", "length", "UnsupportedOperationError", "OPE", "INVALID_RESPONSE", "header", "buf", "b64u", "cause", "PARSE_ERROR", "isJsonObject", "claims", "now", "epochTime", "JWT_TIMESTAMP_CHECK", "consumeStream", "request", "CodedTypeError", "ERR_INVALID_ARG_VALUE", "formPostResponse", "getContentType", "checkSigningAlgorithm", "client", "issuer", "fallback", "header", "OPE", "INVALID_RESPONSE", "getURLSearchParameter", "parameters", "name", "value", "length", "skipStateCheck", "expectNoState", "validateAuthResponse", "as", "expectedState", "assertAs", "assertClient", "CodedTypeError", "ERR_INVALID_ARG_TYPE", "iss", "state", "assertString", "AuthorizationResponseError", "id_token", "token", "UnsupportedOperationError", "brand", "getResponseJsonBody", "response", "check", "assertApplicationJson", "json", "cause", "OPE", "PARSE_ERROR", "isJsonObject", "INVALID_RESPONSE", "_nodiscoverycheck", "_expectedIssuer", "headers", "USER_AGENT", "int", "config", "props", "tbi", "ClientSecretPost", "clientSecret", "as", "client", "body", "auth", "assertString", "input", "it", "CodedTypeError", "ERR_INVALID_ARG_TYPE", "ERR_INVALID_ARG_VALUE", "None", "customFetch", "ERR_INVALID_ARG_VALUE", "ERR_INVALID_ARG_TYPE", "CodedTypeError", "message", "code", "cause", "err", "randomState", "generateRandomState", "ClientError", "message", "options", "decoder", "e", "msg", "cause", "code", "errorHandler", "err", "ResponseBodyError", "AuthorizationResponseError", "WWWAuthenticateChallengeError", "OperationProcessingError", "HTTP_REQUEST_FORBIDDEN", "REQUEST_PROTOCOL_FORBIDDEN", "RESPONSE_IS_NOT_CONFORM", "RESPONSE_IS_NOT_JSON", "PARSE_ERROR", "INVALID_RESPONSE", "JWT_CLAIM_COMPARISON", "JSON_ATTRIBUTE_COMPARISON", "JWT_TIMESTAMP_CHECK", "UnsupportedOperationError", "UNSUPPORTED_OPERATION", "handleEntraId", "server", "as", "options", "kEntraId", "handleB2Clogin", "discovery", "server", "clientId", "metadata", "clientAuthentication", "options", "as", "performDiscovery", "instance", "Configuration", "internals", "int", "customFetch", "extension", "CodedTypeError", "ERR_INVALID_ARG_TYPE", "resolve", "timeout", "signal", "discoveryRequest", "allowInsecureRequests", "headers", "checkProtocol", "response", "processDiscoveryResponse", "_nodiscoverycheck", "errorHandler", "handleEntraId", "handleB2Clogin", "ClientError", "JSON_ATTRIBUTE_COMPARISON", "getServerHelpers", "metadata", "method", "addServerHelpers", "kEntraId", "Configuration", "server", "clientId", "clientAuthentication", "CodedTypeError", "ERR_INVALID_ARG_TYPE", "ERR_INVALID_ARG_VALUE", "client", "clockSkew", "clockTolerance", "auth", "ClientSecretPost", "None", "c", "clone", "_expectedIssuer", "tid", "as", "props", "int", "value", "customFetch", "getHelpers", "response", "exp", "now", "getValidatedIdTokenClaims", "addHelpers", "allowInsecureRequests", "config", "int", "stripParams", "url", "webInstanceOf", "input", "toStringTag", "authorizationCodeGrant", "config", "currentUrl", "checks", "tokenEndpointParameters", "options", "checkConfig", "retry", "CodedTypeError", "ERR_INVALID_ARG_TYPE", "authResponse", "redirectUri", "as", "c", "auth", "fetch", "tlsOnly", "jarm", "hybrid", "nonRepudiation", "timeout", "decrypt", "implicit", "int", "request", "params", "formPostResponse", "k", "v", "ERR_INVALID_ARG_VALUE", "validateAuthResponse", "err", "errorHandler", "response", "authorizationCodeGrantRequest", "nopkce", "customFetch", "allowInsecureRequests", "headers", "signal", "p", "processAuthorizationCodeResponse", "jweDecrypt", "result", "retryable", "addHelpers", "buildAuthorizationUrl", "config", "parameters", "checkConfig", "as", "c", "tlsOnly", "hybrid", "jarm", "implicit", "int", "authorizationEndpoint", "resolveEndpoint", "CodedTypeError", "ERR_INVALID_ARG_VALUE", "k", "v", "checkConfig", "input", "Configuration", "CodedTypeError", "ERR_INVALID_ARG_TYPE", "ERR_INVALID_ARG_VALUE", "signal", "timeout", "retryable", "err", "options", "retry", "isDPoPNonceError", "retry", "tokenRevocation", "config", "token", "parameters", "checkConfig", "as", "c", "auth", "fetch", "tlsOnly", "timeout", "int", "revocationRequest", "customFetch", "allowInsecureRequests", "headers", "signal", "processRevocationResponse", "errorHandler", "AUTHORIZATION_ENDPOINT_METHOD_PREFIX_OAUTH2", "LOCAL_STORAGE_OAUTH2_KEY", "Authorization", "oauthPromise", "resolve", "initializedEvent", "args", "e", "error", "detail", "authorizationEndpoint", "loginId", "serviceEndpoints", "configuration", "scope", "state", "randomState", "redirectUri", "waitForCallback", "data", "server", "reject", "address", "timeout", "sockets", "socket", "onRequest", "req", "res", "callbackUrl", "redirectUriStripped", "redirectTo", "buildAuthorizationUrl", "json", "parseResult", "OAuth2LoginDataSchema", "expectedUrl", "params", "expectedState", "response", "authorizationCodeGrant", "token", "grantedEndpoints", "endpoint", "loginEvent", "logoutId", "tokenRevocation", "issuer", "issuerUrl", "discovery", "LoginEventDetailSchema", "intersection", "object", "string", "union", "optional", "_undefined", "_instanceof", "LogoutEventDetailSchema", "InitializedEventDetailSchema", "nullable", "url", "array", "SERVICE_ENDPOINT_PREFIX_HTTPS", "verifyHTTPSEndpoint", "endpoint", "getAuthorizationEndpoint", "serviceEndpoint", "authUrl", "response", "GraffitiErrorUnauthorized", "_GraffitiErrorUnauthorized", "message", "fetchWithErrorHandling", "args", "errorText", "GraffitiErrorForbidden", "GraffitiErrorNotFound", "GraffitiErrorCursorExpired", "GraffitiErrorTooLarge", "StorageBuckets", "getAuthorizationEndpoint", "storageBucketEndpoint", "key", "value", "authorizationToken", "verifyHTTPSEndpoint", "url", "fetchWithErrorHandling", "maxBytes", "response", "reader", "contentLengthHeader", "parsedContentLength", "contentLength", "out", "offset", "completed", "done", "nextOffset", "chunks", "total", "c", "cursor", "blob", "cbor", "decode", "data", "ExportSchema", "object", "array", "string", "optional", "nullable", "Inboxes", "getAuthorizationEndpoint", "createCache", "inboxUrl", "message", "verifyHTTPSEndpoint", "url", "blob", "fetchWithErrorHandling", "encode", "cbor", "decode", "SendResponseSchema", "messageId", "inboxToken", "messageCacheKey", "getMessageCacheKey", "cache", "cached", "parsed", "LabeledMessageBaseSchema", "label", "result", "type", "body", "cursor", "response", "retryAfterHeader", "retryAfter", "waitTil", "messageIdsCacheKey", "cachedMessageIds", "cacheNumSeen", "messageIds", "id", "args", "canUseIDB", "streamer", "next", "lockKey", "releaseLock", "hasLock", "resolvehasLock", "lock", "r", "objectSchema", "cacheVersion", "GraffitiErrorCursorExpired", "iterator", "m", "outputCursor", "messageIdsCacheKey_", "validator", "compileGraffitiObjectSchema", "waitFor", "cachedCursor", "firstResponse", "out", "e", "resolve", "version", "decoded", "results", "hasMore", "nextCursor", "MessageResultSchema", "labeledMessages", "object", "LABELED_MESSAGE_MESSAGE_KEY", "MESSAGE_OBJECT_KEY", "LABELED_MESSAGE_ID_KEY", "tags", "getMessageIdsCacheKey", "decodedCursor", "numSeen", "CursorSchema", "GraffitiObjectSchema", "strictObject", "looseObject", "array", "string", "optional", "nullable", "Uint8ArraySchema", "custom", "v", "TagsSchema", "MESSAGE_TAGS_KEY", "MESSAGE_METADATA_KEY", "MessageBaseSchema", "LABELED_MESSAGE_LABEL_KEY", "number", "boolean", "int", "_nonnegative", "union", "reject", "req", "cacheIdData", "bytes", "byte", "resetCacheDB", "openDB", "db", "k", "error", "q", "STRING_ENCODER_METHOD_BASE64URL", "StringEncoder", "method", "bytes", "STRING_ENCODER_METHOD_BASE64URL", "base64Url", "base64", "c", "_subtle", "sb", "createWebHash", "name", "blockLen", "outputLen", "hashC", "msg", "abytes", "crypto", "ahashWeb", "hash", "ahash", "sha256", "sha512", "createWebHash", "hmac", "hmac_", "hash", "key", "message", "crypto", "_subtle", "abytes", "ahashWeb", "wkey", "_hash", "_key", "CONTENT_ADDRESS_METHOD_SHA256", "MULTIHASH_CODE_SHA256", "MULTIHASH_LENGTH_SHA256", "ContentAddresses", "contentAddressMethod", "data", "hash", "sha256", "prefixedHash", "contentAddress", "ed25519_CURVE", "P", "N", "Gx", "Gy", "_a", "_d", "h", "L", "L2", "captureTrace", "args", "err", "message", "e", "isBig", "n", "isStr", "s", "isBytes", "a", "abytes", "value", "length", "title", "bytes", "len", "needsLen", "prefix", "ofLen", "got", "u8n", "u8fr", "buf", "padh", "pad", "bytesToHex", "b", "C", "_ch", "ch", "hexToBytes", "hex", "hl", "al", "array", "ai", "hi", "n1", "n2", "cr", "subtle", "concatBytes", "arrs", "r", "sum", "big", "assertRange", "n", "min", "max", "msg", "isBig", "err", "M", "a", "b", "P", "r", "modN", "N", "invert", "num", "md", "x", "y", "u", "v", "q", "m", "apoint", "p", "Point", "err", "B256", "_Point", "X", "Y", "Z", "T", "max", "assertRange", "ed25519_CURVE", "M", "hex", "zip215", "d", "_d", "normed", "u8fr", "abytes", "L", "lastByte", "y", "bytesToNumLE", "P", "y2", "u", "v", "isValid", "x", "uvRatio", "isXOdd", "isLastByteOdd", "hexToBytes", "a", "_a", "X2", "Y2", "Z2", "Z4", "aX2", "left", "right", "XY", "ZT", "other", "X1", "Y1", "Z1", "X1Z2", "X2Z1", "Y1Z2", "Y2Z1", "I", "A", "B", "C", "D", "x1y1", "E", "G", "F", "H", "X3", "Y3", "T3", "Z3", "T1", "T2", "n", "safe", "N", "wNAF", "f", "scalar", "iz", "invert", "b", "numTo32bLE", "bytesToHex", "big", "h", "Gx", "Gy", "num", "padh", "L2", "pow2", "power", "r", "pow_2_252_3", "b2", "b4", "b5", "b10", "b20", "b40", "b80", "b160", "b240", "b250", "RM1", "v3", "v7", "pow", "vx2", "root1", "root2", "useRoot1", "useRoot2", "noRoot", "modL_LE", "hash", "modN", "sha512a", "m", "hashes", "concatBytes", "hash2extK", "hashed", "head", "L", "prefix", "L2", "scalar", "modL_LE", "point", "G", "pointBytes", "getExtendedPublicKeyAsync", "secretKey", "sha512a", "abytes", "getPublicKeyAsync", "secretKey", "getExtendedPublicKeyAsync", "p", "hashFinishA", "res", "sha512a", "_sign", "rBytes", "msg", "P", "s", "r", "modL_LE", "R", "G", "concatBytes", "hashed", "S", "modN", "abytes", "numTo32bLE", "L2", "signAsync", "message", "secretKey", "m", "e", "getExtendedPublicKeyAsync", "sha512a", "hashFinishA", "defaultVerifyOpts", "_verify", "sig", "msg", "pub", "opts", "abytes", "L2", "L", "zip215", "A", "R", "SB", "hashable", "Point", "bytesToNumLE", "G", "concatBytes", "hashed", "k", "modL_LE", "verifyAsync", "signature", "message", "publicKey", "hashFinishA", "hashes", "message", "s", "subtle", "m", "concatBytes", "u8n", "W", "scalarBits", "pwindows", "pwindowSize", "precompute", "points", "p", "G", "b", "w", "i", "Gpows", "ctneg", "cnd", "wNAF", "n", "comp", "I", "f", "pow_2_w", "maxNum", "mask", "big", "shiftBy", "wbits", "off", "offF", "offP", "isEven", "isNeg", "err", "hashes", "sha512", "CHANNEL_ATTESTATION_METHOD_SHA256_ED25519", "CHANNEL_ATTESTATION_METHOD_PREFIX_SHA256_ED25519", "ChannelAttestations", "channelAttestationMethod", "channel", "privateKey", "channelPublicId", "channelBytes", "sha256", "channelPublicIdRaw", "getPublicKeyAsync", "actor", "actorBytes", "signAsync", "attestation", "prefix", "verifyAsync", "ALLOWED_ATTESTATION_METHOD_HMAC_SHA256", "ALLOWED_ATTESTATION_METHOD_PREFIX_HMAC", "AllowedAttestations", "allowedAttestationMethod", "actor", "ticket", "randomBytes", "attestation", "hmac", "sha256", "prefixedTicket", "MULTIHASH_CODE_SHA256", "MULTIHASH_LENGTH_SHA256", "typePrefix", "hashPrefix", "lengthPrefix", "expected", "b", "i", "HANDLE_DID_PREFIX", "Handles", "services", "actor", "handleDid", "GraffitiErrorNotFound", "handle", "handleDocument", "actorDocument", "DID_SERVICE_TYPE_GRAFFITI_INBOX", "DID_SERVICE_TYPE_GRAFFITI_STORAGE_BUCKET", "DID_SERVICE_ID_GRAFFITI_PERSONAL_INBOX", "DID_SERVICE_ID_GRAFFITI_STORAGE_BUCKET", "DID_SERVICE_ID_GRAFFITI_SHARED_INBOX_PREFIX", "Sessions", "services", "initializedPromise", "resolve", "e", "parsed", "InitializedEventDetailSchema", "error", "loginPromise", "actorEncoded", "actor", "url", "session", "loginEvent", "initializedEvent", "storageBucketService", "service", "personalInboxService", "sharedInboxServices", "storageBucketEndpoint", "serviceToEndpoint", "personalInboxEndpoint", "sharedInboxEndpoints", "servicesWithTypes", "endpoint", "servicesWithAuthorizationEndpoints", "type", "authorizationEndpoint", "servicesByAuthorizationMap", "servicesByAuthorization", "inProgressLogin", "LOCAL_STORAGE_IN_PROGRESS_LOGIN_KEY", "firstAuthorizationEndpoint", "firstServices", "s", "event", "LoginEventDetailSchema", "LoginEvent", "loginDetail", "token", "inProgressLoginString", "json", "InProgressSchema", "index", "sessions", "logoutEvent", "LOCAL_STORAGE_IN_PROGRESS_LOGOUT_KEY", "_", "LogoutEventDetailSchema", "logoutDetail", "inProgressLogout", "inProgressLogoutString", "loggedInSessions_", "data", "LOCAL_STORAGE_LOGGED_IN_SESSIONS_KEY", "array", "StoredSessionSchema", "resolvedSession", "GraffitiSessionSchema", "object", "ServiceSessionSchema", "string", "ServicesByAuthorizationSchema", "tuple", "_enum", "extend", "MAX_OBJECT_SIZE_BYTES", "ObjectEncoding", "primitives", "partialObject", "actor", "cleanUndefined", "channelAttestationAndPublicIds", "channel", "CHANNEL_ATTESTATION_METHOD_SHA256_ED25519", "channelAttestations", "c", "channelPublicIds", "objectData", "VALUE_PROPERTY", "CHANNEL_ATTESTATIONS_PROPERTY", "NONCE_PROPERTY", "randomBytes", "allowedTickets", "allowedAttestations", "allowedActor", "ALLOWED_ATTESTATION_METHOD_HMAC_SHA256", "ALLOWED_ATTESTATIONS_PROPERTY", "a", "objectBytes", "encode", "objectContentAddressBytes", "CONTENT_ADDRESS_METHOD_SHA256", "objectContentAddress", "STRING_ENCODER_METHOD_BASE64URL", "objectUrl", "encodeObjectUrl", "tags", "object", "privateObjectInfo", "contentAddress", "decodeObjectUrl", "objectUrlTag", "contentAddressBytes", "contentAddressMethod", "expectedContentAddress", "b", "i", "objectDataUnknown", "decode", "ObjectDataSchema", "value", "valueBytes", "expectedValueBytes", "index", "attestation", "channelPublicId", "channelAttestationMethod", "expectedChannelPublicIds", "expectedPublicId", "actualPublicId", "recipients", "attestations", "_", "r", "recipient", "allowedTicket", "allowedAttestation", "Uint8ArraySchema", "custom", "v", "strictObject", "looseObject", "array", "optional", "GRAFFITI_OBJECT_URL_PREFIX", "encodeObjectUrlComponent", "replaced", "decodeObjectUrlComponent", "parts", "k", "GraffitiModal", "options", "e", "rect", "host", "r", "html", "doc", "templates", "template", "id", "style", "image", "font", "header", "closeButton", "main", "ff", "sheet", "templateId", "content", "Uint8ArraySchema", "custom", "v", "MESSAGE_DATA_STORAGE_BUCKET_KEY", "MESSAGE_DATA_TOMBSTONED_MESSAGE_ID_KEY", "MessageMetadataBaseSchema", "strictObject", "string", "optional", "MESSAGE_DATA_ANNOUNCEMENT_MESSAGE_ID_KEY", "MESSAGE_DATA_ANNOUNCEMENT_ENDPOINT_KEY", "MESSAGE_DATA_ANNOUNCEMENT_ACTOR_KEY", "MessageMetadataAnnouncementsSchema", "array", "url", "MESSAGE_DATA_ALLOWED_TICKETS_KEY", "MESSAGE_DATA_ANNOUNCEMENTS_KEY", "MessageMetaDataSelfSchema", "extend", "MESSAGE_DATA_ALLOWED_TICKET_KEY", "MESSAGE_DATA_ALLOWED_TICKET_INDEX_KEY", "MessageMetadataPrivateSchema", "int", "_nonnegative", "MessageMetadataSchema", "union", "MESSAGE_LABEL_UNLABELED", "MESSAGE_LABEL_VALID", "MESSAGE_LABEL_TRASH", "MESSAGE_LABEL_INVALID", "GraffitiDecentralized", "DecentralizedIdentifiers", "Authorization", "StorageBuckets", "Inboxes", "StringEncoder", "ContentAddresses", "ChannelAttestations", "AllowedAttestations", "Sessions", "Handles", "ObjectEncoding", "r", "template", "event", "options", "detail", "actor", "handle", "error", "proposedHandle", "e", "loginError", "input", "submitButton", "defaultHost", "createUrl", "readline", "rl", "resolve", "session", "args", "partialObject", "resolvedSession", "object", "tags", "objectBytes", "allowedTickets", "storageBucketKeyBytes", "randomBytes", "storageBucketKey", "STRING_ENCODER_METHOD_BASE64URL", "schema", "services", "validator", "compileGraffitiObjectSchema", "s", "objectUrl", "unpackObjectUrl", "service", "iterator", "result", "GraffitiErrorSchemaMismatch", "GraffitiErrorNotFound", "decodeObjectUrl", "GraffitiErrorForbidden", "existing", "announcements", "messageId", "media", "type", "keyBytes", "key", "mediaUrl", "accept", "MEDIA_OBJECT_SCHEMA", "size", "GraffitiErrorTooLarge", "isMediaAcceptable", "GraffitiErrorNotAcceptable", "storageBucketService", "DID_SERVICE_ID_GRAFFITI_STORAGE_BUCKET", "DID_SERVICE_TYPE_GRAFFITI_STORAGE_BUCKET", "storageBucketEndpoint", "data", "channels", "cursors", "tombstones", "allInboxes", "endpoint", "i", "c", "CHANNEL_ATTESTATION_METHOD_SHA256_ED25519", "iterators", "cursor", "indexedIteratorNexts", "it", "index", "indexedSingleEndpointQueryNext", "active", "next", "inbox", "tombstone", "receivedTags", "matchedChannels", "acc", "tag", "tagIndex", "receivedTag", "b", "json", "parsed", "CursorSchema", "GraffitiErrorCursorExpired", "priorAnnouncements", "metadataBase", "allowed", "results", "recipient", "recipientIndex", "copy", "masked", "maskGraffitiObject", "personalInbox", "DID_SERVICE_TYPE_GRAFFITI_INBOX", "DID_SERVICE_ID_GRAFFITI_PERSONAL_INBOX", "tombstonedMessageId", "a", "privateMetadata", "MESSAGE_TAGS_KEY", "MESSAGE_OBJECT_KEY", "MESSAGE_METADATA_KEY", "encode", "sharedInboxes", "metadata", "selfMetadata", "inboxEndpoint", "queryArguments", "inboxToken", "itResult", "label", "metadataBytes", "metadataRaw", "decode", "validationError", "MAX_OBJECT_SIZE_BYTES", "privateObjectInfo", "LABELED_MESSAGE_MESSAGE_KEY", "record", "GraffitiErrorInvalidSchema", "GraffitiDecentralized", "GraffitiRuntimeTypes", "options", "graffiti"]
7
+ }