@estifanos-sh/convex-auth 0.0.1-preview.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 (387) hide show
  1. package/README.md +52 -0
  2. package/dist/_generated/component.d.ts +2981 -0
  3. package/dist/bin.js +7194 -0
  4. package/dist/browser/index.d.ts +22 -0
  5. package/dist/browser/index.js +61 -0
  6. package/dist/browser/locks.js +20 -0
  7. package/dist/browser/navigation.js +14 -0
  8. package/dist/browser/runtime.js +90 -0
  9. package/dist/browser/webauthn.js +99 -0
  10. package/dist/client/core/types.d.ts +615 -0
  11. package/dist/client/core/types.js +23 -0
  12. package/dist/client/errors.js +30 -0
  13. package/dist/client/factors/device.js +100 -0
  14. package/dist/client/factors/totp.js +111 -0
  15. package/dist/client/factors/webauthn.js +69 -0
  16. package/dist/client/index.d.ts +60 -0
  17. package/dist/client/index.js +976 -0
  18. package/dist/client/runtime/invite.js +50 -0
  19. package/dist/client/runtime/mutex.js +25 -0
  20. package/dist/client/runtime/proxy.js +75 -0
  21. package/dist/client/runtime/storage.js +65 -0
  22. package/dist/component/_generated/api.js +26 -0
  23. package/dist/component/_generated/component.d.ts +2981 -0
  24. package/dist/component/_generated/component.js +1 -0
  25. package/dist/component/_generated/dataModel.js +1 -0
  26. package/dist/component/_generated/server.js +74 -0
  27. package/dist/component/account.js +197 -0
  28. package/dist/component/connection/audit.js +152 -0
  29. package/dist/component/connection/cache.js +205 -0
  30. package/dist/component/connection/domain/verification.js +63 -0
  31. package/dist/component/connection/domain.js +108 -0
  32. package/dist/component/connection/saml/assertion.js +41 -0
  33. package/dist/component/connection/saml/request.js +61 -0
  34. package/dist/component/connection/scim/config.js +55 -0
  35. package/dist/component/connection/scim/identity.js +162 -0
  36. package/dist/component/connection/secret.js +65 -0
  37. package/dist/component/connection/webhook/delivery.js +396 -0
  38. package/dist/component/connection/webhook/endpoint.js +77 -0
  39. package/dist/component/connection.js +204 -0
  40. package/dist/component/convex.config.d.ts +7 -0
  41. package/dist/component/convex.config.js +15 -0
  42. package/dist/component/crons.js +27 -0
  43. package/dist/component/event.js +341 -0
  44. package/dist/component/factor/device.js +141 -0
  45. package/dist/component/factor/passkey.js +385 -0
  46. package/dist/component/factor/totp.js +253 -0
  47. package/dist/component/functions.js +3 -0
  48. package/dist/component/group/active.js +63 -0
  49. package/dist/component/group/invite.js +300 -0
  50. package/dist/component/group/member.js +188 -0
  51. package/dist/component/group.js +431 -0
  52. package/dist/component/http.js +9 -0
  53. package/dist/component/index.d.ts +5 -0
  54. package/dist/component/index.js +3 -0
  55. package/dist/component/limits.js +103 -0
  56. package/dist/component/maintenance.js +205 -0
  57. package/dist/component/migrations.js +277 -0
  58. package/dist/component/model.d.ts +384 -0
  59. package/dist/component/model.js +709 -0
  60. package/dist/component/modules.js +53 -0
  61. package/dist/component/oauth/client.js +196 -0
  62. package/dist/component/oauth/code.js +97 -0
  63. package/dist/component/oauth/refresh.js +230 -0
  64. package/dist/component/schema.d.ts +1530 -0
  65. package/dist/component/schema.js +401 -0
  66. package/dist/component/session.js +134 -0
  67. package/dist/component/token/pkce.js +121 -0
  68. package/dist/component/token/refresh.js +189 -0
  69. package/dist/component/token/verification.js +155 -0
  70. package/dist/component/user/email.js +147 -0
  71. package/dist/component/user/key.js +273 -0
  72. package/dist/component/user.js +173 -0
  73. package/dist/core/index.d.ts +531 -0
  74. package/dist/core/index.js +81 -0
  75. package/dist/expo/index.d.ts +43 -0
  76. package/dist/expo/index.js +131 -0
  77. package/dist/expo/webauthn.js +88 -0
  78. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.d.ts +2 -0
  79. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/api/logs.d.ts +3 -0
  80. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/index.d.ts +7 -0
  81. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.d.ts +21 -0
  82. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.d.ts +36 -0
  83. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/Logger.d.ts +1 -0
  84. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.d.ts +1 -0
  85. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.d.ts +2 -0
  86. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.d.ts +1 -0
  87. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/baggage/utils.d.ts +1 -0
  88. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/attributes.d.ts +1 -0
  89. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/global-error-handler.d.ts +2 -0
  90. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.d.ts +1 -0
  91. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/time.d.ts +1 -0
  92. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/types.d.ts +16 -0
  93. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/index.d.ts +13 -0
  94. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/propagation/composite.d.ts +1 -0
  95. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/TraceState.d.ts +1 -0
  96. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.d.ts +1 -0
  97. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.d.ts +1 -0
  98. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.d.ts +1 -0
  99. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/utils/configuration.d.ts +1 -0
  100. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/LogRecordProcessor.d.ts +24 -0
  101. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/LoggerProvider.d.ts +2 -0
  102. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/config/LoggerConfigurators.d.ts +1 -0
  103. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/BatchLogRecordProcessorBase.d.ts +4 -0
  104. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/ConsoleLogRecordExporter.d.ts +3 -0
  105. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/InMemoryLogRecordExporter.d.ts +3 -0
  106. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/LogRecordExporter.d.ts +2 -0
  107. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/ReadableLogRecord.d.ts +4 -0
  108. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/SdkLogRecord.d.ts +71 -0
  109. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/SimpleLogRecordProcessor.d.ts +3 -0
  110. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/index.d.ts +11 -0
  111. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/platform/index.d.ts +1 -0
  112. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/platform/node/export/BatchLogRecordProcessor.d.ts +2 -0
  113. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/platform/node/index.d.ts +1 -0
  114. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/types.d.ts +4 -0
  115. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/InstrumentDescriptor.d.ts +3 -0
  116. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/MeterProvider.d.ts +4 -0
  117. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Drop.d.ts +4 -0
  118. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/ExponentialHistogram.d.ts +5 -0
  119. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Histogram.d.ts +5 -0
  120. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/LastValue.d.ts +5 -0
  121. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Sum.d.ts +5 -0
  122. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/index.d.ts +6 -0
  123. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/types.d.ts +53 -0
  124. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/AggregationSelector.d.ts +16 -0
  125. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/AggregationTemporality.d.ts +11 -0
  126. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/CardinalitySelector.d.ts +10 -0
  127. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/ConsoleMetricExporter.d.ts +4 -0
  128. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/InMemoryMetricExporter.d.ts +3 -0
  129. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricData.d.ts +148 -0
  130. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricExporter.d.ts +3 -0
  131. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricProducer.d.ts +27 -0
  132. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricReader.d.ts +138 -0
  133. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/PeriodicExportingMetricReader.d.ts +3 -0
  134. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/index.d.ts +15 -0
  135. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/types.d.ts +10 -0
  136. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/utils.d.ts +2 -0
  137. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/Aggregation.d.ts +4 -0
  138. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/AggregationOption.d.ts +41 -0
  139. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/AttributesProcessor.d.ts +1 -0
  140. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/InstrumentSelector.d.ts +1 -0
  141. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/View.d.ts +5 -0
  142. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.d.ts +2 -0
  143. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.d.ts +11 -0
  144. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.d.ts +74 -0
  145. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.d.ts +17 -0
  146. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.d.ts +43 -0
  147. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.d.ts +19 -0
  148. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.d.ts +6 -0
  149. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.d.ts +3 -0
  150. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.d.ts +3 -0
  151. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.d.ts +4 -0
  152. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.d.ts +29 -0
  153. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.d.ts +5 -0
  154. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.d.ts +2 -0
  155. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/index.d.ts +18 -0
  156. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.d.ts +1 -0
  157. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.d.ts +2 -0
  158. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.d.ts +1 -0
  159. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.d.ts +1 -0
  160. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.d.ts +1 -0
  161. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.d.ts +2 -0
  162. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.d.ts +1 -0
  163. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/types.d.ts +66 -0
  164. package/dist/otel.d.ts +73 -0
  165. package/dist/otel.js +82 -0
  166. package/dist/permissions/index.d.ts +81 -0
  167. package/dist/permissions/index.js +18 -0
  168. package/dist/providers/anonymous.d.ts +35 -0
  169. package/dist/providers/anonymous.js +40 -0
  170. package/dist/providers/apple.d.ts +61 -0
  171. package/dist/providers/apple.js +57 -0
  172. package/dist/providers/connection.d.ts +30 -0
  173. package/dist/providers/connection.js +33 -0
  174. package/dist/providers/credentials.d.ts +78 -0
  175. package/dist/providers/credentials.js +31 -0
  176. package/dist/providers/custom.d.ts +96 -0
  177. package/dist/providers/custom.js +108 -0
  178. package/dist/providers/device.d.ts +33 -0
  179. package/dist/providers/device.js +30 -0
  180. package/dist/providers/email.d.ts +45 -0
  181. package/dist/providers/email.js +52 -0
  182. package/dist/providers/github.d.ts +56 -0
  183. package/dist/providers/github.js +79 -0
  184. package/dist/providers/google.d.ts +56 -0
  185. package/dist/providers/google.js +59 -0
  186. package/dist/providers/index.d.ts +16 -0
  187. package/dist/providers/index.js +16 -0
  188. package/dist/providers/microsoft.d.ts +59 -0
  189. package/dist/providers/microsoft.js +98 -0
  190. package/dist/providers/password.d.ts +68 -0
  191. package/dist/providers/password.js +348 -0
  192. package/dist/providers/phone.d.ts +33 -0
  193. package/dist/providers/phone.js +35 -0
  194. package/dist/providers/redirect.d.ts +1 -0
  195. package/dist/providers/redirect.js +11 -0
  196. package/dist/providers/totp.d.ts +29 -0
  197. package/dist/providers/totp.js +29 -0
  198. package/dist/providers/webauthn/attestation.d.ts +42 -0
  199. package/dist/providers/webauthn/attestation.js +167 -0
  200. package/dist/providers/webauthn.d.ts +83 -0
  201. package/dist/providers/webauthn.js +57 -0
  202. package/dist/react/index.d.ts +55 -0
  203. package/dist/react/index.js +80 -0
  204. package/dist/server/auth.d.ts +443 -0
  205. package/dist/server/auth.js +178 -0
  206. package/dist/server/cache/context.js +94 -0
  207. package/dist/server/component/api.d.ts +14 -0
  208. package/dist/server/component/api.js +13 -0
  209. package/dist/server/component/context.d.ts +16 -0
  210. package/dist/server/component/context.js +1 -0
  211. package/dist/server/component/factor/db.js +71 -0
  212. package/dist/server/config.d.ts +3 -0
  213. package/dist/server/config.js +78 -0
  214. package/dist/server/connection/config.js +101 -0
  215. package/dist/server/connection/domain.d.ts +878 -0
  216. package/dist/server/connection/domain.js +1122 -0
  217. package/dist/server/connection/group/service.d.ts +25 -0
  218. package/dist/server/connection/group/service.js +250 -0
  219. package/dist/server/connection/http.js +1485 -0
  220. package/dist/server/connection/oidc.js +366 -0
  221. package/dist/server/connection/policy/domain.js +59 -0
  222. package/dist/server/connection/policy.d.ts +1 -0
  223. package/dist/server/connection/policy.js +163 -0
  224. package/dist/server/connection/profile.js +22 -0
  225. package/dist/server/connection/provision.js +182 -0
  226. package/dist/server/connection/saml/api.js +70 -0
  227. package/dist/server/connection/saml/binding/post.js +140 -0
  228. package/dist/server/connection/saml/binding/redirect.js +139 -0
  229. package/dist/server/connection/saml/binding/shared.js +18 -0
  230. package/dist/server/connection/saml/c14n.js +224 -0
  231. package/dist/server/connection/saml/constants.js +100 -0
  232. package/dist/server/connection/saml/crypto.js +170 -0
  233. package/dist/server/connection/saml/dom/select.js +299 -0
  234. package/dist/server/connection/saml/encoding.js +93 -0
  235. package/dist/server/connection/saml/encryption.js +34 -0
  236. package/dist/server/connection/saml/entity.js +24 -0
  237. package/dist/server/connection/saml/extractor.js +408 -0
  238. package/dist/server/connection/saml/flow.js +150 -0
  239. package/dist/server/connection/saml/identity/provider.js +66 -0
  240. package/dist/server/connection/saml/index.js +5 -0
  241. package/dist/server/connection/saml/metadata.js +294 -0
  242. package/dist/server/connection/saml/service/provider.js +117 -0
  243. package/dist/server/connection/saml/signature.js +214 -0
  244. package/dist/server/connection/saml/template.js +68 -0
  245. package/dist/server/connection/saml/types.js +1 -0
  246. package/dist/server/connection/saml/validator.js +32 -0
  247. package/dist/server/connection/saml/xml/builder.js +68 -0
  248. package/dist/server/connection/saml/xmldsig.js +598 -0
  249. package/dist/server/connection/saml/xmlenc.js +162 -0
  250. package/dist/server/connection/saml.d.ts +56 -0
  251. package/dist/server/connection/saml.js +762 -0
  252. package/dist/server/connection/scim.js +115 -0
  253. package/dist/server/connection/shared.js +74 -0
  254. package/dist/server/connection/webhook.js +163 -0
  255. package/dist/server/context.d.ts +137 -0
  256. package/dist/server/context.js +108 -0
  257. package/dist/server/contract.d.ts +48 -0
  258. package/dist/server/contract.js +107 -0
  259. package/dist/server/cookies.js +90 -0
  260. package/dist/server/core.js +163 -0
  261. package/dist/server/cors.d.ts +22 -0
  262. package/dist/server/cors.js +93 -0
  263. package/dist/server/crypto.js +43 -0
  264. package/dist/server/db.js +88 -0
  265. package/dist/server/device.js +140 -0
  266. package/dist/server/domains/access.js +29 -0
  267. package/dist/server/domains/account.d.ts +16 -0
  268. package/dist/server/domains/account.js +92 -0
  269. package/dist/server/domains/factor.d.ts +28 -0
  270. package/dist/server/domains/factor.js +115 -0
  271. package/dist/server/domains/group.js +87 -0
  272. package/dist/server/domains/invite.js +76 -0
  273. package/dist/server/domains/key.js +253 -0
  274. package/dist/server/domains/member.js +149 -0
  275. package/dist/server/domains/session.js +29 -0
  276. package/dist/server/domains/user.js +119 -0
  277. package/dist/server/env.d.ts +46 -0
  278. package/dist/server/env.js +96 -0
  279. package/dist/server/errors.js +38 -0
  280. package/dist/server/events.d.ts +880 -0
  281. package/dist/server/events.js +406 -0
  282. package/dist/server/facade.d.ts +83 -0
  283. package/dist/server/facade.js +124 -0
  284. package/dist/server/http.d.ts +125 -0
  285. package/dist/server/http.js +566 -0
  286. package/dist/server/identity/claims.js +58 -0
  287. package/dist/server/identity/convex.d.ts +15 -0
  288. package/dist/server/identity/convex.js +1 -0
  289. package/dist/server/index.d.ts +17 -0
  290. package/dist/server/index.js +11 -0
  291. package/dist/server/keys.js +60 -0
  292. package/dist/server/limits.js +41 -0
  293. package/dist/server/log.js +28 -0
  294. package/dist/server/mcp.d.ts +19 -0
  295. package/dist/server/mcp.js +250 -0
  296. package/dist/server/mutations/account.js +47 -0
  297. package/dist/server/mutations/calls.js +16 -0
  298. package/dist/server/mutations/code.js +91 -0
  299. package/dist/server/mutations/credentials/signin.js +210 -0
  300. package/dist/server/mutations/invalidate.js +60 -0
  301. package/dist/server/mutations/oauth.js +251 -0
  302. package/dist/server/mutations/refresh.js +152 -0
  303. package/dist/server/mutations/register.js +93 -0
  304. package/dist/server/mutations/retrieve.js +66 -0
  305. package/dist/server/mutations/signature.js +36 -0
  306. package/dist/server/mutations/signin.js +81 -0
  307. package/dist/server/mutations/signout.js +61 -0
  308. package/dist/server/mutations/store/refs.js +15 -0
  309. package/dist/server/mutations/store.js +82 -0
  310. package/dist/server/mutations/verifier.js +25 -0
  311. package/dist/server/mutations/verify.js +199 -0
  312. package/dist/server/oauth/authorize.js +98 -0
  313. package/dist/server/oauth/client.d.ts +93 -0
  314. package/dist/server/oauth/client.js +115 -0
  315. package/dist/server/oauth/code.d.ts +63 -0
  316. package/dist/server/oauth/code.js +124 -0
  317. package/dist/server/oauth/domain.d.ts +23 -0
  318. package/dist/server/oauth/domain.js +1 -0
  319. package/dist/server/oauth/factory.js +46 -0
  320. package/dist/server/oauth/grant.js +46 -0
  321. package/dist/server/oauth/handlers.js +108 -0
  322. package/dist/server/oauth/manage.js +121 -0
  323. package/dist/server/oauth/normalize.js +27 -0
  324. package/dist/server/oauth/refresh.d.ts +71 -0
  325. package/dist/server/oauth/refresh.js +132 -0
  326. package/dist/server/oauth/register.js +147 -0
  327. package/dist/server/oauth/runtime.js +280 -0
  328. package/dist/server/oauth/token.js +355 -0
  329. package/dist/server/payloads.d.ts +16 -0
  330. package/dist/server/payloads.js +30 -0
  331. package/dist/server/preload.d.ts +249 -0
  332. package/dist/server/preload.js +673 -0
  333. package/dist/server/random.js +25 -0
  334. package/dist/server/redirects.js +85 -0
  335. package/dist/server/runtime.d.ts +845 -0
  336. package/dist/server/runtime.js +387 -0
  337. package/dist/server/secret.js +46 -0
  338. package/dist/server/services/factors.js +117 -0
  339. package/dist/server/services/providers.js +23 -0
  340. package/dist/server/services/resolve.js +17 -0
  341. package/dist/server/session/lifecycle.d.ts +23 -0
  342. package/dist/server/session/lifecycle.js +139 -0
  343. package/dist/server/signin/flow.js +359 -0
  344. package/dist/server/telemetry.js +68 -0
  345. package/dist/server/templates.js +91 -0
  346. package/dist/server/token/refresh.js +35 -0
  347. package/dist/server/tokens.js +164 -0
  348. package/dist/server/totp.js +282 -0
  349. package/dist/server/types.d.ts +1154 -0
  350. package/dist/server/types.js +1 -0
  351. package/dist/server/url.js +43 -0
  352. package/dist/server/user/account.js +325 -0
  353. package/dist/server/utils/bearer.js +24 -0
  354. package/dist/server/utils/cache.js +51 -0
  355. package/dist/server/utils/retry.js +3 -0
  356. package/dist/server/utils/span.js +59 -0
  357. package/dist/server/validators.d.ts +2061 -0
  358. package/dist/server/validators.js +320 -0
  359. package/dist/server/webauthn.js +699 -0
  360. package/dist/server/wellknown.d.ts +74 -0
  361. package/dist/server/wellknown.js +195 -0
  362. package/dist/shared/brand.d.ts +28 -0
  363. package/dist/shared/brand.js +13 -0
  364. package/dist/shared/codes.d.ts +99 -0
  365. package/dist/shared/codes.js +98 -0
  366. package/dist/shared/compare.js +23 -0
  367. package/dist/shared/errors.js +24 -0
  368. package/dist/shared/event/kinds.d.ts +188 -0
  369. package/dist/shared/event/kinds.js +103 -0
  370. package/dist/shared/fetch/guard.js +189 -0
  371. package/dist/shared/log.js +62 -0
  372. package/dist/shared/results.d.ts +58 -0
  373. package/dist/shared/retry.js +27 -0
  374. package/dist/shared/webauthn.js +9 -0
  375. package/dist/svelte/AuthLoading.svelte +13 -0
  376. package/dist/svelte/AuthLoading.svelte.d.ts +8 -0
  377. package/dist/svelte/SignedIn.svelte +14 -0
  378. package/dist/svelte/SignedIn.svelte.d.ts +8 -0
  379. package/dist/svelte/SignedOut.svelte +13 -0
  380. package/dist/svelte/SignedOut.svelte.d.ts +8 -0
  381. package/dist/svelte/context.svelte.d.ts +26 -0
  382. package/dist/svelte/context.svelte.js +61 -0
  383. package/dist/svelte/index.d.ts +5 -0
  384. package/dist/svelte/index.js +4 -0
  385. package/dist/test.d.ts +48 -0
  386. package/dist/test.js +54 -0
  387. package/package.json +247 -0
