@atcute/oauth-types 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +6 -5
  2. package/dist/build-client-metadata.d.ts +18 -160
  3. package/dist/build-client-metadata.d.ts.map +1 -1
  4. package/dist/build-client-metadata.js +73 -3
  5. package/dist/build-client-metadata.js.map +1 -1
  6. package/dist/index.d.ts +31 -30
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +2 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/schemas/atcute-client-shared.d.ts +8 -0
  11. package/dist/schemas/atcute-client-shared.d.ts.map +1 -0
  12. package/dist/schemas/atcute-client-shared.js +15 -0
  13. package/dist/schemas/atcute-client-shared.js.map +1 -0
  14. package/dist/schemas/atcute-confidential-client-metadata.d.ts +228 -4
  15. package/dist/schemas/atcute-confidential-client-metadata.d.ts.map +1 -1
  16. package/dist/schemas/atcute-confidential-client-metadata.js +48 -88
  17. package/dist/schemas/atcute-confidential-client-metadata.js.map +1 -1
  18. package/dist/schemas/atcute-public-client-metadata.d.ts +95 -0
  19. package/dist/schemas/atcute-public-client-metadata.d.ts.map +1 -0
  20. package/dist/schemas/atcute-public-client-metadata.js +74 -0
  21. package/dist/schemas/atcute-public-client-metadata.js.map +1 -0
  22. package/dist/schemas/atproto-authorization-server-metadata.d.ts +786 -4
  23. package/dist/schemas/atproto-authorization-server-metadata.d.ts.map +1 -1
  24. package/dist/schemas/atproto-authorization-server-metadata.js +2 -18
  25. package/dist/schemas/atproto-authorization-server-metadata.js.map +1 -1
  26. package/dist/schemas/atproto-oauth-scope.d.ts +3 -3
  27. package/dist/schemas/atproto-oauth-scope.d.ts.map +1 -1
  28. package/dist/schemas/atproto-oauth-scope.js +2 -2
  29. package/dist/schemas/atproto-oauth-scope.js.map +1 -1
  30. package/dist/schemas/atproto-oauth-token-response.d.ts +17 -17
  31. package/dist/schemas/atproto-oauth-token-response.d.ts.map +1 -1
  32. package/dist/schemas/atproto-oauth-token-response.js +6 -6
  33. package/dist/schemas/atproto-oauth-token-response.js.map +1 -1
  34. package/dist/schemas/atproto-protected-resource-metadata.d.ts +100 -4
  35. package/dist/schemas/atproto-protected-resource-metadata.d.ts.map +1 -1
  36. package/dist/schemas/atproto-protected-resource-metadata.js +2 -11
  37. package/dist/schemas/atproto-protected-resource-metadata.js.map +1 -1
  38. package/dist/schemas/jwk.d.ts +4289 -42
  39. package/dist/schemas/jwk.d.ts.map +1 -1
  40. package/dist/schemas/jwk.js +58 -91
  41. package/dist/schemas/jwk.js.map +1 -1
  42. package/dist/schemas/jwks.d.ts +87 -42
  43. package/dist/schemas/jwks.d.ts.map +1 -1
  44. package/dist/schemas/jwks.js +13 -29
  45. package/dist/schemas/jwks.js.map +1 -1
  46. package/dist/schemas/oauth-authorization-details.d.ts +18 -18
  47. package/dist/schemas/oauth-authorization-details.d.ts.map +1 -1
  48. package/dist/schemas/oauth-authorization-details.js +7 -7
  49. package/dist/schemas/oauth-authorization-details.js.map +1 -1
  50. package/dist/schemas/oauth-authorization-server-metadata.d.ts +462 -48
  51. package/dist/schemas/oauth-authorization-server-metadata.d.ts.map +1 -1
  52. package/dist/schemas/oauth-authorization-server-metadata.js +46 -65
  53. package/dist/schemas/oauth-authorization-server-metadata.js.map +1 -1
  54. package/dist/schemas/oauth-client-id-discoverable.d.ts +2 -2
  55. package/dist/schemas/oauth-client-id-discoverable.d.ts.map +1 -1
  56. package/dist/schemas/oauth-client-id-discoverable.js +20 -22
  57. package/dist/schemas/oauth-client-id-discoverable.js.map +1 -1
  58. package/dist/schemas/oauth-client-id.d.ts +3 -3
  59. package/dist/schemas/oauth-client-id.d.ts.map +1 -1
  60. package/dist/schemas/oauth-client-id.js +2 -2
  61. package/dist/schemas/oauth-client-id.js.map +1 -1
  62. package/dist/schemas/oauth-client-metadata.d.ts +73 -51
  63. package/dist/schemas/oauth-client-metadata.d.ts.map +1 -1
  64. package/dist/schemas/oauth-client-metadata.js +33 -40
  65. package/dist/schemas/oauth-client-metadata.js.map +1 -1
  66. package/dist/schemas/oauth-code-challenge-method.d.ts +3 -3
  67. package/dist/schemas/oauth-code-challenge-method.d.ts.map +1 -1
  68. package/dist/schemas/oauth-code-challenge-method.js +2 -2
  69. package/dist/schemas/oauth-code-challenge-method.js.map +1 -1
  70. package/dist/schemas/oauth-endpoint-auth-method.d.ts +3 -3
  71. package/dist/schemas/oauth-endpoint-auth-method.d.ts.map +1 -1
  72. package/dist/schemas/oauth-endpoint-auth-method.js +10 -2
  73. package/dist/schemas/oauth-endpoint-auth-method.js.map +1 -1
  74. package/dist/schemas/oauth-grant-type.d.ts +3 -3
  75. package/dist/schemas/oauth-grant-type.d.ts.map +1 -1
  76. package/dist/schemas/oauth-grant-type.js +10 -3
  77. package/dist/schemas/oauth-grant-type.js.map +1 -1
  78. package/dist/schemas/oauth-issuer-identifier.d.ts +3 -3
  79. package/dist/schemas/oauth-issuer-identifier.d.ts.map +1 -1
  80. package/dist/schemas/oauth-issuer-identifier.js +16 -9
  81. package/dist/schemas/oauth-issuer-identifier.js.map +1 -1
  82. package/dist/schemas/oauth-par-response.d.ts +5 -5
  83. package/dist/schemas/oauth-par-response.d.ts.map +1 -1
  84. package/dist/schemas/oauth-par-response.js +3 -3
  85. package/dist/schemas/oauth-par-response.js.map +1 -1
  86. package/dist/schemas/oauth-prompt.d.ts +3 -3
  87. package/dist/schemas/oauth-prompt.d.ts.map +1 -1
  88. package/dist/schemas/oauth-prompt.js +2 -2
  89. package/dist/schemas/oauth-prompt.js.map +1 -1
  90. package/dist/schemas/oauth-protected-resource-metadata.d.ts +88 -16
  91. package/dist/schemas/oauth-protected-resource-metadata.d.ts.map +1 -1
  92. package/dist/schemas/oauth-protected-resource-metadata.js +14 -26
  93. package/dist/schemas/oauth-protected-resource-metadata.js.map +1 -1
  94. package/dist/schemas/oauth-redirect-uri.d.ts +5 -5
  95. package/dist/schemas/oauth-redirect-uri.d.ts.map +1 -1
  96. package/dist/schemas/oauth-redirect-uri.js +3 -16
  97. package/dist/schemas/oauth-redirect-uri.js.map +1 -1
  98. package/dist/schemas/oauth-response-mode.d.ts +3 -3
  99. package/dist/schemas/oauth-response-mode.d.ts.map +1 -1
  100. package/dist/schemas/oauth-response-mode.js +2 -2
  101. package/dist/schemas/oauth-response-mode.js.map +1 -1
  102. package/dist/schemas/oauth-response-type.d.ts +3 -3
  103. package/dist/schemas/oauth-response-type.d.ts.map +1 -1
  104. package/dist/schemas/oauth-response-type.js +13 -7
  105. package/dist/schemas/oauth-response-type.js.map +1 -1
  106. package/dist/schemas/oauth-scope.d.ts +3 -3
  107. package/dist/schemas/oauth-scope.d.ts.map +1 -1
  108. package/dist/schemas/oauth-scope.js +2 -2
  109. package/dist/schemas/oauth-scope.js.map +1 -1
  110. package/dist/schemas/oauth-token-response.d.ts +17 -17
  111. package/dist/schemas/oauth-token-response.d.ts.map +1 -1
  112. package/dist/schemas/oauth-token-response.js +7 -7
  113. package/dist/schemas/oauth-token-response.js.map +1 -1
  114. package/dist/schemas/oauth-token-type.d.ts +3 -3
  115. package/dist/schemas/oauth-token-type.d.ts.map +1 -1
  116. package/dist/schemas/oauth-token-type.js +8 -7
  117. package/dist/schemas/oauth-token-type.js.map +1 -1
  118. package/dist/schemas/uri.d.ts +7 -7
  119. package/dist/schemas/uri.d.ts.map +1 -1
  120. package/dist/schemas/uri.js +44 -44
  121. package/dist/schemas/uri.js.map +1 -1
  122. package/dist/schemas/utils.d.ts.map +1 -1
  123. package/dist/schemas/utils.js.map +1 -1
  124. package/dist/scope.d.ts.map +1 -1
  125. package/dist/scope.js.map +1 -1
  126. package/lib/build-client-metadata.ts +92 -6
  127. package/lib/index.ts +38 -30
  128. package/lib/schemas/atcute-client-shared.ts +25 -0
  129. package/lib/schemas/atcute-confidential-client-metadata.ts +81 -111
  130. package/lib/schemas/atcute-public-client-metadata.ts +101 -0
  131. package/lib/schemas/atproto-authorization-server-metadata.ts +22 -23
  132. package/lib/schemas/atproto-oauth-scope.ts +8 -5
  133. package/lib/schemas/atproto-oauth-token-response.ts +10 -9
  134. package/lib/schemas/atproto-protected-resource-metadata.ts +15 -15
  135. package/lib/schemas/jwk.ts +104 -120
  136. package/lib/schemas/jwks.ts +28 -40
  137. package/lib/schemas/oauth-authorization-details.ts +10 -10
  138. package/lib/schemas/oauth-authorization-server-metadata.ts +72 -74
  139. package/lib/schemas/oauth-client-id-discoverable.ts +43 -48
  140. package/lib/schemas/oauth-client-id.ts +3 -3
  141. package/lib/schemas/oauth-client-metadata.ts +45 -49
  142. package/lib/schemas/oauth-code-challenge-method.ts +3 -3
  143. package/lib/schemas/oauth-endpoint-auth-method.ts +11 -11
  144. package/lib/schemas/oauth-grant-type.ts +11 -11
  145. package/lib/schemas/oauth-issuer-identifier.ts +35 -27
  146. package/lib/schemas/oauth-par-response.ts +4 -4
  147. package/lib/schemas/oauth-prompt.ts +3 -9
  148. package/lib/schemas/oauth-protected-resource-metadata.ts +26 -35
  149. package/lib/schemas/oauth-redirect-uri.ts +15 -23
  150. package/lib/schemas/oauth-response-mode.ts +3 -7
  151. package/lib/schemas/oauth-response-type.ts +12 -12
  152. package/lib/schemas/oauth-scope.ts +3 -3
  153. package/lib/schemas/oauth-token-response.ts +10 -10
  154. package/lib/schemas/oauth-token-type.ts +16 -12
  155. package/lib/schemas/uri.ts +89 -76
  156. package/package.json +9 -8
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/schemas/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc,+BAE1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,+BAUxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,+BAQ3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,yBA4B1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,yDAEjC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,2CA2BjC,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/schemas/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,OAEjD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,aAAc,MAAM,KAAG,OAU/C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,aAAc,MAAM,KAAG,OAQlD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAS,MAAM,KAAG,MA4B5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,QAAQ,CAAC,SAAS,MAAM,SAAS,SAAS,CAAC,EAAE,KAAG,OAEjF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,UAAW,MAAM,SAAS,MAAM,KAAG,OA2BpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/schemas/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/schemas/utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../lib/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAErE,0BAA0B;AAC1B,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExD,yBAAyB;AACzB,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD,sBAAsB;AACtB,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9C,0BAA0B;AAC1B,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,GAAG,CAAC;AAE1C,8CAA8C;AAC9C,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,GAAG,CAAC;AAEzC,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC;AAElC,wDAAwD;AACxD,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,GAAG,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC3B,wCAAwC;IACxC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,gEAAgE;IAChE,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,kCAahB,CAAC;AAEF,MAAM,WAAW,UAAU;IAC1B,4CAA4C;IAC5C,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,eAAe;IACf,GAAG,EAAE,QAAQ,CAAC;CACd;AAED;;;;GAIG;AACH,eAAO,MAAM,GAAG,iCAWf,CAAC;AAEF,MAAM,WAAW,cAAc;IAC9B,8CAA8C;IAC9C,IAAI,EAAE,WAAW,CAAC;IAClB,gDAAgD;IAChD,MAAM,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,qCAWnB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC3B,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,kCAUhB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC/B,2CAA2C;IAC3C,IAAI,EAAE,YAAY,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,sCAKpB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC9B,mBAAmB;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,iCAAiC;IACjC,GAAG,CAAC,EAAE,eAAe,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,qCAWnB,CAAC"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../lib/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAErE,0BAA0B;AAC1B,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExD,yBAAyB;AACzB,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD,sBAAsB;AACtB,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9C,0BAA0B;AAC1B,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,GAAG,CAAC;AAE1C,8CAA8C;AAC9C,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,GAAG,CAAC;AAEzC,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC;AAElC,wDAAwD;AACxD,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,GAAG,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC3B,wCAAwC;IACxC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,gEAAgE;IAChE,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,YAAa,WAAW,KAAG,MAa3C,CAAC;AAEF,MAAM,WAAW,UAAU;IAC1B,4CAA4C;IAC5C,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,eAAe;IACf,GAAG,EAAE,QAAQ,CAAC;CACd;AAED;;;;GAIG;AACH,eAAO,MAAM,GAAG,YAAa,UAAU,KAAG,MAWzC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC9B,8CAA8C;IAC9C,IAAI,EAAE,WAAW,CAAC;IAClB,gDAAgD;IAChD,MAAM,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,YAAa,cAAc,KAAG,MAWjD,CAAC;AAEF,MAAM,WAAW,WAAW;IAC3B,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,YAAa,WAAW,KAAG,MAU3C,CAAC;AAEF,MAAM,WAAW,eAAe;IAC/B,2CAA2C;IAC3C,IAAI,EAAE,YAAY,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,YAAa,eAAe,KAAG,MAKnD,CAAC;AAEF,MAAM,WAAW,cAAc;IAC9B,mBAAmB;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,iCAAiC;IACjC,GAAG,CAAC,EAAE,eAAe,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,YAAa,cAAc,KAAG,MAWjD,CAAC"}
package/dist/scope.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../lib/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../lib/scope.ts"],"names":[],"mappings":"AA8BA;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAoB,EAAU,EAAE;IACpD,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAE5C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC,CAAC;AASF;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,OAAmB,EAAU,EAAE;IAClD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAE7B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC,CAAC;AASF;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAuB,EAAU,EAAE;IAC1D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEjC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEzB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAOF;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAoB,EAAU,EAAE;IACpD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC,CAAC;AAOF;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAwB,EAAU,EAAE;IAC5D,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC,OAAO,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC,CAAC;AASF;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAuB,EAAU,EAAE;IAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAE9B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEzB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,2DAA2D;AAC3D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAE9D,6DAA6D;AAC7D,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,MAAuB,EAAU,EAAE;IACvE,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IACf,CAAC;IAED,OAAO,GAAG,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;AAC5D,CAAC,CAAC;AAEF,iDAAiD;AACjD,oDAAoD;AACpD,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAU,EAAE;IACnD,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1,15 +1,21 @@
1
1
  import type { Keyset } from '@atcute/oauth-keyset';
