@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,188 @@
1
+ //#region src/shared/event/kinds.d.ts
2
+ /**
3
+ * Single source of truth for the auth event taxonomy.
4
+ *
5
+ * Every auth event kind and its category is declared once in {@link EVENT_KINDS}.
6
+ * The server ({@link file://../../server/events.ts}) derives the `AuthEventKind`
7
+ * TS union, the `EVENT_KIND_CATEGORY` map, and the compile-time-exhaustive
8
+ * handler selector table; the component ({@link file://../../component/model.ts})
9
+ * derives the `vAuthEventKind` / `vAuthEventCategory` validators. This module
10
+ * holds no Convex imports so both sides can import it without crossing the
11
+ * component/server boundary.
12
+ *
13
+ * @module
14
+ */
15
+ declare const EVENT_CATEGORIES: readonly ["user", "session", "account", "password", "passkey", "totp", "email", "phone", "api_key", "oauth", "connection", "scim", "webhook", "security"];
16
+ /** High-level category grouping for an auth event. */
17
+ type AuthEventCategory = (typeof EVENT_CATEGORIES)[number];
18
+ /**
19
+ * The auth event taxonomy: every emitted kind mapped to its category.
20
+ *
21
+ * This is the one place kinds and their categories are declared. Do not change
22
+ * which kinds exist or their categories without intent; this is the
23
+ * load-bearing audit taxonomy consumed by the projection, webhook dispatch,
24
+ * and every event handler.
25
+ */
26
+ declare const EVENT_KINDS: {
27
+ readonly "user.created": {
28
+ readonly category: "user";
29
+ };
30
+ readonly "user.updated": {
31
+ readonly category: "user";
32
+ };
33
+ readonly "session.signed_in": {
34
+ readonly category: "session";
35
+ };
36
+ readonly "session.signed_out": {
37
+ readonly category: "session";
38
+ };
39
+ readonly "session.invalidated": {
40
+ readonly category: "session";
41
+ };
42
+ readonly "session.refresh_exchanged": {
43
+ readonly category: "session";
44
+ };
45
+ readonly "session.refresh_reuse_detected": {
46
+ readonly category: "session";
47
+ };
48
+ readonly "account.linked": {
49
+ readonly category: "account";
50
+ };
51
+ readonly "account.unlinked": {
52
+ readonly category: "account";
53
+ };
54
+ readonly "password.changed": {
55
+ readonly category: "password";
56
+ };
57
+ readonly "passkey.added": {
58
+ readonly category: "passkey";
59
+ };
60
+ readonly "passkey.removed": {
61
+ readonly category: "passkey";
62
+ };
63
+ readonly "totp.enrolled": {
64
+ readonly category: "totp";
65
+ };
66
+ readonly "totp.removed": {
67
+ readonly category: "totp";
68
+ };
69
+ readonly "email.verified": {
70
+ readonly category: "email";
71
+ };
72
+ readonly "phone.verified": {
73
+ readonly category: "phone";
74
+ };
75
+ readonly "api_key.created": {
76
+ readonly category: "api_key";
77
+ };
78
+ readonly "api_key.revoked": {
79
+ readonly category: "api_key";
80
+ };
81
+ readonly "oauth.client.created": {
82
+ readonly category: "oauth";
83
+ };
84
+ readonly "oauth.client.revoked": {
85
+ readonly category: "oauth";
86
+ };
87
+ readonly "oauth.code.created": {
88
+ readonly category: "oauth";
89
+ };
90
+ readonly "oauth.token.created": {
91
+ readonly category: "oauth";
92
+ };
93
+ readonly "oauth.token.exchanged": {
94
+ readonly category: "oauth";
95
+ };
96
+ readonly "oauth.refresh.reuse_detected": {
97
+ readonly category: "oauth";
98
+ };
99
+ readonly "oauth.refresh.revoked": {
100
+ readonly category: "oauth";
101
+ };
102
+ readonly "connection.created": {
103
+ readonly category: "connection";
104
+ };
105
+ readonly "connection.updated": {
106
+ readonly category: "connection";
107
+ };
108
+ readonly "connection.removed": {
109
+ readonly category: "connection";
110
+ };
111
+ readonly "connection.login.succeeded": {
112
+ readonly category: "connection";
113
+ };
114
+ readonly "connection.login.failed": {
115
+ readonly category: "connection";
116
+ };
117
+ readonly "connection.domain.verification_requested": {
118
+ readonly category: "connection";
119
+ };
120
+ readonly "connection.domain.verified": {
121
+ readonly category: "connection";
122
+ };
123
+ readonly "connection.policy.updated": {
124
+ readonly category: "connection";
125
+ };
126
+ readonly "connection.saml.set": {
127
+ readonly category: "connection";
128
+ };
129
+ readonly "connection.saml.refreshed": {
130
+ readonly category: "connection";
131
+ };
132
+ readonly "connection.oidc.set": {
133
+ readonly category: "connection";
134
+ };
135
+ readonly "connection.scim.set": {
136
+ readonly category: "scim";
137
+ };
138
+ readonly "connection.scim.read": {
139
+ readonly category: "scim";
140
+ };
141
+ readonly "connection.scim.user.provisioned": {
142
+ readonly category: "scim";
143
+ };
144
+ readonly "connection.scim.user.updated": {
145
+ readonly category: "scim";
146
+ };
147
+ readonly "connection.scim.user.deactivated": {
148
+ readonly category: "scim";
149
+ };
150
+ readonly "connection.scim.user.reactivated": {
151
+ readonly category: "scim";
152
+ };
153
+ readonly "connection.scim.group.provisioned": {
154
+ readonly category: "scim";
155
+ };
156
+ readonly "connection.scim.group.updated": {
157
+ readonly category: "scim";
158
+ };
159
+ readonly "connection.scim.group.deactivated": {
160
+ readonly category: "scim";
161
+ };
162
+ readonly "connection.scim.group.reactivated": {
163
+ readonly category: "scim";
164
+ };
165
+ readonly "webhook.endpoint.created": {
166
+ readonly category: "webhook";
167
+ };
168
+ readonly "webhook.endpoint.disabled": {
169
+ readonly category: "webhook";
170
+ };
171
+ readonly "webhook.delivery.created": {
172
+ readonly category: "webhook";
173
+ };
174
+ readonly "webhook.delivery.attempted": {
175
+ readonly category: "webhook";
176
+ };
177
+ readonly "webhook.delivery.succeeded": {
178
+ readonly category: "webhook";
179
+ };
180
+ readonly "webhook.delivery.failed": {
181
+ readonly category: "webhook";
182
+ };
183
+ };
184
+ /** Discriminator naming the specific auth event that occurred. */
185
+ type AuthEventKind = keyof typeof EVENT_KINDS;
186
+ //#endregion
187
+ export { AuthEventCategory, AuthEventKind };
188
+ //# sourceMappingURL=kinds.d.ts.map
@@ -0,0 +1,103 @@
1
+ //#region src/shared/event/kinds.ts
2
+ /**
3
+ * Single source of truth for the auth event taxonomy.
4
+ *
5
+ * Every auth event kind and its category is declared once in {@link EVENT_KINDS}.
6
+ * The server ({@link file://../../server/events.ts}) derives the `AuthEventKind`
7
+ * TS union, the `EVENT_KIND_CATEGORY` map, and the compile-time-exhaustive
8
+ * handler selector table; the component ({@link file://../../component/model.ts})
9
+ * derives the `vAuthEventKind` / `vAuthEventCategory` validators. This module
10
+ * holds no Convex imports so both sides can import it without crossing the
11
+ * component/server boundary.
12
+ *
13
+ * @module
14
+ */
15
+ const EVENT_CATEGORIES = [
16
+ "user",
17
+ "session",
18
+ "account",
19
+ "password",
20
+ "passkey",
21
+ "totp",
22
+ "email",
23
+ "phone",
24
+ "api_key",
25
+ "oauth",
26
+ "connection",
27
+ "scim",
28
+ "webhook",
29
+ "security"
30
+ ];
31
+ /**
32
+ * The auth event taxonomy: every emitted kind mapped to its category.
33
+ *
34
+ * This is the one place kinds and their categories are declared. Do not change
35
+ * which kinds exist or their categories without intent; this is the
36
+ * load-bearing audit taxonomy consumed by the projection, webhook dispatch,
37
+ * and every event handler.
38
+ */
39
+ const EVENT_KINDS = {
40
+ "user.created": { category: "user" },
41
+ "user.updated": { category: "user" },
42
+ "session.signed_in": { category: "session" },
43
+ "session.signed_out": { category: "session" },
44
+ "session.invalidated": { category: "session" },
45
+ "session.refresh_exchanged": { category: "session" },
46
+ "session.refresh_reuse_detected": { category: "session" },
47
+ "account.linked": { category: "account" },
48
+ "account.unlinked": { category: "account" },
49
+ "password.changed": { category: "password" },
50
+ "passkey.added": { category: "passkey" },
51
+ "passkey.removed": { category: "passkey" },
52
+ "totp.enrolled": { category: "totp" },
53
+ "totp.removed": { category: "totp" },
54
+ "email.verified": { category: "email" },
55
+ "phone.verified": { category: "phone" },
56
+ "api_key.created": { category: "api_key" },
57
+ "api_key.revoked": { category: "api_key" },
58
+ "oauth.client.created": { category: "oauth" },
59
+ "oauth.client.revoked": { category: "oauth" },
60
+ "oauth.code.created": { category: "oauth" },
61
+ "oauth.token.created": { category: "oauth" },
62
+ "oauth.token.exchanged": { category: "oauth" },
63
+ "oauth.refresh.reuse_detected": { category: "oauth" },
64
+ "oauth.refresh.revoked": { category: "oauth" },
65
+ "connection.created": { category: "connection" },
66
+ "connection.updated": { category: "connection" },
67
+ "connection.removed": { category: "connection" },
68
+ "connection.login.succeeded": { category: "connection" },
69
+ "connection.login.failed": { category: "connection" },
70
+ "connection.domain.verification_requested": { category: "connection" },
71
+ "connection.domain.verified": { category: "connection" },
72
+ "connection.policy.updated": { category: "connection" },
73
+ "connection.saml.set": { category: "connection" },
74
+ "connection.saml.refreshed": { category: "connection" },
75
+ "connection.oidc.set": { category: "connection" },
76
+ "connection.scim.set": { category: "scim" },
77
+ "connection.scim.read": { category: "scim" },
78
+ "connection.scim.user.provisioned": { category: "scim" },
79
+ "connection.scim.user.updated": { category: "scim" },
80
+ "connection.scim.user.deactivated": { category: "scim" },
81
+ "connection.scim.user.reactivated": { category: "scim" },
82
+ "connection.scim.group.provisioned": { category: "scim" },
83
+ "connection.scim.group.updated": { category: "scim" },
84
+ "connection.scim.group.deactivated": { category: "scim" },
85
+ "connection.scim.group.reactivated": { category: "scim" },
86
+ "webhook.endpoint.created": { category: "webhook" },
87
+ "webhook.endpoint.disabled": { category: "webhook" },
88
+ "webhook.delivery.created": { category: "webhook" },
89
+ "webhook.delivery.attempted": { category: "webhook" },
90
+ "webhook.delivery.succeeded": { category: "webhook" },
91
+ "webhook.delivery.failed": { category: "webhook" }
92
+ };
93
+ /** Ordered tuple of every {@link AuthEventKind}, for deriving validators. */
94
+ const AUTH_EVENT_KINDS = Object.keys(EVENT_KINDS);
95
+ /**
96
+ * Map from every {@link AuthEventKind} to its {@link AuthEventCategory},
97
+ * derived from {@link EVENT_KINDS}.
98
+ */
99
+ const EVENT_KIND_CATEGORY = Object.fromEntries(AUTH_EVENT_KINDS.map((kind) => [kind, EVENT_KINDS[kind].category]));
100
+
101
+ //#endregion
102
+ export { AUTH_EVENT_KINDS, EVENT_CATEGORIES, EVENT_KINDS, EVENT_KIND_CATEGORY };
103
+ //# sourceMappingURL=kinds.js.map
@@ -0,0 +1,189 @@
1
+ //#region src/shared/fetch/guard.ts
2
+ /**
3
+ * Single canonical rejection reason for internal SSRF targets. Kept as one
4
+ * constant so every branch returns byte-identical text (callers and tests match
5
+ * on `/not allowed/`).
6
+ */
7
+ const INTERNAL_TARGET_REASON = "URL host is not allowed (loopback, private, link-local, or internal target).";
8
+ function classifyIpv4(host) {
9
+ const parts = host.split(".");
10
+ if (parts.length !== 4) return null;
11
+ const octets = parts.map((part) => Number(part));
12
+ if (octets.some((octet) => !Number.isInteger(octet) || octet < 0 || octet > 255)) return null;
13
+ const [a, b, c] = octets;
14
+ if (a === 127 || a === 0) return "loopback";
15
+ if (a === 169 && b === 254) return "linkLocal";
16
+ if (a === 10) return "private";
17
+ if (a === 172 && b >= 16 && b <= 31) return "private";
18
+ if (a === 192 && b === 168) return "private";
19
+ if (a === 100 && b >= 64 && b <= 127) return "private";
20
+ if (a === 192 && b === 0 && (c === 0 || c === 2) || a === 192 && b === 88 && c === 99 || a === 198 && (b === 18 || b === 19) || a === 198 && b === 51 && c === 100 || a === 203 && b === 0 && c === 113 || a >= 224) return "nonRoutable";
21
+ return "public";
22
+ }
23
+ function ipv4KindFromMappedIpv6(inner) {
24
+ if (inner.includes(".")) return classifyIpv4(inner);
25
+ const hexGroups = inner.match(/^([0-9a-f]{1,4}):([0-9a-f]{1,4})$/);
26
+ if (!hexGroups) return null;
27
+ const high = parseInt(hexGroups[1], 16);
28
+ const low = parseInt(hexGroups[2], 16);
29
+ return classifyIpv4(`${high >> 8 & 255}.${high & 255}.${low >> 8 & 255}.${low & 255}`);
30
+ }
31
+ /** True when an IPv4 classification is a blocked (non-public) SSRF target. */
32
+ function isBlockedIpv4Kind(kind) {
33
+ return kind === "loopback" || kind === "linkLocal" || kind === "private" || kind === "nonRoutable";
34
+ }
35
+ /**
36
+ * Best-effort detection of an IPv4 address embedded in a multi-label hostname,
37
+ * as produced by wildcard-DNS "IP-in-hostname" services (nip.io / sslip.io) that
38
+ * resolve a public-looking name to an operator-chosen A record — e.g.
39
+ * `169-254-169-254.nip.io` → `169.254.169.254`, `10.0.0.1.nip.io` → `10.0.0.1`,
40
+ * or the prefixed `www-10-0-0-1.sslip.io` form.
41
+ *
42
+ * This is a literal scan of the NAME, not DNS resolution. It matches only the
43
+ * two encodings these services use: four consecutive purely-numeric dot-labels
44
+ * (`10.0.0.1.nip.io`), or four consecutive purely-numeric dash-groups inside a
45
+ * single label (`169-254-169-254.nip.io`, `www-10-0-0-1.sslip.io`). Requiring
46
+ * purely-numeric, contiguous octets avoids false positives on public hostnames
47
+ * whose separate labels merely contain digits (e.g. `v10.node0.pool0.dc1.example
48
+ * .com`). Public-IP encodings (ordinary AWS/GCP public reverse DNS such as
49
+ * `ec2-52-1-2-3.compute-1.amazonaws.com`) classify as public and are allowed;
50
+ * only windows forming a private/loopback/link-local/CGNAT address are rejected
51
+ * (fail-closed on the rare collision). A name that resolves to a private address
52
+ * without encoding it in the label (ordinary DNS rebinding) is not detectable
53
+ * here — see the module note. Hex-encoded (`0a000801.nip.io`) and IPv6 wildcard
54
+ * forms are also out of scope.
55
+ */
56
+ function embeddedInternalIpv4Reason(hostname) {
57
+ if (hostname.includes(":")) return null;
58
+ const isOctet = (part) => /^[0-9]{1,3}$/.test(part);
59
+ const labels = hostname.split(".");
60
+ for (let index = 0; index + 4 <= labels.length; index += 1) {
61
+ const quad = labels.slice(index, index + 4);
62
+ if (quad.every(isOctet) && isBlockedIpv4Kind(classifyIpv4(quad.join(".")))) return INTERNAL_TARGET_REASON;
63
+ }
64
+ for (const label of labels) {
65
+ const groups = label.split("-");
66
+ for (let index = 0; index + 4 <= groups.length; index += 1) {
67
+ const quad = groups.slice(index, index + 4);
68
+ if (quad.every(isOctet) && isBlockedIpv4Kind(classifyIpv4(quad.join(".")))) return INTERNAL_TARGET_REASON;
69
+ }
70
+ }
71
+ return null;
72
+ }
73
+ function hasAsciiControlCharacter(value) {
74
+ for (let index = 0; index < value.length; index += 1) {
75
+ const code = value.charCodeAt(index);
76
+ if (code <= 31 || code === 127) return true;
77
+ }
78
+ return false;
79
+ }
80
+ function unsafeHostValueReason(host) {
81
+ if (host.length === 0 || host.trim() !== host || hasAsciiControlCharacter(host) || host.includes("/") || host.includes("\\") || host.includes("@") || host.includes("://")) return "URL host must be a host value.";
82
+ let parsed;
83
+ try {
84
+ parsed = new URL(`http://${host}`);
85
+ } catch {
86
+ return "URL host must be a host value.";
87
+ }
88
+ if (parsed.hostname.length === 0 || parsed.pathname !== "/" || parsed.search !== "" || parsed.hash !== "" || parsed.username !== "" || parsed.password !== "") return "URL host must be a host value.";
89
+ return null;
90
+ }
91
+ function unsafeHostReason(host, policy) {
92
+ let hostname = host.toLowerCase();
93
+ if (hostname.startsWith("[") && hostname.endsWith("]")) hostname = hostname.slice(1, -1);
94
+ if (hostname.endsWith(".")) hostname = hostname.slice(0, -1);
95
+ if (hostname.length === 0) return "URL is missing a hostname.";
96
+ if (!policy.allowSingleLabelHosts && !hostname.includes(":") && !hostname.includes(".")) return INTERNAL_TARGET_REASON;
97
+ if (hostname === "localhost" || hostname.endsWith(".localhost")) return INTERNAL_TARGET_REASON;
98
+ if (hostname.endsWith(".internal") || hostname.endsWith(".local")) return INTERNAL_TARGET_REASON;
99
+ if (isBlockedIpv4Kind(classifyIpv4(hostname))) return INTERNAL_TARGET_REASON;
100
+ if (hostname === "::1" || hostname === "::" || hostname === "::0") return INTERNAL_TARGET_REASON;
101
+ const mapped = hostname.match(/^::ffff:(.+)$/);
102
+ if (mapped && isBlockedIpv4Kind(ipv4KindFromMappedIpv6(mapped[1]))) return INTERNAL_TARGET_REASON;
103
+ if (/^fe[89ab][0-9a-f]:/.test(hostname)) return INTERNAL_TARGET_REASON;
104
+ if (/^f[cd][0-9a-f]{2}:/.test(hostname)) return INTERNAL_TARGET_REASON;
105
+ if (/^fe[c-f][0-9a-f]:/.test(hostname) || /^ff[0-9a-f]{2}:/.test(hostname)) return INTERNAL_TARGET_REASON;
106
+ const embedded = embeddedInternalIpv4Reason(hostname);
107
+ if (embedded !== null) return embedded;
108
+ return null;
109
+ }
110
+ function unsafeFetchUrlReasonWithPolicy(url, policy) {
111
+ let parsed;
112
+ try {
113
+ parsed = new URL(url);
114
+ } catch {
115
+ return "URL is not a valid URL.";
116
+ }
117
+ if (parsed.protocol !== "https:" && !(policy.allowHttp && parsed.protocol === "http:")) return policy.allowHttp ? "URL must use the http: or https: scheme." : "URL must use the https: scheme.";
118
+ return unsafeHostReason(parsed.hostname, policy);
119
+ }
120
+ /**
121
+ * Reason an operator-supplied URL is rejected as an SSRF risk, or `null` when it
122
+ * is safe to fetch server-side. Requires the `https:` scheme and rejects
123
+ * single-label hosts plus hostnames that are obviously internal targets:
124
+ * `localhost` and `*.localhost`, `*.internal`, `*.local`, IP literals in
125
+ * loopback/private/link-local/CGNAT ranges (`127.0.0.0/8`, `0.0.0.0/8`, `10/8`,
126
+ * `172.16/12`, `192.168/16`, `100.64/10`, `169.254/16`, protocol/test,
127
+ * benchmarking, multicast, and reserved ranges including the
128
+ * `169.254.169.254` cloud-metadata address, `::1`, `fc00::/7`, `fe80::/10`, and
129
+ * `::ffff:`-mapped IPv4, site-local and multicast IPv6), and IPv4 addresses embedded in wildcard-DNS hostnames
130
+ * (e.g. `169-254-169-254.nip.io`).
131
+ *
132
+ * This is literal validation only; see the module note for the residual
133
+ * DNS-rebinding window it cannot close. Reasons begin with `"URL "` so callers
134
+ * can prefix a subject (e.g. `` `Webhook ${reason}` ``).
135
+ */
136
+ function unsafeFetchUrlReason(url) {
137
+ return unsafeFetchUrlReasonWithPolicy(url, {
138
+ allowHttp: false,
139
+ allowSingleLabelHosts: false
140
+ });
141
+ }
142
+ /**
143
+ * Reason an IdP discovery/metadata URL is rejected, or `null` when it is safe
144
+ * to fetch server-side.
145
+ *
146
+ * IdP metadata may be served over `http:` by self-hosted deployments, so the
147
+ * `http:` scheme is permitted here (unlike {@link unsafeFetchUrlReason}). Every
148
+ * internal-target host rule still applies, and — hardened for SSRF —
149
+ * single-label hosts are now REJECTED by default (`allowSingleLabelHosts:
150
+ * false`), matching the strict profile. They were previously allowed to support
151
+ * referencing a Dockerized IdP by bare service name (e.g. `http://zitadel:8080`);
152
+ * such deployments must now use a resolvable dotted hostname, because a bare
153
+ * single-label name is an SSRF vector this guard cannot vet without DNS
154
+ * resolution (it can point at internal infra, or via a search domain at a cloud
155
+ * metadata endpoint). `http:` is intentionally kept: it is a transport concern
156
+ * orthogonal to the host-based SSRF filtering above, and dropping it would break
157
+ * legitimate self-hosted-over-http IdPs without closing an SSRF hole. A
158
+ * deployment that wants to forbid `http:` should gate the scheme at its call
159
+ * site.
160
+ */
161
+ function unsafeIdpFetchUrlReason(url) {
162
+ return unsafeFetchUrlReasonWithPolicy(url, {
163
+ allowHttp: true,
164
+ allowSingleLabelHosts: false
165
+ });
166
+ }
167
+ /**
168
+ * Throw when `url` is an unsafe IdP discovery/metadata fetch target.
169
+ */
170
+ function assertSafeIdpFetchUrl(url) {
171
+ const reason = unsafeIdpFetchUrlReason(url);
172
+ if (reason !== null) throw new Error(`Refusing to fetch ${reason}`);
173
+ }
174
+ /**
175
+ * Throw when `host` is unsafe to send as a proxy-mode IdP `Host` header. This is
176
+ * a header-value check (reject header injection / malformed values), not an SSRF
177
+ * target check: the Host header is metadata on a request whose actual target
178
+ * (the rewritten URL) is guarded separately by {@link assertSafeIdpFetchUrl}, so
179
+ * loopback/private host values (e.g. a self-hosted IdP issuer on `127.0.0.1`) are
180
+ * allowed — blocking them adds no SSRF protection and breaks self-hosted IdPs.
181
+ */
182
+ function assertSafeIdpHost(host) {
183
+ const reason = unsafeHostValueReason(host);
184
+ if (reason !== null) throw new Error(`Refusing to fetch ${reason}`);
185
+ }
186
+
187
+ //#endregion
188
+ export { assertSafeIdpFetchUrl, assertSafeIdpHost, unsafeFetchUrlReason };
189
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1,62 @@
1
+ //#region src/shared/log.ts
2
+ /**
3
+ * Leveled console logging shared across auth internals.
4
+ *
5
+ * @module
6
+ */
7
+ /** Supported log severities, ordered from most to least severe. */
8
+ const LOG_LEVELS = {
9
+ ERROR: "ERROR",
10
+ WARN: "WARN",
11
+ INFO: "INFO",
12
+ DEBUG: "DEBUG"
13
+ };
14
+ function serialize(value) {
15
+ if (typeof value === "string") return value;
16
+ if (value instanceof Error) return `${value.message}${value.stack ? `\n${value.stack}` : ""}`;
17
+ try {
18
+ return JSON.stringify(value);
19
+ } catch {
20
+ return String(value);
21
+ }
22
+ }
23
+ const LEVEL_SEVERITY = {
24
+ ERROR: 0,
25
+ WARN: 1,
26
+ INFO: 2,
27
+ DEBUG: 3
28
+ };
29
+ /**
30
+ * Format and emit a log line, suppressing anything below `configuredLogLevel`.
31
+ *
32
+ * The level gate is checked before {@link serialize} runs, so a message gated
33
+ * out by the configured level never pays the `JSON.stringify` cost of its args.
34
+ *
35
+ * @param module - Source module label included in the prefix.
36
+ * @param level - Severity of this message.
37
+ * @param args - Values to serialize and join into the message body.
38
+ * @param configuredLogLevel - Minimum level to emit. Defaults to `"INFO"`.
39
+ */
40
+ function logMessage(module, level, args, configuredLogLevel = "INFO") {
41
+ if (LEVEL_SEVERITY[level] > LEVEL_SEVERITY[configuredLogLevel]) return;
42
+ const message = args.map(serialize).join(" ");
43
+ const prefix = `[${module}] [${level}]`;
44
+ switch (level) {
45
+ case "ERROR":
46
+ console.error(prefix, message);
47
+ return;
48
+ case "WARN":
49
+ console.warn(prefix, message);
50
+ return;
51
+ case "INFO":
52
+ console.info(prefix, message);
53
+ return;
54
+ case "DEBUG":
55
+ console.debug(prefix, message);
56
+ return;
57
+ }
58
+ }
59
+
60
+ //#endregion
61
+ export { LOG_LEVELS, logMessage };
62
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1,58 @@
1
+ //#region src/shared/results.d.ts
2
+ /** Data needed to provision a TOTP authenticator (otpauth URI + shared secret). */
3
+ type TotpSetupPayload = {
4
+ uri: string;
5
+ secret: string;
6
+ totpId: string;
7
+ };
8
+ /** Device authorization grant details returned to a polling device client. */
9
+ type DeviceCodePayload = {
10
+ deviceCode: string;
11
+ userCode: string;
12
+ verificationUri: string;
13
+ verificationUriComplete: string;
14
+ expiresIn: number;
15
+ interval: number;
16
+ };
17
+ /** Terminal sign-in result: the user is authenticated and a session exists. */
18
+ type SignInSessionResult<TSession> = {
19
+ kind: "signedIn";
20
+ session: TSession;
21
+ };
22
+ /** Sign-in result requiring the client to follow an OAuth redirect. */
23
+ type SignInRedirectResult<TRedirect = string> = {
24
+ kind: "redirect";
25
+ redirect: TRedirect;
26
+ verifier: string;
27
+ };
28
+ /** Sign-in result indicating a verification flow was started (e.g. OTP sent). */
29
+ type SignInStartResult = {
30
+ kind: "started";
31
+ };
32
+ /** Sign-in result carrying options for a WebAuthn ceremony. */
33
+ type SignInWebAuthnOptionsResult = {
34
+ kind: "webauthnOptions";
35
+ options: Record<string, unknown>;
36
+ verifier: string;
37
+ };
38
+ /** Sign-in result requesting a TOTP code to complete two-factor sign-in. */
39
+ type SignInTotpChallengeResult = {
40
+ kind: "totpRequired";
41
+ verifier: string;
42
+ };
43
+ /** Sign-in result requesting TOTP enrollment before sign-in can complete. */
44
+ type SignInTotpSetupResult<TTotpSetup = TotpSetupPayload> = {
45
+ kind: "totpSetup";
46
+ totpSetup: TTotpSetup;
47
+ verifier: string;
48
+ };
49
+ /** Sign-in result returning a device code for the device authorization flow. */
50
+ type SignInDeviceCodeResult<TDeviceCode = DeviceCodePayload> = {
51
+ kind: "deviceCode";
52
+ deviceCode: TDeviceCode;
53
+ };
54
+ /** Discriminated union of every possible sign-in flow outcome, keyed by `kind`. */
55
+ type SignInFlowResult<TSession, TRedirect = string> = SignInSessionResult<TSession> | SignInRedirectResult<TRedirect> | SignInStartResult | SignInWebAuthnOptionsResult | SignInTotpChallengeResult | SignInTotpSetupResult | SignInDeviceCodeResult;
56
+ //#endregion
57
+ export { DeviceCodePayload, SignInDeviceCodeResult, SignInFlowResult, SignInRedirectResult, SignInStartResult, SignInTotpChallengeResult, SignInTotpSetupResult, SignInWebAuthnOptionsResult, TotpSetupPayload };
58
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1,27 @@
1
+ //#region src/shared/retry.ts
2
+ /**
3
+ * Retry `fn` with exponential backoff until it succeeds or retries are
4
+ * exhausted. On final failure the last error is re-thrown.
5
+ */
6
+ async function retryWithBackoff(fn, opts = {}) {
7
+ const { maxRetries = 2, baseMs = 200, jitter = true, jitterMode = "additive", shouldRetry } = opts;
8
+ let lastError;
9
+ for (let attempt = 0; attempt <= maxRetries; attempt++) try {
10
+ return await fn();
11
+ } catch (error) {
12
+ lastError = error;
13
+ if (attempt >= maxRetries) break;
14
+ if (shouldRetry && !shouldRetry(error)) throw error;
15
+ const base = baseMs * 2 ** attempt;
16
+ let delay;
17
+ if (!jitter) delay = base;
18
+ else if (jitterMode === "centered") delay = base * (.5 + Math.random());
19
+ else delay = base + Math.random() * base;
20
+ await new Promise((resolve) => setTimeout(resolve, delay));
21
+ }
22
+ throw lastError;
23
+ }
24
+
25
+ //#endregion
26
+ export { retryWithBackoff };
27
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1,9 @@
1
+ //#region src/shared/webauthn.ts
2
+ /** Maximum WebAuthn credentials stored for one user. */
3
+ const MAX_WEBAUTHN_CREDENTIALS_PER_USER = 16;
4
+ /** Maximum credential ID length accepted by WebAuthn Level 3. */
5
+ const MAX_WEBAUTHN_CREDENTIAL_ID_LENGTH = 1023;
6
+
7
+ //#endregion
8
+ export { MAX_WEBAUTHN_CREDENTIALS_PER_USER, MAX_WEBAUTHN_CREDENTIAL_ID_LENGTH };
9
+ //# sourceMappingURL=webauthn.js.map
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+
4
+ import { useConvexAuth } from "./context.svelte.js";
5
+
6
+ let { children }: { children: Snippet } = $props();
7
+
8
+ const auth = useConvexAuth();
9
+ </script>
10
+
11
+ {#if auth.loading}
12
+ {@render children()}
13
+ {/if}
@@ -0,0 +1,8 @@
1
+ import type { Snippet } from "svelte";
2
+ type $$ComponentProps = {
3
+ children: Snippet;
4
+ };
5
+ declare const AuthLoading: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type AuthLoading = ReturnType<typeof AuthLoading>;
7
+ export default AuthLoading;
8
+ //# sourceMappingURL=AuthLoading.svelte.d.ts.map
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+
4
+ import { useConvexAuth } from "./context.svelte.js";
5
+
6
+ let { children }: { children: Snippet<[string]> } = $props();
7
+
8
+ const auth = useConvexAuth();
9
+ const state = $derived(auth.state);
10
+ </script>
11
+
12
+ {#if state.status === "signedIn"}
13
+ {@render children(state.token)}
14
+ {/if}