@@ -0,0 +1,167 @@
1
+ import { MetadataService, verifyRegistrationResponse } from "@simplewebauthn/server";
2
+ import { decodeAttestationObject, isoBase64URL, verifyMDSBlob } from "@simplewebauthn/server/helpers";
3
+
4
+ //#region src/providers/webauthn/attestation.ts
5
+ /**
6
+ * Trusted WebAuthn attestation policies.
7
+ *
8
+ * @module
9
+ */
10
+ const FIDO_MDS_URL = "https://mds.fidoalliance.org/";
11
+ const FIDO_MDS_VERIFIER = "fido-mds-v3";
12
+ const AAGUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
13
+ const ZERO_AAGUID = "00000000-0000-0000-0000-000000000000";
14
+ const REJECTED_AUTHENTICATOR_STATUSES = new Set([
15
+ "REVOKED",
16
+ "USER_VERIFICATION_BYPASS",
17
+ "ATTESTATION_KEY_COMPROMISE",
18
+ "USER_KEY_REMOTE_COMPROMISE",
19
+ "USER_KEY_PHYSICAL_COMPROMISE"
20
+ ]);
21
+ const CERTIFIED_AUTHENTICATOR_STATUSES = new Set([
22
+ "FIDO_CERTIFIED",
23
+ "FIDO_CERTIFIED_L1",
24
+ "FIDO_CERTIFIED_L1plus",
25
+ "FIDO_CERTIFIED_L2",
26
+ "FIDO_CERTIFIED_L2plus",
27
+ "FIDO_CERTIFIED_L3",
28
+ "FIDO_CERTIFIED_L3plus"
29
+ ]);
30
+ let cachedMetadata;
31
+ let metadataLoad;
32
+ function normalizeAaguid(value) {
33
+ const normalized = value.trim().toLowerCase();
34
+ if (!AAGUID_PATTERN.test(normalized)) throw new Error(`Invalid AAGUID: ${value}`);
35
+ return normalized;
36
+ }
37
+ function normalizeAllowedAaguids(values) {
38
+ if (values === void 0) return null;
39
+ if (values.length === 0) throw new Error("fidoMds allowedAaguids must contain at least one AAGUID when provided.");
40
+ return new Set(values.map(normalizeAaguid));
41
+ }
42
+ /** @internal */
43
+ function assertTrustedMetadataEntry(entry) {
44
+ if (!entry?.aaguid || !entry.metadataStatement) throw new Error("Authenticator is not present in the verified FIDO Metadata Service.");
45
+ const rejected = entry.statusReports.find((report) => REJECTED_AUTHENTICATOR_STATUSES.has(report.status));
46
+ if (rejected) throw new Error(`Authenticator metadata status is ${rejected.status}.`);
47
+ if (!entry.statusReports.some((report) => CERTIFIED_AUTHENTICATOR_STATUSES.has(report.status))) throw new Error("Authenticator does not have a current FIDO certification status.");
48
+ }
49
+ /** @internal */
50
+ function assertFullAttestation(attestationObject) {
51
+ const decoded = decodeAttestationObject(isoBase64URL.toBuffer(attestationObject));
52
+ const format = decoded.get("fmt");
53
+ const statement = decoded.get("attStmt");
54
+ if (format === "none") throw new Error("Authenticator did not return an attestation statement.");
55
+ if (format === "fido-u2f") throw new Error("Legacy FIDO U2F attestation has no model AAGUID and cannot satisfy this policy.");
56
+ if (!statement.get("x5c")?.length) throw new Error("Self or anonymous attestation is not trusted by this policy.");
57
+ }
58
+ async function loadFidoMetadata() {
59
+ const response = await fetch(FIDO_MDS_URL);
60
+ if (!response.ok) throw new Error(`FIDO Metadata Service returned HTTP ${response.status}.`);
61
+ const verified = await verifyMDSBlob(await response.text());
62
+ await MetadataService.initialize({
63
+ mdsServers: [],
64
+ statements: verified.statements,
65
+ verificationMode: "strict"
66
+ });
67
+ const entries = /* @__PURE__ */ new Map();
68
+ for (const entry of verified.payload.entries) if (entry.aaguid) entries.set(normalizeAaguid(entry.aaguid), entry);
69
+ return {
70
+ entries,
71
+ nextUpdate: verified.parsedNextUpdate.getTime()
72
+ };
73
+ }
74
+ async function getFidoMetadata() {
75
+ if (cachedMetadata && Date.now() < cachedMetadata.nextUpdate) return cachedMetadata;
76
+ metadataLoad ??= loadFidoMetadata().then((metadata) => {
77
+ cachedMetadata = metadata;
78
+ return metadata;
79
+ }).finally(() => {
80
+ metadataLoad = void 0;
81
+ });
82
+ return await metadataLoad;
83
+ }
84
+ function assertAllowedAaguid(aaguid, allowed) {
85
+ if (aaguid === ZERO_AAGUID) throw new Error("Authenticator did not provide a model-specific AAGUID.");
86
+ if (allowed && !allowed.has(aaguid)) throw new Error(`Authenticator AAGUID ${aaguid} is not allowed by this policy.`);
87
+ }
88
+ async function verifyWithFidoMds(input, allowed) {
89
+ assertFullAttestation(input.attestationObject);
90
+ const metadata = await getFidoMetadata();
91
+ const result = await verifyRegistrationResponse({
92
+ response: {
93
+ id: input.credentialId,
94
+ rawId: input.credentialId,
95
+ type: "public-key",
96
+ response: {
97
+ clientDataJSON: input.clientDataJSON,
98
+ attestationObject: input.attestationObject,
99
+ ...input.transports ? { transports: input.transports } : {}
100
+ },
101
+ clientExtensionResults: {}
102
+ },
103
+ expectedChallenge: input.expectedChallenge,
104
+ expectedOrigin: input.expectedOrigin,
105
+ expectedRPID: input.expectedRpId,
106
+ requireUserPresence: true,
107
+ requireUserVerification: input.requireUserVerification,
108
+ supportedAlgorithmIDs: input.supportedAlgorithms
109
+ });
110
+ if (!result.verified) throw new Error("Authenticator attestation verification failed.");
111
+ const aaguid = normalizeAaguid(result.registrationInfo.aaguid);
112
+ assertAllowedAaguid(aaguid, allowed);
113
+ const entry = metadata.entries.get(aaguid);
114
+ assertTrustedMetadataEntry(entry);
115
+ return {
116
+ aaguid,
117
+ format: result.registrationInfo.fmt,
118
+ metadataDescription: entry?.metadataStatement?.description
119
+ };
120
+ }
121
+ /**
122
+ * Require full manufacturer attestation verified against FIDO Metadata
123
+ * Service v3. Missing, self, anonymous, unknown, revoked, compromised, and
124
+ * optionally non-allow-listed authenticators are rejected.
125
+ *
126
+ * The metadata blob, signature, certificate path, and status reports are
127
+ * refreshed from the official FIDO service. A metadata outage therefore fails
128
+ * registration and strict sign-in closed.
129
+ *
130
+ * @param options - Optional authenticator model allow list.
131
+ * @returns A strict policy for `webauthn({ registration: { attestation } })`.
132
+ *
133
+ * @example
134
+ * ```ts
135
+ * import { webauthn } from "@estifanos-sh/convex-auth/providers";
136
+ *
137
+ * webauthn({
138
+ * registration: {
139
+ * authenticatorAttachment: "cross-platform",
140
+ * hints: ["security-key"],
141
+ * attestation: webauthn.attestation.fidoMds({
142
+ * allowedAaguids: ["2fc0579f-8113-47ea-b116-bb5a8db9202a"],
143
+ * }),
144
+ * },
145
+ * });
146
+ * ```
147
+ */
148
+ function fidoMds(options = {}) {
149
+ const allowed = normalizeAllowedAaguids(options.allowedAaguids);
150
+ return {
151
+ conveyance: "direct",
152
+ verifier: {
153
+ id: FIDO_MDS_VERIFIER,
154
+ verify: async (input) => await verifyWithFidoMds(input, allowed),
155
+ assertTrusted: async (evidence) => {
156
+ if (evidence.status !== "trusted" || evidence.verifier !== FIDO_MDS_VERIFIER) throw new Error("Credential has no trusted FIDO MDS attestation evidence.");
157
+ const aaguid = normalizeAaguid(evidence.aaguid);
158
+ assertAllowedAaguid(aaguid, allowed);
159
+ assertTrustedMetadataEntry((await getFidoMetadata()).entries.get(aaguid));
160
+ }
161
+ }
162
+ };
163
+ }
164
+
165
+ //#endregion
166
+ export { assertFullAttestation, assertTrustedMetadataEntry, fidoMds };
167
+ //# sourceMappingURL=attestation.js.map
@@ -0,0 +1,83 @@
1
+ import { WebAuthnAttestationEvidence, WebAuthnAttestationPolicy, WebAuthnProviderConfig } from "../server/types.js";
2
+ import { fidoMds } from "./webauthn/attestation.js";
3
+
4
+ //#region src/providers/webauthn.d.ts
5
+ /** WebAuthn Level 3 hints that browsers may use to guide authenticator selection. */
6
+ type WebAuthnHint = "security-key" | "client-device" | "hybrid";
7
+ /** COSE algorithms supported by the WebAuthn verifier. */
8
+ type WebAuthnAlgorithm = -7 | -257;
9
+ /** Registration-ceremony options for the {@link webauthn} provider. */
10
+ interface WebAuthnRegistrationConfig {
11
+ /** Restrict registration to platform or roaming authenticators. */
12
+ authenticatorAttachment?: "platform" | "cross-platform";
13
+ /** Discoverable credential preference. */
14
+ residentKey?: "required" | "preferred" | "discouraged";
15
+ /** User verification requirement for registration. */
16
+ userVerification?: "required" | "preferred" | "discouraged";
17
+ /** Non-binding hints used by supporting browsers to guide authenticator selection. */
18
+ hints?: readonly WebAuthnHint[];
19
+ /** Supported COSE algorithms in authenticator preference order. */
20
+ algorithms?: readonly WebAuthnAlgorithm[];
21
+ /**
22
+ * Strict authenticator-attestation policy. When present, registration and
23
+ * every later sign-in fail unless the credential has current trusted
24
+ * evidence from this policy.
25
+ */
26
+ attestation?: WebAuthnAttestationPolicy;
27
+ }
28
+ /** Authentication-ceremony options for the {@link webauthn} provider. */
29
+ interface WebAuthnAuthenticationConfig {
30
+ /** User verification requirement for authentication. */
31
+ userVerification?: "required" | "preferred" | "discouraged";
32
+ /** Non-binding hints used by supporting browsers to guide authenticator selection. */
33
+ hints?: readonly WebAuthnHint[];
34
+ }
35
+ /** Configuration for the {@link webauthn} provider. */
36
+ interface WebAuthnConfig {
37
+ /** Human-readable relying party name shown in authenticator prompts. */
38
+ rpName?: string;
39
+ /** Relying party ID, typically your app's hostname. */
40
+ rpId?: string;
41
+ /** Allowed origins for registration and authentication ceremonies. */
42
+ origin?: string | readonly string[];
43
+ /** Challenge lifetime in milliseconds before a ceremony expires. */
44
+ challengeExpirationMs?: number;
45
+ /** Credential-creation ceremony options. */
46
+ registration?: WebAuthnRegistrationConfig;
47
+ /** Credential-authentication ceremony options. */
48
+ authentication?: WebAuthnAuthenticationConfig;
49
+ }
50
+ /**
51
+ * Create a WebAuthn provider.
52
+ *
53
+ * @param config - Optional relying-party and ceremony-specific settings.
54
+ * @returns A configured WebAuthn provider for `defineAuth`.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * import { webauthn } from "@estifanos-sh/convex-auth/providers";
59
+ *
60
+ * webauthn({
61
+ * rpName: "Staff access",
62
+ * registration: {
63
+ * authenticatorAttachment: "cross-platform",
64
+ * residentKey: "discouraged",
65
+ * userVerification: "required",
66
+ * hints: ["security-key"],
67
+ * attestation: webauthn.attestation.fidoMds(),
68
+ * },
69
+ * authentication: {
70
+ * userVerification: "required",
71
+ * hints: ["security-key"],
72
+ * },
73
+ * })
74
+ * ```
75
+ */
76
+ declare const webauthn: ((config?: WebAuthnConfig) => WebAuthnProviderConfig) & {
77
+ /** WebAuthn attestation policies. */attestation: Readonly<{
78
+ fidoMds: typeof fidoMds;
79
+ }>;
80
+ };
81
+ //#endregion
82
+ export { WebAuthnAlgorithm, type WebAuthnAttestationEvidence, type WebAuthnAttestationPolicy, WebAuthnAuthenticationConfig, WebAuthnConfig, WebAuthnHint, WebAuthnRegistrationConfig, webauthn };
83
+ //# sourceMappingURL=webauthn.d.ts.map
@@ -0,0 +1,57 @@
1
+ import { fidoMds } from "./webauthn/attestation.js";
2
+
3
+ //#region src/providers/webauthn.ts
4
+ /**
5
+ * Create a WebAuthn provider.
6
+ *
7
+ * @param config - Optional relying-party and ceremony-specific settings.
8
+ * @returns A configured WebAuthn provider for `defineAuth`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { webauthn } from "@estifanos-sh/convex-auth/providers";
13
+ *
14
+ * webauthn({
15
+ * rpName: "Staff access",
16
+ * registration: {
17
+ * authenticatorAttachment: "cross-platform",
18
+ * residentKey: "discouraged",
19
+ * userVerification: "required",
20
+ * hints: ["security-key"],
21
+ * attestation: webauthn.attestation.fidoMds(),
22
+ * },
23
+ * authentication: {
24
+ * userVerification: "required",
25
+ * hints: ["security-key"],
26
+ * },
27
+ * })
28
+ * ```
29
+ */
30
+ const webauthn = Object.assign(function webauthn(config = {}) {
31
+ return {
32
+ id: "webauthn",
33
+ type: "webauthn",
34
+ options: {
35
+ rpName: config.rpName,
36
+ rpId: config.rpId,
37
+ origin: typeof config.origin === "string" ? config.origin : config.origin ? [...config.origin] : void 0,
38
+ challengeExpirationMs: config.challengeExpirationMs ?? 3e5,
39
+ registration: {
40
+ residentKey: config.registration?.residentKey ?? "preferred",
41
+ userVerification: config.registration?.userVerification ?? "required",
42
+ algorithms: [...config.registration?.algorithms ?? [-7, -257]],
43
+ ...config.registration?.authenticatorAttachment ? { authenticatorAttachment: config.registration.authenticatorAttachment } : {},
44
+ ...config.registration?.hints ? { hints: [...config.registration.hints] } : {},
45
+ ...config.registration?.attestation ? { attestation: config.registration.attestation } : {}
46
+ },
47
+ authentication: {
48
+ userVerification: config.authentication?.userVerification ?? "required",
49
+ ...config.authentication?.hints ? { hints: [...config.authentication.hints] } : {}
50
+ }
51
+ }
52
+ };
53
+ }, { attestation: Object.freeze({ fidoMds }) });
54
+
55
+ //#endregion
56
+ export { webauthn };
57
+ //# sourceMappingURL=webauthn.js.map
@@ -0,0 +1,55 @@
1
+ import { AuthApiRefs, AuthState, PlatformAuthClient, SignInOverloads } from "../client/core/types.js";
2
+ import "../browser/index.js";
3
+ import { ReactElement, ReactNode } from "react";
4
+
5
+ //#region src/react/index.d.ts
6
+ type AnyAuthClient = PlatformAuthClient<AuthApiRefs<boolean, boolean, boolean>>;
7
+ /** Provide an app-owned auth client to descendants. */
8
+ declare function ConvexAuthProvider({
9
+ auth,
10
+ children
11
+ }: {
12
+ auth: AnyAuthClient;
13
+ children: ReactNode;
14
+ }): ReactElement;
15
+ /** Read the current auth state. Throws if no {@link ConvexAuthProvider} is above. */
16
+ declare function useAuth(): AuthState;
17
+ /** Render children only when signed in; supports a render prop receiving the JWT. */
18
+ declare function SignedIn({
19
+ children
20
+ }: {
21
+ children: ReactNode | ((token: string) => ReactNode);
22
+ }): ReactElement | null;
23
+ /** Render children only when signed out. */
24
+ declare function SignedOut({
25
+ children
26
+ }: {
27
+ children: ReactNode;
28
+ }): ReactElement | null;
29
+ /**
30
+ * Render children only while auth is still resolving or Convex is confirming a
31
+ * stored token.
32
+ */
33
+ declare function AuthLoading({
34
+ children
35
+ }: {
36
+ children: ReactNode;
37
+ }): ReactElement | null;
38
+ /**
39
+ * The auth actions (`signIn`, `signOut`), always callable. Throws if no
40
+ * {@link ConvexAuthProvider} is above — matching Svelte's non-nullable
41
+ * `signIn`/`signOut`, so callers never have to null-check the actions.
42
+ */
43
+ declare function useAuthActions(): {
44
+ signIn: SignInOverloads;
45
+ signOut: () => Promise<void>;
46
+ };
47
+ /**
48
+ * The underlying imperative client, for factor flows (`client.totp.*`,
49
+ * `client.webauthn.*`, `client.device.*`) and low-level methods (`completeOAuth`,
50
+ * `param`, `initialize`). Throws if no {@link ConvexAuthProvider} is above.
51
+ */
52
+ declare function useConvexAuthClient(): AnyAuthClient;
53
+ //#endregion
54
+ export { AuthLoading, ConvexAuthProvider, SignedIn, SignedOut, useAuth, useAuthActions, useConvexAuthClient };
55
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,80 @@
1
+ "use client";
2
+
3
+ import { createContext, useCallback, useContext, useSyncExternalStore } from "react";
4
+ import { Fragment, jsx } from "react/jsx-runtime";
5
+
6
+ //#region src/react/index.tsx
7
+ /**
8
+ * React bindings for `@estifanos-sh/convex-auth/react`.
9
+ *
10
+ * @module
11
+ */
12
+ const AuthClientContext = createContext(null);
13
+ /** Provide an app-owned auth client to descendants. */
14
+ function ConvexAuthProvider({ auth, children }) {
15
+ return /* @__PURE__ */ jsx(AuthClientContext.Provider, {
16
+ value: auth,
17
+ children
18
+ });
19
+ }
20
+ const NO_PROVIDER_MESSAGE = "No auth client found. Wrap the component tree in <ConvexAuthProvider auth={...}> before using the auth hooks.";
21
+ /**
22
+ * Read the app-owned auth client from context, throwing a clear error when no
23
+ * {@link ConvexAuthProvider} is above. Failing fast on a missing provider — the
24
+ * same contract as Svelte's `useConvexAuth()` — is far easier to debug than a
25
+ * silent, perpetual `loading` state, and lets the hooks return non-nullable
26
+ * values so callers never have to guard against an absent client.
27
+ */
28
+ function useAuthClientOrThrow() {
29
+ const client = useContext(AuthClientContext);
30
+ if (client === null) throw new Error(NO_PROVIDER_MESSAGE);
31
+ return client;
32
+ }
33
+ /** Read the current auth state. Throws if no {@link ConvexAuthProvider} is above. */
34
+ function useAuth() {
35
+ const client = useAuthClientOrThrow();
36
+ const subscribe = useCallback((onStoreChange) => client.subscribe(onStoreChange), [client]);
37
+ const getSnapshot = useCallback(() => client.getSnapshot(), [client]);
38
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
39
+ }
40
+ /** Render children only when signed in; supports a render prop receiving the JWT. */
41
+ function SignedIn({ children }) {
42
+ const state = useAuth();
43
+ if (state.status !== "signedIn") return null;
44
+ return /* @__PURE__ */ jsx(Fragment, { children: typeof children === "function" ? children(state.token) : children });
45
+ }
46
+ /** Render children only when signed out. */
47
+ function SignedOut({ children }) {
48
+ return useAuth().status === "signedOut" ? /* @__PURE__ */ jsx(Fragment, { children }) : null;
49
+ }
50
+ /**
51
+ * Render children only while auth is still resolving or Convex is confirming a
52
+ * stored token.
53
+ */
54
+ function AuthLoading({ children }) {
55
+ return useAuth().status === "loading" ? /* @__PURE__ */ jsx(Fragment, { children }) : null;
56
+ }
57
+ /**
58
+ * The auth actions (`signIn`, `signOut`), always callable. Throws if no
59
+ * {@link ConvexAuthProvider} is above — matching Svelte's non-nullable
60
+ * `signIn`/`signOut`, so callers never have to null-check the actions.
61
+ */
62
+ function useAuthActions() {
63
+ const client = useAuthClientOrThrow();
64
+ return {
65
+ signIn: client.signIn,
66
+ signOut: client.signOut
67
+ };
68
+ }
69
+ /**
70
+ * The underlying imperative client, for factor flows (`client.totp.*`,
71
+ * `client.webauthn.*`, `client.device.*`) and low-level methods (`completeOAuth`,
72
+ * `param`, `initialize`). Throws if no {@link ConvexAuthProvider} is above.
73
+ */
74
+ function useConvexAuthClient() {
75
+ return useAuthClientOrThrow();
76
+ }
77
+
78
+ //#endregion
79
+ export { AuthLoading, ConvexAuthProvider, SignedIn, SignedOut, useAuth, useAuthActions, useConvexAuthClient };
80
+ //# sourceMappingURL=index.js.map