2
2
 
3
- import { FALLBACK_ALG } from './constants.js';
3
+ import * as v from 'valibot';
4
+
5
+ import { FALLBACK_ALG } from './constants.ts';
4
6
  import {
5
7
  confidentialClientMetadataSchema,
6
8
  type ConfidentialClientMetadata,
7
- } from './schemas/atcute-confidential-client-metadata.js';
8
- import type { OAuthClientMetadata } from './schemas/oauth-client-metadata.js';
9
+ } from './schemas/atcute-confidential-client-metadata.ts';
10
+ import {
11
+ publicClientMetadataSchema,
12
+ type PublicClientMetadata,
13
+ } from './schemas/atcute-public-client-metadata.ts';
14
+ import { DEFAULT_ATPROTO_OAUTH_SCOPE } from './schemas/atproto-oauth-scope.ts';
15
+ import type { OAuthClientMetadata } from './schemas/oauth-client-metadata.ts';
9
16
 
10
17
  /**
11
- * builds an atproto client metadata
12
- *
18
+ * builds an atproto client metadata for a confidential client.
13
19
  *
14
20
  * @param input client metadata
15
21
  * @param keyset available keys
@@ -20,7 +26,7 @@ export const buildClientMetadata = (
20
26
  keyset: Keyset,
21
27
  ): OAuthClientMetadata => {
22
28
  // validate user-facing schema is correct
23
- const conf = confidentialClientMetadataSchema.parse(input, { mode: 'passthrough' });
29
+ const conf = v.parse(confidentialClientMetadataSchema, input);
24
30
 
25
31
  // build full OAuth client metadata (atproto defaults and requirements)
26
32
  const metadata: OAuthClientMetadata = {
@@ -70,3 +76,83 @@ export const buildClientMetadata = (
70
76
 
71
77
  return metadata;
72
78
  };
79
+
80
+ /**
81
+ * builds a loopback client_id from redirect_uris and scope.
82
+ *
83
+ * @param redirectUris loopback redirect URIs
84
+ * @param scope OAuth scope string
85
+ * @returns loopback client_id URL
86
+ */
87
+ const buildLoopbackClientId = (redirectUris: readonly string[], scope: string): string => {
88
+ const params = new URLSearchParams();
89
+
90
+ // only include scope if not the default
91
+ if (scope !== DEFAULT_ATPROTO_OAUTH_SCOPE) {
92
+ params.set('scope', scope);
93
+ }
94
+
95
+ // include redirect URIs
96
+ for (const uri of redirectUris) {
97
+ params.append('redirect_uri', uri);
98
+ }
99
+
100
+ if (params.size > 0) {
101
+ return `http://localhost?${params.toString()}`;
102
+ }
103
+
104
+ return 'http://localhost';
105
+ };
106
+
107
+ /**
108
+ * builds an atproto client metadata for a public client.
109
+ *
110
+ * public clients use `token_endpoint_auth_method: 'none'` and don't require a keyset.
111
+ * per AT Protocol spec, they have shorter token lifetimes and cannot use silent sign-in.
112
+ *
113
+ * - if `client_id` is omitted: loopback client (client_id built from redirect_uris/scope)
114
+ * - if `client_id` is provided: discoverable public client
115
+ *
116
+ * @param input public client metadata
117
+ * @returns built client metadata
118
+ */
119
+ export const buildPublicClientMetadata = (input: PublicClientMetadata): OAuthClientMetadata => {
120
+ const parsed = v.parse(publicClientMetadataSchema, input);
121
+ const scope = Array.isArray(parsed.scope) ? parsed.scope.join(' ') : parsed.scope;
122
+
123
+ if (parsed.client_id === undefined) {
124
+ // loopback client - server generates metadata from client_id URL
125
+ return {
126
+ client_id: buildLoopbackClientId(parsed.redirect_uris, scope),
127
+ redirect_uris: parsed.redirect_uris,
128
+ scope,
129
+
130
+ application_type: 'native',
131
+ response_types: ['code'],
132
+ grant_types: ['authorization_code', 'refresh_token'],
133
+
134
+ token_endpoint_auth_method: 'none',
135
+ dpop_bound_access_tokens: true,
136
+ };
137
+ }
138
+
139
+ // discoverable public client
140
+ return {
141
+ client_id: parsed.client_id,
142
+ client_name: parsed.client_name,
143
+ client_uri: parsed.client_uri,
144
+ policy_uri: parsed.policy_uri,
145
+ tos_uri: parsed.tos_uri,
146
+ logo_uri: parsed.logo_uri,
147
+ redirect_uris: parsed.redirect_uris,
148
+ scope,
149
+
150
+ application_type: parsed.application_type ?? 'web',
151
+ subject_type: 'public',
152
+ response_types: ['code'],
153
+ grant_types: ['authorization_code', 'refresh_token'],
154
+
155
+ token_endpoint_auth_method: 'none',
156
+ dpop_bound_access_tokens: true,
157
+ };
158
+ };
package/lib/index.ts CHANGED
@@ -1,19 +1,27 @@
1
- export { buildClientMetadata } from './build-client-metadata.js';
2
- export { CLIENT_ASSERTION_TYPE_JWT_BEARER, FALLBACK_ALG } from './constants.js';
1
+ export { buildClientMetadata, buildPublicClientMetadata } from './build-client-metadata.ts';
2
+ export { CLIENT_ASSERTION_TYPE_JWT_BEARER, FALLBACK_ALG } from './constants.ts';
3
3
 
