@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,57 @@
1
+ import { createArcticOAuthClient, createOAuthProvider } from "../server/oauth/factory.js";
2
+ import { defaultOAuthRedirectUri } from "./redirect.js";
3
+ import { Apple } from "arctic";
4
+
5
+ //#region src/providers/apple.ts
6
+ /**
7
+ * Apple OAuth provider.
8
+ *
9
+ * ```ts
10
+ * import { apple } from "@estifanos-sh/convex-auth/providers/apple";
11
+ *
12
+ * apple({
13
+ * clientId: env.AUTH_APPLE_ID!,
14
+ * teamId: env.AUTH_APPLE_TEAM_ID!,
15
+ * keyId: env.AUTH_APPLE_KEY_ID!,
16
+ * privateKey: env.AUTH_APPLE_PRIVATE_KEY!,
17
+ * })
18
+ * ```
19
+ *
20
+ * @module
21
+ */
22
+ const DEFAULT_SCOPES = ["name", "email"];
23
+ /**
24
+ * Create an Apple OAuth provider.
25
+ *
26
+ * @param config - Apple Sign In client settings and signing key material.
27
+ * @returns A configured Apple OAuth provider for `defineAuth`.
28
+ * @throws {Error} When no callback URL can be derived and `redirectUri` is omitted.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * import { apple } from "@estifanos-sh/convex-auth/providers/apple";
33
+ *
34
+ * apple({
35
+ * clientId: env.AUTH_APPLE_ID!,
36
+ * teamId: env.AUTH_APPLE_TEAM_ID!,
37
+ * keyId: env.AUTH_APPLE_KEY_ID!,
38
+ * privateKey: env.AUTH_APPLE_PRIVATE_KEY!,
39
+ * })
40
+ * ```
41
+ */
42
+ function apple(config) {
43
+ const privateKey = typeof config.privateKey === "string" ? config.privateKey : new TextDecoder().decode(config.privateKey);
44
+ const scopes = config.scopes ?? DEFAULT_SCOPES;
45
+ const createProvider = (redirectUri) => new Apple(config.clientId, config.teamId, config.keyId, new TextEncoder().encode(privateKey), config.redirectUri ?? defaultOAuthRedirectUri("apple", redirectUri));
46
+ return createOAuthProvider({
47
+ id: "apple",
48
+ provider: createArcticOAuthClient(createProvider, { pkce: "never" }),
49
+ scopes,
50
+ accountLinking: config.accountLinking,
51
+ updateProfileOnLogin: config.updateProfileOnLogin
52
+ });
53
+ }
54
+
55
+ //#endregion
56
+ export { apple };
57
+ //# sourceMappingURL=apple.js.map
@@ -0,0 +1,30 @@
1
+ import { ConnectionProviderConfig } from "../server/types.js";
2
+
3
+ //#region src/providers/connection.d.ts
4
+ /**
5
+ * Create the group Connection provider.
6
+ *
7
+ * @param options - Optional Connection provider settings.
8
+ * @param options.redirectURI - Override the callback URI used for provider
9
+ * initiated sign-in flows.
10
+ * @returns A provider that enables the `auth.connection.*` admin facade and
11
+ * registers the runtime Connection routes.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { connection } from "@estifanos-sh/convex-auth/providers";
16
+ *
17
+ * connection()
18
+ * ```
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * connection({ redirectURI: "https://app.example.com/auth/connection/callback" })
23
+ * ```
24
+ */
25
+ declare function connection(options?: {
26
+ redirectURI?: string;
27
+ }): ConnectionProviderConfig;
28
+ //#endregion
29
+ export { connection };
30
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1,33 @@
1
+ //#region src/providers/connection.ts
2
+ /**
3
+ * Create the group Connection provider.
4
+ *
5
+ * @param options - Optional Connection provider settings.
6
+ * @param options.redirectURI - Override the callback URI used for provider
7
+ * initiated sign-in flows.
8
+ * @returns A provider that enables the `auth.connection.*` admin facade and
9
+ * registers the runtime Connection routes.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { connection } from "@estifanos-sh/convex-auth/providers";
14
+ *
15
+ * connection()
16
+ * ```
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * connection({ redirectURI: "https://app.example.com/auth/connection/callback" })
21
+ * ```
22
+ */
23
+ function connection(options) {
24
+ return {
25
+ id: "connection",
26
+ type: "connection",
27
+ redirectURI: options?.redirectURI
28
+ };
29
+ }
30
+
31
+ //#endregion
32
+ export { connection };
33
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1,78 @@
1
+ import { Hashed } from "../shared/brand.js";
2
+ import { SignInFlowResult } from "../shared/results.js";
3
+ import { SessionIssuance } from "../server/session/lifecycle.js";
4
+ import { AuthProfile } from "../server/payloads.js";
5
+ import { AuthProviderConfig, ConvexCredentialsConfig, GenericActionCtxWithAuthConfig } from "../server/types.js";
6
+ import { GenericId, Value } from "convex/values";
7
+ import { GenericDataModel } from "convex/server";
8
+
9
+ //#region src/providers/credentials.d.ts
10
+ type CredentialsProvisioning = {
11
+ /** Stable provider-owned identifier and optional credential secret. */account: {
12
+ id: string;
13
+ secret?: string;
14
+ }; /** User profile established by the provider's verified ceremony. */
15
+ profile: AuthProfile; /** Verified profile fields that may safely match an existing user. */
16
+ match?: Array<"email" | "phone">;
17
+ };
18
+ type CredentialsAuthorizeResult = {
19
+ userId: GenericId<"User">;
20
+ sessionId?: GenericId<"Session">;
21
+ /**
22
+ * TOTP step-up hint. `false` skips the verified-TOTP lookup;
23
+ * `true`/`undefined` falls back to it.
24
+ */
25
+ hasTotp?: boolean;
26
+ /**
27
+ * Pre-issued session from a combined verify+issue mutation. When set,
28
+ * the framework skips the second `callSignIn` mutation and finalizes
29
+ * the issuance directly on the action side.
30
+ */
31
+ issuance?: SessionIssuance;
32
+ } | {
33
+ /** Provision or retrieve the provider account before issuing a session. */provision: CredentialsProvisioning; /** TOTP step-up hint for the resulting user. */
34
+ hasTotp?: boolean;
35
+ } | Exclude<SignInFlowResult<null>, {
36
+ kind: "signedIn";
37
+ }> | null;
38
+ /** Configuration for the {@link credentials} provider. */
39
+ interface CredentialsConfig<DataModel extends GenericDataModel = GenericDataModel> {
40
+ /** Stable provider identifier used in `signIn("<id>")`. */
41
+ id?: string;
42
+ /**
43
+ * Validate the submitted credentials and return the authenticated user or
44
+ * verified identity to provision.
45
+ * Return `null` to reject the sign-in attempt.
46
+ */
47
+ authorize: (credentials: Partial<Record<string, Value | undefined>>, ctx: GenericActionCtxWithAuthConfig<DataModel>) => Promise<CredentialsAuthorizeResult>;
48
+ /** Optional hashing helpers for password-style credential verification. */
49
+ crypto?: {
50
+ hashSecret: (secret: string) => Promise<Hashed<"Password">>;
51
+ verifySecret: (secret: string, hash: Hashed<"Password">) => Promise<boolean>;
52
+ };
53
+ /** Additional providers to register alongside this credentials provider. */
54
+ extraProviders?: (AuthProviderConfig | undefined)[];
55
+ }
56
+ /**
57
+ * Create a credentials provider for custom sign-in logic.
58
+ *
59
+ * @typeParam DataModel - The Convex data model used by the auth context.
60
+ * @param config - Custom authorization and hashing hooks.
61
+ * @returns A configured credentials provider for `defineAuth`.
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * import { credentials } from "@estifanos-sh/convex-auth/providers";
66
+ *
67
+ * credentials({
68
+ * authorize: async (params, ctx) => {
69
+ * const user = await lookupUser(params.email, params.password, ctx);
70
+ * return user ? { userId: user._id } : null;
71
+ * },
72
+ * })
73
+ * ```
74
+ */
75
+ declare function credentials<DataModel extends GenericDataModel = GenericDataModel>(config: CredentialsConfig<DataModel>): ConvexCredentialsConfig<DataModel>;
76
+ //#endregion
77
+ export { CredentialsAuthorizeResult, CredentialsConfig, CredentialsProvisioning, credentials };
78
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1,31 @@
1
+ //#region src/providers/credentials.ts
2
+ /**
3
+ * Create a credentials provider for custom sign-in logic.
4
+ *
5
+ * @typeParam DataModel - The Convex data model used by the auth context.
6
+ * @param config - Custom authorization and hashing hooks.
7
+ * @returns A configured credentials provider for `defineAuth`.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { credentials } from "@estifanos-sh/convex-auth/providers";
12
+ *
13
+ * credentials({
14
+ * authorize: async (params, ctx) => {
15
+ * const user = await lookupUser(params.email, params.password, ctx);
16
+ * return user ? { userId: user._id } : null;
17
+ * },
18
+ * })
19
+ * ```
20
+ */
21
+ function credentials(config) {
22
+ return {
23
+ ...config,
24
+ id: config.id ?? "credentials",
25
+ type: "credentials"
26
+ };
27
+ }
28
+
29
+ //#endregion
30
+ export { credentials };
31
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1,96 @@
1
+ import { OAuthMaterializedConfig, OAuthProfile, OAuthTokens } from "../server/types.js";
2
+
3
+ //#region src/providers/custom.d.ts
4
+ type ScopeSeparator = " " | ",";
5
+ type PkceMode = "required" | "optional" | "never";
6
+ type TokenAuthMethod = "basic" | "body" | "none";
7
+ /** Configuration for the custom provider authorization URL. */
8
+ interface CustomOAuthAuthorizationConfig {
9
+ /** Authorization endpoint URL. */
10
+ url: string;
11
+ /** PKCE requirement for this provider's authorization flow. */
12
+ pkce?: PkceMode;
13
+ /** Query parameter name used for the client ID. */
14
+ clientIdParam?: string;
15
+ /** Query parameter name used for scopes. */
16
+ scopeParam?: string;
17
+ /** Separator used when joining multiple scopes. */
18
+ scopeSeparator?: ScopeSeparator;
19
+ /** Additional query parameters appended to the authorization URL. */
20
+ extraParams?: Record<string, string>;
21
+ }
22
+ /** Configuration for the custom provider token exchange request. */
23
+ interface CustomOAuthTokenConfig {
24
+ /** Token endpoint URL. */
25
+ url: string;
26
+ /** How client credentials are sent to the token endpoint. */
27
+ authMethod?: TokenAuthMethod;
28
+ /** Form field name used for the client ID. */
29
+ clientIdParam?: string;
30
+ /** Form field name used for the client secret. */
31
+ clientSecretParam?: string;
32
+ /** Form field name used for the PKCE code verifier. */
33
+ codeVerifierParam?: string;
34
+ /** Form field name used for scopes. */
35
+ scopeParam?: string;
36
+ /** Separator used when joining multiple scopes. */
37
+ scopeSeparator?: ScopeSeparator;
38
+ /** Whether to include the redirect URI in token requests. */
39
+ includeRedirectUri?: boolean;
40
+ /** Whether to include configured scopes in token requests. */
41
+ includeScopes?: boolean;
42
+ /** Additional form parameters appended to token requests. */
43
+ extraParams?: Record<string, string>;
44
+ }
45
+ /** Configuration for the {@link custom} provider. */
46
+ interface CustomOAuthConfig {
47
+ /** Stable provider identifier used in `signIn("<id>")`. */
48
+ id: string;
49
+ /** OAuth client identifier. */
50
+ clientId: string;
51
+ /** Optional OAuth client secret. */
52
+ clientSecret?: string | null;
53
+ /** Optional callback URL override. Defaults to the auth site URL plus `/callback/<id>`. */
54
+ redirectUri?: string;
55
+ /** Optional default scopes requested during sign-in. */
56
+ scopes?: string[];
57
+ /** Account-linking strategy for existing users with matching email addresses. */
58
+ accountLinking?: "verifiedEmail" | "none";
59
+ /** On returning sign-in, refresh `User.name`/`image`/`email` from the new profile. Defaults to `true`. */
60
+ updateProfileOnLogin?: boolean;
61
+ /** Whether the provider requires nonce generation and validation. */
62
+ nonce?: boolean;
63
+ /** Authorization endpoint configuration. */
64
+ authorization: CustomOAuthAuthorizationConfig;
65
+ /** Token exchange endpoint configuration. */
66
+ token: CustomOAuthTokenConfig;
67
+ /** Optional profile loader that converts OAuth tokens into a normalized profile. */
68
+ profile?: (tokens: OAuthTokens) => Promise<OAuthProfile>;
69
+ /** Optional token validation hook for provider-specific checks. */
70
+ validateTokens?: (tokens: OAuthTokens, ctx: {
71
+ nonce?: string;
72
+ }) => Promise<void>;
73
+ }
74
+ /**
75
+ * Create a custom OAuth provider.
76
+ *
77
+ * @param config - OAuth endpoints, credentials, and profile callbacks.
78
+ * @returns A configured OAuth provider for `defineAuth`.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * import { custom } from "@estifanos-sh/convex-auth/providers";
83
+ *
84
+ * custom({
85
+ * id: "workos",
86
+ * clientId: env.WORKOS_CLIENT_ID!,
87
+ * clientSecret: env.WORKOS_CLIENT_SECRET!,
88
+ * authorization: { url: "https://api.workos.com/connection/authorize" },
89
+ * token: { url: "https://api.workos.com/connection/token", authMethod: "basic" },
90
+ * })
91
+ * ```
92
+ */
93
+ declare function custom(config: CustomOAuthConfig): OAuthMaterializedConfig;
94
+ //#endregion
95
+ export { CustomOAuthAuthorizationConfig, CustomOAuthConfig, CustomOAuthTokenConfig, custom };
96
+ //# sourceMappingURL=custom.d.ts.map
@@ -0,0 +1,108 @@
1
+ import { normalizeOAuthTokenResponse } from "../server/oauth/normalize.js";
2
+ import { createOAuthProvider } from "../server/oauth/factory.js";
3
+ import { defaultOAuthRedirectUri } from "./redirect.js";
4
+ import { sha256 } from "@oslojs/crypto/sha2";
5
+ import { encodeBase64urlNoPadding } from "@oslojs/encoding";
6
+
7
+ //#region src/providers/custom.ts
8
+ /**
9
+ * Custom OAuth provider.
10
+ *
11
+ * Use this as an escape hatch for OAuth providers that do not have a first-
12
+ * party wrapper yet.
13
+ *
14
+ * @module
15
+ */
16
+ function joinScopes(scopes, separator = " ") {
17
+ return scopes.join(separator);
18
+ }
19
+ function createCodeChallenge(codeVerifier) {
20
+ return encodeBase64urlNoPadding(sha256(new TextEncoder().encode(codeVerifier)));
21
+ }
22
+ function createRuntimeClient(config) {
23
+ const authorization = config.authorization;
24
+ const token = config.token;
25
+ const pkce = authorization.pkce ?? "required";
26
+ const scopes = [...config.scopes ?? []];
27
+ const getRedirectUri = (redirectUri) => config.redirectUri ?? defaultOAuthRedirectUri(config.id, redirectUri);
28
+ return {
29
+ pkce,
30
+ createAuthorizationURL({ state, codeVerifier, scopes: requestedScopes, nonce, redirectUri: runtimeRedirectUri }) {
31
+ const redirectUri = getRedirectUri(runtimeRedirectUri);
32
+ const url = new URL(authorization.url);
33
+ const nextScopes = requestedScopes.length > 0 ? requestedScopes : scopes;
34
+ url.searchParams.set("response_type", "code");
35
+ url.searchParams.set(authorization.clientIdParam ?? "client_id", config.clientId);
36
+ url.searchParams.set("redirect_uri", redirectUri);
37
+ url.searchParams.set("state", state);
38
+ if (nextScopes.length > 0) url.searchParams.set(authorization.scopeParam ?? "scope", joinScopes(nextScopes, authorization.scopeSeparator));
39
+ if (codeVerifier !== void 0 && pkce !== "never") {
40
+ url.searchParams.set("code_challenge_method", "S256");
41
+ url.searchParams.set("code_challenge", createCodeChallenge(codeVerifier));
42
+ }
43
+ if (nonce !== void 0) url.searchParams.set("nonce", nonce);
44
+ for (const [key, value] of Object.entries(authorization.extraParams ?? {})) url.searchParams.set(key, value);
45
+ return url;
46
+ },
47
+ async validateAuthorizationCode({ code, codeVerifier, redirectUri: runtimeRedirectUri }) {
48
+ const redirectUri = getRedirectUri(runtimeRedirectUri);
49
+ const body = new URLSearchParams();
50
+ body.set("grant_type", "authorization_code");
51
+ body.set("code", code);
52
+ if (token.includeRedirectUri ?? true) body.set("redirect_uri", redirectUri);
53
+ if (pkce !== "never" && codeVerifier !== void 0) body.set(token.codeVerifierParam ?? "code_verifier", codeVerifier);
54
+ if (token.includeScopes === true && scopes.length > 0) body.set(token.scopeParam ?? "scope", joinScopes(scopes, token.scopeSeparator ?? authorization.scopeSeparator));
55
+ if (token.authMethod !== "basic") body.set(token.clientIdParam ?? "client_id", config.clientId);
56
+ if (token.authMethod !== "basic" && token.authMethod !== "none" && config.clientSecret) body.set(token.clientSecretParam ?? "client_secret", config.clientSecret);
57
+ for (const [key, value] of Object.entries(token.extraParams ?? {})) body.set(key, value);
58
+ const headers = new Headers({ "Content-Type": "application/x-www-form-urlencoded" });
59
+ if (token.authMethod === "basic") {
60
+ if (!config.clientSecret) throw new Error(`OAuth provider "${config.id}" requires clientSecret for token.authMethod="basic".`);
61
+ const credentials = btoa(`${config.clientId}:${config.clientSecret}`);
62
+ headers.set("Authorization", `Basic ${credentials}`);
63
+ }
64
+ const response = await fetch(token.url, {
65
+ method: "POST",
66
+ headers,
67
+ body
68
+ });
69
+ if (!response.ok) throw new Error(`OAuth token exchange failed: ${response.status}`);
70
+ return normalizeOAuthTokenResponse(await response.json());
71
+ }
72
+ };
73
+ }
74
+ /**
75
+ * Create a custom OAuth provider.
76
+ *
77
+ * @param config - OAuth endpoints, credentials, and profile callbacks.
78
+ * @returns A configured OAuth provider for `defineAuth`.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * import { custom } from "@estifanos-sh/convex-auth/providers";
83
+ *
84
+ * custom({
85
+ * id: "workos",
86
+ * clientId: env.WORKOS_CLIENT_ID!,
87
+ * clientSecret: env.WORKOS_CLIENT_SECRET!,
88
+ * authorization: { url: "https://api.workos.com/connection/authorize" },
89
+ * token: { url: "https://api.workos.com/connection/token", authMethod: "basic" },
90
+ * })
91
+ * ```
92
+ */
93
+ function custom(config) {
94
+ return createOAuthProvider({
95
+ id: config.id,
96
+ provider: createRuntimeClient(config),
97
+ scopes: config.scopes ?? [],
98
+ profile: config.profile,
99
+ nonce: config.nonce,
100
+ validateTokens: config.validateTokens,
101
+ accountLinking: config.accountLinking,
102
+ updateProfileOnLogin: config.updateProfileOnLogin
103
+ });
104
+ }
105
+
106
+ //#endregion
107
+ export { custom };
108
+ //# sourceMappingURL=custom.js.map
@@ -0,0 +1,33 @@
1
+ import { DeviceProviderConfig } from "../server/types.js";
2
+
3
+ //#region src/providers/device.d.ts
4
+ /** Configuration for the {@link device} provider. */
5
+ interface DeviceConfig {
6
+ /** Character set used to generate the short user code. */
7
+ charset?: string;
8
+ /** Number of characters in the generated user code. */
9
+ userCodeLength?: number;
10
+ /** Device code lifetime in seconds. */
11
+ expiresIn?: number;
12
+ /** Polling interval in seconds suggested to the device client. */
13
+ interval?: number;
14
+ /** Verification page URL shown to the user on the device. */
15
+ verificationUri?: string;
16
+ }
17
+ /**
18
+ * Create a device authorization provider.
19
+ *
20
+ * @param config - Optional device flow code and polling settings.
21
+ * @returns A configured device flow provider for `defineAuth`.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * import { device } from "@estifanos-sh/convex-auth/providers";
26
+ *
27
+ * device({ verificationUri: "https://example.com/device" })
28
+ * ```
29
+ */
30
+ declare function device(config?: DeviceConfig): DeviceProviderConfig;
31
+ //#endregion
32
+ export { DeviceConfig, device };
33
+ //# sourceMappingURL=device.d.ts.map
@@ -0,0 +1,30 @@
1
+ //#region src/providers/device.ts
2
+ const DEFAULT_CHARSET = "BCDFGHJKLMNPQRSTVWXZ";
3
+ /**
4
+ * Create a device authorization provider.
5
+ *
6
+ * @param config - Optional device flow code and polling settings.
7
+ * @returns A configured device flow provider for `defineAuth`.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { device } from "@estifanos-sh/convex-auth/providers";
12
+ *
13
+ * device({ verificationUri: "https://example.com/device" })
14
+ * ```
15
+ */
16
+ function device(config = {}) {
17
+ return {
18
+ id: "device",
19
+ type: "device",
20
+ charset: config.charset ?? DEFAULT_CHARSET,
21
+ userCodeLength: config.userCodeLength ?? 8,
22
+ expiresIn: config.expiresIn ?? 900,
23
+ interval: config.interval ?? 5,
24
+ verificationUri: config.verificationUri
25
+ };
26
+ }
27
+
28
+ //#endregion
29
+ export { device };
30
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1,45 @@
1
+ import { EmailConfig } from "../server/types.js";
2
+ import { AnyDataModel, GenericActionCtx } from "convex/server";
3
+
4
+ //#region src/providers/email.d.ts
5
+ /** Configuration for the {@link email} provider. */
6
+ interface EmailProviderConfig {
7
+ /** Sender address used for outgoing verification emails. */
8
+ from: string;
9
+ /** Delivery callback that actually sends the rendered verification email. */
10
+ send: (ctx: GenericActionCtx<AnyDataModel>, opts: {
11
+ from: string;
12
+ to: string;
13
+ subject: string;
14
+ html: string;
15
+ }) => Promise<void>;
16
+ /** Optional custom token generator for OTP or magic-link flows. */
17
+ generateVerificationToken?: () => Promise<string>;
18
+ /** Stable provider identifier used in `signIn("<id>")`. */
19
+ id?: string;
20
+ /** Verification token lifetime in seconds. */
21
+ maxAge?: number;
22
+ }
23
+ /**
24
+ * Create an email magic link or OTP provider.
25
+ *
26
+ * @param config - Sender identity and delivery hooks for verification emails.
27
+ * @returns A configured email provider for `defineAuth`.
28
+ * @throws {Error} When `from` is empty.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * import { email } from "@estifanos-sh/convex-auth/providers";
33
+ *
34
+ * email({
35
+ * from: "My App <noreply@example.com>",
36
+ * send: async (_ctx, message) => {
37
+ * await resend.emails.send(message);
38
+ * },
39
+ * })
40
+ * ```
41
+ */
42
+ declare function email(config: EmailProviderConfig): EmailConfig;
43
+ //#endregion
44
+ export { EmailProviderConfig, email };
45
+ //# sourceMappingURL=email.d.ts.map
@@ -0,0 +1,52 @@
1
+ import { defaultMagicLinkEmail } from "../server/templates.js";
2
+
3
+ //#region src/providers/email.ts
4
+ /**
5
+ * Create an email magic link or OTP provider.
6
+ *
7
+ * @param config - Sender identity and delivery hooks for verification emails.
8
+ * @returns A configured email provider for `defineAuth`.
9
+ * @throws {Error} When `from` is empty.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { email } from "@estifanos-sh/convex-auth/providers";
14
+ *
15
+ * email({
16
+ * from: "My App <noreply@example.com>",
17
+ * send: async (_ctx, message) => {
18
+ * await resend.emails.send(message);
19
+ * },
20
+ * })
21
+ * ```
22
+ */
23
+ function email(config) {
24
+ const from = config.from.trim();
25
+ if (from.length === 0) throw new Error("Email provider requires a non-empty `from` address (for example, `\"My App <noreply@example.com>\"`).");
26
+ const { send } = config;
27
+ const { generateVerificationToken } = config;
28
+ return {
29
+ id: config.id ?? "email",
30
+ type: "email",
31
+ name: "Email",
32
+ from,
33
+ maxAge: config.maxAge ?? 3600 * 24,
34
+ authorize: void 0,
35
+ sendVerificationRequest: async ({ identifier, url }, ctx) => {
36
+ if (!ctx) throw new Error("Email provider requires a Convex action context.");
37
+ const { host } = new URL(url);
38
+ await send(ctx, {
39
+ from,
40
+ to: identifier,
41
+ subject: `Sign in to ${host}`,
42
+ html: defaultMagicLinkEmail(url, host)
43
+ });
44
+ },
45
+ generateVerificationToken,
46
+ options: { from }
47
+ };
48
+ }
49
+
50
+ //#endregion
51
+ export { email };
52
+ //# sourceMappingURL=email.js.map
@@ -0,0 +1,56 @@
1
+ import { OAuthMaterializedConfig } from "../server/types.js";
2
+
3
+ //#region src/providers/github.d.ts
4
+ /**
5
+ * GitHub OAuth provider.
6
+ *
7
+ * ```ts
8
+ * import { github } from "@estifanos-sh/convex-auth/providers/github";
9
+ *
10
+ * github({
11
+ * clientId: env.AUTH_GITHUB_ID!,
12
+ * clientSecret: env.AUTH_GITHUB_SECRET!,
13
+ * })
14
+ * ```
15
+ *
16
+ * @module
17
+ */
18
+ /** Configuration for the {@link github} provider. */
19
+ interface GitHubConfig {
20
+ /** OAuth app client ID from GitHub. */
21
+ clientId: string;
22
+ /** OAuth app client secret from GitHub. */
23
+ clientSecret: string;
24
+ /** Optional callback URL override. Defaults to the auth site URL plus `/callback/github`. */
25
+ redirectUri?: string;
26
+ /** Optional OAuth scopes. Defaults to `user:email`. */
27
+ scopes?: string[];
28
+ /** Account-linking strategy for existing users with matching email addresses. */
29
+ accountLinking?: "verifiedEmail" | "none";
30
+ /** On returning sign-in, refresh `User.name`/`image`/`email` from the new profile. Defaults to `true`. */
31
+ updateProfileOnLogin?: boolean;
32
+ }
33
+ /**
34
+ * Create a GitHub OAuth provider.
35
+ *
36
+ * GitHub is not OIDC by default, so this wrapper fetches the profile and email
37
+ * data for you after the OAuth code exchange.
38
+ *
39
+ * @param config - GitHub OAuth client settings.
40
+ * @returns A configured GitHub OAuth provider for `defineAuth`.
41
+ * @throws {Error} When no callback URL can be derived and `redirectUri` is omitted.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * import { github } from "@estifanos-sh/convex-auth/providers/github";
46
+ *
47
+ * github({
48
+ * clientId: env.AUTH_GITHUB_ID!,
49
+ * clientSecret: env.AUTH_GITHUB_SECRET!,
50
+ * })
51
+ * ```
52
+ */
53
+ declare function github(config: GitHubConfig): OAuthMaterializedConfig;
54
+ //#endregion
55
+ export { GitHubConfig, github };
56
+ //# sourceMappingURL=github.d.ts.map