@atproto/oauth-provider-ui 0.4.3 → 0.5.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 (173) hide show
  1. package/dist/Combination-Bhs1fdOX.js +60 -0
  2. package/dist/Combination-Bhs1fdOX.js.map +1 -0
  3. package/dist/account-page-CJL6QE7I.js +20 -0
  4. package/dist/account-page-CJL6QE7I.js.map +1 -0
  5. package/dist/admonition-COVBxy58.css +1 -0
  6. package/dist/admonition-DG29-rnP.js +59 -0
  7. package/dist/admonition-DG29-rnP.js.map +1 -0
  8. package/dist/authorization-page-Dc_dzY8p.js +6 -0
  9. package/dist/authorization-page-Dc_dzY8p.js.map +1 -0
  10. package/dist/bundle-manifest.json +231 -201
  11. package/dist/cookie-error-page-C9NHLJan.js +2 -0
  12. package/dist/cookie-error-page-C9NHLJan.js.map +1 -0
  13. package/dist/error-page-8vfgriZ5.js +2 -0
  14. package/dist/error-page-8vfgriZ5.js.map +1 -0
  15. package/dist/error-view-XjfghZGv.js +2 -0
  16. package/dist/error-view-XjfghZGv.js.map +1 -0
  17. package/dist/form-card-CJld9oZJ.js +2 -0
  18. package/dist/form-card-CJld9oZJ.js.map +1 -0
  19. package/dist/messages-1g1zGoiO.js +2 -0
  20. package/dist/messages-1g1zGoiO.js.map +1 -0
  21. package/dist/messages-BFd91biF.js +2 -0
  22. package/dist/messages-BFd91biF.js.map +1 -0
  23. package/dist/messages-BGJtUNIv.js +2 -0
  24. package/dist/messages-BGJtUNIv.js.map +1 -0
  25. package/dist/messages-BPNf4f9-.js +2 -0
  26. package/dist/messages-BPNf4f9-.js.map +1 -0
  27. package/dist/messages-BRCRwtzO.js +2 -0
  28. package/dist/messages-BRCRwtzO.js.map +1 -0
  29. package/dist/messages-BRCY__Ax.js +2 -0
  30. package/dist/messages-BRCY__Ax.js.map +1 -0
  31. package/dist/messages-BoFGe7rB.js +2 -0
  32. package/dist/messages-BoFGe7rB.js.map +1 -0
  33. package/dist/messages-BqpkoAhn.js +2 -0
  34. package/dist/messages-BqpkoAhn.js.map +1 -0
  35. package/dist/messages-Bvw0quRL.js +2 -0
  36. package/dist/messages-Bvw0quRL.js.map +1 -0
  37. package/dist/messages-C7oW60kT.js +2 -0
  38. package/dist/messages-C7oW60kT.js.map +1 -0
  39. package/dist/messages-C8rFBCnS.js +2 -0
  40. package/dist/messages-C8rFBCnS.js.map +1 -0
  41. package/dist/messages-CK5eZC3b.js +2 -0
  42. package/dist/messages-CK5eZC3b.js.map +1 -0
  43. package/dist/messages-CM1uUdEk.js +2 -0
  44. package/dist/messages-CM1uUdEk.js.map +1 -0
  45. package/dist/messages-CYHA_FEB.js +2 -0
  46. package/dist/messages-CYHA_FEB.js.map +1 -0
  47. package/dist/messages-CZGipQph.js +2 -0
  48. package/dist/messages-CZGipQph.js.map +1 -0
  49. package/dist/messages-CdoYnL80.js +2 -0
  50. package/dist/messages-CdoYnL80.js.map +1 -0
  51. package/dist/messages-CiORj7Vl.js +2 -0
  52. package/dist/messages-CiORj7Vl.js.map +1 -0
  53. package/dist/messages-CjFLP52o.js +2 -0
  54. package/dist/messages-CjFLP52o.js.map +1 -0
  55. package/dist/messages-DGrhtK0S.js +2 -0
  56. package/dist/messages-DGrhtK0S.js.map +1 -0
  57. package/dist/messages-DL5_iJVx.js +2 -0
  58. package/dist/messages-DL5_iJVx.js.map +1 -0
  59. package/dist/messages-DdrGIDnG.js +2 -0
  60. package/dist/messages-DdrGIDnG.js.map +1 -0
  61. package/dist/messages-DeHF46UN.js +2 -0
  62. package/dist/messages-DeHF46UN.js.map +1 -0
  63. package/dist/messages-Dx1WxTxv.js +2 -0
  64. package/dist/messages-Dx1WxTxv.js.map +1 -0
  65. package/dist/messages-E9jxzOUi.js +2 -0
  66. package/dist/messages-E9jxzOUi.js.map +1 -0
  67. package/dist/messages-EUf9f0l5.js +2 -0
  68. package/dist/messages-EUf9f0l5.js.map +1 -0
  69. package/dist/messages-H0CDlzJK.js +2 -0
  70. package/dist/messages-H0CDlzJK.js.map +1 -0
  71. package/dist/messages-MjASUf5n.js +2 -0
  72. package/dist/messages-MjASUf5n.js.map +1 -0
  73. package/dist/messages-PDBahXR7.js +2 -0
  74. package/dist/messages-PDBahXR7.js.map +1 -0
  75. package/dist/messages-Rzl4MtNO.js +2 -0
  76. package/dist/messages-Rzl4MtNO.js.map +1 -0
  77. package/dist/messages-TOaGHrdD.js +2 -0
  78. package/dist/messages-TOaGHrdD.js.map +1 -0
  79. package/dist/messages-UiXiiuAI.js +2 -0
  80. package/dist/messages-UiXiiuAI.js.map +1 -0
  81. package/dist/messages-aa6RCKjw.js +2 -0
  82. package/dist/messages-aa6RCKjw.js.map +1 -0
  83. package/dist/messages-tEwRY2CY.js +2 -0
  84. package/dist/messages-tEwRY2CY.js.map +1 -0
  85. package/dist/messages-zB3mCOhA.js +2 -0
  86. package/dist/messages-zB3mCOhA.js.map +1 -0
  87. package/dist/messages-zqVFi9vk.js +2 -0
  88. package/dist/messages-zqVFi9vk.js.map +1 -0
  89. package/hydration-data.d.ts +12 -1
  90. package/package.json +13 -4
  91. package/dist/admonition-BGv4N7na.js +0 -59
  92. package/dist/admonition-BGv4N7na.js.map +0 -1
  93. package/dist/admonition-D2nJsHXB.css +0 -1
  94. package/dist/authorization-page-B4QH37VO.js +0 -20
  95. package/dist/authorization-page-B4QH37VO.js.map +0 -1
  96. package/dist/cookie-error-page-CiwQMoZB.js +0 -2
  97. package/dist/cookie-error-page-CiwQMoZB.js.map +0 -1
  98. package/dist/error-page-CcpKftK-.js +0 -2
  99. package/dist/error-page-CcpKftK-.js.map +0 -1
  100. package/dist/error-view-zWcVh4wA.js +0 -2
  101. package/dist/error-view-zWcVh4wA.js.map +0 -1
  102. package/dist/form-card-DJyQYXqE.js +0 -2
  103. package/dist/form-card-DJyQYXqE.js.map +0 -1
  104. package/dist/messages-2XdI_AQm.js +0 -2
  105. package/dist/messages-2XdI_AQm.js.map +0 -1
  106. package/dist/messages-9U7tUi4x.js +0 -2
  107. package/dist/messages-9U7tUi4x.js.map +0 -1
  108. package/dist/messages-B7IsIn9T.js +0 -2
  109. package/dist/messages-B7IsIn9T.js.map +0 -1
  110. package/dist/messages-B8DETVR-.js +0 -2
  111. package/dist/messages-B8DETVR-.js.map +0 -1
  112. package/dist/messages-BAMcq6af.js +0 -2
  113. package/dist/messages-BAMcq6af.js.map +0 -1
  114. package/dist/messages-BKyO1npx.js +0 -2
  115. package/dist/messages-BKyO1npx.js.map +0 -1
  116. package/dist/messages-BOyLrym-.js +0 -2
  117. package/dist/messages-BOyLrym-.js.map +0 -1
  118. package/dist/messages-BWkeH_1D.js +0 -2
  119. package/dist/messages-BWkeH_1D.js.map +0 -1
  120. package/dist/messages-BbmQU72s.js +0 -2
  121. package/dist/messages-BbmQU72s.js.map +0 -1
  122. package/dist/messages-BerE3mk1.js +0 -2
  123. package/dist/messages-BerE3mk1.js.map +0 -1
  124. package/dist/messages-BkV1inHY.js +0 -2
  125. package/dist/messages-BkV1inHY.js.map +0 -1
  126. package/dist/messages-BsvJVX-v.js +0 -2
  127. package/dist/messages-BsvJVX-v.js.map +0 -1
  128. package/dist/messages-C0MumCsH.js +0 -2
  129. package/dist/messages-C0MumCsH.js.map +0 -1
  130. package/dist/messages-C5EZ4xwD.js +0 -2
  131. package/dist/messages-C5EZ4xwD.js.map +0 -1
  132. package/dist/messages-C7AE3hAl.js +0 -2
  133. package/dist/messages-C7AE3hAl.js.map +0 -1
  134. package/dist/messages-CEusitnW.js +0 -2
  135. package/dist/messages-CEusitnW.js.map +0 -1
  136. package/dist/messages-Ci8OHfe7.js +0 -2
  137. package/dist/messages-Ci8OHfe7.js.map +0 -1
  138. package/dist/messages-Ck6MZktA.js +0 -2
  139. package/dist/messages-Ck6MZktA.js.map +0 -1
  140. package/dist/messages-CpH-4dT7.js +0 -2
  141. package/dist/messages-CpH-4dT7.js.map +0 -1
  142. package/dist/messages-CqBsTRuX.js +0 -2
  143. package/dist/messages-CqBsTRuX.js.map +0 -1
  144. package/dist/messages-DBBpCczd.js +0 -2
  145. package/dist/messages-DBBpCczd.js.map +0 -1
  146. package/dist/messages-DL_Ev0ra.js +0 -2
  147. package/dist/messages-DL_Ev0ra.js.map +0 -1
  148. package/dist/messages-DLt8s_S-.js +0 -2
  149. package/dist/messages-DLt8s_S-.js.map +0 -1
  150. package/dist/messages-DMxRMxKN.js +0 -2
  151. package/dist/messages-DMxRMxKN.js.map +0 -1
  152. package/dist/messages-DRbpC2Zv.js +0 -2
  153. package/dist/messages-DRbpC2Zv.js.map +0 -1
  154. package/dist/messages-DZUdpac2.js +0 -2
  155. package/dist/messages-DZUdpac2.js.map +0 -1
  156. package/dist/messages-DZXEFjxq.js +0 -2
  157. package/dist/messages-DZXEFjxq.js.map +0 -1
  158. package/dist/messages-EOBHGTgV.js +0 -2
  159. package/dist/messages-EOBHGTgV.js.map +0 -1
  160. package/dist/messages-FrGxJXIm.js +0 -2
  161. package/dist/messages-FrGxJXIm.js.map +0 -1
  162. package/dist/messages-McTTmsqQ.js +0 -2
  163. package/dist/messages-McTTmsqQ.js.map +0 -1
  164. package/dist/messages-Moc1-Omz.js +0 -2
  165. package/dist/messages-Moc1-Omz.js.map +0 -1
  166. package/dist/messages-UO4iw-tn.js +0 -2
  167. package/dist/messages-UO4iw-tn.js.map +0 -1
  168. package/dist/messages-_p29KQwo.js +0 -2
  169. package/dist/messages-_p29KQwo.js.map +0 -1
  170. package/dist/messages-dBOA6Wji.js +0 -2
  171. package/dist/messages-dBOA6Wji.js.map +0 -1
  172. package/dist/messages-tEg5lx9l.js +0 -2
  173. package/dist/messages-tEg5lx9l.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization-page-Dc_dzY8p.js","sources":["../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/Atom.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/BookOpen.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/Certificate.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/ChatCircleDots.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/Envelope.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/Hand.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/defs/IdentificationBadge.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/Atom.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/BookOpen.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/Certificate.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/ChatCircleDots.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/Envelope.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/Hand.es.js","../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.0.0_react@19.0.0/node_modules/@phosphor-icons/react/dist/csr/IdentificationBadge.es.js","../../oauth-scopes/dist/lib/syntax.js","../../oauth-scopes/dist/lib/util.js","../../oauth-scopes/dist/lib/syntax-string.js","../../oauth-scopes/dist/lib/parser.js","../../oauth-scopes/dist/scopes/account-permission.js","../../oauth-scopes/dist/lib/mime.js","../../oauth-scopes/dist/scopes/blob-permission.js","../../oauth-scopes/dist/scopes/identity-permission.js","../../../syntax/dist/did.js","../../../syntax/dist/handle.js","../../../syntax/dist/at-identifier.js","../../../syntax/dist/lib/result.js","../../../syntax/dist/nsid.js","../../../syntax/dist/recordkey.js","../../../syntax/dist/aturi_validation.js","../../../syntax/dist/aturi.js","../../../syntax/dist/datetime.js","../../../syntax/dist/language.js","../../../syntax/dist/tid.js","../../../syntax/dist/uri.js","../../../syntax/dist/index.js","../../oauth-scopes/dist/lib/nsid.js","../../oauth-scopes/dist/lib/syntax-lexicon.js","../../oauth-scopes/dist/scopes/repo-permission.js","../../oauth-scopes/dist/scopes/rpc-permission.js","../../oauth-scopes/dist/scopes/include-scope.js","../../oauth-scopes/dist/atproto-oauth-scope.js","../../oauth-scopes/dist/scope-missing-error.js","../../oauth-scopes/dist/scopes-set.js","../../oauth-scopes/dist/scope-permissions.js","../../oauth-scopes/dist/scope-permissions-transition.js","../../oauth-scopes/dist/index.js","../src/components/utils/client-image.tsx","../src/lib/oauth-client.ts","../src/components/utils/url-viewer.tsx","../src/components/utils/client-name.tsx","../../../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.15_@types+react-dom@19.0.4_@types+react@19.0.10_react-dom@19.0.0_react@19.0.0/node_modules/@radix-ui/react-dialog/dist/index.mjs","../src/components/utils/description-card.tsx","../src/components/utils/icons.tsx","../src/components/utils/scope-description.tsx","../src/components/consent-form.tsx","../src/components/consent-view.tsx","../src/authorization-page.tsx"],"sourcesContent":["import * as a from \"react\";\nconst c = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M219.23,159.2a196.66,196.66,0,0,0-18-31.2,196.66,196.66,0,0,0,18-31.2c11.84-26.31,11.69-47.48-.43-59.6s-33.29-12.27-59.6-.43a196.66,196.66,0,0,0-31.2,18,196.66,196.66,0,0,0-31.2-18c-26.31-11.84-47.48-11.69-59.6.43s-12.27,33.29-.43,59.6a196.66,196.66,0,0,0,18,31.2,196.66,196.66,0,0,0-18,31.2c-11.84,26.31-11.69,47.48.43,59.6h0C43.33,224.93,51.78,228,62,228c10,0,21.77-2.92,34.76-8.77a196.66,196.66,0,0,0,31.2-18,196.66,196.66,0,0,0,31.2,18c13,5.85,24.74,8.77,34.76,8.77,10.26,0,18.71-3.07,24.84-9.2h0C230.92,206.68,231.07,185.51,219.23,159.2Zm-17.41-105c5.25,5.26,1.79,26-16,53.78-5.61-6.66-11.65-13.25-18.07-19.67S154.7,75.83,148,70.22C175.82,52.39,196.56,48.93,201.82,54.18ZM171.24,128a288.6,288.6,0,0,1-20.51,22.73A288.6,288.6,0,0,1,128,171.24a288.6,288.6,0,0,1-22.73-20.51A288.6,288.6,0,0,1,84.76,128,298.55,298.55,0,0,1,128,84.76a286.83,286.83,0,0,1,22.73,20.51A286.83,286.83,0,0,1,171.24,128ZM54.18,54.18c1.46-1.45,4.1-2.24,7.75-2.24,9.53,0,25.94,5.39,46,18.28-6.66,5.61-13.25,11.65-19.67,18.07S75.83,101.3,70.22,108C52.39,80.18,48.93,59.44,54.18,54.18Zm0,147.64c-5.25-5.26-1.79-26,16-53.78,5.61,6.66,11.65,13.25,18.07,19.67s13,12.46,19.67,18.07C80.18,203.61,59.44,207.07,54.18,201.82Zm147.64,0c-5.26,5.25-26,1.79-53.78-16,6.66-5.61,13.25-11.65,19.67-18.07s12.46-13,18.07-19.67C203.61,175.82,207.07,196.56,201.82,201.82ZM144,128a16,16,0,1,1-16-16A16,16,0,0,1,144,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M210.26,210.26c-17.23,17.23-68-5.63-113.46-51.06S28.51,63,45.74,45.74s68,5.63,113.46,51.06S227.49,193,210.26,210.26Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M196.12,128c24.65-34.61,37.22-70.38,19.74-87.86S162.61,35.23,128,59.88C93.39,35.23,57.62,22.66,40.14,40.14S35.23,93.39,59.88,128c-24.65,34.61-37.22,70.38-19.74,87.86h0c5.63,5.63,13.15,8.14,21.91,8.14,18.48,0,42.48-11.17,66-27.88C151.47,212.83,175.47,224,194,224c8.76,0,16.29-2.52,21.91-8.14h0C233.34,198.38,220.77,162.61,196.12,128Zm8.43-76.55c7.64,7.64,2.48,32.4-18.52,63.28a300.33,300.33,0,0,0-21.19-23.57A300.33,300.33,0,0,0,141.27,70C172.15,49,196.91,43.8,204.55,51.45ZM176.29,128a289.14,289.14,0,0,1-22.76,25.53A289.14,289.14,0,0,1,128,176.29a289.14,289.14,0,0,1-25.53-22.76A289.14,289.14,0,0,1,79.71,128,298.62,298.62,0,0,1,128,79.71a289.14,289.14,0,0,1,25.53,22.76A289.14,289.14,0,0,1,176.29,128ZM51.45,51.45c2.2-2.21,5.83-3.35,10.62-3.35C73.89,48.1,92.76,55,114.72,70A304,304,0,0,0,91.16,91.16,300.33,300.33,0,0,0,70,114.73C49,83.85,43.81,59.09,51.45,51.45Zm0,153.1C43.81,196.91,49,172.15,70,141.27a300.33,300.33,0,0,0,21.19,23.57A304.18,304.18,0,0,0,114.73,186C83.85,207,59.09,212.2,51.45,204.55Zm153.1,0c-7.64,7.65-32.4,2.48-63.28-18.52a304.18,304.18,0,0,0,23.57-21.19A300.33,300.33,0,0,0,186,141.27C207,172.15,212.19,196.91,204.55,204.55ZM140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M196.12,128c24.65-34.61,37.22-70.38,19.74-87.86S162.61,35.23,128,59.88C93.39,35.23,57.62,22.66,40.14,40.14S35.23,93.39,59.88,128c-24.65,34.61-37.22,70.38-19.74,87.86h0c5.63,5.63,13.15,8.14,21.91,8.14,18.47,0,42.48-11.17,66-27.88C151.47,212.83,175.47,224,194,224c8.76,0,16.29-2.52,21.91-8.14h0C233.34,198.38,220.77,162.61,196.12,128Zm8.43-76.55c7.64,7.64,2.48,32.4-18.52,63.28a300.33,300.33,0,0,0-21.19-23.57A302.47,302.47,0,0,0,141.27,70C172.15,49,196.91,43.81,204.55,51.45Zm-153.1,0c2.2-2.21,5.83-3.35,10.62-3.35C73.89,48.1,92.76,55,114.72,70A304,304,0,0,0,91.16,91.16,300.33,300.33,0,0,0,70,114.73C49,83.85,43.81,59.09,51.45,51.45Zm0,153.1C43.81,196.91,49,172.15,70,141.27a300.33,300.33,0,0,0,21.19,23.57A304.18,304.18,0,0,0,114.73,186C83.85,207,59.09,212.19,51.45,204.55ZM128,140a12,12,0,1,1,12-12A12,12,0,0,1,128,140Zm76.55,64.56c-7.64,7.65-32.4,2.48-63.28-18.52a304.18,304.18,0,0,0,23.57-21.19A300.33,300.33,0,0,0,186,141.27C207,172.15,212.19,196.91,204.55,204.55Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M193.83,128a195.73,195.73,0,0,0,19.9-33.65c10.74-23.88,11-42.66.8-52.88s-29-9.94-52.88.8A195.73,195.73,0,0,0,128,62.17a195.73,195.73,0,0,0-33.65-19.9c-23.88-10.74-42.66-11-52.88-.8s-9.94,29,.8,52.88A195.73,195.73,0,0,0,62.17,128a195.73,195.73,0,0,0-19.9,33.65c-10.74,23.88-11,42.66-.8,52.88h0c5,5,12,7.47,20.63,7.47,9.1,0,20-2.76,32.25-8.27A195.73,195.73,0,0,0,128,193.83a195.73,195.73,0,0,0,33.65,19.9C173.9,219.24,184.8,222,193.9,222c8.64,0,15.65-2.49,20.63-7.47h0c10.23-10.22,9.94-29-.8-52.88A195.73,195.73,0,0,0,193.83,128ZM206,50c9.28,9.28,2.36,36.29-19.8,68a306.2,306.2,0,0,0-22.78-25.45A306.2,306.2,0,0,0,138,69.76C169.75,47.61,196.77,40.68,206,50Zm-27.19,78A289.17,289.17,0,0,1,155,155a289.17,289.17,0,0,1-27,23.88A289.17,289.17,0,0,1,101,155a290.62,290.62,0,0,1-23.88-27A297.06,297.06,0,0,1,128,77.14,290.74,290.74,0,0,1,155,101,289.17,289.17,0,0,1,178.85,128ZM50,50c2.68-2.69,6.84-4,12.17-4,13.11,0,33.3,8,55.87,23.81A302.94,302.94,0,0,0,92.54,92.54,306.2,306.2,0,0,0,69.76,118C47.6,86.25,40.68,59.24,50,50ZM50,206h0c-9.28-9.28-2.35-36.29,19.8-68a306.2,306.2,0,0,0,22.78,25.45A306.2,306.2,0,0,0,118,186.24C86.25,208.4,59.24,215.32,50,206ZM206,206c-9.28,9.28-36.29,2.35-68-19.81a304.26,304.26,0,0,0,25.45-22.77A306.2,306.2,0,0,0,186.24,138C208.4,169.75,215.32,196.76,206,206Zm-68-78a10,10,0,1,1-10-10A10,10,0,0,1,138,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M196.12,128c24.65-34.61,37.22-70.38,19.74-87.86S162.61,35.23,128,59.88C93.39,35.23,57.62,22.66,40.14,40.14S35.23,93.39,59.88,128c-24.65,34.61-37.22,70.38-19.74,87.86h0c5.63,5.63,13.15,8.14,21.91,8.14,18.48,0,42.48-11.17,66-27.88C151.47,212.83,175.47,224,194,224c8.76,0,16.29-2.52,21.91-8.14h0C233.34,198.38,220.77,162.61,196.12,128Zm8.43-76.55c7.64,7.64,2.48,32.4-18.52,63.28a300.33,300.33,0,0,0-21.19-23.57A300.33,300.33,0,0,0,141.27,70C172.15,49,196.91,43.8,204.55,51.45ZM176.29,128a289.14,289.14,0,0,1-22.76,25.53A289.14,289.14,0,0,1,128,176.29a289.14,289.14,0,0,1-25.53-22.76A289.14,289.14,0,0,1,79.71,128,298.62,298.62,0,0,1,128,79.71a289.14,289.14,0,0,1,25.53,22.76A289.14,289.14,0,0,1,176.29,128ZM51.45,51.45c2.2-2.21,5.83-3.35,10.62-3.35C73.89,48.1,92.76,55,114.72,70A304,304,0,0,0,91.16,91.16,300.33,300.33,0,0,0,70,114.73C49,83.85,43.81,59.09,51.45,51.45Zm0,153.1C43.81,196.91,49,172.15,70,141.27a300.33,300.33,0,0,0,21.19,23.57A304.18,304.18,0,0,0,114.73,186C83.85,207,59.09,212.2,51.45,204.55Zm153.1,0c-7.64,7.65-32.4,2.48-63.28-18.52a304.18,304.18,0,0,0,23.57-21.19A300.33,300.33,0,0,0,186,141.27C207,172.15,212.19,196.91,204.55,204.55ZM140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M211.89,162.47A195.58,195.58,0,0,0,191.36,128a195.58,195.58,0,0,0,20.53-34.47c10.38-23.06,10.81-41,1.21-50.63s-27.57-9.17-50.63,1.21A195.58,195.58,0,0,0,128,64.64,195.58,195.58,0,0,0,93.53,44.11C70.47,33.73,52.49,33.3,42.9,42.9s-9.17,27.57,1.21,50.63A195.58,195.58,0,0,0,64.64,128a195.58,195.58,0,0,0-20.53,34.47c-10.38,23.06-10.81,41-1.21,50.63h0C47.5,217.7,54,220,62.12,220c8.78,0,19.41-2.71,31.41-8.11A195.58,195.58,0,0,0,128,191.36a195.58,195.58,0,0,0,34.47,20.53c12,5.4,22.63,8.11,31.41,8.11,8.09,0,14.62-2.3,19.22-6.9h0C222.7,203.51,222.27,185.53,211.89,162.47ZM207.45,48.55c10.27,10.28,3.14,39.05-21.1,72.84A301,301,0,0,0,162,94a301,301,0,0,0-27.43-24.31C168.4,45.4,197.17,38.27,207.45,48.55Zm-26,79.45a293.16,293.16,0,0,1-25,28.38,291.82,291.82,0,0,1-28.38,25,291.82,291.82,0,0,1-28.38-25,293.16,293.16,0,0,1-25-28.38A302.36,302.36,0,0,1,128,74.58a295.83,295.83,0,0,1,28.37,25A293.16,293.16,0,0,1,181.41,128ZM48.55,48.55c3.05-3,7.71-4.55,13.64-4.55,14.11,0,35.41,8.59,59.19,25.65a304.89,304.89,0,0,0-51.73,51.74C45.41,87.6,38.28,58.83,48.55,48.55Zm0,158.9c-10.27-10.28-3.14-39,21.1-72.84A301,301,0,0,0,94,162a301,301,0,0,0,27.43,24.31C87.6,210.59,58.83,217.72,48.55,207.45Zm158.9,0c-10.28,10.27-39,3.14-72.84-21.1A301,301,0,0,0,162,162a301,301,0,0,0,24.31-27.43C210.59,168.4,217.72,197.17,207.45,207.45ZM136,128a8,8,0,1,1-8-8A8,8,0,0,1,136,128Z\" }))\n ]\n]);\nexport {\n c as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,44H160a43.86,43.86,0,0,0-32,13.85A43.86,43.86,0,0,0,96,44H24A12,12,0,0,0,12,56V200a12,12,0,0,0,12,12H96a20,20,0,0,1,20,20,12,12,0,0,0,24,0,20,20,0,0,1,20-20h72a12,12,0,0,0,12-12V56A12,12,0,0,0,232,44ZM96,188H36V68H96a20,20,0,0,1,20,20V192.81A43.79,43.79,0,0,0,96,188Zm124,0H160a43.71,43.71,0,0,0-20,4.83V88a20,20,0,0,1,20-20h60Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M232,56V200H160a32,32,0,0,0-32,32,32,32,0,0,0-32-32H24V56H96a32,32,0,0,1,32,32,32,32,0,0,1,32-32Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M240,56V200a8,8,0,0,1-8,8H160a24,24,0,0,0-24,23.94,7.9,7.9,0,0,1-5.12,7.55A8,8,0,0,1,120,232a24,24,0,0,0-24-24H24a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H88a32,32,0,0,1,32,32v87.73a8.17,8.17,0,0,0,7.47,8.25,8,8,0,0,0,8.53-8V80a32,32,0,0,1,32-32h64A8,8,0,0,1,240,56Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,50H160a38,38,0,0,0-32,17.55A38,38,0,0,0,96,50H24a6,6,0,0,0-6,6V200a6,6,0,0,0,6,6H96a26,26,0,0,1,26,26,6,6,0,0,0,12,0,26,26,0,0,1,26-26h72a6,6,0,0,0,6-6V56A6,6,0,0,0,232,50ZM96,194H30V62H96a26,26,0,0,1,26,26V204.31A37.86,37.86,0,0,0,96,194Zm130,0H160a37.87,37.87,0,0,0-26,10.32V88a26,26,0,0,1,26-26h66Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,52H160a36,36,0,0,0-32,19.54A36,36,0,0,0,96,52H24a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4H96a28,28,0,0,1,28,28,4,4,0,0,0,8,0,28,28,0,0,1,28-28h72a4,4,0,0,0,4-4V56A4,4,0,0,0,232,52ZM96,196H28V60H96a28,28,0,0,1,28,28V209.4A35.93,35.93,0,0,0,96,196Zm132,0H160a35.94,35.94,0,0,0-28,13.41V88a28,28,0,0,1,28-28h68Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,140a12,12,0,0,1-12,12H72a12,12,0,0,1,0-24h44A12,12,0,0,1,128,140ZM116,88H72a12,12,0,0,0,0,24h44a12,12,0,0,0,0-24Zm120,79.14V228a12,12,0,0,1-17.95,10.42L196,225.82,174,238.42A12,12,0,0,1,156,228V204H40a20,20,0,0,1-20-20V56A20,20,0,0,1,40,36H216a20,20,0,0,1,20,20V88.86a55.87,55.87,0,0,1,0,78.28ZM196,160a32,32,0,1,0-32-32A32,32,0,0,0,196,160Zm-40,20V167.14a56,56,0,0,1,56-92.8V60H44V180Zm56,27.32V181.66a55.87,55.87,0,0,1-32,0v25.66l10.05-5.74a12,12,0,0,1,11.9,0Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M224,56V90.06h0a44,44,0,1,0-56,67.88h0V192H40a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,136a8,8,0,0,1-8,8H72a8,8,0,0,1,0-16h48A8,8,0,0,1,128,136Zm-8-40H72a8,8,0,0,0,0,16h48a8,8,0,0,0,0-16Zm112,65.47V224A8,8,0,0,1,220,231l-24-13.74L172,231A8,8,0,0,1,160,224V200H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216a16,16,0,0,1,16,16V86.53a51.88,51.88,0,0,1,0,74.94ZM160,184V161.47A52,52,0,0,1,216,76V56H40V184Zm56-12a51.88,51.88,0,0,1-40,0v38.22l16-9.16a8,8,0,0,1,7.94,0l16,9.16Zm16-48a36,36,0,1,0-36,36A36,36,0,0,0,232,124Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,86.53V56a16,16,0,0,0-16-16H40A16,16,0,0,0,24,56V184a16,16,0,0,0,16,16H160v24A8,8,0,0,0,172,231l24-13.74L220,231A8,8,0,0,0,232,224V161.47a51.88,51.88,0,0,0,0-74.94ZM128,144H72a8,8,0,0,1,0-16h56a8,8,0,0,1,0,16Zm0-32H72a8,8,0,0,1,0-16h56a8,8,0,0,1,0,16Zm88,98.21-16-9.16a8,8,0,0,0-7.94,0l-16,9.16V172a51.88,51.88,0,0,0,40,0ZM196,160a36,36,0,1,1,36-36A36,36,0,0,1,196,160Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M126,136a6,6,0,0,1-6,6H72a6,6,0,0,1,0-12h48A6,6,0,0,1,126,136Zm-6-38H72a6,6,0,0,0,0,12h48a6,6,0,0,0,0-12Zm110,62.62V224a6,6,0,0,1-9,5.21l-25-14.3-25,14.3a6,6,0,0,1-9-5.21V198H40a14,14,0,0,1-14-14V56A14,14,0,0,1,40,42H216a14,14,0,0,1,14,14V87.38a49.91,49.91,0,0,1,0,73.24ZM196,86a38,38,0,1,0,38,38A38,38,0,0,0,196,86ZM162,186V160.62a50,50,0,0,1,56-81.51V56a2,2,0,0,0-2-2H40a2,2,0,0,0-2,2V184a2,2,0,0,0,2,2Zm56-17.11a49.91,49.91,0,0,1-44,0v44.77l19-10.87a6,6,0,0,1,6,0l19,10.87Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,136a8,8,0,0,1-8,8H72a8,8,0,0,1,0-16h48A8,8,0,0,1,128,136Zm-8-40H72a8,8,0,0,0,0,16h48a8,8,0,0,0,0-16Zm112,65.47V224A8,8,0,0,1,220,231l-24-13.74L172,231A8,8,0,0,1,160,224V200H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216a16,16,0,0,1,16,16V86.53a51.88,51.88,0,0,1,0,74.94ZM160,184V161.47A52,52,0,0,1,216,76V56H40V184Zm56-12a51.88,51.88,0,0,1-40,0v38.22l16-9.16a8,8,0,0,1,7.94,0l16,9.16Zm16-48a36,36,0,1,0-36,36A36,36,0,0,0,232,124Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M124,136a4,4,0,0,1-4,4H72a4,4,0,0,1,0-8h48A4,4,0,0,1,124,136Zm-4-36H72a4,4,0,0,0,0,8h48a4,4,0,0,0,0-8Zm108,59.74V224a4,4,0,0,1-6,3.47l-26-14.86-26,14.86a4,4,0,0,1-6-3.47V196H40a12,12,0,0,1-12-12V56A12,12,0,0,1,40,44H216a12,12,0,0,1,12,12V88.26a47.92,47.92,0,0,1,0,71.48ZM196,84a40,40,0,1,0,40,40A40,40,0,0,0,196,84ZM164,188V159.74a48,48,0,0,1,56-77.28V56a4,4,0,0,0-4-4H40a4,4,0,0,0-4,4V184a4,4,0,0,0,4,4Zm56-22.46a47.81,47.81,0,0,1-48,0v51.57l22-12.58a4,4,0,0,1,4,0l22,12.58Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,128a16,16,0,1,1-16-16A16,16,0,0,1,120,128Zm32-16a16,16,0,1,0,16,16A16,16,0,0,0,152,112Zm84,16A108,108,0,0,1,78.77,224.15L46.34,235A20,20,0,0,1,21,209.66l10.81-32.43A108,108,0,1,1,236,128Zm-24,0A84,84,0,1,0,55.27,170.06a12,12,0,0,1,1,9.81l-9.93,29.79,29.79-9.93a12.1,12.1,0,0,1,3.8-.62,12,12,0,0,1,6,1.62A84,84,0,0,0,212,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M224,128A96,96,0,0,1,79.93,211.11h0L42.54,223.58a8,8,0,0,1-10.12-10.12l12.47-37.39h0A96,96,0,1,1,224,128Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24Zm0,192a87.87,87.87,0,0,1-44.06-11.81,8,8,0,0,0-4-1.08,7.85,7.85,0,0,0-2.53.42L40,216,52.47,178.6a8,8,0,0,0-.66-6.54A88,88,0,1,1,128,216Zm12-88a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm-44,0a12,12,0,1,1-12-12A12,12,0,0,1,96,128Zm88,0a12,12,0,1,1-12-12A12,12,0,0,1,184,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24ZM84,140a12,12,0,1,1,12-12A12,12,0,0,1,84,140Zm44,0a12,12,0,1,1,12-12A12,12,0,0,1,128,140Zm44,0a12,12,0,1,1,12-12A12,12,0,0,1,172,140Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M138,128a10,10,0,1,1-10-10A10,10,0,0,1,138,128ZM84,118a10,10,0,1,0,10,10A10,10,0,0,0,84,118Zm88,0a10,10,0,1,0,10,10A10,10,0,0,0,172,118Zm58,10A102,102,0,0,1,79.31,217.65L44.44,229.27a14,14,0,0,1-17.71-17.71l11.62-34.87A102,102,0,1,1,230,128Zm-12,0A90,90,0,1,0,50.08,173.06a6,6,0,0,1,.5,4.91L38.12,215.35a2,2,0,0,0,2.53,2.53L78,205.42a6.2,6.2,0,0,1,1.9-.31,6.09,6.09,0,0,1,3,.81A90,90,0,0,0,218,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128ZM84,116a12,12,0,1,0,12,12A12,12,0,0,0,84,116Zm88,0a12,12,0,1,0,12,12A12,12,0,0,0,172,116Zm60,12A104,104,0,0,1,79.12,219.82L45.07,231.17a16,16,0,0,1-20.24-20.24l11.35-34.05A104,104,0,1,1,232,128Zm-16,0A88,88,0,1,0,51.81,172.06a8,8,0,0,1,.66,6.54L40,216,77.4,203.53a7.85,7.85,0,0,1,2.53-.42,8,8,0,0,1,4,1.08A88,88,0,0,0,216,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M136,128a8,8,0,1,1-8-8A8,8,0,0,1,136,128Zm-52-8a8,8,0,1,0,8,8A8,8,0,0,0,84,120Zm88,0a8,8,0,1,0,8,8A8,8,0,0,0,172,120Zm56,8A100,100,0,0,1,79.5,215.47l-35.69,11.9a12,12,0,0,1-15.18-15.18l11.9-35.69A100,100,0,1,1,228,128Zm-8,0A92,92,0,1,0,48.35,174.07a4,4,0,0,1,.33,3.27L36.22,214.72a4,4,0,0,0,5.06,5.06l37.38-12.46a3.93,3.93,0,0,1,1.27-.21,4.05,4.05,0,0,1,2,.54A92,92,0,0,0,220,128Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,44H32A12,12,0,0,0,20,56V192a20,20,0,0,0,20,20H216a20,20,0,0,0,20-20V56A12,12,0,0,0,224,44Zm-96,83.72L62.85,68h130.3ZM92.79,128,44,172.72V83.28Zm17.76,16.28,9.34,8.57a12,12,0,0,0,16.22,0l9.34-8.57L193.15,188H62.85ZM163.21,128,212,83.28v89.44Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,56l-96,88L32,56Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48Zm-96,85.15L52.57,64H203.43ZM98.71,128,40,181.81V74.19Zm11.84,10.85,12,11.05a8,8,0,0,0,10.82,0l12-11.05,58,53.15H52.57ZM157.29,128,216,74.18V181.82Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM98.71,128,40,181.81V74.19Zm11.84,10.85,12,11.05a8,8,0,0,0,10.82,0l12-11.05,58,53.15H52.57ZM157.29,128,216,74.18V181.82Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,50H32a6,6,0,0,0-6,6V192a14,14,0,0,0,14,14H216a14,14,0,0,0,14-14V56A6,6,0,0,0,224,50Zm-96,85.86L47.42,62H208.58ZM101.67,128,38,186.36V69.64Zm8.88,8.14L124,148.42a6,6,0,0,0,8.1,0l13.4-12.28L208.58,194H47.43ZM154.33,128,218,69.64V186.36Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48Zm-96,85.15L52.57,64H203.43ZM98.71,128,40,181.81V74.19Zm11.84,10.85,12,11.05a8,8,0,0,0,10.82,0l12-11.05,58,53.15H52.57ZM157.29,128,216,74.18V181.82Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,52H32a4,4,0,0,0-4,4V192a12,12,0,0,0,12,12H216a12,12,0,0,0,12-12V56A4,4,0,0,0,224,52Zm-96,86.57L42.28,60H213.72ZM104.63,128,36,190.91V65.09Zm5.92,5.43L125.3,147a4,4,0,0,0,5.4,0l14.75-13.52L213.72,196H42.28ZM151.37,128,220,65.09V190.91Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M188,44a32,32,0,0,0-8,1V44a32,32,0,0,0-60.79-14A32,32,0,0,0,76,60v50.83a32,32,0,0,0-52,36.7C55.82,214.6,75.35,244,128,244a92.1,92.1,0,0,0,92-92V76A32,32,0,0,0,188,44Zm8,108a68.08,68.08,0,0,1-68,68c-35.83,0-49.71-14-82.48-83.14-.14-.29-.29-.58-.45-.86a8,8,0,0,1,13.85-8l.21.35,18.68,30A12,12,0,0,0,100,152V60a8,8,0,0,1,16,0v60a12,12,0,0,0,24,0V44a8,8,0,0,1,16,0v76a12,12,0,0,0,24,0V76a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M208,76v76a80,80,0,0,1-80,80c-44.18,0-60.75-21.28-93.32-90a20,20,0,0,1,34.64-20L88,152V60a20,20,0,0,1,40,0V44a20,20,0,0,1,40,0V76a20,20,0,0,1,40,0Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M188,48a27.75,27.75,0,0,0-12,2.71V44a28,28,0,0,0-54.65-8.6A28,28,0,0,0,80,60v64l-3.82-6.13a28,28,0,0,0-48.6,27.82c16,33.77,28.93,57.72,43.72,72.69C86.24,233.54,103.2,240,128,240a88.1,88.1,0,0,0,88-88V76A28,28,0,0,0,188,48Zm12,104a72.08,72.08,0,0,1-72,72c-20.38,0-33.51-4.88-45.33-16.85C69.44,193.74,57.26,171,41.9,138.58a6.36,6.36,0,0,0-.3-.58,12,12,0,0,1,20.79-12,1.76,1.76,0,0,0,.14.23l18.67,30A8,8,0,0,0,96,152V60a12,12,0,0,1,24,0v60a8,8,0,0,0,16,0V44a12,12,0,0,1,24,0v76a8,8,0,0,0,16,0V76a12,12,0,0,1,24,0Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,64v90.93c0,46.2-36.85,84.55-83,85.06A83.71,83.71,0,0,1,72.6,215.4C50.79,192.33,26.15,136,26.15,136a16,16,0,0,1,6.53-22.23c7.66-4,17.1-.84,21.4,6.62l21,36.44a6.09,6.09,0,0,0,6,3.09l.12,0A8.19,8.19,0,0,0,88,151.74V48a16,16,0,0,1,16.77-16c8.61.4,15.23,7.82,15.23,16.43V112a8,8,0,0,0,8.53,8,8.17,8.17,0,0,0,7.47-8.25V32a16,16,0,0,1,16.77-16c8.61.4,15.23,7.82,15.23,16.43V120a8,8,0,0,0,8.53,8,8.17,8.17,0,0,0,7.47-8.25V64.45c0-8.61,6.62-16,15.23-16.43A16,16,0,0,1,216,64Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M188,50a25.8,25.8,0,0,0-14,4.11V44a26,26,0,0,0-51.41-5.51A26,26,0,0,0,82,60v71l-7.53-12.1a26,26,0,0,0-45.11,25.87C60.76,211,78.51,238,128,238a86.1,86.1,0,0,0,86-86V76A26,26,0,0,0,188,50Zm14,102a74.09,74.09,0,0,1-74,74c-21,0-34.51-5.05-46.75-17.45C67.81,195,55.54,172,40.1,139.43l-.23-.43a14,14,0,0,1,24.25-14l.1.17,18.68,30A6,6,0,0,0,94,152V60a14,14,0,0,1,28,0v60a6,6,0,0,0,12,0V44a14,14,0,0,1,28,0v76a6,6,0,0,0,12,0V76a14,14,0,0,1,28,0Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M188,48a27.75,27.75,0,0,0-12,2.71V44a28,28,0,0,0-54.65-8.6A28,28,0,0,0,80,60v64l-3.82-6.13a28,28,0,0,0-48.6,27.82c16,33.77,28.93,57.72,43.72,72.69C86.24,233.54,103.2,240,128,240a88.1,88.1,0,0,0,88-88V76A28,28,0,0,0,188,48Zm12,104a72.08,72.08,0,0,1-72,72c-20.38,0-33.51-4.88-45.33-16.85C69.44,193.74,57.26,171,41.9,138.58a6.36,6.36,0,0,0-.3-.58,12,12,0,0,1,20.79-12,1.76,1.76,0,0,0,.14.23l18.67,30A8,8,0,0,0,96,152V60a12,12,0,0,1,24,0v60a8,8,0,0,0,16,0V44a12,12,0,0,1,24,0v76a8,8,0,0,0,16,0V76a12,12,0,0,1,24,0Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M188,52a23.9,23.9,0,0,0-16,6.13V44a24,24,0,0,0-47.93-1.8A24,24,0,0,0,84,60v78L72.75,119.94a24,24,0,0,0-41.62,23.92C64.44,214.12,82.17,236,128,236a84.09,84.09,0,0,0,84-84V76A24,24,0,0,0,188,52Zm16,100a76.09,76.09,0,0,1-76,76c-37.29,0-53.59-11.51-89.71-87.71l-.15-.29a16,16,0,0,1,27.71-16,.75.75,0,0,1,.07.12l18.68,30A4,4,0,0,0,92,152V60a16,16,0,0,1,32,0v60a4,4,0,0,0,8,0V44a16,16,0,0,1,32,0v76a4,4,0,0,0,8,0V76a16,16,0,0,1,32,0Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M200,20H56A20,20,0,0,0,36,40V216a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V40A20,20,0,0,0,200,20Zm-4,192H60V44H196ZM84,68A12,12,0,0,1,96,56h64a12,12,0,0,1,0,24H96A12,12,0,0,1,84,68Zm8.8,127.37a48,48,0,0,1,70.4,0,12,12,0,0,0,17.6-16.32,72,72,0,0,0-19.21-14.68,44,44,0,1,0-67.19,0,72.12,72.12,0,0,0-19.2,14.68,12,12,0,0,0,17.6,16.32ZM128,116a20,20,0,1,1-20,20A20,20,0,0,1,128,116Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M200,32H56a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H200a8,8,0,0,0,8-8V40A8,8,0,0,0,200,32ZM128,168a32,32,0,1,1,32-32A32,32,0,0,1,128,168Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M75.19,198.4a8,8,0,0,0,11.21-1.6,52,52,0,0,1,83.2,0,8,8,0,1,0,12.8-9.6A67.88,67.88,0,0,0,155,165.51a40,40,0,1,0-53.94,0A67.88,67.88,0,0,0,73.6,187.2,8,8,0,0,0,75.19,198.4ZM128,112a24,24,0,1,1-24,24A24,24,0,0,1,128,112Zm72-88H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V40A16,16,0,0,0,200,24Zm0,192H56V40H200ZM88,64a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H96A8,8,0,0,1,88,64Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M200,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V40A16,16,0,0,0,200,24ZM96,48h64a8,8,0,0,1,0,16H96a8,8,0,0,1,0-16Zm84.81,150.4a8,8,0,0,1-11.21-1.6,52,52,0,0,0-83.2,0,8,8,0,1,1-12.8-9.6A67.88,67.88,0,0,1,101,165.51a40,40,0,1,1,53.94,0A67.88,67.88,0,0,1,182.4,187.2,8,8,0,0,1,180.81,198.4ZM152,136a24,24,0,1,1-24-24A24,24,0,0,1,152,136Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M151.11,166.13a38,38,0,1,0-46.22,0A65.75,65.75,0,0,0,75.2,188.4a6,6,0,0,0,9.6,7.2,54,54,0,0,1,86.4,0,6,6,0,0,0,9.6-7.2A65.75,65.75,0,0,0,151.11,166.13ZM128,110a26,26,0,1,1-26,26A26,26,0,0,1,128,110Zm72-84H56A14,14,0,0,0,42,40V216a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V40A14,14,0,0,0,200,26Zm2,190a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V40a2,2,0,0,1,2-2H200a2,2,0,0,1,2,2ZM90,64a6,6,0,0,1,6-6h64a6,6,0,0,1,0,12H96A6,6,0,0,1,90,64Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M75.19,198.4a8,8,0,0,0,11.21-1.6,52,52,0,0,1,83.2,0,8,8,0,1,0,12.8-9.6A67.88,67.88,0,0,0,155,165.51a40,40,0,1,0-53.94,0A67.88,67.88,0,0,0,73.6,187.2,8,8,0,0,0,75.19,198.4ZM128,112a24,24,0,1,1-24,24A24,24,0,0,1,128,112Zm72-88H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V40A16,16,0,0,0,200,24Zm0,192H56V40H200ZM88,64a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H96A8,8,0,0,1,88,64Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M146.7,166.75a36,36,0,1,0-37.4,0A63.61,63.61,0,0,0,76.8,189.6a4,4,0,0,0,6.4,4.8,56,56,0,0,1,89.6,0,4,4,0,0,0,6.4-4.8A63.65,63.65,0,0,0,146.7,166.75ZM100,136a28,28,0,1,1,28,28A28,28,0,0,1,100,136ZM200,28H56A12,12,0,0,0,44,40V216a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V40A12,12,0,0,0,200,28Zm4,188a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4H200a4,4,0,0,1,4,4ZM92,64a4,4,0,0,1,4-4h64a4,4,0,0,1,0,8H96A4,4,0,0,1,92,64Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport r from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Atom.es.js\";\nconst t = o.forwardRef((m, e) => /* @__PURE__ */ o.createElement(r, { ref: e, ...m, weights: a }));\nt.displayName = \"AtomIcon\";\nconst n = t;\nexport {\n n as Atom,\n t as AtomIcon\n};\n","import * as o from \"react\";\nimport n from \"../lib/IconBase.es.js\";\nimport a from \"../defs/BookOpen.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(n, { ref: t, ...r, weights: a }));\ne.displayName = \"BookOpenIcon\";\nconst c = e;\nexport {\n c as BookOpen,\n e as BookOpenIcon\n};\n","import * as e from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport i from \"../defs/Certificate.es.js\";\nconst t = e.forwardRef((o, r) => /* @__PURE__ */ e.createElement(a, { ref: r, ...o, weights: i }));\nt.displayName = \"CertificateIcon\";\nconst m = t;\nexport {\n m as Certificate,\n t as CertificateIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport c from \"../defs/ChatCircleDots.es.js\";\nconst t = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(a, { ref: r, ...e, weights: c }));\nt.displayName = \"ChatCircleDotsIcon\";\nconst m = t;\nexport {\n m as ChatCircleDots,\n t as ChatCircleDotsIcon\n};\n","import * as e from \"react\";\nimport n from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Envelope.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(n, { ref: t, ...r, weights: a }));\no.displayName = \"EnvelopeIcon\";\nconst c = o;\nexport {\n c as Envelope,\n o as EnvelopeIcon\n};\n","import * as o from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport n from \"../defs/Hand.es.js\";\nconst a = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(t, { ref: r, ...e, weights: n }));\na.displayName = \"HandIcon\";\nconst s = a;\nexport {\n s as Hand,\n a as HandIcon\n};\n","import * as e from \"react\";\nimport i from \"../lib/IconBase.es.js\";\nimport n from \"../defs/IdentificationBadge.es.js\";\nconst o = e.forwardRef((t, a) => /* @__PURE__ */ e.createElement(i, { ref: a, ...t, weights: n }));\no.displayName = \"IdentificationBadgeIcon\";\nconst d = o;\nexport {\n d as IdentificationBadge,\n o as IdentificationBadgeIcon\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isScopeStringFor = isScopeStringFor;\nexports.isScopeSyntaxFor = isScopeSyntaxFor;\n/**\n * Allows to quickly check if a scope is for a specific resource.\n */\nfunction isScopeStringFor(value, prefix) {\n if (value.length > prefix.length) {\n // First, check the next char is either : or ?\n const nextChar = value.charCodeAt(prefix.length);\n if (nextChar !== 0x3a /* : */ && nextChar !== 0x3f /* ? */) {\n return false;\n }\n // Then check the full prefix\n return value.startsWith(prefix);\n }\n else {\n // value and prefix must be equal\n return value === prefix;\n }\n}\nfunction isScopeSyntaxFor(syntax, prefix) {\n return syntax.prefix === prefix;\n}\n//# sourceMappingURL=syntax.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.minIdx = minIdx;\nexports.knownValuesValidator = knownValuesValidator;\nexports.isNonNullable = isNonNullable;\nfunction minIdx(a, b) {\n if (a === -1)\n return b;\n if (b === -1)\n return a;\n return Math.min(a, b);\n}\nfunction knownValuesValidator(values) {\n const set = new Set(values);\n return (value) => set.has(value);\n}\nfunction isNonNullable(value) {\n return value != null;\n}\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopeStringSyntax = void 0;\nconst util_js_1 = require(\"./util.js\");\n/**\n * Translates a scope string into a {@link ScopeSyntax}.\n */\nclass ScopeStringSyntax {\n constructor(prefix, positional, params) {\n Object.defineProperty(this, \"prefix\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: prefix\n });\n Object.defineProperty(this, \"positional\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: positional\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: params\n });\n }\n *keys() {\n if (this.params)\n yield* this.params.keys();\n }\n getSingle(key) {\n if (!this.params?.has(key))\n return undefined;\n const value = this.params.getAll(key);\n if (value.length > 1)\n return null;\n return value[0];\n }\n getMulti(key) {\n if (!this.params?.has(key))\n return undefined;\n return this.params.getAll(key);\n }\n toString() {\n let scope = this.prefix;\n if (this.positional !== undefined) {\n scope += `:${normalizeURIComponent(encodeURIComponent(this.positional))}`;\n }\n if (this.params?.size) {\n scope += `?${normalizeURIComponent(this.params.toString())}`;\n }\n return scope;\n }\n static fromString(scopeValue) {\n const paramIdx = scopeValue.indexOf('?');\n const colonIdx = scopeValue.indexOf(':');\n const prefixEnd = (0, util_js_1.minIdx)(paramIdx, colonIdx);\n // No param or positional\n if (prefixEnd === -1) {\n return new ScopeStringSyntax(scopeValue);\n }\n const prefix = scopeValue.slice(0, prefixEnd);\n // Parse the positional parameter if present\n const positional = colonIdx !== -1\n ? paramIdx === -1\n ? decodeURIComponent(scopeValue.slice(colonIdx + 1))\n : colonIdx < paramIdx\n ? decodeURIComponent(scopeValue.slice(colonIdx + 1, paramIdx))\n : undefined\n : undefined;\n // Parse the query string if present and non empty\n const params = paramIdx !== -1 && paramIdx < scopeValue.length - 1\n ? new URLSearchParams(scopeValue.slice(paramIdx + 1))\n : undefined;\n return new ScopeStringSyntax(prefix, positional, params);\n }\n}\nexports.ScopeStringSyntax = ScopeStringSyntax;\n/**\n * Set of characters that are allowed in scope components without encoding. This\n * is used to normalize scope components.\n */\nconst ALLOWED_SCOPE_CHARS = new Set(\n// @NOTE This list must not contain \"?\" or \"&\" as it would interfere with\n// query string parsing.\n[':', '/', '+', ',', '@', '%']);\nconst NORMALIZABLE_CHARS_MAP = new Map(Array.from(ALLOWED_SCOPE_CHARS, (c) => [encodeURIComponent(c), c]).filter(([encoded, c]) => \n// Make sure that any char added to ALLOWED_SCOPE_CHARS that is a char\n// that indeed needs encoding. Also, the normalizeURIComponent only\n// supports three-character percent-encoded sequences.\nencoded !== c && encoded.length === 3 && encoded.startsWith('%')));\n/**\n * Assumes a properly url-encoded string.\n */\nfunction normalizeURIComponent(value) {\n // No need to read the last two characters since percent encoded characters\n // are always three characters long.\n let end = value.length - 2;\n for (let i = 0; i < end; i++) {\n // Check if the character is a percent-encoded character\n if (value.charCodeAt(i) === 0x25 /* % */) {\n // Read the next encoded char. Current version only supports\n // three-character percent-encoded sequences.\n const encodedChar = value.slice(i, i + 3);\n // Check if the encoded character is in the normalization map\n const normalizedChar = NORMALIZABLE_CHARS_MAP.get(encodedChar);\n if (normalizedChar) {\n // Replace the encoded character with its normalized version\n value = `${value.slice(0, i)}${normalizedChar}${value.slice(i + encodedChar.length)}`;\n // Adjust index to account for the length change\n i += normalizedChar.length - 1;\n // Adjust end index since we replaced encoded char with normalized char\n end -= encodedChar.length - normalizedChar.length;\n }\n }\n }\n return value;\n}\n//# sourceMappingURL=syntax-string.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Parser = void 0;\nconst syntax_string_js_1 = require(\"./syntax-string.js\");\nclass Parser {\n constructor(prefix, schema, positionalName) {\n Object.defineProperty(this, \"prefix\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: prefix\n });\n Object.defineProperty(this, \"schema\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: schema\n });\n Object.defineProperty(this, \"positionalName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: positionalName\n });\n Object.defineProperty(this, \"schemaKeys\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.schemaKeys = new Set(Object.keys(schema));\n }\n format(values) {\n const params = new URLSearchParams();\n let positional = undefined;\n for (const key of this.schemaKeys) {\n const value = values[key];\n // Ignore undefined values\n if (value === undefined)\n continue;\n const schema = this.schema[key];\n // Normalize the value if a normalization function is provided\n const normalized = schema.normalize\n ? schema.normalize(value)\n : value;\n // Ignore values that are equal to the default value\n if (!schema.required) {\n if (schema.default === normalized)\n continue;\n if (schema.multiple &&\n schema.default &&\n arrayParamEquals(schema.default, normalized)) {\n continue;\n }\n }\n if (Array.isArray(normalized)) {\n if (key === this.positionalName && normalized.length === 1) {\n positional = String(normalized[0]);\n }\n else {\n // remove duplicates\n const unique = new Set(normalized.map(String));\n for (const v of unique)\n params.append(key, v);\n }\n }\n else {\n if (key === this.positionalName) {\n positional = String(normalized);\n }\n else {\n params.set(key, String(normalized));\n }\n }\n }\n return new syntax_string_js_1.ScopeStringSyntax(this.prefix, positional, params).toString();\n }\n // @NOTE If we needed to ever have more detailed reason as to why parsing\n // fails, this function could easily be updated to return a\n // ValidationResult<T> type that explains the reason for failure.\n parse(syntax) {\n // @NOTE no need to check prefix, since the typing (P generic) already\n // ensures it matches\n for (const key of syntax.keys()) {\n if (!this.schemaKeys.has(key))\n return null;\n }\n const result = Object.create(null);\n for (const key of this.schemaKeys) {\n const definition = this.schema[key];\n const param = definition.multiple\n ? syntax.getMulti(key)\n : syntax.getSingle(key);\n if (param === null) {\n return null; // Value is not valid\n }\n else if (param !== undefined) {\n if (key === this.positionalName && syntax.positional !== undefined) {\n // Positional parameter cannot be used with named parameters\n return null;\n }\n if (definition.multiple) {\n // Empty array is not valid\n if (!param.length)\n return null;\n if (!param.every(definition.validate)) {\n return null;\n }\n }\n else {\n if (!definition.validate(param)) {\n return null;\n }\n }\n result[key] = param;\n }\n else if (key === this.positionalName &&\n syntax.positional !== undefined) {\n // No named parameters found, but there is a positional parameter\n const { positional } = syntax;\n if (!definition.validate(positional)) {\n return null;\n }\n result[key] = definition.multiple ? [positional] : positional;\n }\n else if (definition.required) {\n return null;\n }\n else {\n result[key] = definition.default;\n }\n }\n return result;\n }\n}\nexports.Parser = Parser;\n/**\n * Two param arrays are considered equal if they contain the same values,\n * regardless of the order and duplicates.\n * @param a - The first array to compare.\n * @param b - The second array to compare.\n */\nfunction arrayParamEquals(a, b) {\n for (const item of a)\n if (!b.includes(item))\n return false;\n for (const item of b)\n if (!a.includes(item))\n return false;\n return true;\n}\n//# sourceMappingURL=parser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AccountPermission = exports.ACCOUNT_ACTIONS = exports.ACCOUNT_ATTRIBUTES = void 0;\nconst parser_js_1 = require(\"../lib/parser.js\");\nconst syntax_string_js_1 = require(\"../lib/syntax-string.js\");\nconst syntax_js_1 = require(\"../lib/syntax.js\");\nconst util_js_1 = require(\"../lib/util.js\");\nexports.ACCOUNT_ATTRIBUTES = Object.freeze([\n 'email',\n 'repo',\n 'status',\n]);\nexports.ACCOUNT_ACTIONS = Object.freeze(['read', 'manage']);\nclass AccountPermission {\n constructor(attr, action) {\n Object.defineProperty(this, \"attr\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: attr\n });\n Object.defineProperty(this, \"action\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: action\n });\n }\n matches(options) {\n return (this.attr === options.attr &&\n (this.action.includes('manage') || this.action.includes(options.action)));\n }\n toString() {\n return AccountPermission.parser.format(this);\n }\n static fromString(scope) {\n if (!(0, syntax_js_1.isScopeStringFor)(scope, 'account'))\n return null;\n const syntax = syntax_string_js_1.ScopeStringSyntax.fromString(scope);\n return AccountPermission.fromSyntax(syntax);\n }\n static fromSyntax(syntax) {\n const result = AccountPermission.parser.parse(syntax);\n if (!result)\n return null;\n return new AccountPermission(result.attr, result.action);\n }\n static scopeNeededFor(options) {\n return AccountPermission.parser.format({\n attr: options.attr,\n action: [options.action],\n });\n }\n}\nexports.AccountPermission = AccountPermission;\nObject.defineProperty(AccountPermission, \"parser\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new parser_js_1.Parser('account', {\n attr: {\n multiple: false,\n required: true,\n validate: (0, util_js_1.knownValuesValidator)(exports.ACCOUNT_ATTRIBUTES),\n },\n action: {\n multiple: true,\n required: false,\n validate: (0, util_js_1.knownValuesValidator)(exports.ACCOUNT_ACTIONS),\n default: ['read'],\n },\n }, 'attr')\n});\n//# sourceMappingURL=account-permission.js.map","\"use strict\";\n// @TODO Refactor in shared location for use with other @atproto packages\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isMime = isMime;\nexports.isAccept = isAccept;\nexports.matchesAccept = matchesAccept;\nexports.matchesAnyAccept = matchesAnyAccept;\nfunction isStringSlashString(value) {\n const slashIndex = value.indexOf('/');\n if (slashIndex === -1)\n return false; // Missing slash\n if (slashIndex === 0)\n return false; // No leading part before the slash\n if (slashIndex === value.length - 1)\n return false; // No trailing part after the slash\n if (value.includes('/', slashIndex + 1))\n return false; // More than one slash\n if (value.includes(' '))\n return false; // Spaces are not allowed\n return true;\n}\nfunction isMime(value) {\n return isStringSlashString(value) && !value.includes('*');\n}\nfunction isAccept(value) {\n if (typeof value !== 'string')\n return false;\n if (value === '*/*')\n return true; // Fast path for the most common case\n if (!isStringSlashString(value))\n return false;\n return !value.includes('*') || value.endsWith('/*');\n}\n/**\n * @note \"unsafe\" in that it does not check if either {@link accept} or\n * {@link mime} are actually valid values (and could, therefore, lead to false\n * positives if forged values are used).\n */\nfunction matchesAcceptUnsafe(accept, mime) {\n if (accept === '*/*') {\n return true;\n }\n if (accept.endsWith('/*')) {\n return mime.startsWith(accept.slice(0, -1));\n }\n return accept === mime;\n}\nfunction matchesAccept(accept, mime) {\n return isMime(mime) && matchesAcceptUnsafe(accept, mime);\n}\n/**\n * @note \"unsafe\" in that it does not check if either {@link accept} or\n * {@link mime} are actually valid values (and could, therefore, lead to false\n * positives if forged values are used).\n */\nfunction matchesAnyAcceptUnsafe(acceptable, mime) {\n for (const accept of acceptable) {\n if (matchesAcceptUnsafe(accept, mime)) {\n return true;\n }\n }\n return false;\n}\nfunction matchesAnyAccept(acceptable, mime) {\n return isMime(mime) && matchesAnyAcceptUnsafe(acceptable, mime);\n}\n//# sourceMappingURL=mime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlobPermission = exports.DEFAULT_ACCEPT = void 0;\nconst mime_js_1 = require(\"../lib/mime.js\");\nconst parser_js_1 = require(\"../lib/parser.js\");\nconst syntax_string_js_1 = require(\"../lib/syntax-string.js\");\nconst syntax_js_1 = require(\"../lib/syntax.js\");\nexports.DEFAULT_ACCEPT = Object.freeze(['*/*']);\nclass BlobPermission {\n constructor(accept) {\n Object.defineProperty(this, \"accept\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: accept\n });\n }\n matches(options) {\n return (0, mime_js_1.matchesAnyAccept)(this.accept, options.mime);\n }\n toString() {\n return BlobPermission.parser.format(this);\n }\n static fromString(scope) {\n if (!(0, syntax_js_1.isScopeStringFor)(scope, 'blob'))\n return null;\n const syntax = syntax_string_js_1.ScopeStringSyntax.fromString(scope);\n return BlobPermission.fromSyntax(syntax);\n }\n static fromSyntax(syntax) {\n const result = BlobPermission.parser.parse(syntax);\n if (!result)\n return null;\n return new BlobPermission(result.accept);\n }\n static scopeNeededFor(options) {\n return BlobPermission.parser.format({\n accept: [options.mime],\n });\n }\n}\nexports.BlobPermission = BlobPermission;\nObject.defineProperty(BlobPermission, \"parser\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new parser_js_1.Parser('blob', {\n accept: {\n multiple: true,\n required: true,\n validate: mime_js_1.isAccept,\n normalize: (value) => {\n // Returns a more concise representation of the accept values.\n if (value.includes('*/*'))\n return exports.DEFAULT_ACCEPT;\n return value\n .map(toLowerCase)\n .filter(isNonRedundant)\n .sort();\n },\n },\n }, 'accept')\n});\nfunction toLowerCase(value) {\n return (typeof value === 'string' ? value.toLowerCase() : value);\n}\nfunction isNonRedundant(value, index, arr) {\n if (typeof value !== 'string') {\n return true;\n }\n if (value.endsWith('/*')) {\n // assuming the array contains unique element, wildcards cannot be redundant\n // with one another ('image/*' is not redundant with 'text/*')\n return true;\n }\n const base = value.split('/', 1)[0];\n if (arr.includes(`${base}/*`)) {\n // If another value in the array is a wildcard for the same base, we can\n // skip this one as it is redundant. e.g. if the array contains 'image/png'\n // and 'image/*', we can skip 'image/png' because 'image/*' already covers\n // it.\n return false;\n }\n return true;\n}\n//# sourceMappingURL=blob-permission.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IdentityPermission = exports.IDENTITY_ATTRIBUTES = void 0;\nconst parser_js_1 = require(\"../lib/parser.js\");\nconst syntax_string_js_1 = require(\"../lib/syntax-string.js\");\nconst syntax_js_1 = require(\"../lib/syntax.js\");\nconst util_js_1 = require(\"../lib/util.js\");\nexports.IDENTITY_ATTRIBUTES = Object.freeze(['handle', '*']);\nclass IdentityPermission {\n constructor(attr) {\n Object.defineProperty(this, \"attr\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: attr\n });\n }\n matches(options) {\n return this.attr === '*' || this.attr === options.attr;\n }\n toString() {\n return IdentityPermission.parser.format(this);\n }\n static fromString(scope) {\n if (!(0, syntax_js_1.isScopeStringFor)(scope, 'identity'))\n return null;\n const syntax = syntax_string_js_1.ScopeStringSyntax.fromString(scope);\n return IdentityPermission.fromSyntax(syntax);\n }\n static fromSyntax(syntax) {\n const result = IdentityPermission.parser.parse(syntax);\n if (!result)\n return null;\n return new IdentityPermission(result.attr);\n }\n static scopeNeededFor(options) {\n return IdentityPermission.parser.format(options);\n }\n}\nexports.IdentityPermission = IdentityPermission;\nObject.defineProperty(IdentityPermission, \"parser\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new parser_js_1.Parser('identity', {\n attr: {\n multiple: false,\n required: true,\n validate: (0, util_js_1.knownValuesValidator)(exports.IDENTITY_ATTRIBUTES),\n },\n }, 'attr')\n});\n//# sourceMappingURL=identity-permission.js.map","\"use strict\";\n// Human-readable constraints:\n// - valid W3C DID (https://www.w3.org/TR/did-core/#did-syntax)\n// - entire URI is ASCII: [a-zA-Z0-9._:%-]\n// - always starts \"did:\" (lower-case)\n// - method name is one or more lower-case letters, followed by \":\"\n// - remaining identifier can have any of the above chars, but can not end in \":\"\n// - it seems that a bunch of \":\" can be included, and don't need spaces between\n// - \"%\" is used only for \"percent encoding\" and must be followed by two hex characters (and thus can't end in \"%\")\n// - query (\"?\") and fragment (\"#\") stuff is defined for \"DID URIs\", but not as part of identifier itself\n// - \"The current specification does not take a position on the maximum length of a DID\"\n// - in current atproto, only allowing did:plc and did:web. But not *forcing* this at lexicon layer\n// - hard length limit of 8KBytes\n// - not going to validate \"percent encoding\" here\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidDidError = void 0;\nexports.ensureValidDid = ensureValidDid;\nexports.ensureValidDidRegex = ensureValidDidRegex;\nexports.isValidDid = isValidDid;\nfunction ensureValidDid(input) {\n if (!input.startsWith('did:')) {\n throw new InvalidDidError('DID requires \"did:\" prefix');\n }\n if (input.length > 2048) {\n throw new InvalidDidError('DID is too long (2048 chars max)');\n }\n if (input.endsWith(':') || input.endsWith('%')) {\n throw new InvalidDidError('DID can not end with \":\" or \"%\"');\n }\n // check that all chars are boring ASCII\n if (!/^[a-zA-Z0-9._:%-]*$/.test(input)) {\n throw new InvalidDidError('Disallowed characters in DID (ASCII letters, digits, and a couple other characters only)');\n }\n const { length, 1: method } = input.split(':');\n if (length < 3) {\n throw new InvalidDidError('DID requires prefix, method, and method-specific content');\n }\n if (!/^[a-z]+$/.test(method)) {\n throw new InvalidDidError('DID method must be lower-case letters');\n }\n}\nconst DID_REGEX = /^did:[a-z]+:[a-zA-Z0-9._:%-]*[a-zA-Z0-9._-]$/;\nfunction ensureValidDidRegex(input) {\n // simple regex to enforce most constraints via just regex and length.\n // hand wrote this regex based on above constraints\n if (!DID_REGEX.test(input)) {\n throw new InvalidDidError(\"DID didn't validate via regex\");\n }\n if (input.length > 2048) {\n throw new InvalidDidError('DID is too long (2048 chars max)');\n }\n}\nfunction isValidDid(input) {\n return input.length <= 2048 && DID_REGEX.test(input);\n}\nclass InvalidDidError extends Error {\n}\nexports.InvalidDidError = InvalidDidError;\n//# sourceMappingURL=did.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DisallowedDomainError = exports.UnsupportedDomainError = exports.ReservedHandleError = exports.InvalidHandleError = exports.DISALLOWED_TLDS = exports.INVALID_HANDLE = void 0;\nexports.ensureValidHandle = ensureValidHandle;\nexports.ensureValidHandleRegex = ensureValidHandleRegex;\nexports.normalizeHandle = normalizeHandle;\nexports.normalizeAndEnsureValidHandle = normalizeAndEnsureValidHandle;\nexports.isValidHandle = isValidHandle;\nexports.isValidTld = isValidTld;\nexports.INVALID_HANDLE = 'handle.invalid';\n// Currently these are registration-time restrictions, not protocol-level\n// restrictions. We have a couple accounts in the wild that we need to clean up\n// before hard-disallow.\n// See also: https://en.wikipedia.org/wiki/Top-level_domain#Reserved_domains\nexports.DISALLOWED_TLDS = [\n '.local',\n '.arpa',\n '.invalid',\n '.localhost',\n '.internal',\n '.example',\n '.alt',\n // policy could concievably change on \".onion\" some day\n '.onion',\n // NOTE: .test is allowed in testing and devopment. In practical terms\n // \"should\" \"never\" actually resolve and get registered in production\n];\n// Handle constraints, in English:\n// - must be a possible domain name\n// - RFC-1035 is commonly referenced, but has been updated. eg, RFC-3696,\n// section 2. and RFC-3986, section 3. can now have leading numbers (eg,\n// 4chan.org)\n// - \"labels\" (sub-names) are made of ASCII letters, digits, hyphens\n// - can not start or end with a hyphen\n// - TLD (last component) should not start with a digit\n// - can't end with a hyphen (can end with digit)\n// - each segment must be between 1 and 63 characters (not including any periods)\n// - overall length can't be more than 253 characters\n// - separated by (ASCII) periods; does not start or end with period\n// - case insensitive\n// - domains (handles) are equal if they are the same lower-case\n// - punycode allowed for internationalization\n// - no whitespace, null bytes, joining chars, etc\n// - does not validate whether domain or TLD exists, or is a reserved or\n// special TLD (eg, .onion or .local)\n// - does not validate punycode\nfunction ensureValidHandle(input) {\n // check that all chars are boring ASCII\n if (!/^[a-zA-Z0-9.-]*$/.test(input)) {\n throw new InvalidHandleError('Disallowed characters in handle (ASCII letters, digits, dashes, periods only)');\n }\n if (input.length > 253) {\n throw new InvalidHandleError('Handle is too long (253 chars max)');\n }\n const labels = input.split('.');\n if (labels.length < 2) {\n throw new InvalidHandleError('Handle domain needs at least two parts');\n }\n for (let i = 0; i < labels.length; i++) {\n const l = labels[i];\n if (l.length < 1) {\n throw new InvalidHandleError('Handle parts can not be empty');\n }\n if (l.length > 63) {\n throw new InvalidHandleError('Handle part too long (max 63 chars)');\n }\n if (l.endsWith('-') || l.startsWith('-')) {\n throw new InvalidHandleError('Handle parts can not start or end with hyphens');\n }\n if (i + 1 === labels.length && !/^[a-zA-Z]/.test(l)) {\n throw new InvalidHandleError('Handle final component (TLD) must start with ASCII letter');\n }\n }\n}\n// simple regex translation of above constraints\nconst HANDLE_REGEX = /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/;\nfunction ensureValidHandleRegex(input) {\n if (input.length > 253) {\n throw new InvalidHandleError('Handle is too long (253 chars max)');\n }\n if (!HANDLE_REGEX.test(input)) {\n throw new InvalidHandleError(\"Handle didn't validate via regex\");\n }\n}\nfunction normalizeHandle(handle) {\n return handle.toLowerCase();\n}\nfunction normalizeAndEnsureValidHandle(handle) {\n const normalized = normalizeHandle(handle);\n ensureValidHandle(normalized);\n return normalized;\n}\nfunction isValidHandle(input) {\n return input.length <= 253 && HANDLE_REGEX.test(input);\n}\nfunction isValidTld(handle) {\n for (const tld of exports.DISALLOWED_TLDS) {\n if (handle.endsWith(tld)) {\n return false;\n }\n }\n return true;\n}\nclass InvalidHandleError extends Error {\n}\nexports.InvalidHandleError = InvalidHandleError;\n/** @deprecated Never used */\nclass ReservedHandleError extends Error {\n}\nexports.ReservedHandleError = ReservedHandleError;\n/** @deprecated Never used */\nclass UnsupportedDomainError extends Error {\n}\nexports.UnsupportedDomainError = UnsupportedDomainError;\n/** @deprecated Never used */\nclass DisallowedDomainError extends Error {\n}\nexports.DisallowedDomainError = DisallowedDomainError;\n//# sourceMappingURL=handle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isHandleIdentifier = isHandleIdentifier;\nexports.isDidIdentifier = isDidIdentifier;\nexports.assertAtIdentifierString = assertAtIdentifierString;\nexports.ensureValidAtIdentifier = assertAtIdentifierString;\nexports.asAtIdentifierString = asAtIdentifierString;\nexports.isAtIdentifierString = isAtIdentifierString;\nexports.isValidAtIdentifier = isAtIdentifierString;\nexports.ifAtIdentifierString = ifAtIdentifierString;\nconst did_js_1 = require(\"./did.js\");\nconst handle_js_1 = require(\"./handle.js\");\n/**\n * Discriminates {@link HandleString} from a valid {@link AtIdentifierString}.\n *\n * @return `true` if the identifier is a handle, `false` otherwise\n */\nfunction isHandleIdentifier(id) {\n return !isDidIdentifier(id);\n}\n/**\n * Discriminates {@link DidString} from a valid {@link AtIdentifierString}.\n *\n * @return `true` if the identifier is a DID, `false` otherwise\n */\nfunction isDidIdentifier(id) {\n return id.startsWith('did:');\n}\n/**\n * Validates that a string is a valid {@link AtIdentifierString} format string,\n * throwing an error if it is not.\n *\n * @throws InvalidHandleError if the input string does not meet the atproto 'datetime' format requirements.\n * @see {@link AtIdentifierString}\n */\nfunction assertAtIdentifierString(input) {\n try {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Identifier must be a non-empty string');\n }\n else if (input.startsWith('did:')) {\n (0, did_js_1.ensureValidDidRegex)(input);\n }\n else {\n (0, handle_js_1.ensureValidHandleRegex)(input);\n }\n }\n catch (cause) {\n throw new handle_js_1.InvalidHandleError('Invalid DID or handle', { cause });\n }\n}\n/**\n * Casts a string to a {@link AtIdentifierString} if it is a valid at-identifier\n * string, throwing an error if it is not.\n *\n * @throws InvalidHandleError if the input string does not meet the atproto 'at-identifier' format requirements.\n * @see {@link AtIdentifierString}\n */\nfunction asAtIdentifierString(input) {\n assertAtIdentifierString(input);\n return input;\n}\n/**\n * Type guard that checks if a value is a valid AT identifier (DID or handle).\n *\n * @param value - The value to check\n * @returns `true` if the value is a valid AT identifier\n * @see {@link AtIdentifierString}\n */\nfunction isAtIdentifierString(input) {\n if (!input || typeof input !== 'string') {\n return false;\n }\n else if (input.startsWith('did:')) {\n return (0, did_js_1.isValidDid)(input);\n }\n else {\n return (0, handle_js_1.isValidHandle)(input);\n }\n}\n/**\n * Returns the input if it is a valid {@link AtIdentifierString} format string, or\n * `undefined` if it is not.\n *\n * @see {@link AtIdentifierString}\n */\nfunction ifAtIdentifierString(input) {\n return isAtIdentifierString(input) ? input : undefined;\n}\n//# sourceMappingURL=at-identifier.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.success = success;\nexports.failure = failure;\nfunction success(value) {\n return { success: true, value };\n}\nfunction failure(message) {\n return { success: false, message };\n}\n//# sourceMappingURL=result.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidNsidError = exports.NSID = void 0;\nexports.ensureValidNsid = ensureValidNsid;\nexports.parseNsid = parseNsid;\nexports.isValidNsid = isValidNsid;\nexports.validateNsid = validateNsid;\nexports.ensureValidNsidRegex = ensureValidNsidRegex;\nexports.validateNsidRegex = validateNsidRegex;\nconst result_js_1 = require(\"./lib/result.js\");\nclass NSID {\n segments;\n static parse(input) {\n return new NSID(input);\n }\n static create(authority, name) {\n const input = [...authority.split('.').reverse(), name].join('.');\n return new NSID(input);\n }\n static isValid(nsid) {\n return isValidNsid(nsid);\n }\n static from(input) {\n if (input instanceof NSID) {\n // No need to clone, NSID is immutable\n return input;\n }\n if (Array.isArray(input)) {\n return new NSID(input.join('.'));\n }\n return new NSID(String(input));\n }\n constructor(nsid) {\n this.segments = parseNsid(nsid);\n }\n get authority() {\n return this.segments\n .slice(0, this.segments.length - 1)\n .reverse()\n .join('.');\n }\n get name() {\n return this.segments.at(this.segments.length - 1);\n }\n toString() {\n return this.segments.join('.');\n }\n}\nexports.NSID = NSID;\nfunction ensureValidNsid(input) {\n const result = validateNsid(input);\n if (!result.success)\n throw new InvalidNsidError(result.message);\n}\nfunction parseNsid(nsid) {\n const result = validateNsid(nsid);\n if (!result.success)\n throw new InvalidNsidError(result.message);\n return result.value;\n}\nfunction isValidNsid(input) {\n // Since the regex version is more performant for valid NSIDs, we use it when\n // we don't care about error details.\n return validateNsidRegex(input).success;\n}\n// Human readable constraints on NSID:\n// - a valid domain in reversed notation\n// - followed by an additional period-separated name, which is camel-case letters\nfunction validateNsid(input) {\n if (input.length > 253 + 1 + 63) {\n return (0, result_js_1.failure)('NSID is too long (317 chars max)');\n }\n if (hasDisallowedCharacters(input)) {\n return (0, result_js_1.failure)('Disallowed characters in NSID (ASCII letters, digits, dashes, periods only)');\n }\n const segments = input.split('.');\n if (segments.length < 3) {\n return (0, result_js_1.failure)('NSID needs at least three parts');\n }\n for (const l of segments) {\n if (l.length < 1) {\n return (0, result_js_1.failure)('NSID parts can not be empty');\n }\n if (l.length > 63) {\n return (0, result_js_1.failure)('NSID part too long (max 63 chars)');\n }\n if (startsWithHyphen(l) || endsWithHyphen(l)) {\n return (0, result_js_1.failure)('NSID parts can not start or end with hyphen');\n }\n }\n if (startsWithNumber(segments[0])) {\n return (0, result_js_1.failure)('NSID first part may not start with a digit');\n }\n if (!isValidIdentifier(segments[segments.length - 1])) {\n return (0, result_js_1.failure)('NSID name part must be only letters and digits (and no leading digit)');\n }\n return (0, result_js_1.success)(segments);\n}\nfunction hasDisallowedCharacters(v) {\n return !/^[a-zA-Z0-9.-]*$/.test(v);\n}\nfunction startsWithNumber(v) {\n const charCode = v.charCodeAt(0);\n return charCode >= 48 && charCode <= 57;\n}\nfunction startsWithHyphen(v) {\n return v.charCodeAt(0) === 45; /* - */\n}\nfunction endsWithHyphen(v) {\n return v.charCodeAt(v.length - 1) === 45; /* - */\n}\nfunction isValidIdentifier(v) {\n // Note, since we already know that \"v\" only contains [a-zA-Z0-9-], we can\n // simplify the following regex by checking only the first char and presence\n // of \"-\".\n // return /^[a-zA-Z][a-zA-Z0-9]*$/.test(v)\n return !startsWithNumber(v) && !v.includes('-');\n}\n/**\n * @deprecated Use {@link ensureValidNsid} if you care about error details,\n * {@link parseNsid}/{@link NSID.parse} if you need the parsed segments, or\n * {@link isValidNsid} if you just want a boolean.\n */\nfunction ensureValidNsidRegex(nsid) {\n const result = validateNsidRegex(nsid);\n if (!result.success)\n throw new InvalidNsidError(result.message);\n}\n/**\n * Regexp based validation that behaves identically to the previous code but\n * provides less detailed error messages (while being 20% to 50% faster).\n */\nfunction validateNsidRegex(value) {\n if (value.length > 253 + 1 + 63) {\n return (0, result_js_1.failure)('NSID is too long (317 chars max)');\n }\n if (\n // Fast check for small values\n value.length < 5 ||\n !/^[a-zA-Z](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?:\\.[a-zA-Z](?:[a-zA-Z0-9]{0,62})?)$/.test(value)) {\n return (0, result_js_1.failure)(\"NSID didn't validate via regex\");\n }\n return (0, result_js_1.success)(value);\n}\nclass InvalidNsidError extends Error {\n}\nexports.InvalidNsidError = InvalidNsidError;\n//# sourceMappingURL=nsid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidRecordKeyError = void 0;\nexports.ensureValidRecordKey = ensureValidRecordKey;\nexports.isValidRecordKey = isValidRecordKey;\nconst RECORD_KEY_MAX_LENGTH = 512;\nconst RECORD_KEY_MIN_LENGTH = 1;\nconst RECORD_KEY_INVALID_VALUES = new Set(['.', '..']);\nconst RECORD_KEY_REGEX = /^[a-zA-Z0-9_~.:-]{1,512}$/;\n// https://atproto.com/specs/record-key#record-key-syntax\n// Regardless of the type, Record Keys must fulfill some baseline syntax constraints:\n// - restricted to a subset of ASCII characters -- the allowed characters are\n// alphanumeric (A-Za-z0-9), period, dash, underscore, colon, or tilde (.-_:~)\n// - must have at least 1 and at most 512 characters\n// - the specific record key values . and .. are not allowed\n// - must be a permissible part of repository MST path string (the above\n// constraints satisfy this condition)\n// - must be permissible to include in a path component of a URI (following\n// RFC-3986, section 3.3). The above constraints satisfy this condition, by\n// matching the \"unreserved\" characters allowed in generic URI paths.\nfunction ensureValidRecordKey(input) {\n if (input.length > RECORD_KEY_MAX_LENGTH ||\n input.length < RECORD_KEY_MIN_LENGTH) {\n throw new InvalidRecordKeyError(`record key must be ${RECORD_KEY_MIN_LENGTH} to ${RECORD_KEY_MAX_LENGTH} characters`);\n }\n if (RECORD_KEY_INVALID_VALUES.has(input)) {\n throw new InvalidRecordKeyError('record key can not be \".\" or \"..\"');\n }\n // simple regex to enforce most constraints via just regex and length.\n if (!RECORD_KEY_REGEX.test(input)) {\n throw new InvalidRecordKeyError('record key syntax not valid (regex)');\n }\n}\nfunction isValidRecordKey(input) {\n return (input.length >= RECORD_KEY_MIN_LENGTH &&\n input.length <= RECORD_KEY_MAX_LENGTH &&\n RECORD_KEY_REGEX.test(input) &&\n !RECORD_KEY_INVALID_VALUES.has(input));\n}\nclass InvalidRecordKeyError extends Error {\n}\nexports.InvalidRecordKeyError = InvalidRecordKeyError;\n//# sourceMappingURL=recordkey.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidAtUriError = void 0;\nexports.isAtUriString = isAtUriString;\nexports.ifAtUriString = ifAtUriString;\nexports.asAtUriString = asAtUriString;\nexports.assertAtUriString = assertAtUriString;\nexports.ensureValidAtUri = ensureValidAtUri;\nexports.ensureValidAtUriRegex = ensureValidAtUriRegex;\nexports.isValidAtUri = isValidAtUri;\nexports.parseAtUriString = parseAtUriString;\nconst at_identifier_js_1 = require(\"./at-identifier.js\");\nconst result_js_1 = require(\"./lib/result.js\");\nconst nsid_js_1 = require(\"./nsid.js\");\nconst recordkey_js_1 = require(\"./recordkey.js\");\n/**\n * Type guard that checks if a value is a valid {@link AtUriString}\n *\n * @see {@link AtUriString}\n */\nfunction isAtUriString(input, options) {\n return parseAtUriString(input, options).success;\n}\n/**\n * Returns the input if it is a valid {@link AtUriString} format string, or\n * `undefined` if it is not.\n *\n * @see {@link AtUriString}\n */\nfunction ifAtUriString(input, options) {\n return isAtUriString(input, options) ? input : undefined;\n}\n/**\n * Casts a string to an {@link AtUriString} if it is a valid AT URI format\n * string, throwing an error if it is not.\n *\n * @throws InvalidAtUriError if the input string does not meet the atproto AT URI format requirements.\n * @see {@link AtUriString}\n */\nfunction asAtUriString(input, options) {\n assertAtUriString(input, options);\n return input;\n}\n/**\n * Assert the validity of an {@link AtUriString}, throwing an error if the\n * {@link input} is not a valid AT URI.\n *\n * @throws InvalidAtUriError if the {@link input} is not a valid {@link AtUriString}\n */\nfunction assertAtUriString(input, options) {\n // Optimistically use faster isAtUriString(), throwing a detailed error only\n // in case of failure. This check, and the fact that the code after it always\n // throws, also ensures that isAtUriString() and assertAtUriString()'s\n // behavior are always consistent.\n const result = parseAtUriString(input, options);\n if (!result.success) {\n throw new InvalidAtUriError(result.message);\n }\n}\n/**\n * Assert the **non-strict** validity of an {@link AtUriString}, throwing a\n * detailed error if the {@link input} is not a valid AT URI.\n *\n * @throws InvalidAtUriError if the {@link input} is not a valid {@link AtUriString}\n * @deprecated use {@link assertAtUriString} with `{ strict: false }` option instead\n */\nfunction ensureValidAtUri(input) {\n assertAtUriString(input, { strict: false, detailed: true });\n}\n/**\n * Assert the (non-strict!) validity of an {@link AtUriString}, throwing an\n * error if the {@link input} is not a valid AT URI.\n *\n * @throws InvalidAtUriError if the {@link input} is not a valid {@link AtUriString}\n * @deprecated use {@link assertAtUriString} with `{ strict: false }` option instead\n */\nfunction ensureValidAtUriRegex(input) {\n assertAtUriString(input, { strict: false, detailed: false });\n}\n/**\n * Type guard that checks if a value is a valid {@link AtUriString} format\n * string, without enforcing strict record key validation. This is useful for\n * cases where you want to allow a wider range of valid ATURIs, such as when\n * validating user input or when the record key is not relevant.\n *\n * @deprecated use {@link isAtUriString} with `{ strict: false }` option instead\n */\nfunction isValidAtUri(input) {\n return isAtUriString(input, { strict: false });\n}\nclass InvalidAtUriError extends Error {\n}\nexports.InvalidAtUriError = InvalidAtUriError;\nconst INVALID_CHAR_REGEXP = /[^a-zA-Z0-9._~:@!$&'()*+,;=%/\\\\[\\]#?-]/;\nconst AT_URI_REGEXP = /^(?<uri>at:\\/\\/(?<authority>[^/?#\\s]+)(?:\\/(?<collection>[^/?#\\s]+)(?:\\/(?<rkey>[^/?#\\s]+))?)?(?<trailingSlash>\\/)?)(?:\\?(?<query>[^#\\s]*))?(?:#(?<hash>[^\\s]*))?$/;\n/**\n * Parses a valid {@link AtUriString} into a {@link AtUriParts} object, or\n * returns a failure with a detailed error message if the string is not a valid\n * {@link AtUriString}.\n */\nfunction parseAtUriString(input, options) {\n if (typeof input !== 'string') {\n return (0, result_js_1.failure)('ATURI must be a string');\n }\n if (input.length > 8192) {\n return (0, result_js_1.failure)('ATURI exceeds maximum length');\n }\n const invalidChar = input.match(INVALID_CHAR_REGEXP);\n if (invalidChar) {\n return (0, result_js_1.failure)('Disallowed characters in ATURI (ASCII)');\n }\n const match = input.match(AT_URI_REGEXP);\n const groups = match?.groups;\n if (!groups) {\n // Regex validation failed, but we don't know exactly why. Provide more\n // detailed error messages if the \"detailed\" option is set, falling back to\n // a generic error.\n if (options?.detailed) {\n if (!input.startsWith('at://')) {\n return (0, result_js_1.failure)('ATURI must start with \"at://\"');\n }\n if (input.includes(' ')) {\n return (0, result_js_1.failure)('ATURI can not contain spaces');\n }\n if (input.includes('//', 5)) {\n return (0, result_js_1.failure)('ATURI can not have empty path segments');\n }\n const pathStart = input.indexOf('/', 5); // after \"at://\"\n if (pathStart !== -1) {\n const fragmentIndex = input.indexOf('#');\n const pathEnd = fragmentIndex !== -1 ? fragmentIndex : input.length;\n const secondSlash = input.indexOf('/', pathStart + 1);\n if (secondSlash !== -1 && secondSlash !== pathEnd - 1) {\n return (0, result_js_1.failure)('ATURI can not have more than two path segments');\n }\n }\n }\n return (0, result_js_1.failure)('ATURI does not match expected format');\n }\n // @NOTE Percent-encoding is allowed by the AT URI specification, but any\n // percent-encoded characters appearing in the collection NSID or record key\n // will effectively be rejected by the isValidNsid and isValidRecordKey\n // validators. Since these values are defined to be plain ASCII identifiers,\n // this legacy behavior is beneficial: it ensures that normalized\n // (non-percent-encoded) values are always used, as prescribed by the spec.\n if (!(0, at_identifier_js_1.isAtIdentifierString)(groups.authority)) {\n return (0, result_js_1.failure)('ATURI has invalid authority');\n }\n if (groups.collection != null && !(0, nsid_js_1.isValidNsid)(groups.collection)) {\n return (0, result_js_1.failure)('ATURI has invalid collection');\n }\n if (groups.hash != null) {\n const result = parseJsonPointer(groups.hash, options);\n if (result.success) {\n groups.hash = result.value;\n }\n else {\n return (0, result_js_1.failure)(`ATURI has invalid fragment (${result.message})`);\n }\n }\n if (options?.strict !== false) {\n if (groups.trailingSlash != null) {\n return (0, result_js_1.failure)('ATURI can not have a trailing slash');\n }\n if (groups.query != null) {\n return (0, result_js_1.failure)('ATURI query part is not allowed');\n }\n if (groups.rkey != null && !(0, recordkey_js_1.isValidRecordKey)(groups.rkey)) {\n return (0, result_js_1.failure)('ATURI has invalid record key');\n }\n }\n return (0, result_js_1.success)(groups);\n}\nconst BASIC_JSON_POINTER_REGEXP = /^\\/[a-zA-Z0-9._~:@!$&')(*+,;=%[\\]/-]*$/;\n/**\n * Checks if a string is a valid JSON pointer (RFC-6901) with the allowed chars\n * for ATURI fragments. This is a very loose validation that only checks the\n * basic syntax and charset.\n */\nfunction parseJsonPointer(value, options) {\n if (!BASIC_JSON_POINTER_REGEXP.test(value)) {\n return (0, result_js_1.failure)('Invalid JSON pointer');\n }\n const result = parsePercentEncoding(value);\n // In non-strict mode, we allow invalid percent-encoding in the fragment\n if (!result.success && options?.strict === false) {\n return (0, result_js_1.success)(value);\n }\n return result;\n}\nfunction parsePercentEncoding(value) {\n try {\n return (0, result_js_1.success)(decodeURIComponent(value));\n }\n catch {\n // decodeURIComponent throws if the percent-encoding is invalid (e.g. \"%FF\")\n return (0, result_js_1.failure)('Invalid percent-encoding');\n }\n}\n//# sourceMappingURL=aturi_validation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AtUri = exports.ATP_URI_REGEX = void 0;\nconst tslib_1 = require(\"tslib\");\nconst at_identifier_js_1 = require(\"./at-identifier.js\");\nconst did_js_1 = require(\"./did.js\");\nconst nsid_js_1 = require(\"./nsid.js\");\nconst recordkey_js_1 = require(\"./recordkey.js\");\ntslib_1.__exportStar(require(\"./aturi_validation.js\"), exports);\nexports.ATP_URI_REGEX = \n// proto- --did-------------- --name---------------- --path---- --query-- --hash--\n/^(at:\\/\\/)?((?:did:[a-z0-9:%-]+)|(?:[a-z0-9][a-z0-9.:-]*))(\\/[^?#\\s]*)?(\\?[^#\\s]+)?(#[^\\s]+)?$/i;\n// --path----- --query-- --hash--\nconst RELATIVE_REGEX = /^(\\/[^?#\\s]*)?(\\?[^#\\s]+)?(#[^\\s]+)?$/i;\nclass AtUri {\n hash;\n host;\n pathname;\n searchParams;\n constructor(uri, base) {\n const parsed = base !== undefined\n ? typeof base === 'string'\n ? Object.assign(parse(base), parseRelative(uri))\n : Object.assign({ host: base.host }, parseRelative(uri))\n : parse(uri);\n (0, at_identifier_js_1.ensureValidAtIdentifier)(parsed.host);\n this.hash = parsed.hash ?? '';\n this.host = parsed.host;\n this.pathname = parsed.pathname ?? '';\n this.searchParams = parsed.searchParams;\n }\n static make(handleOrDid, collection, rkey) {\n let str = handleOrDid;\n if (collection)\n str += '/' + collection;\n if (rkey)\n str += '/' + rkey;\n return new AtUri(str);\n }\n get protocol() {\n return 'at:';\n }\n get origin() {\n return `at://${this.host}`;\n }\n get did() {\n const { host } = this;\n if ((0, at_identifier_js_1.isDidIdentifier)(host))\n return host;\n throw new did_js_1.InvalidDidError(`AtUri \"${this}\" does not have a DID hostname`);\n }\n get hostname() {\n return this.host;\n }\n set hostname(v) {\n (0, at_identifier_js_1.ensureValidAtIdentifier)(v);\n this.host = v;\n }\n get search() {\n return this.searchParams.toString();\n }\n set search(v) {\n this.searchParams = new URLSearchParams(v);\n }\n get collection() {\n return this.pathname.split('/').filter(Boolean)[0] || '';\n }\n get collectionSafe() {\n const { collection } = this;\n (0, nsid_js_1.ensureValidNsid)(collection);\n return collection;\n }\n set collection(v) {\n (0, nsid_js_1.ensureValidNsid)(v);\n this.unsafelySetCollection(v);\n }\n unsafelySetCollection(v) {\n const parts = this.pathname.split('/').filter(Boolean);\n parts[0] = v;\n this.pathname = parts.join('/');\n }\n get rkey() {\n return this.pathname.split('/').filter(Boolean)[1] || '';\n }\n get rkeySafe() {\n const { rkey } = this;\n (0, recordkey_js_1.ensureValidRecordKey)(rkey);\n return rkey;\n }\n set rkey(v) {\n (0, recordkey_js_1.ensureValidRecordKey)(v);\n this.unsafelySetRkey(v);\n }\n unsafelySetRkey(v) {\n const parts = this.pathname.split('/').filter(Boolean);\n parts[0] ||= 'undefined';\n parts[1] = v;\n this.pathname = parts.join('/');\n }\n get href() {\n return this.toString();\n }\n toString() {\n let pathname = this.pathname;\n if (pathname && !pathname.startsWith('/')) {\n pathname = `/${pathname}`;\n }\n while (pathname.endsWith('/')) {\n pathname = pathname.slice(0, -1);\n }\n let qs = '';\n if (this.searchParams.size) {\n qs = `?${this.searchParams.toString()}`;\n }\n // @NOTE We keep the hash as-is, even if it doesn't start with a '/'.\n let fragment = this.hash;\n if (fragment === '#') {\n fragment = '';\n }\n else if (fragment && !fragment.startsWith('#')) {\n fragment = `#${fragment}`;\n }\n return `at://${this.host}${pathname}${qs}${fragment}`;\n }\n}\nexports.AtUri = AtUri;\nfunction parse(str) {\n const match = str.match(exports.ATP_URI_REGEX);\n if (!match) {\n throw new Error(`Invalid AT uri: ${str}`);\n }\n return {\n host: match[2],\n hash: match[5],\n pathname: match[3],\n searchParams: new URLSearchParams(match[4]),\n };\n}\nfunction parseRelative(str) {\n const match = str.match(RELATIVE_REGEX);\n if (!match) {\n throw new Error(`Invalid path: ${str}`);\n }\n return {\n hash: match[3],\n pathname: match[1],\n searchParams: new URLSearchParams(match[2]),\n };\n}\n//# sourceMappingURL=aturi.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidDatetimeError = void 0;\nexports.assertAtprotoDate = assertAtprotoDate;\nexports.asAtprotoDate = asAtprotoDate;\nexports.isAtprotoDate = isAtprotoDate;\nexports.ifAtprotoDate = ifAtprotoDate;\nexports.assertDatetimeString = assertDatetimeString;\nexports.ensureValidDatetime = assertDatetimeString;\nexports.asDatetimeString = asDatetimeString;\nexports.isDatetimeString = isDatetimeString;\nexports.isValidDatetime = isDatetimeString;\nexports.ifDatetimeString = ifDatetimeString;\nexports.currentDatetimeString = currentDatetimeString;\nexports.toDatetimeString = toDatetimeString;\nexports.normalizeDatetime = normalizeDatetime;\nexports.normalizeDatetimeAlways = normalizeDatetimeAlways;\n/**\n * Indicates a date or string is not a valid representation of a datetime\n * according to the atproto\n * {@link https://atproto.com/specs/lexicon#datetime specification}.\n */\nclass InvalidDatetimeError extends Error {\n}\nexports.InvalidDatetimeError = InvalidDatetimeError;\n/**\n * @see {@link AtprotoDate}\n */\nfunction assertAtprotoDate(date) {\n const res = parseDate(date);\n if (!res.success) {\n throw new InvalidDatetimeError(res.message);\n }\n}\n/**\n * @see {@link AtprotoDate}\n */\nfunction asAtprotoDate(date) {\n assertAtprotoDate(date);\n return date;\n}\n/**\n * @see {@link AtprotoDate}\n */\nfunction isAtprotoDate(date) {\n return parseDate(date).success;\n}\n/**\n * @see {@link AtprotoDate}\n */\nfunction ifAtprotoDate(date) {\n return isAtprotoDate(date) ? date : undefined;\n}\n/**\n * Validates that a string is a valid {@link DatetimeString} format string,\n * throwing an error if it is not.\n *\n * @throws InvalidDatetimeError if the input string does not meet the atproto 'datetime' format requirements.\n * @see {@link DatetimeString}\n */\nfunction assertDatetimeString(input) {\n const result = parseString(input);\n if (!result.success) {\n throw new InvalidDatetimeError(result.message);\n }\n}\n/**\n * Casts a string to a {@link DatetimeString} if it is a valid datetime format\n * string, throwing an error if it is not.\n *\n * @throws InvalidDatetimeError if the input string does not meet the atproto 'datetime' format requirements.\n * @see {@link DatetimeString}\n */\nfunction asDatetimeString(input) {\n assertDatetimeString(input);\n return input;\n}\n/**\n * Checks if a string is a valid {@link DatetimeString} format string.\n *\n * @see {@link DatetimeString}\n */\nfunction isDatetimeString(input) {\n return parseString(input).success;\n}\n/**\n * Returns the input if it is a valid {@link DatetimeString} format string, or\n * `undefined` if it is not.\n *\n * @see {@link DatetimeString}\n */\nfunction ifDatetimeString(input) {\n return isDatetimeString(input) ? input : undefined;\n}\n/**\n * Returns the current date and time as a {@link DatetimeString}.\n *\n * @see {@link DatetimeString}\n */\nfunction currentDatetimeString() {\n return toDatetimeString(new Date());\n}\n/**\n * Converts any {@link Date} into a {@link DatetimeString} if possible, throwing\n * an error if the date is not a valid atproto datetime.\n *\n * This is short-hand for `asAtprotoDate(date).toISOString()`.\n *\n * @throws InvalidDatetimeError if the input date is not a valid atproto datetime (eg, it is too far in the future or past, or it normalizes to a negative year).\n * @see {@link DatetimeString}\n */\nfunction toDatetimeString(date) {\n return asAtprotoDate(date).toISOString();\n}\n/**\n * Takes a flexible datetime string and normalizes its representation.\n *\n * This function will work with any valid value that can be parsed as a date. It\n * *additionally* is more flexible about accepting datetimes that are missing\n * timezone information, and normalizing them to a valid atproto datetime.\n *\n * One use-case is a consistent, sortable string. Another is to work with older\n * invalid createdAt datetimes.\n *\n * @note This function might return different normalized strings for the same\n * input depending on the timezone of the machine it is run on, since it will\n * attempt to parse the input \"as is\" if it fails to parse with an explicit\n * timezone.\n *\n * @returns ISODatetimeString - a valid atproto datetime with millisecond precision (3 sub-second digits) and UTC timezone with trailing 'Z' syntax.\n * @throws InvalidDatetimeError - if the input string could not be parsed as a datetime, even with permissive parsing.\n */\nfunction normalizeDatetime(dtStr) {\n if (\n // Explicit timezone offset\n /[+-]\\d\\d:?\\d\\d/.test(dtStr) ||\n // 'Z' timezone designator\n /\\dZ\\b/.test(dtStr) ||\n // Timezone abbreviation (eg. \"EST\", \"PST\", \"UTC\", \"GMT\", etc), as in:\n // > Tue Mar 17 2026 16:38:44 PST (Pacific Standard Time)\n /\\b[A-Z]{3,4}\\b/.test(dtStr)) {\n // Since we do have a timezone designator, we can try parsing \"as is\" and\n // should get consistent results regardless of local timezone.\n // @NOTE NodeJS will reject dates with an un-recognized timezone designator\n // (like \"AFT\"), even if we add a well-known timezone abbreviation like\n // \"UTC\" or \"Z\".\n const date = new Date(dtStr);\n if (isAtprotoDate(date)) {\n return date.toISOString();\n }\n }\n else {\n // If there is no timezone information, try parsing as UTC using two\n // different syntaxes, falling back to parsing \"as is\".\n const dateZ = new Date(`${dtStr}Z`);\n if (isAtprotoDate(dateZ)) {\n return dateZ.toISOString();\n }\n const dateUTC = new Date(`${dtStr} UTC`);\n if (isAtprotoDate(dateUTC)) {\n return dateUTC.toISOString();\n }\n // Despite our best efforts to parse as a consistent value, appending \"Z\" or\n // \" UTC\" did not work, so we will try parsing \"as is\", which may yield\n // different results depending on the local timezone of the machine.\n const date = new Date(dtStr);\n if (isAtprotoDate(date)) {\n return date.toISOString();\n }\n }\n throw new InvalidDatetimeError('datetime did not parse as any timestamp format');\n}\n/**\n * Variant of {@link normalizeDatetime} which always returns a valid datetime\n * string.\n *\n * If a {@link InvalidDatetimeError} is encountered, returns the UNIX epoch time\n * as a UTC datetime (`1970-01-01T00:00:00.000Z`).\n *\n * @see {@link normalizeDatetime}\n */\nfunction normalizeDatetimeAlways(dtStr) {\n try {\n return normalizeDatetime(dtStr);\n }\n catch (err) {\n return '1970-01-01T00:00:00.000Z';\n }\n}\nconst failure = (m) => ({ success: false, message: m });\nconst success = (v) => ({ success: true, value: v });\n/**\n * @see {@link https://www.rfc-editor.org/rfc/rfc3339#section-5.6 Internet Date/Time Format}\n *\n * @example\n * ```abnf\n * date-fullyear = 4DIGIT\n * date-month = 2DIGIT ; 01-12\n * date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on\n * ; month/year\n * time-hour = 2DIGIT ; 00-23\n * time-minute = 2DIGIT ; 00-59\n * time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap second\n * ; rules\n * time-secfrac = \".\" 1*DIGIT\n * time-numoffset = (\"+\" / \"-\") time-hour \":\" time-minute\n * time-offset = \"Z\" / time-numoffset\n * partial-time = time-hour \":\" time-minute \":\" time-second\n * [time-secfrac]\n * full-date = date-fullyear \"-\" date-month \"-\" date-mday\n * full-time = partial-time time-offset\n * date-time = full-date \"T\" full-time\n * ```\n */\nconst DATETIME_REGEX = /^(?<full_year>[0-9]{4})-(?<date_month>0[1-9]|1[012])-(?<date_mday>[0-2][0-9]|3[01])T(?<time_hour>[0-1][0-9]|2[0-3]):(?<time_minute>[0-5][0-9]):(?<time_second>[0-5][0-9]|60)(?<time_secfrac>\\.[0-9]+)?(?<time_offset>Z|(?<time_numoffset>[+-](?:[0-1][0-9]|2[0-3]):[0-5][0-9]))$/;\n/**\n * Validates that the input is a datetime string according to atproto Lexicon\n * rules, and parses it into a Date object.\n */\nfunction parseString(input) {\n // @NOTE Performing cheap tests first\n if (typeof input !== 'string') {\n return failure('datetime must be a string');\n }\n if (input.length > 64) {\n return failure('datetime is too long (64 chars max)');\n }\n if (input.endsWith('-00:00')) {\n return failure('datetime can not use \"-00:00\" for UTC timezone');\n }\n if (!DATETIME_REGEX.test(input)) {\n return failure(\"datetime is not in a valid format (must match RFC 3339 & ISO 8601 with 'Z' or ±hh:mm timezone)\");\n }\n // must parse as ISO 8601; this also verifies semantics like leap seconds and\n // correct number of days in month, which the regex does not check for\n const date = new Date(input);\n return parseDate(date);\n}\n/**\n * Ensures that a Date object represents a valid datetime according to atproto\n * Lexicon rules. This ensures that `date.toISOString()` will produce a valid\n * datetime string that can be used where {@link DatetimeString} is expected.\n */\nfunction parseDate(date) {\n const fullYear = date.getUTCFullYear();\n // Ensures that the date is valid. We could check isNaN(date.getTime()) here\n // but since we'll check the year anyway, we just use that for the validity\n // check since an invalid date will have NaN year.\n if (Number.isNaN(fullYear)) {\n return failure('datetime did not parse as ISO 8601');\n }\n // Ensure that the ISO string representation does not start with ±YYYYYY\n if (fullYear < 0) {\n return failure('datetime normalized to a negative time');\n }\n if (fullYear > 9999) {\n return failure('datetime year is too far in the future');\n }\n return success(date);\n}\n//# sourceMappingURL=datetime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseLanguageString = parseLanguageString;\nexports.isValidLanguage = isValidLanguage;\nconst BCP47_REGEXP = /^((?<grandfathered>(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang))|((?<language>([A-Za-z]{2,3}(-(?<extlang>[A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-(?<script>[A-Za-z]{4}))?(-(?<region>[A-Za-z]{2}|[0-9]{3}))?(-(?<variant>[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-(?<extension>[0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(?<privateUseA>x(-[A-Za-z0-9]{1,8})+))?)|(?<privateUseB>x(-[A-Za-z0-9]{1,8})+))$/;\nfunction parseLanguageString(input) {\n const parsed = input.match(BCP47_REGEXP);\n if (!parsed?.groups)\n return null;\n const { groups } = parsed;\n return {\n grandfathered: groups.grandfathered,\n language: groups.language,\n extlang: groups.extlang,\n script: groups.script,\n region: groups.region,\n variant: groups.variant,\n extension: groups.extension,\n privateUse: groups.privateUseA || groups.privateUseB,\n };\n}\n/**\n * Validates well-formed BCP 47 syntax\n *\n * @see {@link https://www.rfc-editor.org/rfc/rfc5646.html#section-2.1}\n */\nfunction isValidLanguage(input) {\n return BCP47_REGEXP.test(input);\n}\n//# sourceMappingURL=language.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidTidError = void 0;\nexports.ensureValidTid = ensureValidTid;\nexports.isValidTid = isValidTid;\nconst TID_LENGTH = 13;\nconst TID_REGEX = /^[234567abcdefghij][234567abcdefghijklmnopqrstuvwxyz]{12}$/;\nfunction ensureValidTid(input) {\n if (input.length !== TID_LENGTH) {\n throw new InvalidTidError(`TID must be ${TID_LENGTH} characters`);\n }\n // simple regex to enforce most constraints via just regex and length.\n if (!TID_REGEX.test(input)) {\n throw new InvalidTidError('TID syntax not valid (regex)');\n }\n}\nfunction isValidTid(input) {\n return input.length === TID_LENGTH && TID_REGEX.test(input);\n}\nclass InvalidTidError extends Error {\n}\nexports.InvalidTidError = InvalidTidError;\n//# sourceMappingURL=tid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidUri = isValidUri;\nfunction isValidUri(input) {\n return /^\\w+:(?:\\/\\/)?[^\\s/][^\\s]*$/.test(input);\n}\n//# sourceMappingURL=uri.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./at-identifier.js\"), exports);\ntslib_1.__exportStar(require(\"./aturi.js\"), exports);\ntslib_1.__exportStar(require(\"./datetime.js\"), exports);\ntslib_1.__exportStar(require(\"./did.js\"), exports);\ntslib_1.__exportStar(require(\"./handle.js\"), exports);\ntslib_1.__exportStar(require(\"./nsid.js\"), exports);\ntslib_1.__exportStar(require(\"./language.js\"), exports);\ntslib_1.__exportStar(require(\"./recordkey.js\"), exports);\ntslib_1.__exportStar(require(\"./tid.js\"), exports);\ntslib_1.__exportStar(require(\"./uri.js\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNsid = void 0;\nconst syntax_1 = require(\"@atproto/syntax\");\nconst isNsid = (v) => typeof v === 'string' && (0, syntax_1.isValidNsid)(v);\nexports.isNsid = isNsid;\n//# sourceMappingURL=nsid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LexPermissionSyntax = void 0;\nconst isArray = Array.isArray;\n/**\n * Translates a {@link LexiconPermission} into a {@link ScopeSyntax}.\n */\nclass LexPermissionSyntax {\n constructor(lexPermission) {\n Object.defineProperty(this, \"lexPermission\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: lexPermission\n });\n }\n get prefix() {\n return this.lexPermission.resource;\n }\n get positional() {\n return undefined;\n }\n get(key) {\n // Ignore reserved keywords\n if (key === 'type')\n return undefined;\n if (key === 'resource')\n return undefined;\n // Ignore inherited properties (toString(), etc.)\n if (!Object.hasOwn(this.lexPermission, key))\n return undefined;\n return this.lexPermission[key];\n }\n *keys() {\n for (const key of Object.keys(this.lexPermission)) {\n if (this.get(key) !== undefined)\n yield key;\n }\n }\n getSingle(key) {\n const value = this.get(key);\n if (isArray(value))\n return null;\n return value;\n }\n getMulti(key) {\n const value = this.get(key);\n if (value === undefined)\n return undefined;\n if (!isArray(value))\n return null;\n return value;\n }\n toJSON() {\n return this.lexPermission;\n }\n}\nexports.LexPermissionSyntax = LexPermissionSyntax;\n//# sourceMappingURL=syntax-lexicon.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RepoPermission = exports.isCollectionParam = exports.isRepoAction = exports.REPO_ACTIONS = exports.isNsid = void 0;\nconst nsid_js_1 = require(\"../lib/nsid.js\");\nObject.defineProperty(exports, \"isNsid\", { enumerable: true, get: function () { return nsid_js_1.isNsid; } });\nconst parser_js_1 = require(\"../lib/parser.js\");\nconst syntax_string_js_1 = require(\"../lib/syntax-string.js\");\nconst syntax_js_1 = require(\"../lib/syntax.js\");\nconst util_js_1 = require(\"../lib/util.js\");\nexports.REPO_ACTIONS = Object.freeze([\n 'create',\n 'update',\n 'delete',\n]);\nexports.isRepoAction = (0, util_js_1.knownValuesValidator)(exports.REPO_ACTIONS);\nconst isCollectionParam = (value) => value === '*' || (0, nsid_js_1.isNsid)(value);\nexports.isCollectionParam = isCollectionParam;\nclass RepoPermission {\n constructor(collection, action) {\n Object.defineProperty(this, \"collection\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: collection\n });\n Object.defineProperty(this, \"action\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: action\n });\n }\n matches({ action, collection }) {\n return (this.action.includes(action) &&\n (this.collection.includes('*') ||\n this.collection.includes(collection)));\n }\n toString() {\n return RepoPermission.parser.format(this);\n }\n static fromString(scope) {\n if (!(0, syntax_js_1.isScopeStringFor)(scope, 'repo'))\n return null;\n const syntax = syntax_string_js_1.ScopeStringSyntax.fromString(scope);\n return RepoPermission.fromSyntax(syntax);\n }\n static fromSyntax(syntax) {\n const result = RepoPermission.parser.parse(syntax);\n if (!result)\n return null;\n return new RepoPermission(result.collection, result.action);\n }\n static scopeNeededFor(options) {\n return RepoPermission.parser.format({\n collection: [options.collection],\n action: [options.action],\n });\n }\n}\nexports.RepoPermission = RepoPermission;\nObject.defineProperty(RepoPermission, \"parser\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new parser_js_1.Parser('repo', {\n collection: {\n multiple: true,\n required: true,\n validate: exports.isCollectionParam,\n normalize: (value) => {\n if (value.length > 1) {\n if (value.includes('*'))\n return ['*'];\n return [...new Set(value)].sort();\n }\n return value;\n },\n },\n action: {\n multiple: true,\n required: false,\n validate: exports.isRepoAction,\n default: exports.REPO_ACTIONS,\n normalize: (value) => {\n return value === exports.REPO_ACTIONS\n ? exports.REPO_ACTIONS // No need to filter if the default was used\n : exports.REPO_ACTIONS.filter(includedIn, value);\n },\n },\n }, 'collection')\n});\n/**\n * Special utility function to be used as predicate for array methods like\n * `Array.prototype.includes`, etc. When used as predicate, it expects that\n * the array method is called with a `thisArg` that is a readonly array of\n * the same type as the `value` parameter.\n */\nfunction includedIn(value) {\n return this.includes(value);\n}\n//# sourceMappingURL=repo-permission.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RpcPermission = exports.isAudParam = exports.isLxmParam = exports.isNsid = exports.isAtprotoAudience = void 0;\nconst did_1 = require(\"@atproto/did\");\nObject.defineProperty(exports, \"isAtprotoAudience\", { enumerable: true, get: function () { return did_1.isAtprotoAudience; } });\nconst nsid_js_1 = require(\"../lib/nsid.js\");\nObject.defineProperty(exports, \"isNsid\", { enumerable: true, get: function () { return nsid_js_1.isNsid; } });\nconst parser_js_1 = require(\"../lib/parser.js\");\nconst syntax_string_js_1 = require(\"../lib/syntax-string.js\");\nconst syntax_js_1 = require(\"../lib/syntax.js\");\nconst isLxmParam = (value) => value === '*' || (0, nsid_js_1.isNsid)(value);\nexports.isLxmParam = isLxmParam;\nconst isAudParam = (value) => value === '*' || (0, did_1.isAtprotoAudience)(value);\nexports.isAudParam = isAudParam;\nclass RpcPermission {\n constructor(aud, lxm) {\n Object.defineProperty(this, \"aud\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: aud\n });\n Object.defineProperty(this, \"lxm\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: lxm\n });\n }\n matches(options) {\n const { aud, lxm } = this;\n return ((aud === '*' || aud === options.aud) &&\n (lxm.includes('*') || lxm.includes(options.lxm)));\n }\n toString() {\n return RpcPermission.parser.format(this);\n }\n static fromString(scope) {\n if (!(0, syntax_js_1.isScopeStringFor)(scope, 'rpc'))\n return null;\n const syntax = syntax_string_js_1.ScopeStringSyntax.fromString(scope);\n return RpcPermission.fromSyntax(syntax);\n }\n static fromSyntax(syntax) {\n const result = RpcPermission.parser.parse(syntax);\n if (!result)\n return null;\n // rpc:*?aud=* is forbidden\n if (result.aud === '*' && result.lxm.includes('*'))\n return null;\n return new RpcPermission(result.aud, result.lxm);\n }\n static scopeNeededFor(options) {\n return RpcPermission.parser.format({\n aud: options.aud,\n lxm: [options.lxm],\n });\n }\n}\nexports.RpcPermission = RpcPermission;\nObject.defineProperty(RpcPermission, \"parser\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new parser_js_1.Parser('rpc', {\n lxm: {\n multiple: true,\n required: true,\n validate: exports.isLxmParam,\n normalize: (value) => value.length > 1 && value.includes('*')\n ? ['*']\n : [...new Set(value)].sort(),\n },\n aud: {\n multiple: false,\n required: true,\n validate: exports.isAudParam,\n },\n }, 'lxm')\n});\n//# sourceMappingURL=rpc-permission.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IncludeScope = exports.isNsid = void 0;\nconst did_1 = require(\"@atproto/did\");\nconst nsid_js_1 = require(\"../lib/nsid.js\");\nObject.defineProperty(exports, \"isNsid\", { enumerable: true, get: function () { return nsid_js_1.isNsid; } });\nconst parser_js_1 = require(\"../lib/parser.js\");\nconst syntax_lexicon_js_1 = require(\"../lib/syntax-lexicon.js\");\nconst syntax_string_js_1 = require(\"../lib/syntax-string.js\");\nconst syntax_js_1 = require(\"../lib/syntax.js\");\nconst repo_permission_js_1 = require(\"./repo-permission.js\");\nconst rpc_permission_js_1 = require(\"./rpc-permission.js\");\n/**\n * This is used to handle \"include:\" oauth scope values, used to include\n * permissions from a lexicon defined permission set. Not being a resource\n * permission, it does not implement `Matchable`.\n */\nclass IncludeScope {\n constructor(nsid, aud = undefined) {\n Object.defineProperty(this, \"nsid\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: nsid\n });\n Object.defineProperty(this, \"aud\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: aud\n });\n }\n toString() {\n return IncludeScope.parser.format(this);\n }\n toPermissions(permissionSet) {\n return Array.from(this.buildPermissions(permissionSet));\n }\n toScopes(permissionSet) {\n return Array.from(this.buildPermissions(permissionSet), (p) => p.toString());\n }\n /**\n * Converts an \"include:\" to the list of permissions it includes, based on the\n * lexicon defined permission set.\n */\n *buildPermissions(permissionSet) {\n for (const lexPermission of permissionSet.permissions) {\n const syntax = this.parseLexPermission(lexPermission);\n if (!syntax)\n continue;\n const resourcePermission = toResourcePermission(syntax);\n if (!resourcePermission)\n continue;\n if (this.isAllowedPermission(resourcePermission)) {\n yield resourcePermission;\n }\n }\n }\n parseLexPermission(permission) {\n // This function converts permissions listed in the permission set into\n // their respective ScopeSyntax representations, handling special cases as\n // needed.\n if (isLexPermissionForResource(permission, 'repo')) {\n return new syntax_lexicon_js_1.LexPermissionSyntax(permission);\n }\n if (isLexPermissionForResource(permission, 'rpc')) {\n // \"rpc\" permissions with a defined audience are not allowed in permission\n // sets\n if (permission.aud !== undefined && permission.aud !== '*') {\n return null;\n }\n // \"rpc\" permissions can \"inherit\" their audience from \"aud\" param defined\n // in the \"include:<nsid>?aud=<audience>\" scope the permission set was\n // loaded from.\n if (permission.inheritAud === true &&\n permission.aud === undefined &&\n this.aud !== undefined) {\n const { inheritAud, ...rest } = permission;\n return new syntax_lexicon_js_1.LexPermissionSyntax({ aud: this.aud, ...rest });\n }\n return new syntax_lexicon_js_1.LexPermissionSyntax(permission);\n }\n return null;\n }\n /**\n * Verifies that a permission included through a lexicon permission set is\n * allowed in the context of the `include:` scope. This basically checks that\n * the permission is \"under\" the namespace authority of the `include:` scope,\n * and that it only contains \"repo:\", \"rpc:\", or \"blob:\" permissions.\n */\n isAllowedPermission(permission) {\n if (permission instanceof rpc_permission_js_1.RpcPermission) {\n return permission.lxm.every(this.isParentAuthorityOf, this);\n }\n if (permission instanceof repo_permission_js_1.RepoPermission) {\n return permission.collection.every(this.isParentAuthorityOf, this);\n }\n throw new TypeError(`Unexpected permission ${permission}`);\n }\n /**\n * Verifies that a permission item's nsid is under the same authority as the\n * nsid of the lexicon itself (which is the same as the nsid of the `include:`\n * scope).\n */\n isParentAuthorityOf(otherNsid) {\n if (otherNsid === '*') {\n return false;\n }\n const lexiconNsid = this.nsid;\n const groupPrefixEnd = lexiconNsid.lastIndexOf('.');\n // There should always be a dot, but since this is a security feature, let's\n // be strict about it.\n if (groupPrefixEnd === -1) {\n throw new TypeError('Dot character (\".\") missing from lexicon NSID');\n }\n // Make sure that otherNsid is at least as long as the \"group prefix\"\n if (groupPrefixEnd >= otherNsid.length - 1) {\n return false;\n }\n // Make sure that the \"otherNsid\" starts with the group of the lexiconNsid,\n // up to the dot itself. We check in reverse order as nsids tend to have\n // long common prefixes.\n for (let i = groupPrefixEnd; i >= 0; i--) {\n if (lexiconNsid.charCodeAt(i) !== otherNsid.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n static fromString(scope) {\n if (!(0, syntax_js_1.isScopeStringFor)(scope, 'include'))\n return null;\n const syntax = syntax_string_js_1.ScopeStringSyntax.fromString(scope);\n return IncludeScope.fromSyntax(syntax);\n }\n static fromSyntax(syntax) {\n const result = IncludeScope.parser.parse(syntax);\n if (!result)\n return null;\n return new IncludeScope(result.nsid, result.aud);\n }\n}\nexports.IncludeScope = IncludeScope;\nObject.defineProperty(IncludeScope, \"parser\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new parser_js_1.Parser('include', {\n nsid: {\n multiple: false,\n required: true,\n validate: nsid_js_1.isNsid,\n },\n aud: {\n multiple: false,\n required: false,\n validate: did_1.isAtprotoAudience,\n },\n }, 'nsid')\n});\nfunction toResourcePermission(syntax) {\n if ((0, syntax_js_1.isScopeSyntaxFor)(syntax, 'repo')) {\n return repo_permission_js_1.RepoPermission.fromSyntax(syntax);\n }\n if ((0, syntax_js_1.isScopeSyntaxFor)(syntax, 'rpc')) {\n return rpc_permission_js_1.RpcPermission.fromSyntax(syntax);\n }\n return null;\n}\nfunction isLexPermissionForResource(permission, type) {\n return permission.resource === type;\n}\n//# sourceMappingURL=include-scope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STATIC_SCOPE_VALUES = exports.isScopeStringFor = void 0;\nexports.isStaticScopeValue = isStaticScopeValue;\nexports.isAtprotoOauthScope = isAtprotoOauthScope;\nexports.normalizeAtprotoOauthScope = normalizeAtprotoOauthScope;\nexports.normalizeAtprotoOauthScopeValue = normalizeAtprotoOauthScopeValue;\nconst syntax_js_1 = require(\"./lib/syntax.js\");\nObject.defineProperty(exports, \"isScopeStringFor\", { enumerable: true, get: function () { return syntax_js_1.isScopeStringFor; } });\nconst util_js_1 = require(\"./lib/util.js\");\nconst account_permission_js_1 = require(\"./scopes/account-permission.js\");\nconst blob_permission_js_1 = require(\"./scopes/blob-permission.js\");\nconst identity_permission_js_1 = require(\"./scopes/identity-permission.js\");\nconst include_scope_js_1 = require(\"./scopes/include-scope.js\");\nconst repo_permission_js_1 = require(\"./scopes/repo-permission.js\");\nconst rpc_permission_js_1 = require(\"./scopes/rpc-permission.js\");\nexports.STATIC_SCOPE_VALUES = Object.freeze([\n 'atproto',\n 'transition:email',\n 'transition:generic',\n 'transition:chat.bsky',\n]);\nfunction isStaticScopeValue(value) {\n return exports.STATIC_SCOPE_VALUES.includes(value);\n}\n/**\n * @note This function does not only verify the scope string format (with\n * {@link isScopeStringFor}), but also checks if the provided parameters are\n * valid according to the respective scope syntax definition. This allows\n * excluding scopes that cannot be fully interpreted by the current version of\n * the code.\n */\nfunction isAtprotoOauthScope(value) {\n return (isStaticScopeValue(value) ||\n account_permission_js_1.AccountPermission.fromString(value) != null ||\n blob_permission_js_1.BlobPermission.fromString(value) != null ||\n identity_permission_js_1.IdentityPermission.fromString(value) != null ||\n include_scope_js_1.IncludeScope.fromString(value) != null ||\n repo_permission_js_1.RepoPermission.fromString(value) != null ||\n rpc_permission_js_1.RpcPermission.fromString(value) != null);\n}\nfunction normalizeAtprotoOauthScope(scope) {\n return scope\n .split(' ')\n .map(normalizeAtprotoOauthScopeValue)\n .filter(util_js_1.isNonNullable)\n .sort()\n .join(' ');\n}\nfunction normalizeAtprotoOauthScopeValue(value) {\n if (isStaticScopeValue(value))\n return value;\n for (const Scope of [\n account_permission_js_1.AccountPermission,\n blob_permission_js_1.BlobPermission,\n identity_permission_js_1.IdentityPermission,\n include_scope_js_1.IncludeScope,\n repo_permission_js_1.RepoPermission,\n rpc_permission_js_1.RpcPermission,\n ]) {\n const parsed = Scope.fromString(value);\n if (parsed)\n return parsed.toString();\n }\n return null;\n}\n//# sourceMappingURL=atproto-oauth-scope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopeMissingError = void 0;\nclass ScopeMissingError extends Error {\n get statusCode() {\n return this.status;\n }\n constructor(scope) {\n super(`Missing required scope \"${scope}\"`);\n Object.defineProperty(this, \"scope\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: scope\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ScopeMissingError'\n });\n // compatibility layer with http-errors package. The goal if to make\n // isHttpError(new ScopeMissingError) return true.\n Object.defineProperty(this, \"status\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 403\n });\n Object.defineProperty(this, \"expose\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n }\n}\nexports.ScopeMissingError = ScopeMissingError;\n//# sourceMappingURL=scope-missing-error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopesSet = exports.ScopeMissingError = void 0;\nconst scope_missing_error_js_1 = require(\"./scope-missing-error.js\");\nObject.defineProperty(exports, \"ScopeMissingError\", { enumerable: true, get: function () { return scope_missing_error_js_1.ScopeMissingError; } });\nconst account_permission_js_1 = require(\"./scopes/account-permission.js\");\nconst blob_permission_js_1 = require(\"./scopes/blob-permission.js\");\nconst identity_permission_js_1 = require(\"./scopes/identity-permission.js\");\nconst repo_permission_js_1 = require(\"./scopes/repo-permission.js\");\nconst rpc_permission_js_1 = require(\"./scopes/rpc-permission.js\");\n/**\n * Utility class to manage a set of scopes and check if they match specific\n * options for a given resource.\n */\nclass ScopesSet extends Set {\n /**\n * Check if the container has a scope that matches the given options for a\n * specific resource.\n */\n matches(resource, options) {\n for (const scope of this) {\n if (permissionScopeMatches(scope, resource, options))\n return true;\n }\n return false;\n }\n assert(resource, options) {\n if (!this.matches(resource, options)) {\n const scope = scopeNeededFor(resource, options);\n throw new scope_missing_error_js_1.ScopeMissingError(scope);\n }\n }\n some(fn) {\n for (const scope of this)\n if (fn(scope))\n return true;\n return false;\n }\n every(fn) {\n for (const scope of this)\n if (!fn(scope))\n return false;\n return true;\n }\n *filter(fn) {\n for (const scope of this)\n if (fn(scope))\n yield scope;\n }\n *map(fn) {\n for (const scope of this)\n yield fn(scope);\n }\n static fromString(string) {\n return new ScopesSet(string?.split(' '));\n }\n}\nexports.ScopesSet = ScopesSet;\nfunction scopeNeededFor(resource, options) {\n switch (resource) {\n case 'account':\n return account_permission_js_1.AccountPermission.scopeNeededFor(options);\n case 'identity':\n return identity_permission_js_1.IdentityPermission.scopeNeededFor(options);\n case 'repo':\n return repo_permission_js_1.RepoPermission.scopeNeededFor(options);\n case 'rpc':\n return rpc_permission_js_1.RpcPermission.scopeNeededFor(options);\n case 'blob':\n return blob_permission_js_1.BlobPermission.scopeNeededFor(options);\n }\n // @ts-expect-error\n throw new TypeError(`Unknown resource: ${resource}`);\n}\nfunction permissionScopeMatches(scope, resource, options) {\n // @NOTE we might want to cache the parsed scopes though, in practice, a\n // single scope is unlikely to be parsed multiple times during a single\n // request.\n const permission = parsePermissionScope(resource, scope);\n if (!permission)\n return false;\n // @ts-expect-error\n return permission.matches(options);\n}\nfunction parsePermissionScope(resource, scope) {\n switch (resource) {\n case 'account':\n return account_permission_js_1.AccountPermission.fromString(scope);\n case 'identity':\n return identity_permission_js_1.IdentityPermission.fromString(scope);\n case 'repo':\n return repo_permission_js_1.RepoPermission.fromString(scope);\n case 'rpc':\n return rpc_permission_js_1.RpcPermission.fromString(scope);\n case 'blob':\n return blob_permission_js_1.BlobPermission.fromString(scope);\n default:\n return null;\n }\n}\n//# sourceMappingURL=scopes-set.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopePermissions = void 0;\nconst scope_missing_error_js_1 = require(\"./scope-missing-error.js\");\nconst account_permission_js_1 = require(\"./scopes/account-permission.js\");\nconst blob_permission_js_1 = require(\"./scopes/blob-permission.js\");\nconst identity_permission_js_1 = require(\"./scopes/identity-permission.js\");\nconst repo_permission_js_1 = require(\"./scopes/repo-permission.js\");\nconst rpc_permission_js_1 = require(\"./scopes/rpc-permission.js\");\nconst scopes_set_js_1 = require(\"./scopes-set.js\");\nclass ScopePermissions {\n constructor(scope) {\n Object.defineProperty(this, \"scopes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.scopes = new scopes_set_js_1.ScopesSet(!scope // \"\" | null | undefined\n ? undefined\n : typeof scope === 'string'\n ? scope.split(' ')\n : scope);\n }\n allowsAccount(options) {\n return this.scopes.matches('account', options);\n }\n assertAccount(options) {\n if (!this.allowsAccount(options)) {\n const scope = account_permission_js_1.AccountPermission.scopeNeededFor(options);\n throw new scope_missing_error_js_1.ScopeMissingError(scope);\n }\n }\n allowsIdentity(options) {\n return this.scopes.matches('identity', options);\n }\n assertIdentity(options) {\n if (!this.allowsIdentity(options)) {\n const scope = identity_permission_js_1.IdentityPermission.scopeNeededFor(options);\n throw new scope_missing_error_js_1.ScopeMissingError(scope);\n }\n }\n allowsBlob(options) {\n return this.scopes.matches('blob', options);\n }\n assertBlob(options) {\n if (!this.allowsBlob(options)) {\n const scope = blob_permission_js_1.BlobPermission.scopeNeededFor(options);\n throw new scope_missing_error_js_1.ScopeMissingError(scope);\n }\n }\n allowsRepo(options) {\n return this.scopes.matches('repo', options);\n }\n assertRepo(options) {\n if (!this.allowsRepo(options)) {\n const scope = repo_permission_js_1.RepoPermission.scopeNeededFor(options);\n throw new scope_missing_error_js_1.ScopeMissingError(scope);\n }\n }\n allowsRpc(options) {\n return this.scopes.matches('rpc', options);\n }\n assertRpc(options) {\n if (!this.allowsRpc(options)) {\n const scope = rpc_permission_js_1.RpcPermission.scopeNeededFor(options);\n throw new scope_missing_error_js_1.ScopeMissingError(scope);\n }\n }\n}\nexports.ScopePermissions = ScopePermissions;\n//# sourceMappingURL=scope-permissions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopePermissionsTransition = void 0;\nconst scope_permissions_js_1 = require(\"./scope-permissions.js\");\n/**\n * Overrides the default permission set to allow transitional scopes to be used\n * in place of the generic scopes.\n */\nclass ScopePermissionsTransition extends scope_permissions_js_1.ScopePermissions {\n get hasTransitionGeneric() {\n return this.scopes.has('transition:generic');\n }\n get hasTransitionEmail() {\n return this.scopes.has('transition:email');\n }\n get hasTransitionChatBsky() {\n return this.scopes.has('transition:chat.bsky');\n }\n allowsAccount(options) {\n if (options.attr === 'email' &&\n options.action === 'read' &&\n this.hasTransitionEmail) {\n return true;\n }\n return super.allowsAccount(options);\n }\n allowsBlob(options) {\n if (this.hasTransitionGeneric) {\n return true;\n }\n return super.allowsBlob(options);\n }\n allowsRepo(options) {\n if (this.hasTransitionGeneric) {\n return true;\n }\n return super.allowsRepo(options);\n }\n allowsRpc(options) {\n const { lxm } = options;\n if (this.hasTransitionGeneric && lxm === '*') {\n return true;\n }\n if (this.hasTransitionGeneric && !lxm.startsWith('chat.bsky.')) {\n return true;\n }\n if (this.hasTransitionChatBsky && lxm.startsWith('chat.bsky.')) {\n return true;\n }\n return super.allowsRpc(options);\n }\n}\nexports.ScopePermissionsTransition = ScopePermissionsTransition;\n//# sourceMappingURL=scope-permissions-transition.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./atproto-oauth-scope.js\"), exports);\n__exportStar(require(\"./scope-missing-error.js\"), exports);\n__exportStar(require(\"./scope-permissions-transition.js\"), exports);\n__exportStar(require(\"./scope-permissions.js\"), exports);\n__exportStar(require(\"./scopes-set.js\"), exports);\n__exportStar(require(\"./scopes/account-permission.js\"), exports);\n__exportStar(require(\"./scopes/blob-permission.js\"), exports);\n__exportStar(require(\"./scopes/identity-permission.js\"), exports);\n__exportStar(require(\"./scopes/include-scope.js\"), exports);\n__exportStar(require(\"./scopes/repo-permission.js\"), exports);\n__exportStar(require(\"./scopes/rpc-permission.js\"), exports);\n//# sourceMappingURL=index.js.map","import { InfoIcon } from '@phosphor-icons/react'\nimport { useEffect, useState } from 'react'\nimport type { OAuthClientMetadata } from '@atproto/oauth-types'\n\nexport type ClientImageProps = {\n clientId: string\n clientMetadata: OAuthClientMetadata\n clientTrusted: boolean\n}\n\nexport function ClientImage({\n clientId,\n clientMetadata,\n clientTrusted,\n}: ClientImageProps) {\n const [errored, setErrored] = useState(false)\n\n const src = clientTrusted ? clientMetadata.logo_uri : undefined\n const alt = clientMetadata.client_name || clientId\n\n useEffect(() => {\n setErrored(false)\n }, [src])\n\n return src && !errored ? (\n <img\n aria-hidden\n src={src}\n alt={alt}\n className=\"-ml-1 size-8\"\n onError={() => setErrored(true)}\n />\n ) : (\n <div\n aria-hidden\n className=\"bg-primary flex size-8 items-center justify-center overflow-hidden rounded-full text-white\"\n >\n <InfoIcon className=\"size-4\" />\n </div>\n )\n}\n","export type { OAuthClientMetadata } from '@atproto/oauth-types'\n\n// @NOTE: not importing these from @atproto/oauth-types here because 1) we don't\n// need to validate here and 2) we prefer not to import un-necessary code to\n// improve bundle size (~100k impact)\nexport const isOAuthClientIdLoopback = (clientId: string) =>\n clientId.startsWith('http://')\nexport const isConventionalOAuthClientId = (clientId: string) => {\n try {\n const url = new URL(clientId)\n return (\n url.protocol === 'https:' &&\n url.pathname === '/oauth-client-metadata.json' &&\n !url.port &&\n !url.search\n )\n } catch {\n return false\n }\n}\n","import { JSX, useMemo } from 'react'\nimport { Override } from '#/lib/util.ts'\n\nexport type UrlPartRenderingOptions = {\n faded?: boolean\n bold?: boolean\n}\n\nexport type UrlRendererProps = {\n url: string | URL\n proto?: boolean | UrlPartRenderingOptions\n host?: boolean | UrlPartRenderingOptions\n path?: boolean | UrlPartRenderingOptions\n query?: boolean | UrlPartRenderingOptions\n hash?: boolean | UrlPartRenderingOptions\n as?: string\n}\n\nexport function UrlViewer<As extends keyof JSX.IntrinsicElements = 'span'>({\n url,\n proto = false,\n host = true,\n path = false,\n query = false,\n hash = false,\n as: As = 'span',\n\n // Element\n ...props\n}: Override<JSX.IntrinsicElements[As], UrlRendererProps>) {\n const urlObj = useMemo(() => (url instanceof URL ? url : new URL(url)), [url])\n\n return (\n <As {...props}>\n {proto && (\n <UrlPartViewer\n value={`${urlObj.protocol}//`}\n {...(proto === true ? null : proto)}\n />\n )}\n {host && (\n <UrlPartViewer\n value={urlObj.host}\n {...(host === true ? { faded: false, bold: true } : host)}\n />\n )}\n {path && (\n <UrlPartViewer\n value={urlObj.pathname}\n {...(path === true ? null : path)}\n />\n )}\n {query && (\n <UrlPartViewer\n value={urlObj.search}\n {...(query === true ? null : query)}\n />\n )}\n {hash && (\n <UrlPartViewer value={urlObj.hash} {...(hash === true ? null : hash)} />\n )}\n </As>\n )\n}\n\nfunction UrlPartViewer({\n value,\n faded = true,\n bold = false,\n}: { value: string } & UrlPartRenderingOptions) {\n const Comp = bold ? 'b' : 'span'\n return <Comp className={faded ? 'opacity-50' : ''}>{value}</Comp>\n}\n","import { Trans } from '@lingui/react/macro'\nimport { JSX, useMemo } from 'react'\nimport {\n OAuthClientMetadata,\n isConventionalOAuthClientId,\n} from '#/lib/oauth-client.ts'\nimport { Override } from '#/lib/util.ts'\nimport { UrlViewer } from './url-viewer.tsx'\n\nexport type ClientNameProps = Override<\n Omit<JSX.IntrinsicElements['span'], 'children'>,\n {\n clientId: string\n clientMetadata: OAuthClientMetadata\n clientTrusted: boolean\n }\n>\n\nexport function ClientName({\n clientId,\n clientMetadata,\n clientTrusted,\n\n // span\n ...attrs\n}: ClientNameProps) {\n const url = useMemo(() => {\n try {\n return new URL(clientId)\n } catch {\n return null\n }\n }, [clientId])\n\n if (clientTrusted && clientMetadata.client_name) {\n return <span {...attrs}>{clientMetadata.client_name}</span>\n }\n\n // @NOTE: not using isOAuthClientIdLoopback & isOAuthClientIdDiscoverable from\n // @atproto/oauth-types here because 1) we don't need to validate here and 2)\n // we prefer not to import un-necessary code to improve bundle size.\n\n if (url?.protocol === 'http:') {\n return (\n <span {...attrs}>\n <Trans>An application on your device</Trans>\n </span>\n )\n }\n\n if (url?.protocol === 'https:') {\n // Only display the url details if the client id does not follow our\n // convention.\n const simplifiedView = isConventionalOAuthClientId(clientId)\n\n return (\n <UrlViewer\n {...attrs}\n url={url}\n proto={!simplifiedView}\n host={true}\n path={!simplifiedView}\n query={!simplifiedView}\n hash={false}\n />\n )\n }\n\n return <span {...attrs}>{clientId}</span>\n}\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { useLingui } from '@lingui/react/macro'\nimport { QuestionIcon, XIcon } from '@phosphor-icons/react'\nimport * as Dialog from '@radix-ui/react-dialog'\nimport { HTMLAttributes, ReactNode } from 'react'\nimport { Button } from '#/components/forms/button.tsx'\nimport { Override } from '#/lib/util.ts'\n\nexport type DescriptionCardProps = Override<\n HTMLAttributes<HTMLDivElement>,\n {\n hint?: string\n image: ReactNode\n title: ReactNode\n description?: ReactNode\n append?: ReactNode\n children?: ReactNode\n extra?: ReactNode\n }\n>\n\nexport function DescriptionCard({\n hint,\n image,\n title,\n description,\n append,\n children,\n extra,\n\n // HTMLDivElement\n ...attrs\n}: DescriptionCardProps) {\n const { t } = useLingui()\n\n return (\n <div {...attrs}>\n <div className={`flex items-center justify-start gap-2`}>\n <div\n className=\"ml-2 flex w-8 flex-grow-0 items-center justify-center\"\n aria-hidden\n >\n {image}\n </div>\n\n <div className={`flex flex-1 flex-col`}>\n <h3>{title}</h3>\n {description && <p className=\"text-sm\">{description}</p>}\n </div>\n\n <div className=\"flex shrink-0 grow-0 items-center justify-center\">\n {append}\n {!!children && (\n <Dialog.Root>\n <Dialog.Trigger asChild>\n <Button\n shape=\"circle\"\n aria-label={hint ?? t`Expand details`}\n aria-haspopup=\"dialog\"\n size=\"sm\"\n >\n <QuestionIcon className=\"size-4\" aria-hidden />\n </Button>\n </Dialog.Trigger>\n\n <Dialog.Portal>\n <Dialog.Overlay className=\"bg-contrast-900/30 dark:bg-contrast-0/60 fixed inset-0\" />\n\n <Dialog.Content\n role=\"dialog\"\n aria-label={!title ? t`Details` : undefined}\n className=\"fixed left-1/2 top-1/2 max-h-[85vh] w-[90vw] max-w-md -translate-x-1/2 -translate-y-1/2 overflow-y-auto rounded-lg border border-slate-200 bg-white p-6 shadow-xl dark:border-slate-700 dark:bg-slate-800\"\n >\n <div className=\"relative flex flex-col gap-4\">\n <Dialog.Title className=\"text-text-default text-lg font-semibold\">\n {title}\n </Dialog.Title>\n <Dialog.Description className=\"text-text-light text-sm\">\n {children}\n </Dialog.Description>\n {extra}\n <Dialog.Close\n className=\"absolute right-0 top-0 rounded-full bg-slate-100 p-1 hover:bg-slate-200 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 dark:bg-slate-700 dark:hover:bg-slate-600\"\n aria-label={t`Close details`}\n >\n <XIcon className=\"text-text-light size-4\" aria-hidden />\n </Dialog.Close>\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import { type FunctionComponent, type JSX, forwardRef } from 'react'\nimport { Override } from '#/lib/util.ts'\n\nexport type IconProps = Override<\n Omit<JSX.IntrinsicElements['svg'], 'viewBox' | 'children' | 'xmlns'>,\n {\n /**\n * The title of the icon, used for accessibility.\n */\n title?: string\n }\n>\n\nexport function makeSvgComponent(path: string, displayName?: string) {\n const SvgComponent: FunctionComponent<IconProps> = forwardRef(\n ({ title, ...props }, ref) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n {...props}\n ref={ref}\n aria-hidden={!title}\n >\n {title && <title>{title}</title>}\n <path\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d={path}\n ></path>\n </svg>\n ),\n )\n if (displayName) SvgComponent.displayName = displayName\n return SvgComponent\n}\n\nexport const ButterflyIcon = makeSvgComponent(\n // https://github.com/bluesky-social/social-app/blob/b32568260f98ea879468fd1bdedacf85d1e6ae8c/src/components/icons/Logo.tsx#L4\n 'M6.335 4.212c2.293 1.76 4.76 5.327 5.665 7.241.906-1.914 3.372-5.482 5.665-7.241C19.319 2.942 22 1.96 22 5.086c0 .624-.35 5.244-.556 5.994-.713 2.608-3.315 3.273-5.629 2.87 4.045.704 5.074 3.035 2.852 5.366-4.22 4.426-6.066-1.111-6.54-2.53-.086-.26-.126-.382-.127-.278 0-.104-.041.018-.128.278-.473 1.419-2.318 6.956-6.539 2.53-2.222-2.331-1.193-4.662 2.852-5.366-2.314.403-4.916-.262-5.63-2.87C2.35 10.33 2 5.71 2 5.086c0-3.126 2.68-2.144 4.335-.874Z',\n 'ButterflyIcon',\n)\n","import { Trans, useLingui } from '@lingui/react/macro'\nimport {\n AtomIcon,\n BookOpenIcon,\n CertificateIcon,\n ChatCircleDotsIcon,\n CheckIcon,\n EnvelopeIcon,\n HandIcon,\n IdentificationBadgeIcon,\n UserIcon,\n} from '@phosphor-icons/react'\nimport { Fragment, HTMLAttributes, ReactNode, useMemo } from 'react'\nimport {\n AudParam,\n BlobPermission,\n CollectionParam,\n IncludeScope,\n LxmParam,\n RepoPermission,\n RpcPermission,\n ScopePermissionsTransition,\n} from '@atproto/oauth-scopes'\nimport type { PermissionSet, PermissionSets } from '#/hydration-data.d.ts'\nimport { Override } from '#/lib/util'\nimport { Checkbox } from '../forms/checkbox.tsx'\nimport { Admonition } from './admonition.tsx'\nimport { DescriptionCard } from './description-card.tsx'\nimport { ButterflyIcon } from './icons.tsx'\nimport { LangProp } from './lang-string.tsx'\n\nexport type ScopeDescriptionProps = Override<\n HTMLAttributes<HTMLDivElement>,\n {\n clientTrusted?: boolean\n clientFirstParty?: boolean\n scope?: string\n permissionSets?: PermissionSets\n\n allowEmail?: boolean\n onAllowEmail?: (allowed: boolean) => void\n }\n>\n\nexport function ScopeDescription({\n scope,\n permissionSets,\n clientTrusted = false,\n clientFirstParty = false,\n allowEmail,\n onAllowEmail,\n\n // div\n className = '',\n ...attrs\n}: ScopeDescriptionProps) {\n const includeScopes = useMemo(() => {\n return Array.from(\n new Set(\n scope\n ?.split(' ')\n .map((v) => IncludeScope.fromString(v))\n .filter((v) => v != null),\n ),\n )\n }, [scope])\n const permissions = useMemo(() => {\n return new ScopePermissionsTransition(scope)\n }, [scope])\n\n if (permissions.scopes.size === 0) return null\n if (permissions.scopes.size === 1 && permissions.scopes.has('atproto')) {\n return null\n }\n\n return (\n <div className={`flex flex-col gap-2 ${className}`} {...attrs} role=\"list\">\n <EmailPermissions\n permissions={permissions}\n allowEmail={allowEmail}\n onAllowEmail={onAllowEmail}\n />\n <IdentityPermissions permissions={permissions} />\n <AccountPermissions permissions={permissions} />\n\n {/* Bluesky business logic specific scopes */}\n <BlueskyAppviewPermissions permissions={permissions} />\n <BlueskyChatPermissions permissions={permissions} />\n\n <IncludedPermissions\n includeScopes={includeScopes}\n permissionSets={permissionSets}\n />\n\n <FineGrainedPermissions permissions={permissions} />\n\n {(!clientFirstParty || !clientTrusted) && (\n <IdentityWarning permissions={permissions} />\n )}\n </div>\n )\n}\n\nfunction IncludedPermissions({\n includeScopes,\n permissionSets,\n}: {\n includeScopes: IncludeScope[]\n permissionSets?: PermissionSets\n}): ReactNode {\n return includeScopes.map((includeScope, i) => (\n <IncludeScopePermissions\n key={i}\n includeScope={includeScope}\n permissionSet={permissionSets?.[includeScope.nsid]}\n />\n ))\n}\n\nfunction IncludeScopePermissions({\n includeScope,\n permissionSet,\n}: {\n includeScope: IncludeScope\n permissionSet?: PermissionSet\n}) {\n const { nsid } = includeScope\n\n const permissions = useMemo(() => {\n if (!permissionSet) return null\n return new ScopePermissionsTransition(includeScope.toScopes(permissionSet))\n }, [includeScope, permissionSet])\n\n return (\n <DescriptionCard\n role=\"listitem\"\n image={\n isBskyAppNsid(nsid) ? (\n <ButterflyIcon className=\"size-6\" />\n ) : isBskyChatNsid(nsid) ? (\n <ChatCircleDotsIcon className=\"size-6\" />\n ) : nsid.startsWith('com.atproto.moderation.') ? (\n <HandIcon className=\"size-6\" />\n ) : (\n <AtomIcon className=\"size-6\" />\n )\n }\n title={\n <LangProp object={permissionSet} property=\"title\" fallback={nsid} />\n }\n description={\n <LangProp\n object={permissionSet}\n property=\"detail\"\n fallback={\n // Do not set the \"nsid\" as fallback for the \"detail\" if is was already used when displaying the \"title\"\n permissionSet?.title ? nsid : null\n }\n />\n }\n extra={\n permissions ? (\n <>\n <RpcMethodsTable className=\"mt-2\" permissions={permissions} />\n <RepoTable className=\"mt-2\" permissions={permissions} />\n </>\n ) : null\n }\n >\n <Trans>\n The application requests the permissions necessary to perform the\n following actions on your behalf:\n </Trans>\n </DescriptionCard>\n )\n}\n\nfunction IdentityWarning({\n permissions,\n}: {\n permissions: ScopePermissionsTransition\n}) {\n const hasFullIdentityAccess = useMemo(() => {\n return permissions.allowsIdentity({ attr: '*' })\n }, [permissions])\n\n if (hasFullIdentityAccess) {\n return (\n <Admonition role=\"status\">\n <Trans>\n The application is asking for full control over your network identity,\n meaning that it could <b>permanently break</b>, or even <b>steal</b>,\n your account. Only grant this permission to applications you really\n trust.\n </Trans>\n </Admonition>\n )\n }\n\n return null\n}\n\nfunction EmailPermissions({\n permissions,\n allowEmail,\n onAllowEmail,\n}: {\n permissions: ScopePermissionsTransition\n allowEmail?: boolean\n onAllowEmail?: (allowed: boolean) => void\n}) {\n const { t } = useLingui()\n\n const allowedAction = useMemo(() => {\n return (['manage', 'read'] as const).find((action) =>\n permissions.allowsAccount({ attr: 'email', action }),\n )\n }, [permissions])\n\n if (allowedAction) {\n return (\n <label className={onAllowEmail ? 'cursor-pointer' : undefined}>\n <DescriptionCard\n role=\"listitem\"\n image={<EnvelopeIcon className=\"size-6\" />}\n title={t`Email`}\n description={\n allowedAction === 'manage' ? (\n <Trans>Read and update your account's email address</Trans>\n ) : (\n <Trans>Read your account's email address</Trans>\n )\n }\n append={\n onAllowEmail && (\n <Checkbox\n className=\"m-2\"\n checked={allowEmail}\n onChange={(e) => onAllowEmail(e.target.checked)}\n />\n )\n }\n />\n </label>\n )\n }\n\n return null\n}\n\nfunction AccountPermissions({\n permissions,\n}: {\n permissions: ScopePermissionsTransition\n}) {\n const { t } = useLingui()\n\n // @NOTE \"account:email\" already covered by EmailPermissions\n // @NOTE \"account:repo?action=manage\" already covered by RepoPermissions\n\n if (permissions.allowsAccount({ attr: 'status', action: 'manage' })) {\n return (\n <DescriptionCard\n role=\"listitem\"\n image={<UserIcon className=\"size-6\" />}\n title={t`Account`}\n description={t`Temporarily activate or deactivate your account`}\n />\n )\n }\n\n return null\n}\n\n/**\n * Will display detailed rep and rpc permissions unless the app only has\n * app.bsky or chat.bsky specific permissions, in which case the\n * <BlueskyAppviewPermissions /> and <BlueskyChatPermissions /> components cover\n * them.\n */\nfunction FineGrainedPermissions({\n permissions,\n}: {\n permissions: ScopePermissionsTransition\n}) {\n const hasOnlyBskyAppSpecificPermissions = useMemo(() => {\n if (permissions.allowsAccount({ attr: 'repo', action: 'manage' })) {\n return false\n }\n\n let foundOne = false\n\n for (const s of permissions.scopes) {\n const rpc = RpcPermission.fromString(s)\n if (rpc) {\n foundOne = true\n if (isOfficialBlueskyAppviewServiceId(rpc.aud)) continue\n if (rpc.lxm.every(isBlueskySpecificNsid)) continue\n return false\n }\n\n const repo = RepoPermission.fromString(s)\n if (repo) {\n foundOne = true\n if (repo.collection.every(isBlueskySpecificNsid)) continue\n return false\n }\n }\n\n return foundOne\n }, [permissions])\n\n if (hasOnlyBskyAppSpecificPermissions) return null\n\n return (\n <>\n <RepoPermissions permissions={permissions} />\n <RpcMethodsDetails permissions={permissions} />\n </>\n )\n}\n\nfunction BlueskyAppviewPermissions({\n permissions,\n}: {\n permissions: ScopePermissionsTransition\n}) {\n const hasBskyAppRepo = useMemo(() => {\n return permissions.scopes.some(scopeEnablesBskyAppRepo)\n }, [permissions])\n\n const hasBskyAppRpc = useMemo(() => {\n return permissions.scopes.some(scopeEnablesPrivateBskyAppMethods)\n }, [permissions])\n\n if (hasBskyAppRepo || hasBskyAppRpc) {\n return (\n <DescriptionCard\n role=\"listitem\"\n image={<ButterflyIcon className=\"size-6\" />}\n title={'Bluesky'}\n description={\n hasBskyAppRepo && hasBskyAppRpc ? (\n <Trans>\n Manage your profile, posts, likes and follows as well as read your\n private preferences\n </Trans>\n ) : (\n <Trans>Manage your profile, posts, likes and follows</Trans>\n )\n }\n />\n )\n }\n\n return null\n}\n\nfunction BlueskyChatPermissions({\n permissions,\n}: {\n permissions: ScopePermissionsTransition\n}) {\n const { t } = useLingui()\n\n const enablesChat = useMemo(() => {\n return (\n permissions.hasTransitionChatBsky ||\n permissions.scopes.some(scopeEnablesChat)\n )\n }, [permissions])\n\n if (enablesChat) {\n return (\n <DescriptionCard\n role=\"listitem\"\n image={<ChatCircleDotsIcon className=\"size-6\" />}\n title={t`Chat`}\n description={t`Read and send messages`}\n />\n )\n }\n\n return null\n}\n\nfunction IdentityPermissions({\n permissions,\n}: {\n permissions: ScopePermissionsTransition\n}) {\n const { t } = useLingui()\n\n const attr = useMemo(() => {\n if (permissions.allowsIdentity({ attr: '*' })) {\n return '*' as const\n }\n\n if (permissions.allowsIdentity({ attr: 'handle' })) {\n return 'handle' as const\n }\n\n return null\n }, [permissions])\n\n if (attr) {\n return (\n <DescriptionCard\n role=\"listitem\"\n image={<IdentificationBadgeIcon className=\"size-6\" />}\n title={t`Identity`}\n description={\n attr === '*' ? (\n <Trans>\n Manage your <b>full identity</b> including your <b>@handle</b>\n </Trans>\n ) : (\n <Trans>\n Change your <b>@handle</b>\n </Trans>\n )\n }\n />\n )\n }\n\n return null\n}\n\nfunction RpcMethodsDetails({\n permissions,\n}: {\n permissions: ScopePermissionsTransition\n}) {\n const { t } = useLingui()\n\n if (permissions.hasTransitionGeneric) {\n return (\n <DescriptionCard\n role=\"listitem\"\n image={<CertificateIcon className=\"size-6\" />}\n title={t({ context: 'OAuthScope', message: 'Authenticate' })}\n description={\n <Trans>\n Perform authenticated actions towards <b>any service</b> on your\n behalf\n </Trans>\n }\n />\n )\n }\n\n if (permissions.scopes.some((s) => RpcPermission.fromString(s) != null)) {\n return (\n <DescriptionCard\n role=\"listitem\"\n image={<CertificateIcon className=\"size-6\" />}\n title={t({ context: 'OAuthScope', message: 'Authenticate' })}\n description={t`Perform actions on your behalf`}\n extra={<RpcMethodsTable className=\"mt-2\" permissions={permissions} />}\n >\n <Trans>\n The AT Protocol network uses an authentication mechanism that allows\n to uniquely identify users when communicating with external services.\n This is typically used to retrieve or update data linked to your\n account, such as chat messages, feeds or moderation content. The\n application requests the permissions necessary to perform the\n following authenticated actions on your behalf:\n </Trans>\n </DescriptionCard>\n )\n }\n\n return null\n}\n\ntype RpcMethodsTableProps = Override<\n HTMLAttributes<HTMLTableElement>,\n {\n permissions: ScopePermissionsTransition\n children?: never\n }\n>\nfunction RpcMethodsTable({\n permissions,\n className = '',\n ...attrs\n}: RpcMethodsTableProps) {\n const audLxmsEntries = useMemo(() => {\n const map = new Map<AudParam, Set<LxmParam>>()\n\n for (const s of permissions.scopes) {\n const parsed = RpcPermission.fromString(s)\n if (!parsed) continue\n\n let set = map.get(parsed.aud)\n if (!set) map.set(parsed.aud, (set = new Set()))\n for (const lxm of parsed.lxm) set.add(lxm)\n }\n\n return Array.from(map.entries())\n .sort(([a], [b]) => a.localeCompare(b))\n .map(\n ([aud, lxms]) =>\n [\n aud,\n lxms.has('*')\n ? (['*'] as const)\n : Array.from(lxms).sort((a, b) => a.localeCompare(b)),\n ] as const,\n )\n }, [permissions])\n\n if (!audLxmsEntries.length) return null\n\n return (\n <table className={`w-full table-auto ${className}`} {...attrs}>\n <thead>\n <tr className=\"text-sm\">\n <th className=\"text-left font-normal\">\n <Trans context=\"RPC lxm\">Call</Trans>\n </th>\n <th className=\"text-left font-normal\">\n <Trans context=\"RPC aud\">Towards</Trans>\n </th>\n </tr>\n </thead>\n <tbody>\n {audLxmsEntries.map(([aud, lxms]) =>\n lxms.map((lxm, i, array) => (\n <tr key={lxm} className=\"text-xs\">\n <td className={i > 0 ? 'pt-1' : undefined}>\n <Lxm lxm={lxm} />\n </td>\n {i === 0 && (\n <td className=\"align-top\" rowSpan={array.length}>\n <Aud aud={aud} />\n </td>\n )}\n </tr>\n )),\n )}\n </tbody>\n </table>\n )\n}\n\nfunction RepoPermissions({\n permissions,\n}: {\n permissions: ScopePermissionsTransition\n}) {\n const { t } = useLingui()\n\n if (\n permissions.hasTransitionGeneric ||\n permissions.allowsAccount({ attr: 'repo', action: 'manage' }) ||\n (permissions.allowsRepo({ collection: '*', action: 'create' }) &&\n permissions.allowsRepo({ collection: '*', action: 'delete' }) &&\n permissions.allowsRepo({ collection: '*', action: 'update' }))\n ) {\n return (\n <DescriptionCard\n role=\"listitem\"\n image={<BookOpenIcon className=\"size-6\" />}\n title={t`Repository`}\n description={\n <Trans>\n Create, update, and delete any public data linked to your account\n </Trans>\n }\n />\n )\n }\n\n if (permissions.scopes.some((s) => RepoPermission.fromString(s) != null)) {\n return (\n <DescriptionCard\n role=\"listitem\"\n image={<BookOpenIcon className=\"size-6\" />}\n title={t`Repository`}\n description={t`Publish changes`}\n extra={<RepoTable className=\"mt-2\" permissions={permissions} />}\n >\n <Trans>\n Your repository contains all the data publicly available on the AT\n Protocol network, such as Bluesky posts, likes, and follows. It also\n contains data created through other apps you've signed into using this\n account. The application requests the permissions necessary to publish\n the following changes to your repository:\n </Trans>\n </DescriptionCard>\n )\n }\n\n return null\n}\n\ntype RepoTableProps = Override<\n HTMLAttributes<HTMLTableElement>,\n {\n permissions: ScopePermissionsTransition\n children?: never\n }\n>\nfunction RepoTable({ permissions, className, ...attrs }: RepoTableProps) {\n const { t } = useLingui()\n\n const nsidActions = useMemo(() => {\n const map = new Map<\n CollectionParam,\n {\n create: boolean\n update: boolean\n delete: boolean\n }\n >()\n\n for (const s of permissions.scopes) {\n const parsed = RepoPermission.fromString(s)\n if (!parsed) continue\n\n for (const coll of parsed.collection) {\n if (map.has(coll)) {\n const actions = map.get(coll)!\n for (const action of parsed.action) actions[action] = true\n } else {\n map.set(coll, {\n create: parsed.action.includes('create'),\n update: parsed.action.includes('update'),\n delete: parsed.action.includes('delete'),\n })\n }\n }\n }\n\n return map\n }, [permissions])\n\n const blobScopes = useMemo(() => {\n if (permissions.hasTransitionGeneric) {\n return [new BlobPermission(['*/*'])]\n }\n return Array.from(\n permissions.scopes.map((v) => BlobPermission.fromString(v)),\n ).filter((v) => v != null)\n }, [permissions])\n\n if (!nsidActions.size) return null\n\n const starActions = nsidActions.get('*')\n\n const nsidActionsEntries = useMemo(() => {\n return Array.from(nsidActions.entries()).sort(([a], [b]) =>\n a.localeCompare(b),\n )\n }, [nsidActions])\n\n return (\n <table className={`w-full table-auto text-left ${className}`} {...attrs}>\n <thead>\n <tr className=\"text-sm\">\n <th className=\"font-normal\">{t`Data`}</th>\n <th className=\"text-center font-normal\">{t`Create`}</th>\n <th className=\"text-center font-normal\">{t`Update`}</th>\n <th className=\"text-center font-normal\">{t`Delete`}</th>\n </tr>\n </thead>\n <tbody>\n {nsidActionsEntries.map(([coll, actions], i) => (\n <tr key={coll} className=\"text-xs\">\n <td className={i > 0 ? 'pt-1' : undefined}>\n <Collection coll={coll} />\n </td>\n <td className=\"text-center\">\n {starActions?.create || actions.create ? (\n <CheckIcon className=\"inline-block size-3\" />\n ) : null}\n </td>\n <td className=\"text-center\">\n {starActions?.update || actions.update ? (\n <CheckIcon className=\"inline-block size-3\" />\n ) : null}\n </td>\n <td className=\"text-center\">\n {starActions?.delete || actions.delete ? (\n <CheckIcon className=\"inline-block size-3\" />\n ) : null}\n </td>\n </tr>\n ))}\n {blobScopes.length > 0 && (\n <tr>\n <td className=\"pt-2\">\n <Trans>Blob storage</Trans>\n </td>\n <td colSpan={3} className=\"pt-2 text-center\">\n <Trans>Upload files</Trans>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n )\n}\n\n// UTILS\n\nfunction isOfficialBlueskyAppviewServiceId(aud: string): boolean {\n return aud === 'did:web:bsky.app#bsky_appview'\n}\n\nfunction isBskyAppNsid(nsid: string): nsid is `app.bsky.${string}` {\n return nsid.startsWith('app.bsky.')\n}\nfunction isBskyChatNsid(nsid: string): nsid is `chat.bsky.${string}` {\n return nsid.startsWith('chat.bsky.')\n}\n\nfunction scopeEnablesChat(scope: string): boolean {\n if (scope === 'transition:chat.bsky') return true\n const rpc = RpcPermission.fromString(scope)\n if (!rpc) return false\n // Official Bluesky chat is not hosted by the appview service\n if (isOfficialBlueskyAppviewServiceId(rpc.aud)) return false\n return rpc.lxm.includes('*') || rpc.lxm.some(isBskyChatNsid)\n}\n\nfunction isBlueskySpecificNsid(nsid: CollectionParam | LxmParam): boolean {\n return nsid === '*'\n ? false\n : nsid === 'com.atproto.moderation.createReport' ||\n isBskyAppNsid(nsid) ||\n isBskyChatNsid(nsid)\n}\n\nfunction scopeEnablesBskyAppRepo(scope: string): boolean {\n if (scope === 'transition:generic') return true\n const repo = RepoPermission.fromString(scope)\n if (!repo) return false\n return (\n repo.collection.includes('*') || repo.collection.some(isBlueskySpecificNsid)\n )\n}\n\nfunction scopeEnablesPrivateBskyAppMethods(scope: string): boolean {\n if (scope === 'transition:generic') return true\n const rpc = RpcPermission.fromString(scope)\n if (!rpc) return false\n return (\n rpc.lxm.includes('app.bsky.actor.getPreferences') ||\n rpc.lxm.includes('app.bsky.graph.block') ||\n rpc.lxm.includes('app.bsky.graph.muteActor') ||\n rpc.lxm.includes('app.bsky.graph.muteActorList') ||\n rpc.lxm.includes('app.bsky.graph.muteThread') ||\n rpc.lxm.includes('app.bsky.graph.unmuteActor') ||\n rpc.lxm.includes('app.bsky.graph.unmuteActorList') ||\n rpc.lxm.includes('app.bsky.graph.unmuteThread') ||\n rpc.lxm.includes('app.bsky.graph.getMutes') ||\n rpc.lxm.includes('*')\n )\n}\n\ntype LxmProps = Override<\n Omit<HTMLAttributes<HTMLDivElement>, 'children'>,\n { lxm: LxmParam }\n>\nfunction Lxm({ lxm, ...attrs }: LxmProps) {\n return lxm === '*' ? (\n <ItemDescription {...attrs}>\n <Trans>Any method</Trans>\n </ItemDescription>\n ) : (\n <Nsid {...attrs} nsid={lxm} />\n )\n}\n\ntype AudProps = Override<\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'title'>,\n { aud: AudParam }\n>\nfunction Aud({ aud, ...attrs }: AudProps) {\n if (aud.startsWith('did:web:api.bsky.app#')) {\n return (\n <ItemDescription {...attrs} title={aud}>\n <Trans>Bluesky App services</Trans>\n </ItemDescription>\n )\n }\n if (aud.startsWith('did:web:api.bsky.chat#')) {\n return (\n <ItemDescription {...attrs} title={aud}>\n <Trans>Bluesky Chat services</Trans>\n </ItemDescription>\n )\n }\n if (aud.startsWith('did:web:') && aud.includes('#')) {\n const domain = aud.slice(8, aud.indexOf('#'))\n return (\n <ItemDescription {...attrs} title={aud}>\n <Trans>\n A service controlled by <b>{domain}</b>\n </Trans>\n </ItemDescription>\n )\n }\n if (aud === '*') {\n return (\n <ItemDescription {...attrs}>\n <Trans>Any service</Trans>\n </ItemDescription>\n )\n }\n\n return (\n <Identifier {...attrs} title={aud}>\n {aud}\n </Identifier>\n )\n}\n\ntype CollectionProps = Override<\n HTMLAttributes<HTMLDivElement>,\n { coll: CollectionParam; children?: never }\n>\nfunction Collection({ coll, ...attrs }: CollectionProps) {\n return coll === '*' ? (\n <ItemDescription {...attrs}>\n <Trans>Any collection</Trans>\n </ItemDescription>\n ) : (\n <Nsid {...attrs} nsid={coll} />\n )\n}\n\ntype ItemDescriptionProps = HTMLAttributes<HTMLDivElement>\nfunction ItemDescription({\n children,\n className = '',\n ...attrs\n}: ItemDescriptionProps) {\n return (\n <em {...attrs} className={`text-text-light ${className}`}>\n {children}\n </em>\n )\n}\n\ntype NsidProps = Override<IdentifierProps, { nsid: string; children?: never }>\nfunction Nsid({ nsid, ...attrs }: NsidProps) {\n return (\n <Identifier {...attrs}>\n {nsid.split('.').map((part, i) =>\n i === 0 ? (\n part\n ) : (\n // line break **after** the dot\n <Fragment key={i}>\n {'.'}\n <wbr />\n {part}\n </Fragment>\n ),\n )}\n </Identifier>\n )\n}\n\ntype IdentifierProps = HTMLAttributes<HTMLDivElement>\nfunction Identifier({\n children,\n className = '',\n ...attrs\n}: IdentifierProps): ReactNode {\n return (\n <code {...attrs} className={`text-text-light ${className}`}>\n {children}\n </code>\n )\n}\n","import { Trans, useLingui } from '@lingui/react/macro'\nimport { ReactNode, useState } from 'react'\nimport type { Account } from '@atproto/oauth-provider-api'\nimport { AccountPermission } from '@atproto/oauth-scopes'\nimport type { OAuthClientMetadata } from '@atproto/oauth-types'\nimport type { PermissionSets } from '#/hydration-data.d.ts'\nimport { Button } from './forms/button.tsx'\nimport { FormCard } from './forms/form-card.tsx'\nimport { AccountIdentifier } from './utils/account-identifier.tsx'\nimport { ClientImage } from './utils/client-image.tsx'\nimport { ClientName } from './utils/client-name.tsx'\nimport { DescriptionCard } from './utils/description-card.tsx'\nimport { ScopeDescription } from './utils/scope-description.tsx'\n\nexport type ConsentFormProps = {\n clientId: string\n clientMetadata: OAuthClientMetadata\n clientTrusted: boolean\n clientFirstParty: boolean\n permissionSets: PermissionSets\n\n account: Account\n scope?: string\n\n onConsent: (scope?: string) => void\n consentLabel?: ReactNode\n\n onReject: () => void\n rejectLabel?: ReactNode\n\n onBack?: () => void\n backLabel?: ReactNode\n}\n\nfunction isTransitionScope(scope: string): scope is `transition:${string}` {\n return scope.startsWith('transition:')\n}\n\nfunction isAccountEmailScope(scope: string): boolean {\n const parsed = AccountPermission.fromString(scope)\n if (!parsed) return false\n return parsed.matches({ attr: 'email', action: 'read' })\n}\n\nfunction stripAccountEmailScope(scope?: string): string | undefined {\n return scope\n ?.split(' ')\n .filter((s) => !isAccountEmailScope(s))\n .join(' ')\n}\n\nexport function ConsentForm({\n clientId,\n clientMetadata,\n clientTrusted,\n clientFirstParty,\n permissionSets,\n\n account,\n scope,\n\n onConsent,\n onReject,\n onBack,\n}: ConsentFormProps) {\n const { t } = useLingui()\n const [allowEmail, setAllowEmail] = useState(true)\n\n // Require the granular scope system to be able to unset the `account:email`\n // scope.\n const canUnsetEmail = !scope?.split(' ').some(isTransitionScope)\n\n return (\n <FormCard\n onSubmit={(event) => {\n event.preventDefault()\n const acceptedScope =\n canUnsetEmail && !allowEmail ? stripAccountEmailScope(scope) : scope\n onConsent(acceptedScope)\n }}\n cancel={onBack && <Button onClick={onBack}>{<Trans>Back</Trans>}</Button>}\n actions={\n <>\n <Button type=\"submit\" color=\"primary\">\n {<Trans context=\"OAuthConsent\">Authorize</Trans>}\n </Button>\n\n <Button onClick={onReject}>\n {<Trans context=\"OAuthConsent\">Deny access</Trans>}\n </Button>\n </>\n }\n >\n <DescriptionCard\n image={\n <ClientImage\n clientId={clientId}\n clientMetadata={clientMetadata}\n clientTrusted={clientTrusted}\n />\n }\n title={\n <ClientName\n clientId={clientId}\n clientMetadata={clientMetadata}\n clientTrusted={clientTrusted}\n />\n }\n description={\n !scope || scope === 'atproto' ? (\n <Trans>\n wants to uniquely identify you through your{' '}\n <AccountIdentifier account={account} className=\"font-bold\" />{' '}\n account\n </Trans>\n ) : (\n <Trans>\n wants to access your{' '}\n <AccountIdentifier account={account} className=\"font-bold\" />{' '}\n account\n </Trans>\n )\n }\n hint={t`Technical details`}\n >\n {scope ? (\n <>\n <p>\n <Trans>\n This application is requesting the following permissions\n (scopes) to access your account:\n </Trans>\n </p>\n <pre className=\"bg-light mt-2 overflow-x-auto whitespace-pre-wrap rounded border p-2 text-sm\">\n {scope}\n </pre>\n </>\n ) : null}\n </DescriptionCard>\n\n <ScopeDescription\n scope={scope}\n permissionSets={permissionSets}\n clientTrusted={clientTrusted}\n clientFirstParty={clientFirstParty}\n allowEmail={canUnsetEmail ? allowEmail : true}\n onAllowEmail={canUnsetEmail ? setAllowEmail : undefined}\n />\n\n <p>\n <Trans>\n By clicking <b>{<Trans context=\"OAuthConsent\">Authorize</Trans>}</b>,\n you will grant this application access to your account in accordance\n with its{' '}\n <a\n role=\"link\"\n href={clientMetadata.tos_uri}\n rel=\"nofollow noopener\"\n target=\"_blank\"\n className={\n clientMetadata.tos_uri ? 'text-primary underline' : undefined\n }\n >\n <Trans>terms of service</Trans>\n </a>\n {' and '}\n <a\n role=\"link\"\n href={clientMetadata.policy_uri}\n rel=\"nofollow noopener\"\n target=\"_blank\"\n className={\n clientMetadata.policy_uri ? 'text-primary underline' : undefined\n }\n >\n <Trans>privacy policy</Trans>\n </a>\n .\n </Trans>\n </p>\n </FormCard>\n )\n}\n","import { msg } from '@lingui/core/macro'\nimport { Trans } from '@lingui/react/macro'\nimport type { Account } from '@atproto/oauth-provider-api'\nimport type { OAuthClientMetadata } from '@atproto/oauth-types'\nimport type { PermissionSets } from '#/hydration-data.d.ts'\nimport { ConsentForm } from './consent-form.tsx'\nimport { LayoutTitle } from './layouts/layout-title.tsx'\nimport { AccountIdentifier } from './utils/account-identifier.tsx'\n\nexport type ConsentViewProps = {\n clientId: string\n clientMetadata: OAuthClientMetadata\n clientTrusted: boolean\n clientFirstParty: boolean\n permissionSets: PermissionSets\n\n account: Account\n scope?: string\n\n onConsent: (scope?: string) => void\n onReject: () => void\n onBack?: () => void\n}\n\nexport function ConsentView({\n clientId,\n clientMetadata,\n clientTrusted,\n clientFirstParty,\n permissionSets,\n account,\n scope,\n onConsent,\n onReject,\n onBack,\n}: ConsentViewProps) {\n return (\n <LayoutTitle\n title={msg({ message: 'Authorize', context: 'OAuthConsent' })}\n subtitle={\n <Trans>\n Grant access to your <AccountIdentifier account={account} /> account\n </Trans>\n }\n >\n <ConsentForm\n clientId={clientId}\n clientMetadata={clientMetadata}\n clientTrusted={clientTrusted}\n clientFirstParty={clientFirstParty}\n permissionSets={permissionSets}\n account={account}\n scope={scope}\n onBack={onBack}\n onConsent={onConsent}\n onReject={onReject}\n />\n </LayoutTitle>\n )\n}\n","import './style.css'\n\nimport { msg } from '@lingui/core/macro'\nimport { Trans } from '@lingui/react/macro'\nimport { StrictMode, useCallback, useState } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { ConsentView } from '#/components/consent-view.tsx'\nimport { errorViewRender } from '#/components/error-view.tsx'\nimport { LayoutTitle } from '#/components/layouts/layout-title'\nimport { AuthenticationProvider } from '#/contexts/authentication.tsx'\nimport { CustomizationProvider } from '#/contexts/customization.tsx'\nimport { NotificationsProvider } from '#/contexts/notifications.tsx'\nimport { SessionProvider, useSessionContext } from '#/contexts/session.tsx'\nimport type { HydrationData } from '#/hydration-data.d.ts'\nimport { LocaleProvider } from '#/locales/locale-provider.tsx'\n\nconst {\n __authorizeData: authorizeData,\n __customizationData: customizationData,\n __sessions: initialSessions,\n} = window as typeof window & HydrationData['authorization-page']\n\n// When the user is logging in, make sure the page URL contains the\n// \"request_uri\" in case the user refreshes the page.\n// @TODO Actually do this on the backend through a redirect.\nconst url = new URL(window.location.href)\nif (\n url.pathname === '/oauth/authorize' &&\n !url.searchParams.has('request_uri')\n) {\n url.search = ''\n url.searchParams.set('client_id', authorizeData.clientId)\n url.searchParams.set('request_uri', authorizeData.requestUri)\n window.history.replaceState(history.state, '', url.pathname + url.search)\n}\n\nconst container = document.getElementById('root')!\n\ncreateRoot(container).render(\n <StrictMode>\n <CustomizationProvider value={customizationData}>\n <LocaleProvider userLocales={authorizeData.uiLocales?.split(' ')}>\n <NotificationsProvider>\n <ErrorBoundary fallbackRender={errorViewRender}>\n <SessionProvider\n initialSessions={initialSessions}\n initialSelected={authorizeData.selectedSub}\n >\n <App />\n </SessionProvider>\n </ErrorBoundary>\n </NotificationsProvider>\n </LocaleProvider>\n </CustomizationProvider>\n </StrictMode>,\n)\n\n// @NOTE We do not want to use a router here because we do not want any change\n// in the view to be reflected as a browser navigation.\nfunction App() {\n const loginHint = authorizeData.loginHint || undefined\n\n const { session, setSession, doConsent, doReject } = useSessionContext()\n const [isDone, setIsDone] = useState(\n session != null && session.consentRequired === false,\n )\n\n const performRedirect = useCallback((url: string) => {\n // @TODO At this point, the request cannot be accepted/rejected anymore.\n // We should probably change the app's state to something that indicates\n // that in order to improve UX in case the user comes back to the app.\n // This is currently ensured by the backend (through back-forward cache\n // busting) but handling it here would provide a better UX since the\n // backend will remove (and prevent access) to accepted/rejected requests\n // data, while the back-forward cache remembers them.\n\n window.location.href = url\n setTimeout(() => setIsDone(true))\n }, [])\n\n const doConsentAndRedirect = useCallback(\n async (...args: Parameters<typeof doConsent>) => {\n const { url } = await doConsent(...args)\n performRedirect(url)\n },\n [doConsent, performRedirect],\n )\n\n const doRejectAndRedirect = useCallback(\n async (...args: Parameters<typeof doReject>) => {\n const { url } = await doReject(...args)\n performRedirect(url)\n },\n [doReject, performRedirect],\n )\n\n return (\n <AuthenticationProvider\n onCancel={doRejectAndRedirect}\n forcedIdentifier={loginHint}\n promptMode={authorizeData.promptMode}\n >\n {session && !isDone ? (\n <ConsentView\n clientId={authorizeData.clientId}\n clientMetadata={authorizeData.clientMetadata}\n clientTrusted={authorizeData.clientTrusted}\n clientFirstParty={authorizeData.clientFirstParty}\n permissionSets={authorizeData.permissionSets}\n account={session.account}\n scope={authorizeData.scope}\n onConsent={(scope) =>\n doConsentAndRedirect(session.account.sub, scope)\n }\n onReject={doRejectAndRedirect}\n onBack={loginHint ? undefined : () => setSession(null)}\n />\n ) : (\n <LayoutTitle title={msg`Login complete`}>\n <Trans>You are being redirected...</Trans>\n </LayoutTitle>\n )}\n </AuthenticationProvider>\n )\n}\n"],"names":["c","a.createElement","a.Fragment","e","a","e.createElement","e.Fragment","t","o.forwardRef","m","o.createElement","r","n","e.forwardRef","o","i","syntax","isScopeStringFor","isScopeSyntaxFor","value","prefix","nextChar","util","minIdx","knownValuesValidator","isNonNullable","b","values","set","syntaxString","util_js_1","require$$0","ScopeStringSyntax","positional","params","key","_a","scope","normalizeURIComponent","scopeValue","paramIdx","colonIdx","prefixEnd","ALLOWED_SCOPE_CHARS","NORMALIZABLE_CHARS_MAP","encoded","end","encodedChar","normalizedChar","parser","syntax_string_js_1","Parser","schema","positionalName","normalized","arrayParamEquals","unique","v","result","definition","param","item","exports","parser_js_1","require$$1","syntax_js_1","require$$2","require$$3","AccountPermission","attr","action","options","mime","isMime","isAccept","matchesAccept","matchesAnyAccept","isStringSlashString","slashIndex","matchesAcceptUnsafe","accept","matchesAnyAcceptUnsafe","acceptable","mime_js_1","BlobPermission","toLowerCase","isNonRedundant","index","arr","base","IdentityPermission","did","ensureValidDid","ensureValidDidRegex","isValidDid","input","InvalidDidError","length","method","DID_REGEX","ensureValidHandle","ensureValidHandleRegex","normalizeHandle","normalizeAndEnsureValidHandle","isValidHandle","isValidTld","InvalidHandleError","labels","l","HANDLE_REGEX","handle","tld","ReservedHandleError","UnsupportedDomainError","DisallowedDomainError","atIdentifier","isHandleIdentifier","isDidIdentifier","assertAtIdentifierString","asAtIdentifierString","isAtIdentifierString","ifAtIdentifierString","did_js_1","handle_js_1","id","cause","success","failure","message","nsid","ensureValidNsid","parseNsid","isValidNsid","validateNsid","ensureValidNsidRegex","validateNsidRegex","result_js_1","NSID","__publicField","authority","name","InvalidNsidError","hasDisallowedCharacters","segments","startsWithHyphen","endsWithHyphen","startsWithNumber","isValidIdentifier","charCode","recordkey","ensureValidRecordKey","isValidRecordKey","RECORD_KEY_MAX_LENGTH","RECORD_KEY_MIN_LENGTH","RECORD_KEY_INVALID_VALUES","RECORD_KEY_REGEX","InvalidRecordKeyError","aturi_validation","isAtUriString","ifAtUriString","asAtUriString","assertAtUriString","ensureValidAtUri","ensureValidAtUriRegex","isValidAtUri","parseAtUriString","at_identifier_js_1","nsid_js_1","recordkey_js_1","InvalidAtUriError","INVALID_CHAR_REGEXP","AT_URI_REGEXP","match","groups","pathStart","fragmentIndex","pathEnd","secondSlash","parseJsonPointer","BASIC_JSON_POINTER_REGEXP","parsePercentEncoding","tslib_1","require$$4","require$$5","RELATIVE_REGEX","AtUri","uri","parsed","parse","parseRelative","handleOrDid","collection","rkey","str","host","parts","pathname","qs","fragment","datetime","assertAtprotoDate","asAtprotoDate","isAtprotoDate","ifAtprotoDate","assertDatetimeString","asDatetimeString","isDatetimeString","ifDatetimeString","currentDatetimeString","toDatetimeString","normalizeDatetime","normalizeDatetimeAlways","InvalidDatetimeError","date","res","parseDate","parseString","dtStr","dateZ","dateUTC","DATETIME_REGEX","fullYear","language","parseLanguageString","isValidLanguage","BCP47_REGEXP","tid","ensureValidTid","isValidTid","TID_LENGTH","TID_REGEX","InvalidTidError","isValidUri","require$$6","require$$7","require$$8","require$$9","require$$10","syntax_1","isNsid","syntaxLexicon","isArray","LexPermissionSyntax","lexPermission","isCollectionParam","RepoPermission","includedIn","did_1","isLxmParam","isAudParam","RpcPermission","aud","lxm","syntax_lexicon_js_1","repo_permission_js_1","rpc_permission_js_1","IncludeScope","permissionSet","p","resourcePermission","toResourcePermission","permission","isLexPermissionForResource","inheritAud","rest","otherNsid","lexiconNsid","groupPrefixEnd","type","isStaticScopeValue","isAtprotoOauthScope","normalizeAtprotoOauthScope","normalizeAtprotoOauthScopeValue","account_permission_js_1","blob_permission_js_1","identity_permission_js_1","include_scope_js_1","Scope","scopeMissingError","ScopeMissingError","scope_missing_error_js_1","ScopesSet","resource","permissionScopeMatches","scopeNeededFor","fn","string","parsePermissionScope","scopePermissions","scopes_set_js_1","ScopePermissions","scopePermissionsTransition","scope_permissions_js_1","ScopePermissionsTransition","__createBinding","this","k","k2","desc","__exportStar","ClientImage","clientId","clientMetadata","clientTrusted","errored","setErrored","useState","src","logo_uri","undefined","alt","client_name","useEffect","_jsx","img","aria-hidden","className","onError","div","InfoIcon","isConventionalOAuthClientId","url","URL","protocol","port","search","UrlViewer","proto","path","query","hash","as","As","props","urlObj","useMemo","UrlPartViewer","faded","bold","Comp","ClientName","attrs","span","Trans_","simplifiedView","DIALOG_NAME","createDialogContext","createDialogScope","createContextScope","DialogProvider","useDialogContext","Dialog","__scopeDialog","children","openProp","defaultOpen","onOpenChange","modal","triggerRef","React.useRef","contentRef","open","setOpen","useControllableState","jsx","useId","React.useCallback","prevOpen","TRIGGER_NAME","DialogTrigger","React.forwardRef","forwardedRef","triggerProps","context","composedTriggerRef","useComposedRefs","Primitive","getState","composeEventHandlers","PORTAL_NAME","PortalProvider","usePortalContext","DialogPortal","forceMount","container","React.Children","child","Presence","PortalPrimitive","OVERLAY_NAME","DialogOverlay","portalContext","overlayProps","DialogOverlayImpl","Slot","createSlot","RemoveScroll","CONTENT_NAME","DialogContent","contentProps","DialogContentModal","DialogContentNonModal","composedRefs","React.useEffect","content","hideOthers","DialogContentImpl","event","originalEvent","ctrlLeftClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","_b","target","trapFocus","onOpenAutoFocus","onCloseAutoFocus","useFocusGuards","jsxs","Fragment","FocusScope","DismissableLayer","TitleWarning","DescriptionWarning","TITLE_NAME","DialogTitle","titleProps","DESCRIPTION_NAME","DialogDescription","descriptionProps","CLOSE_NAME","DialogClose","closeProps","TITLE_WARNING_NAME","WarningProvider","useWarningContext","createContext","titleId","titleWarningContext","MESSAGE","DESCRIPTION_WARNING_NAME","descriptionId","describedById","Root","Trigger","Portal","Overlay","Content","Title","Description","Close","DescriptionCard","hint","image","title","description","append","extra","useLingui","h3","_jsxs","asChild","Button","shape","aria-label","aria-haspopup","size","QuestionIcon","role","$__i18n","XIcon","makeSvgComponent","displayName","SvgComponent","forwardRef","ref","svg","xmlns","viewBox","fill","fillRule","clipRule","d","ButterflyIcon","ScopeDescription","permissionSets","clientFirstParty","allowEmail","onAllowEmail","includeScopes","Array","from","Set","split","map","fromString","filter","permissions","scopes","has","EmailPermissions","IdentityPermissions","AccountPermissions","BlueskyAppviewPermissions","BlueskyChatPermissions","IncludedPermissions","FineGrainedPermissions","IdentityWarning","includeScope","IncludeScopePermissions","toScopes","isBskyAppNsid","isBskyChatNsid","ChatCircleDotsIcon","startsWith","HandIcon","AtomIcon","LangProp","object","property","fallback","_Fragment","RpcMethodsTable","RepoTable","allowsIdentity","Admonition","allowedAction","find","allowsAccount","label","EnvelopeIcon","Checkbox","checked","onChange","UserIcon","foundOne","s","rpc","isOfficialBlueskyAppviewServiceId","every","isBlueskySpecificNsid","repo","RepoPermissions","RpcMethodsDetails","hasBskyAppRepo","some","scopeEnablesBskyAppRepo","hasBskyAppRpc","scopeEnablesPrivateBskyAppMethods","hasTransitionChatBsky","scopeEnablesChat","IdentificationBadgeIcon","hasTransitionGeneric","CertificateIcon","audLxmsEntries","Map","get","add","entries","sort","localeCompare","lxms","table","thead","tr","th","tbody","array","td","Lxm","rowSpan","Aud","allowsRepo","BookOpenIcon","nsidActions","coll","actions","create","includes","update","delete","blobScopes","starActions","nsidActionsEntries","Collection","CheckIcon","colSpan","ItemDescription","Nsid","domain","slice","indexOf","Identifier","em","part","wbr","code","isTransitionScope","isAccountEmailScope","matches","stripAccountEmailScope","join","ConsentForm","account","onConsent","onReject","onBack","setAllowEmail","canUnsetEmail","FormCard","onSubmit","preventDefault","acceptedScope","cancel","onClick","color","AccountIdentifier","pre","href","tos_uri","rel","policy_uri","ConsentView","LayoutTitle","subtitle","__authorizeData","authorizeData","__customizationData","customizationData","__sessions","initialSessions","window","location","searchParams","requestUri","history","replaceState","state","document","getElementById","createRoot","render","StrictMode","CustomizationProvider","LocaleProvider","userLocales","uiLocales","NotificationsProvider","ErrorBoundary","fallbackRender","errorViewRender","SessionProvider","initialSelected","selectedSub","App","loginHint","session","setSession","doConsent","doReject","useSessionContext","isDone","setIsDone","consentRequired","performRedirect","useCallback","doConsentAndRedirect","args","doRejectAndRedirect","AuthenticationProvider","onCancel","forcedIdentifier","promptMode","sub"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,50]}