@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,401 @@
1
+ import { vApiKeyRateLimit, vApiKeyRateLimitState, vApiKeyScope, vAuthEventActorType, vAuthEventCategory, vAuthEventData, vAuthEventKind, vAuthEventOutcome, vAuthEventSubjectType, vAuthEventTargetKind, vDeviceStatus, vGroupConnectionPolicy, vGroupConnectionProtocol, vGroupConnectionSecretKind, vGroupConnectionStatus, vInviteStatus, vScimResourceType, vScimStatus, vTokenEndpointAuthMethod, vWebhookDeliveryStatus, vWebhookEndpointStatus } from "./model.js";
2
+ import { v } from "convex/values";
3
+ import { defineSchema, defineTable } from "convex/server";
4
+
5
+ //#region src/component/schema.ts
6
+ /**
7
+ * Schema for the auth component.
8
+ *
9
+ * Contains tables for core authentication (users, sessions, accounts, tokens,
10
+ * verification codes, PKCE verifiers, rate limits) and hierarchical group
11
+ * management (groups, members, invites).
12
+ */
13
+ var schema_default = defineSchema({
14
+ User: defineTable({
15
+ name: v.optional(v.string()),
16
+ firstName: v.optional(v.string()),
17
+ lastName: v.optional(v.string()),
18
+ image: v.optional(v.string()),
19
+ email: v.optional(v.string()),
20
+ emailVerificationTime: v.optional(v.number()),
21
+ phone: v.optional(v.string()),
22
+ phoneVerificationTime: v.optional(v.number()),
23
+ isAnonymous: v.optional(v.boolean()),
24
+ lastActiveGroup: v.optional(v.id("Group")),
25
+ hasTotp: v.optional(v.boolean()),
26
+ extend: v.optional(v.any())
27
+ }).index("email", ["email"]).index("email_verified", ["email", "emailVerificationTime"]).index("phone", ["phone"]).index("phone_verified", ["phone", "phoneVerificationTime"]),
28
+ UserEmail: defineTable({
29
+ userId: v.id("User"),
30
+ email: v.string(),
31
+ verificationTime: v.optional(v.number()),
32
+ isPrimary: v.boolean(),
33
+ source: v.union(v.literal("password"), v.literal("oauth"), v.literal("oidc"), v.literal("saml"), v.literal("scim")),
34
+ accountId: v.optional(v.id("Account")),
35
+ provider: v.optional(v.string()),
36
+ connectionId: v.optional(v.id("GroupConnection"))
37
+ }).index("user_id", ["userId"]).index("user_id_email", ["userId", "email"]).index("connection_id_email", ["connectionId", "email"]),
38
+ Session: defineTable({
39
+ userId: v.id("User"),
40
+ expirationTime: v.number()
41
+ }).index("user_id", ["userId"]).index("expiration_time", ["expirationTime"]),
42
+ Account: defineTable({
43
+ userId: v.id("User"),
44
+ provider: v.string(),
45
+ providerAccountId: v.string(),
46
+ secret: v.optional(v.string()),
47
+ emailVerified: v.optional(v.string()),
48
+ phoneVerified: v.optional(v.string()),
49
+ extend: v.optional(v.any())
50
+ }).index("user_id_provider", ["userId", "provider"]).index("provider_account_id", ["provider", "providerAccountId"]),
51
+ RefreshToken: defineTable({
52
+ sessionId: v.id("Session"),
53
+ expirationTime: v.number(),
54
+ firstUsedTime: v.optional(v.number()),
55
+ parentRefreshTokenId: v.optional(v.id("RefreshToken"))
56
+ }).index("session_id", ["sessionId"]).index("session_id_first_used", ["sessionId", "firstUsedTime"]).index("session_id_parent_refresh_token_id", ["sessionId", "parentRefreshTokenId"]).index("expiration_time", ["expirationTime"]),
57
+ VerificationCode: defineTable({
58
+ accountId: v.id("Account"),
59
+ provider: v.string(),
60
+ code: v.string(),
61
+ expirationTime: v.number(),
62
+ verifier: v.optional(v.string()),
63
+ emailVerified: v.optional(v.string()),
64
+ phoneVerified: v.optional(v.string())
65
+ }).index("account_id", ["accountId"]).index("code", ["code"]).index("expiration_time", ["expirationTime"]),
66
+ AuthVerifier: defineTable({
67
+ sessionId: v.optional(v.id("Session")),
68
+ signature: v.optional(v.string()),
69
+ expirationTime: v.optional(v.number())
70
+ }).index("signature", ["signature"]).index("expiration_time", ["expirationTime"]),
71
+ SignInLimit: defineTable({
72
+ identifier: v.string(),
73
+ tokens: v.number(),
74
+ updatedAt: v.number()
75
+ }).index("identifier", ["identifier"]).index("updated_at", ["updatedAt"]),
76
+ Passkey: defineTable({
77
+ userId: v.id("User"),
78
+ credentialId: v.string(),
79
+ publicKey: v.bytes(),
80
+ algorithm: v.number(),
81
+ counter: v.number(),
82
+ transports: v.optional(v.array(v.string())),
83
+ deviceType: v.string(),
84
+ backedUp: v.boolean(),
85
+ name: v.optional(v.string()),
86
+ attestation: v.optional(v.object({
87
+ verifier: v.string(),
88
+ aaguid: v.string(),
89
+ format: v.string(),
90
+ metadataDescription: v.optional(v.string()),
91
+ verifiedAt: v.number(),
92
+ status: v.literal("trusted")
93
+ })),
94
+ createdAt: v.number(),
95
+ lastUsedAt: v.optional(v.number())
96
+ }).index("user_id", ["userId"]).index("credential_id", ["credentialId"]),
97
+ TotpFactor: defineTable({
98
+ userId: v.id("User"),
99
+ secret: v.bytes(),
100
+ digits: v.number(),
101
+ period: v.number(),
102
+ verified: v.boolean(),
103
+ name: v.optional(v.string()),
104
+ createdAt: v.number(),
105
+ lastUsedAt: v.optional(v.number())
106
+ }).index("user_id", ["userId"]).index("user_id_verified", ["userId", "verified"]),
107
+ DeviceCode: defineTable({
108
+ deviceCodeHash: v.string(),
109
+ userCode: v.string(),
110
+ expiresAt: v.number(),
111
+ interval: v.number(),
112
+ status: vDeviceStatus,
113
+ userId: v.optional(v.id("User")),
114
+ sessionId: v.optional(v.id("Session")),
115
+ lastPolledAt: v.optional(v.number())
116
+ }).index("device_code_hash", ["deviceCodeHash"]).index("user_code_status", ["userCode", "status"]).index("expires_at", ["expiresAt"]),
117
+ Group: defineTable({
118
+ name: v.string(),
119
+ slug: v.optional(v.string()),
120
+ type: v.optional(v.string()),
121
+ parentGroupId: v.optional(v.id("Group")),
122
+ rootGroupId: v.optional(v.id("Group")),
123
+ isRoot: v.optional(v.boolean()),
124
+ policy: v.optional(vGroupConnectionPolicy),
125
+ extend: v.optional(v.any()),
126
+ tags: v.optional(v.any())
127
+ }).index("name", ["name"]).index("slug", ["slug"]).index("parent_group_id", ["parentGroupId"]).index("parent_group_id_name", ["parentGroupId", "name"]).index("parent_group_id_slug", ["parentGroupId", "slug"]).index("parent_group_id_type", ["parentGroupId", "type"]).index("root_group_id", ["rootGroupId"]).index("is_root", ["isRoot"]).index("type", ["type"]).index("type_parent_group_id", ["type", "parentGroupId"]),
128
+ GroupHierarchyOperation: defineTable({
129
+ groupId: v.id("Group"),
130
+ kind: v.union(v.literal("remove"), v.literal("restamp")),
131
+ phase: v.union(v.literal("planning"), v.literal("applying"), v.literal("cleaning")),
132
+ newRootGroupId: v.optional(v.id("Group")),
133
+ expectedParentGroupId: v.optional(v.id("Group"))
134
+ }).index("group_id_kind", ["groupId", "kind"]).index("group_id_kind_parent_root", [
135
+ "groupId",
136
+ "kind",
137
+ "expectedParentGroupId",
138
+ "newRootGroupId"
139
+ ]),
140
+ GroupHierarchyWork: defineTable({
141
+ operationId: v.id("GroupHierarchyOperation"),
142
+ kind: v.union(v.literal("remove"), v.literal("restamp")),
143
+ groupId: v.id("Group"),
144
+ parentWorkId: v.optional(v.id("GroupHierarchyWork")),
145
+ expectedParentGroupId: v.optional(v.id("Group")),
146
+ depth: v.number(),
147
+ planned: v.boolean(),
148
+ applied: v.boolean(),
149
+ eligible: v.optional(v.boolean()),
150
+ scanCursor: v.optional(v.string())
151
+ }).index("operation_id_group_id", ["operationId", "groupId"]).index("operation_id_planned", ["operationId", "planned"]).index("operation_id_applied_depth", [
152
+ "operationId",
153
+ "applied",
154
+ "depth"
155
+ ]).index("group_id", ["groupId"]).index("group_id_kind", ["groupId", "kind"]),
156
+ GroupMember: defineTable({
157
+ groupId: v.id("Group"),
158
+ userId: v.id("User"),
159
+ role: v.optional(v.string()),
160
+ roleIds: v.optional(v.array(v.string())),
161
+ status: v.optional(v.string()),
162
+ extend: v.optional(v.any())
163
+ }).index("group_id", ["groupId"]).index("group_id_user_id", ["groupId", "userId"]).index("group_id_status", ["groupId", "status"]).index("user_id", ["userId"]).index("user_id_status", ["userId", "status"]).index("status", ["status"]),
164
+ GroupInvite: defineTable({
165
+ groupId: v.optional(v.id("Group")),
166
+ invitedByUserId: v.optional(v.id("User")),
167
+ email: v.optional(v.string()),
168
+ tokenHash: v.string(),
169
+ role: v.optional(v.string()),
170
+ roleIds: v.optional(v.array(v.string())),
171
+ status: vInviteStatus,
172
+ expiresTime: v.optional(v.number()),
173
+ acceptedByUserId: v.optional(v.id("User")),
174
+ acceptedTime: v.optional(v.number()),
175
+ extend: v.optional(v.any())
176
+ }).index("token_hash", ["tokenHash"]).index("status", ["status"]).index("email_status", ["email", "status"]).index("email_group_id_status", [
177
+ "email",
178
+ "groupId",
179
+ "status"
180
+ ]).index("invited_by_user_id_status", ["invitedByUserId", "status"]).index("group_id", ["groupId"]).index("group_id_status", ["groupId", "status"]).index("group_id_email_status", [
181
+ "groupId",
182
+ "email",
183
+ "status"
184
+ ]).index("expires_time", ["expiresTime"]),
185
+ GroupConnection: defineTable({
186
+ groupId: v.id("Group"),
187
+ slug: v.optional(v.string()),
188
+ name: v.optional(v.string()),
189
+ protocol: vGroupConnectionProtocol,
190
+ status: vGroupConnectionStatus,
191
+ config: v.optional(v.any()),
192
+ extend: v.optional(v.any())
193
+ }).index("group_id", ["groupId"]).index("name", ["name"]).index("slug", ["slug"]).index("status", ["status"]).index("group_id_name", ["groupId", "name"]).index("group_id_status", ["groupId", "status"]).index("group_id_slug", ["groupId", "slug"]),
194
+ GroupConnectionDomain: defineTable({
195
+ connectionId: v.id("GroupConnection"),
196
+ groupId: v.id("Group"),
197
+ domain: v.string(),
198
+ isPrimary: v.boolean(),
199
+ verifiedAt: v.optional(v.number())
200
+ }).index("connection_id", ["connectionId"]).index("group_id", ["groupId"]).index("domain", ["domain"]),
201
+ SamlLoginRequest: defineTable({
202
+ connectionId: v.id("GroupConnection"),
203
+ requestId: v.string(),
204
+ createdAt: v.number(),
205
+ expiresAt: v.number(),
206
+ acceptedAt: v.optional(v.number())
207
+ }).index("request_id", ["requestId"]).index("expires_at", ["expiresAt"]),
208
+ SamlSeenAssertion: defineTable({
209
+ connectionId: v.id("GroupConnection"),
210
+ assertionId: v.string(),
211
+ expiresAt: v.number()
212
+ }).index("connection_id_assertion_id", ["connectionId", "assertionId"]).index("expires_at", ["expiresAt"]),
213
+ GroupConnectionDomainVerification: defineTable({
214
+ connectionId: v.id("GroupConnection"),
215
+ groupId: v.id("Group"),
216
+ domainId: v.id("GroupConnectionDomain"),
217
+ domain: v.string(),
218
+ recordName: v.string(),
219
+ token: v.string(),
220
+ tokenHash: v.string(),
221
+ requestedAt: v.number(),
222
+ expiresAt: v.number()
223
+ }).index("connection_id", ["connectionId"]).index("domain_id", ["domainId"]).index("token_hash", ["tokenHash"]).index("expires_at", ["expiresAt"]),
224
+ GroupConnectionSecret: defineTable({
225
+ connectionId: v.id("GroupConnection"),
226
+ groupId: v.id("Group"),
227
+ kind: vGroupConnectionSecretKind,
228
+ ciphertext: v.string(),
229
+ updatedAt: v.number()
230
+ }).index("connection_id", ["connectionId"]).index("connection_id_kind", ["connectionId", "kind"]).index("group_id", ["groupId"]),
231
+ GroupConnectionScimConfig: defineTable({
232
+ connectionId: v.id("GroupConnection"),
233
+ groupId: v.id("Group"),
234
+ status: vScimStatus,
235
+ basePath: v.string(),
236
+ tokenHash: v.string(),
237
+ lastRotatedAt: v.optional(v.number()),
238
+ extend: v.optional(v.any())
239
+ }).index("group_connection_id", ["connectionId"]).index("group_id", ["groupId"]).index("token_hash", ["tokenHash"]).index("status", ["status"]),
240
+ GroupConnectionScimIdentity: defineTable({
241
+ connectionId: v.id("GroupConnection"),
242
+ groupId: v.id("Group"),
243
+ resourceType: vScimResourceType,
244
+ externalId: v.string(),
245
+ userId: v.optional(v.id("User")),
246
+ mappedGroupId: v.optional(v.id("Group")),
247
+ lastProvisionedAt: v.optional(v.number()),
248
+ active: v.optional(v.boolean()),
249
+ raw: v.optional(v.any())
250
+ }).index("group_connection_id", ["connectionId"]).index("group_id", ["groupId"]).index("group_connection_id_resource_type_external_id", [
251
+ "connectionId",
252
+ "resourceType",
253
+ "externalId"
254
+ ]).index("group_connection_id_user_id", ["connectionId", "userId"]).index("user_id", ["userId"]).index("mapped_group_id", ["mappedGroupId"]),
255
+ AuthEventProjection: defineTable({
256
+ eventId: v.string(),
257
+ targetKind: vAuthEventTargetKind,
258
+ targetId: v.string(),
259
+ kind: vAuthEventKind,
260
+ category: vAuthEventCategory,
261
+ occurredAt: v.number(),
262
+ actorType: vAuthEventActorType,
263
+ actorId: v.optional(v.string()),
264
+ subjectType: vAuthEventSubjectType,
265
+ subjectId: v.optional(v.string()),
266
+ outcome: vAuthEventOutcome,
267
+ errorCode: v.optional(v.string()),
268
+ requestId: v.optional(v.string()),
269
+ ip: v.optional(v.string()),
270
+ userAgent: v.optional(v.string()),
271
+ data: v.optional(vAuthEventData),
272
+ streamId: v.optional(v.string()),
273
+ streamIndex: v.optional(v.number())
274
+ }).index("target_time", [
275
+ "targetKind",
276
+ "targetId",
277
+ "occurredAt"
278
+ ]).index("target_kind_time", [
279
+ "targetKind",
280
+ "targetId",
281
+ "kind",
282
+ "occurredAt"
283
+ ]).index("target_outcome_time", [
284
+ "targetKind",
285
+ "targetId",
286
+ "outcome",
287
+ "occurredAt"
288
+ ]).index("target_kind_outcome_time", [
289
+ "targetKind",
290
+ "targetId",
291
+ "kind",
292
+ "outcome",
293
+ "occurredAt"
294
+ ]).index("event_id_target", [
295
+ "eventId",
296
+ "targetKind",
297
+ "targetId"
298
+ ]).index("kind_time", ["kind", "occurredAt"]).index("category_time", ["category", "occurredAt"]).index("outcome_time", ["outcome", "occurredAt"]).index("actor_time", [
299
+ "actorType",
300
+ "actorId",
301
+ "occurredAt"
302
+ ]).index("subject_time", [
303
+ "subjectType",
304
+ "subjectId",
305
+ "occurredAt"
306
+ ]).index("request_id_time", ["requestId", "occurredAt"]).index("occurred_at", ["occurredAt"]),
307
+ GroupWebhookEndpoint: defineTable({
308
+ connectionId: v.id("GroupConnection"),
309
+ groupId: v.id("Group"),
310
+ url: v.string(),
311
+ status: vWebhookEndpointStatus,
312
+ secretCiphertext: v.optional(v.string()),
313
+ secretHash: v.optional(v.string()),
314
+ subscriptions: v.array(v.string()),
315
+ createdByUserId: v.optional(v.id("User")),
316
+ lastSuccessAt: v.optional(v.number()),
317
+ lastFailureAt: v.optional(v.number()),
318
+ failureCount: v.number(),
319
+ extend: v.optional(v.any())
320
+ }).index("group_connection_id", ["connectionId"]).index("group_id", ["groupId"]).index("status", ["status"]),
321
+ GroupWebhookDelivery: defineTable({
322
+ connectionId: v.id("GroupConnection"),
323
+ endpointId: v.id("GroupWebhookEndpoint"),
324
+ eventId: v.optional(v.string()),
325
+ kind: v.optional(vAuthEventKind),
326
+ status: vWebhookDeliveryStatus,
327
+ attemptCount: v.number(),
328
+ nextAttemptAt: v.number(),
329
+ lastAttemptAt: v.optional(v.number()),
330
+ lastResponseStatus: v.optional(v.number()),
331
+ lastError: v.optional(v.string()),
332
+ payload: v.any(),
333
+ signature: v.optional(v.string()),
334
+ signedAt: v.optional(v.number()),
335
+ eventType: v.optional(v.string()),
336
+ auditEventId: v.optional(v.string())
337
+ }).index("group_connection_id", ["connectionId"]).index("status_next_attempt_at", ["status", "nextAttemptAt"]).index("status_signed_at", ["status", "signedAt"]).index("endpoint_id_status", ["endpointId", "status"]).index("event_id", ["eventId"]).index("event_id_endpoint_id", ["eventId", "endpointId"]),
338
+ ApiKey: defineTable({
339
+ userId: v.id("User"),
340
+ prefix: v.string(),
341
+ hashedKey: v.string(),
342
+ name: v.string(),
343
+ scopes: v.array(vApiKeyScope),
344
+ rateLimit: v.optional(vApiKeyRateLimit),
345
+ rateLimitState: v.optional(vApiKeyRateLimitState),
346
+ expiresAt: v.optional(v.number()),
347
+ lastUsedAt: v.optional(v.number()),
348
+ createdAt: v.number(),
349
+ revoked: v.boolean(),
350
+ extend: v.optional(v.any()),
351
+ metadata: v.optional(v.any())
352
+ }).index("user_id", ["userId"]).index("hashed_key", ["hashedKey"]),
353
+ OAuthClient: defineTable({
354
+ clientId: v.string(),
355
+ clientSecretHash: v.optional(v.string()),
356
+ name: v.string(),
357
+ redirectUris: v.array(v.string()),
358
+ scopes: v.array(v.string()),
359
+ grantTypes: v.array(v.string()),
360
+ tokenEndpointAuthMethod: v.optional(vTokenEndpointAuthMethod),
361
+ registrationAccessTokenHash: v.optional(v.string()),
362
+ createdBy: v.optional(v.id("User")),
363
+ revoked: v.boolean(),
364
+ revokedAt: v.optional(v.number()),
365
+ extend: v.optional(v.any())
366
+ }).index("client_id", ["clientId"]).index("created_by", ["createdBy"]).index("created_by_revoked", ["createdBy", "revoked"]).index("revoked", ["revoked"]).index("revoked_at", ["revoked", "revokedAt"]),
367
+ OAuthCode: defineTable({
368
+ codeHash: v.string(),
369
+ userId: v.id("User"),
370
+ clientId: v.string(),
371
+ redirectUri: v.string(),
372
+ scopes: v.array(v.string()),
373
+ codeChallenge: v.string(),
374
+ resource: v.optional(v.string()),
375
+ expiresAt: v.number(),
376
+ usedAt: v.optional(v.number())
377
+ }).index("code_hash", ["codeHash"]).index("user_id", ["userId"]).index("expires_at", ["expiresAt"]),
378
+ OAuthRefreshGrant: defineTable({
379
+ clientId: v.string(),
380
+ userId: v.id("User"),
381
+ scopes: v.array(v.string()),
382
+ resource: v.optional(v.string()),
383
+ expiresAt: v.number(),
384
+ revokedAt: v.optional(v.number())
385
+ }).index("expires_at", ["expiresAt"]).index("revoked_at", ["revokedAt"]),
386
+ OAuthRefreshToken: defineTable({
387
+ tokenHash: v.string(),
388
+ grantId: v.optional(v.id("OAuthRefreshGrant")),
389
+ expiresAt: v.number(),
390
+ firstUsedTime: v.optional(v.number()),
391
+ parentTokenId: v.optional(v.id("OAuthRefreshToken"))
392
+ }).index("token_hash", ["tokenHash"]).index("grant_id", ["grantId"]).index("grant_id_first_used", ["grantId", "firstUsedTime"]).index("grant_id_parent_token_id_first_used", [
393
+ "grantId",
394
+ "parentTokenId",
395
+ "firstUsedTime"
396
+ ]).index("expires_at", ["expiresAt"])
397
+ });
398
+
399
+ //#endregion
400
+ export { schema_default as default };
401
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1,134 @@
1
+ import { vSessionDoc, vUserDoc } from "./model.js";
2
+ import { mutation, query } from "./_generated/server.js";
3
+ import { v } from "convex/values";
4
+
5
+ //#region src/component/session.ts
6
+ /**
7
+ * `component.session.*` — auth sessions.
8
+ *
9
+ * `issue` is a kept domain verb (token issuance).
10
+ *
11
+ * @module
12
+ */
13
+ const SESSION_TOKEN_DELETE_BATCH = 1024;
14
+ /**
15
+ * Create or rotate session rows inside an existing component mutation.
16
+ *
17
+ * Keeping the database work in a plain helper lets factor-specific completion
18
+ * mutations commit their anti-replay state and the new session atomically,
19
+ * without nesting another `ctx.runMutation` transaction.
20
+ *
21
+ * @internal
22
+ */
23
+ async function createSessionRows(ctx, args) {
24
+ const user = await ctx.db.get("User", args.userId);
25
+ if (user === null) return null;
26
+ let sessionId = args.sessionId;
27
+ let replacedSessionId = args.replaceSessionId;
28
+ if (sessionId === void 0) {
29
+ if (replacedSessionId !== void 0) {
30
+ if (await ctx.db.get("Session", replacedSessionId) !== null) await ctx.db.delete("Session", replacedSessionId);
31
+ else replacedSessionId = void 0;
32
+ const existingTokens = await ctx.db.query("RefreshToken").withIndex("session_id", (q) => q.eq("sessionId", args.replaceSessionId)).take(SESSION_TOKEN_DELETE_BATCH);
33
+ await Promise.all(existingTokens.map((token) => ctx.db.delete("RefreshToken", token._id)));
34
+ }
35
+ sessionId = await ctx.db.insert("Session", {
36
+ userId: user._id,
37
+ expirationTime: args.sessionExpirationTime
38
+ });
39
+ }
40
+ const refreshTokenId = args.refreshTokenExpirationTime === void 0 ? void 0 : await ctx.db.insert("RefreshToken", {
41
+ sessionId,
42
+ expirationTime: args.refreshTokenExpirationTime
43
+ });
44
+ return {
45
+ user,
46
+ sessionId,
47
+ ...refreshTokenId === void 0 ? {} : { refreshTokenId },
48
+ ...replacedSessionId === void 0 ? {} : { replacedSessionId }
49
+ };
50
+ }
51
+ /** Read a session by id. */
52
+ const get = query({
53
+ args: { id: v.id("Session") },
54
+ returns: v.union(vSessionDoc, v.null()),
55
+ handler: async (ctx, { id: sessionId }) => {
56
+ return await ctx.db.get("Session", sessionId);
57
+ }
58
+ });
59
+ /** List the sessions owned by a user. */
60
+ const list = query({
61
+ args: { userId: v.id("User") },
62
+ returns: v.array(vSessionDoc),
63
+ handler: async (ctx, { userId }) => {
64
+ return await ctx.db.query("Session").withIndex("user_id", (q) => q.eq("userId", userId)).take(REVOKE_FOR_USER_MAX);
65
+ }
66
+ });
67
+ /**
68
+ * Create (or rotate) a session together with its first refresh token.
69
+ * Returns the resolved `{ userId, sessionId, refreshTokenId }` — a command
70
+ * summary rather than `v.null()` — because callers need the freshly minted
71
+ * ids to mint tokens and set cookies. When a `replaceSessionId` session was
72
+ * present and deleted, its id is echoed back as `replacedSessionId` so the
73
+ * caller can emit a `session.invalidated` audit event for the terminated
74
+ * session.
75
+ */
76
+ const create = mutation({
77
+ args: {
78
+ userId: v.id("User"),
79
+ sessionId: v.optional(v.id("Session")),
80
+ replaceSessionId: v.optional(v.id("Session")),
81
+ sessionExpirationTime: v.number(),
82
+ refreshTokenExpirationTime: v.optional(v.number())
83
+ },
84
+ returns: v.object({
85
+ userId: v.id("User"),
86
+ sessionId: v.id("Session"),
87
+ refreshTokenId: v.optional(v.id("RefreshToken")),
88
+ replacedSessionId: v.optional(v.id("Session")),
89
+ user: vUserDoc
90
+ }),
91
+ handler: async (ctx, args) => {
92
+ const created = await createSessionRows(ctx, args);
93
+ if (created === null) throw new Error(`Cannot create a session for missing user ${args.userId}`);
94
+ return {
95
+ userId: args.userId,
96
+ ...created
97
+ };
98
+ }
99
+ });
100
+ /** Delete a session (no-op if it no longer exists). */
101
+ const remove = mutation({
102
+ args: { id: v.id("Session") },
103
+ returns: v.null(),
104
+ handler: async (ctx, { id: sessionId }) => {
105
+ if (await ctx.db.get("Session", sessionId) !== null) await ctx.db.delete("Session", sessionId);
106
+ return null;
107
+ }
108
+ });
109
+ /** Upper bound on sessions revoked in one de-provisioning transaction. */
110
+ const REVOKE_FOR_USER_MAX = 1e3;
111
+ /**
112
+ * Revoke every session a user owns, deleting each session and all of its
113
+ * refresh tokens in one atomic transaction. Used on SSO de-provisioning so an
114
+ * offboarded user's live session cookie and long-lived refresh token stop
115
+ * working immediately rather than at natural expiry. Bounded at
116
+ * {@link REVOKE_FOR_USER_MAX} sessions per call; returns the number revoked.
117
+ */
118
+ const revokeForUser = mutation({
119
+ args: { userId: v.id("User") },
120
+ returns: v.object({ revoked: v.number() }),
121
+ handler: async (ctx, { userId }) => {
122
+ const sessions = await ctx.db.query("Session").withIndex("user_id", (q) => q.eq("userId", userId)).take(REVOKE_FOR_USER_MAX);
123
+ for (const session of sessions) {
124
+ const tokens = await ctx.db.query("RefreshToken").withIndex("session_id", (q) => q.eq("sessionId", session._id)).take(SESSION_TOKEN_DELETE_BATCH);
125
+ for (const token of tokens) await ctx.db.delete("RefreshToken", token._id);
126
+ await ctx.db.delete("Session", session._id);
127
+ }
128
+ return { revoked: sessions.length };
129
+ }
130
+ });
131
+
132
+ //#endregion
133
+ export { create, createSessionRows, get, list, remove, revokeForUser };
134
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1,121 @@
1
+ import { vAuthVerifierDoc } from "../model.js";
2
+ import { mutation, query } from "../_generated/server.js";
3
+ import { v } from "convex/values";
4
+ import { getOneFrom } from "convex-helpers/server/relationships";
5
+
6
+ //#region src/component/token/pkce.ts
7
+ /**
8
+ * `component.token.pkce.*` — PKCE verifiers.
9
+ *
10
+ * Reads collapse into one overloaded `get`.
11
+ *
12
+ * @module
13
+ */
14
+ const DEFAULT_VERIFIER_TTL_MS = 1e3 * 60 * 15;
15
+ async function getUnexpiredVerifier(ctx, verifierId) {
16
+ const verifier = await ctx.db.get("AuthVerifier", verifierId);
17
+ if (verifier?.expirationTime !== void 0 && verifier.expirationTime < Date.now()) return null;
18
+ return verifier;
19
+ }
20
+ /**
21
+ * Read a verifier by `id` or `signature`, returning `null` once expired.
22
+ * Accepts exactly one selector.
23
+ */
24
+ const get = query({
25
+ args: {
26
+ id: v.optional(v.id("AuthVerifier")),
27
+ signature: v.optional(v.string())
28
+ },
29
+ returns: v.union(vAuthVerifierDoc, v.null()),
30
+ handler: async (ctx, args) => {
31
+ if (args.signature !== void 0) {
32
+ const verifier = await getOneFrom(ctx.db, "AuthVerifier", "signature", args.signature);
33
+ if (verifier?.expirationTime !== void 0 && verifier.expirationTime < Date.now()) return null;
34
+ return verifier;
35
+ }
36
+ if (args.id === void 0) return null;
37
+ return await getUnexpiredVerifier(ctx, args.id);
38
+ }
39
+ });
40
+ /**
41
+ * Atomically consume a verifier: read → validate → delete in ONE transaction,
42
+ * returning the consumed doc to the single winner and `null` to everyone else
43
+ * (unknown / expired / signature mismatch / already consumed).
44
+ *
45
+ * The passkey and TOTP ceremonies run in actions, where reading the verifier
46
+ * (`get`) and deleting it (`remove`) are two separate transactions: two
47
+ * concurrent requests carrying the same verifier could both pass the read +
48
+ * signature check before either delete landed, each then minting its own
49
+ * session (duplicate sign-in). Folding read + optional signature match + delete
50
+ * into this single mutation makes the row's transaction the serialization
51
+ * point — the first caller deletes and returns the doc; a racing caller retries
52
+ * under OCC, re-reads the now-absent row, and gets `null`.
53
+ *
54
+ * A signature mismatch does NOT delete the row (a wrong guess must not burn a
55
+ * legitimate pending verifier); an expired row IS deleted but reported as not
56
+ * consumed.
57
+ */
58
+ const consume = mutation({
59
+ args: {
60
+ id: v.optional(v.id("AuthVerifier")),
61
+ signature: v.optional(v.string()),
62
+ expectedSignature: v.optional(v.string())
63
+ },
64
+ returns: v.union(vAuthVerifierDoc, v.null()),
65
+ handler: async (ctx, { id, signature, expectedSignature }) => {
66
+ const verifier = signature !== void 0 ? await getOneFrom(ctx.db, "AuthVerifier", "signature", signature) : id !== void 0 ? await ctx.db.get("AuthVerifier", id) : null;
67
+ if (verifier === null) return null;
68
+ if (verifier.expirationTime !== void 0 && verifier.expirationTime < Date.now()) {
69
+ await ctx.db.delete("AuthVerifier", verifier._id);
70
+ return null;
71
+ }
72
+ if (expectedSignature !== void 0 && verifier.signature !== expectedSignature) return null;
73
+ await ctx.db.delete("AuthVerifier", verifier._id);
74
+ return verifier;
75
+ }
76
+ });
77
+ /** Create a PKCE verifier, defaulting `expirationTime` to 15 minutes out. */
78
+ const create = mutation({
79
+ args: {
80
+ sessionId: v.optional(v.id("Session")),
81
+ signature: v.optional(v.string()),
82
+ expirationTime: v.optional(v.number())
83
+ },
84
+ returns: v.id("AuthVerifier"),
85
+ handler: async (ctx, { sessionId, signature, expirationTime }) => {
86
+ return await ctx.db.insert("AuthVerifier", {
87
+ sessionId,
88
+ signature,
89
+ expirationTime: expirationTime ?? Date.now() + DEFAULT_VERIFIER_TTL_MS
90
+ });
91
+ }
92
+ });
93
+ /** Patch a verifier in place. */
94
+ const update = mutation({
95
+ args: {
96
+ id: v.id("AuthVerifier"),
97
+ patch: v.object({
98
+ sessionId: v.optional(v.id("Session")),
99
+ signature: v.optional(v.string()),
100
+ expirationTime: v.optional(v.number())
101
+ })
102
+ },
103
+ returns: v.null(),
104
+ handler: async (ctx, { id: verifierId, patch }) => {
105
+ await ctx.db.patch("AuthVerifier", verifierId, patch);
106
+ return null;
107
+ }
108
+ });
109
+ /** Delete a verifier by id. */
110
+ const remove = mutation({
111
+ args: { id: v.id("AuthVerifier") },
112
+ returns: v.null(),
113
+ handler: async (ctx, { id: verifierId }) => {
114
+ await ctx.db.delete("AuthVerifier", verifierId);
115
+ return null;
116
+ }
117
+ });
118
+
119
+ //#endregion
120
+ export { consume, create, get, remove, update };
121
+ //# sourceMappingURL=pkce.js.map