4
- export * as scope from './scope.js';
4
+ export * as scope from './scope.ts';
5
5
 
6
6
  // schemas
7
7
  export {
8
8
  confidentialClientMetadataSchema,
9
9
  type ConfidentialClientMetadata,
10
- } from './schemas/atcute-confidential-client-metadata.js';
10
+ } from './schemas/atcute-confidential-client-metadata.ts';
11
+ export {
12
+ discoverablePublicClientMetadataSchema,
13
+ loopbackClientMetadataSchema,
14
+ publicClientMetadataSchema,
15
+ type DiscoverablePublicClientMetadata,
16
+ type LoopbackClientMetadata,
17
+ type PublicClientMetadata,
18
+ } from './schemas/atcute-public-client-metadata.ts';
11
19
  export {
12
20
  atprotoOAuthScopeSchema,
13
21
  ATPROTO_SCOPE_VALUE,
14
22
  DEFAULT_ATPROTO_OAUTH_SCOPE,
15
23
  type AtprotoOAuthScope,
16
- } from './schemas/atproto-oauth-scope.js';
24
+ } from './schemas/atproto-oauth-scope.ts';
17
25
  export {
18
26
  jwkPubSchema,
19
27
  jwkSchema,
@@ -22,29 +30,29 @@ export {
22
30
  type Jwk,
23
31
  type JwkPub,
24
32
  type KeyUsage,
25
- } from './schemas/jwk.js';
26
- export { jwksPubSchema, jwksSchema, type Jwks, type JwksPub } from './schemas/jwks.js';
27
- export { oauthClientIdDiscoverableSchema } from './schemas/oauth-client-id-discoverable.js';
28
- export { oauthClientIdSchema, type OAuthClientId } from './schemas/oauth-client-id.js';
29
- export { oauthClientMetadataSchema, type OAuthClientMetadata } from './schemas/oauth-client-metadata.js';
33
+ } from './schemas/jwk.ts';
34
+ export { jwksPubSchema, jwksSchema, type Jwks, type JwksPub } from './schemas/jwks.ts';
35
+ export { oauthClientIdDiscoverableSchema } from './schemas/oauth-client-id-discoverable.ts';
36
+ export { oauthClientIdSchema, type OAuthClientId } from './schemas/oauth-client-id.ts';
37
+ export { oauthClientMetadataSchema, type OAuthClientMetadata } from './schemas/oauth-client-metadata.ts';
30
38
  export {
31
39
  oauthEndpointAuthMethodSchema,
32
40
  type OAuthEndpointAuthMethod,
33
- } from './schemas/oauth-endpoint-auth-method.js';
34
- export { oauthGrantTypeSchema, type OAuthGrantType } from './schemas/oauth-grant-type.js';
41
+ } from './schemas/oauth-endpoint-auth-method.ts';
42
+ export { oauthGrantTypeSchema, type OAuthGrantType } from './schemas/oauth-grant-type.ts';
35
43
  export {
36
44
  loopbackRedirectUriSchema,
37
45
  oauthRedirectUriSchema,
38
46
  type LoopbackRedirectUri,
39
47
  type OAuthRedirectUri,
40
- } from './schemas/oauth-redirect-uri.js';
41
- export { oauthResponseTypeSchema, type OAuthResponseType } from './schemas/oauth-response-type.js';
48
+ } from './schemas/oauth-redirect-uri.ts';
49
+ export { oauthResponseTypeSchema, type OAuthResponseType } from './schemas/oauth-response-type.ts';
42
50
  export {
43
51
  isOAuthScope,
44
52
  OAUTH_SCOPE_REGEXP,
45
53
  oauthScopeSchema,
46
54
  type OAuthScope,
47
- } from './schemas/oauth-scope.js';
55
+ } from './schemas/oauth-scope.ts';
48
56
  export {
49
57
  httpsUriSchema,
50
58
  loopbackUriSchema,
@@ -52,7 +60,7 @@ export {
52
60
  privateUseUriSchema,
53
61
  urlSchema,
54
62
  webUriSchema,
55
- } from './schemas/uri.js';
63
+ } from './schemas/uri.ts';
56
64
  export {
57
65
  extractUrlPath,
58
66
  isHostnameIP,
@@ -60,24 +68,24 @@ export {
60
68
  isLocalHostname,
61
69
  isLoopbackHost,
62
70
  isSpaceSeparatedValue,
63
- } from './schemas/utils.js';
71
+ } from './schemas/utils.ts';
64
72
 
65
73
  // token schemas
66
- export { oauthTokenTypeSchema, type OAuthTokenType } from './schemas/oauth-token-type.js';
67
- export { oauthTokenResponseSchema, type OAuthTokenResponse } from './schemas/oauth-token-response.js';
74
+ export { oauthTokenTypeSchema, type OAuthTokenType } from './schemas/oauth-token-type.ts';
75
+ export { oauthTokenResponseSchema, type OAuthTokenResponse } from './schemas/oauth-token-response.ts';
68
76
  export {
69
77
  atprotoOAuthTokenResponseSchema,
70
78
  type AtprotoOAuthTokenResponse,
71
- } from './schemas/atproto-oauth-token-response.js';
79
+ } from './schemas/atproto-oauth-token-response.ts';
72
80
 
73
81
  // PAR schemas
74
- export { oauthParResponseSchema, type OAuthParResponse } from './schemas/oauth-par-response.js';
82
+ export { oauthParResponseSchema, type OAuthParResponse } from './schemas/oauth-par-response.ts';
75
83
  export {
76
84
  oauthCodeChallengeMethodSchema,
77
85
  type OAuthCodeChallengeMethod,
78
- } from './schemas/oauth-code-challenge-method.js';
79
- export { oauthResponseModeSchema, type OAuthResponseMode } from './schemas/oauth-response-mode.js';
80
- export { oauthPromptSchema, type OAuthPrompt } from './schemas/oauth-prompt.js';
86
+ } from './schemas/oauth-code-challenge-method.ts';
87
+ export { oauthResponseModeSchema, type OAuthResponseMode } from './schemas/oauth-response-mode.ts';
88
+ export { oauthPromptSchema, type OAuthPrompt } from './schemas/oauth-prompt.ts';
81
89
 
82
90
  // authorization details
83
91
  export {
@@ -85,22 +93,22 @@ export {
85
93
  oauthAuthorizationDetailsSchema,
86
94
  type OAuthAuthorizationDetail,
87
95
  type OAuthAuthorizationDetails,
88
- } from './schemas/oauth-authorization-details.js';
96
+ } from './schemas/oauth-authorization-details.ts';
89
97
 
90
98
  // server metadata
91
99
  export {
92
100
  oauthIssuerIdentifierSchema,
93
101
  type OAuthIssuerIdentifier,
94
- } from './schemas/oauth-issuer-identifier.js';
102
+ } from './schemas/oauth-issuer-identifier.ts';
95
103
  export {
96
104
  oauthAuthorizationServerMetadataSchema,
97
105
  oauthAuthorizationServerMetadataValidator,
98
106
  type OAuthAuthorizationServerMetadata,
99
- } from './schemas/oauth-authorization-server-metadata.js';
107
+ } from './schemas/oauth-authorization-server-metadata.ts';
100
108
  export {
101
109
  atprotoAuthorizationServerMetadataValidator,
102
110
  type AtprotoAuthorizationServerMetadata,
103
- } from './schemas/atproto-authorization-server-metadata.js';
111
+ } from './schemas/atproto-authorization-server-metadata.ts';
104
112
 
105
113
  // protected resource metadata
106
114
  export {
@@ -109,8 +117,8 @@ export {
109
117
  oauthProtectedResourceMetadataValidator,
110
118
  type OAuthBearerMethod,
111
119
  type OAuthProtectedResourceMetadata,
112
- } from './schemas/oauth-protected-resource-metadata.js';
120
+ } from './schemas/oauth-protected-resource-metadata.ts';
113
121
  export {
114
122
  atprotoProtectedResourceMetadataValidator,
115
123
  type AtprotoProtectedResourceMetadata,
116
- } from './schemas/atproto-protected-resource-metadata.js';
124
+ } from './schemas/atproto-protected-resource-metadata.ts';
@@ -0,0 +1,25 @@
1
+ import * as v from 'valibot';
2
+
3
+ import { atprotoOAuthScopeSchema } from './atproto-oauth-scope.ts';
4
+ import { isLastOccurrence } from './utils.ts';
5
+
6
+ const SINGLE_SCOPE_RE = /^[\x21\x23-\x5B\x5D-\x7E]+$/;
7
+
8
+ const singleScopeSchema = v.pipe(v.string(), v.regex(SINGLE_SCOPE_RE, `invalid OAuth scope`));
9
+
10
+ /**
11
+ * OAuth scope - either:
12
+ * - a space-separated string (must include "atproto")
13
+ * - an array of scope strings ('atproto' is added automatically)
14
+ */
15
+ export const scopeSchema = v.union([
16
+ v.pipe(
17
+ atprotoOAuthScopeSchema,
18
+ v.check((input) => input.split(/\s+/).every(isLastOccurrence), `duplicate scope`),
19
+ ),
20
+ v.pipe(
21
+ v.array(singleScopeSchema),
22
+ v.transform((input) => (input.includes('atproto') ? input : ['atproto', ...input])),
23
+ v.checkItems(isLastOccurrence, `duplicate scope`),
24
+ ),
25
+ ]);
@@ -1,13 +1,9 @@
1
- import * as v from '@badrap/valita';
1
+ import * as v from 'valibot';
2
2
 
3
- import { atprotoOAuthScopeSchema } from './atproto-oauth-scope.js';
4
- import { oauthClientIdDiscoverableSchema } from './oauth-client-id-discoverable.js';
5
- import { httpsUriSchema, nonLocalWebUriSchema, webUriSchema } from './uri.js';
6
- import { isLocalHostname } from './utils.js';
7
-
8
- const SINGLE_SCOPE_RE = /^[\x21\x23-\x5B\x5D-\x7E]+$/;
9
-
10
- const singleScopeSchema = v.string().assert((input) => SINGLE_SCOPE_RE.test(input), `invalid OAuth scope`);
3
+ import { scopeSchema } from './atcute-client-shared.ts';
4
+ import { oauthClientIdDiscoverableSchema } from './oauth-client-id-discoverable.ts';
5
+ import { httpsUriSchema, nonLocalWebUriSchema, webUriSchema } from './uri.ts';
6
+ import { isLocalHostname } from './utils.ts';
11
7
 
12
8
  /**
13
9
  * user-facing client metadata for configuring a confidential OAuth client.
@@ -16,124 +12,98 @@ const singleScopeSchema = v.string().assert((input) => SINGLE_SCOPE_RE.test(inpu
16
12
  * the library will fill in atproto-required values like `dpop_bound_access_tokens`,
17
13
  * `token_endpoint_auth_method`, and default `grant_types` / `response_types`.
18
14
  */
19
- export const confidentialClientMetadataSchema = v
20
- .object({
15
+ export const confidentialClientMetadataSchema = v.pipe(
16
+ v.looseObject({
21
17
  /** discoverable https client_id URL (where metadata is hosted) */
22
18
  client_id: oauthClientIdDiscoverableSchema,
23
19
 
24
20
  /** redirect URIs for authorization responses (must be https) */
25
- redirect_uris: v
26
- .array(httpsUriSchema)
27
- .assert((arr) => arr.length > 0, `must have at least one redirect URI`)
28
- .assert((arr) => {
29
- for (const uri of arr) {
30
- const url = new URL(uri);
31
- if (url.username || url.password) {
32
- return false;
33
- }
34
- }
35
- return true;
36
- }, `redirect URIs must not contain credentials`),
37
-
38
- /**
39
- * OAuth scope - either:
40
- * - a space-separated string (must include "atproto")
41
- * - an array of scope strings ('atproto' is added automatically)
42
- */
43
- scope: v.union(
44
- atprotoOAuthScopeSchema.chain((input) => {
45
- const scopes = input.split(/\s+/);
46
-
47
- for (let i = 0, len = scopes.length; i < len; i++) {
48
- const aka = scopes[i];
49
-
50
- for (let j = 0; j < i; j++) {
51
- if (aka === scopes[j]) {
52
- return v.err(`duplicate "${aka}" scope`);
53
- }
54
- }
55
- }
56
-
57
- return v.ok(input);
58
- }),
59
- v.array(singleScopeSchema).chain((input) => {
60
- if (!input.includes('atproto')) {
61
- input = ['atproto', ...input];
62
- }
63
-
64
- for (let i = 0, len = input.length; i < len; i++) {
65
- const aka = input[i];
66
-
67
- for (let j = 0; j < i; j++) {
68
- if (aka === input[j]) {
69
- return v.err(`duplicate "${aka}" scope`);
70
- }
71
- }
72
- }
73
-
74
- return v.ok(input);
75
- }),
21
+ redirect_uris: v.pipe(
22
+ v.array(httpsUriSchema),
23
+ v.minLength(1, `must have at least one redirect URI`),
24
+ v.checkItems((uri) => {
25
+ const url = new URL(uri);
26
+ return !url.username && !url.password;
27
+ }, `redirect URI must not contain credentials`),
76
28
  ),
77
29
 
30
+ scope: scopeSchema,
31
+
78
32
  /** optional client homepage */
79
- client_uri: webUriSchema.optional(),
33
+ client_uri: v.optional(webUriSchema),
80
34
  /** optional display name */
81
- client_name: v.string().optional(),
35
+ client_name: v.optional(v.string()),
82
36
  /** optional policy url */
83
- policy_uri: nonLocalWebUriSchema.optional(),
37
+ policy_uri: v.optional(nonLocalWebUriSchema),
84
38
  /** optional terms of service url */
85
- tos_uri: nonLocalWebUriSchema.optional(),
39
+ tos_uri: v.optional(nonLocalWebUriSchema),
86
40
  /** optional logo url */
87
- logo_uri: nonLocalWebUriSchema.optional(),
41
+ logo_uri: v.optional(nonLocalWebUriSchema),
88
42
 
89
43
  /** optional JWKS URL; if omitted, the library will inline jwks from the keyset */
90
- jwks_uri: httpsUriSchema.optional(),
91
- })
92
- .chain((input) => {
93
- const clientIdUrl = new URL(input.client_id);
94
- if (isLocalHostname(clientIdUrl.hostname)) {
95
- return v.err({ message: `client_id hostname is invalid`, path: ['client_id'] });
96
- }
97
-
98
- if (input.jwks_uri) {
44
+ jwks_uri: v.optional(httpsUriSchema),
45
+ }),
46
+ v.forward(
47
+ v.check((input) => !isLocalHostname(new URL(input.client_id).hostname), `client_id hostname is invalid`),
48
+ ['client_id'],
49
+ ),
50
+ v.forward(
51
+ v.check((input) => {
52
+ if (!input.jwks_uri) {
53
+ return true;
54
+ }
99
55
  const jwksUrl = new URL(input.jwks_uri);
100
-
101
- if (jwksUrl.username || jwksUrl.password) {
102
- return v.err({ message: `jwks_uri must not contain credentials`, path: ['jwks_uri'] });
56
+ return !(jwksUrl.username || jwksUrl.password);
57
+ }, `jwks_uri must not contain credentials`),
58
+ ['jwks_uri'],
59
+ ),
60
+ v.forward(
61
+ v.check((input) => {
62
+ if (!input.jwks_uri) {
63
+ return true;
103
64
  }
104
-
105
- if (isLocalHostname(jwksUrl.hostname)) {
106
- return v.err({ message: `jwks_uri hostname is invalid`, path: ['jwks_uri'] });
65
+ return !isLocalHostname(new URL(input.jwks_uri).hostname);
66
+ }, `jwks_uri hostname is invalid`),
67
+ ['jwks_uri'],
68
+ ),
69
+ v.forward(
70
+ v.check((input) => {
71
+ if (!input.client_uri) {
72
+ return true;
107
73
  }
108
- }
109
-
110
- // for discoverable clients, client_uri (if provided) must be same-origin parent of client_id
111
- if (input.client_uri) {
112
- const clientUriUrl = new URL(input.client_uri);
113
-
114
- if (isLocalHostname(clientUriUrl.hostname)) {
115
- return v.err({ message: `client_uri hostname is invalid`, path: ['client_uri'] });
74
+ return !isLocalHostname(new URL(input.client_uri).hostname);
75
+ }, `client_uri hostname is invalid`),
76
+ ['client_uri'],
77
+ ),
78
+ v.forward(
79
+ v.check((input) => {
80
+ if (!input.client_uri) {
81
+ return true;
116
82
  }
117
-
118
- if (clientUriUrl.origin !== clientIdUrl.origin) {
119
- return v.err({
120
- message: `client_uri must have the same origin as the client_id`,
121
- path: ['client_uri'],
122
- });
83
+ const clientUriUrl = new URL(input.client_uri);
84
+ const clientIdUrl = new URL(input.client_id);
85
+ return clientUriUrl.origin === clientIdUrl.origin;
86
+ }, `client_uri must have the same origin as the client_id`),
87
+ ['client_uri'],
88
+ ),
89
+ v.forward(
90
+ v.check((input) => {
91
+ if (!input.client_uri) {
92
+ return true;
123
93
  }
124
-
125
- if (clientIdUrl.pathname !== clientUriUrl.pathname) {
126
- const prefix = clientUriUrl.pathname.endsWith('/')
127
- ? clientUriUrl.pathname
128
- : `${clientUriUrl.pathname}/`;
129
-
130
- if (!clientIdUrl.pathname.startsWith(prefix)) {
131
- return v.err({ message: `client_uri must be a parent URL of the client_id`, path: ['client_uri'] });
132
- }
94
+ // for discoverable clients, client_uri (if provided) must be same-origin parent of client_id
95
+ const clientUriUrl = new URL(input.client_uri);
96
+ const clientIdUrl = new URL(input.client_id);
97
+ if (clientIdUrl.pathname === clientUriUrl.pathname) {
98
+ return true;
133
99
  }
134
- }
135
-
136
- return v.ok(input);
137
- });
138
-
139
- export type ConfidentialClientMetadata = v.Infer<typeof confidentialClientMetadataSchema>;
100
+ const prefix = clientUriUrl.pathname.endsWith('/')
101
+ ? clientUriUrl.pathname
102
+ : `${clientUriUrl.pathname}/`;
103
+ return clientIdUrl.pathname.startsWith(prefix);
104
+ }, `client_uri must be a parent URL of the client_id`),
105
+ ['client_uri'],
106
+ ),
107
+ );
108
+
109
+ export type ConfidentialClientMetadata = v.InferOutput<typeof confidentialClientMetadataSchema>;