@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.
- package/README.md +52 -0
- package/dist/_generated/component.d.ts +2981 -0
- package/dist/bin.js +7194 -0
- package/dist/browser/index.d.ts +22 -0
- package/dist/browser/index.js +61 -0
- package/dist/browser/locks.js +20 -0
- package/dist/browser/navigation.js +14 -0
- package/dist/browser/runtime.js +90 -0
- package/dist/browser/webauthn.js +99 -0
- package/dist/client/core/types.d.ts +615 -0
- package/dist/client/core/types.js +23 -0
- package/dist/client/errors.js +30 -0
- package/dist/client/factors/device.js +100 -0
- package/dist/client/factors/totp.js +111 -0
- package/dist/client/factors/webauthn.js +69 -0
- package/dist/client/index.d.ts +60 -0
- package/dist/client/index.js +976 -0
- package/dist/client/runtime/invite.js +50 -0
- package/dist/client/runtime/mutex.js +25 -0
- package/dist/client/runtime/proxy.js +75 -0
- package/dist/client/runtime/storage.js +65 -0
- package/dist/component/_generated/api.js +26 -0
- package/dist/component/_generated/component.d.ts +2981 -0
- package/dist/component/_generated/component.js +1 -0
- package/dist/component/_generated/dataModel.js +1 -0
- package/dist/component/_generated/server.js +74 -0
- package/dist/component/account.js +197 -0
- package/dist/component/connection/audit.js +152 -0
- package/dist/component/connection/cache.js +205 -0
- package/dist/component/connection/domain/verification.js +63 -0
- package/dist/component/connection/domain.js +108 -0
- package/dist/component/connection/saml/assertion.js +41 -0
- package/dist/component/connection/saml/request.js +61 -0
- package/dist/component/connection/scim/config.js +55 -0
- package/dist/component/connection/scim/identity.js +162 -0
- package/dist/component/connection/secret.js +65 -0
- package/dist/component/connection/webhook/delivery.js +396 -0
- package/dist/component/connection/webhook/endpoint.js +77 -0
- package/dist/component/connection.js +204 -0
- package/dist/component/convex.config.d.ts +7 -0
- package/dist/component/convex.config.js +15 -0
- package/dist/component/crons.js +27 -0
- package/dist/component/event.js +341 -0
- package/dist/component/factor/device.js +141 -0
- package/dist/component/factor/passkey.js +385 -0
- package/dist/component/factor/totp.js +253 -0
- package/dist/component/functions.js +3 -0
- package/dist/component/group/active.js +63 -0
- package/dist/component/group/invite.js +300 -0
- package/dist/component/group/member.js +188 -0
- package/dist/component/group.js +431 -0
- package/dist/component/http.js +9 -0
- package/dist/component/index.d.ts +5 -0
- package/dist/component/index.js +3 -0
- package/dist/component/limits.js +103 -0
- package/dist/component/maintenance.js +205 -0
- package/dist/component/migrations.js +277 -0
- package/dist/component/model.d.ts +384 -0
- package/dist/component/model.js +709 -0
- package/dist/component/modules.js +53 -0
- package/dist/component/oauth/client.js +196 -0
- package/dist/component/oauth/code.js +97 -0
- package/dist/component/oauth/refresh.js +230 -0
- package/dist/component/schema.d.ts +1530 -0
- package/dist/component/schema.js +401 -0
- package/dist/component/session.js +134 -0
- package/dist/component/token/pkce.js +121 -0
- package/dist/component/token/refresh.js +189 -0
- package/dist/component/token/verification.js +155 -0
- package/dist/component/user/email.js +147 -0
- package/dist/component/user/key.js +273 -0
- package/dist/component/user.js +173 -0
- package/dist/core/index.d.ts +531 -0
- package/dist/core/index.js +81 -0
- package/dist/expo/index.d.ts +43 -0
- package/dist/expo/index.js +131 -0
- package/dist/expo/webauthn.js +88 -0
- package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.d.ts +2 -0
- package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/api/logs.d.ts +3 -0
- package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/index.d.ts +7 -0
- package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.d.ts +21 -0
- package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.d.ts +36 -0
- package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/Logger.d.ts +1 -0
- package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.d.ts +1 -0
- package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.d.ts +2 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/otel.d.ts +73 -0
- package/dist/otel.js +82 -0
- package/dist/permissions/index.d.ts +81 -0
- package/dist/permissions/index.js +18 -0
- package/dist/providers/anonymous.d.ts +35 -0
- package/dist/providers/anonymous.js +40 -0
- package/dist/providers/apple.d.ts +61 -0
- package/dist/providers/apple.js +57 -0
- package/dist/providers/connection.d.ts +30 -0
- package/dist/providers/connection.js +33 -0
- package/dist/providers/credentials.d.ts +78 -0
- package/dist/providers/credentials.js +31 -0
- package/dist/providers/custom.d.ts +96 -0
- package/dist/providers/custom.js +108 -0
- package/dist/providers/device.d.ts +33 -0
- package/dist/providers/device.js +30 -0
- package/dist/providers/email.d.ts +45 -0
- package/dist/providers/email.js +52 -0
- package/dist/providers/github.d.ts +56 -0
- package/dist/providers/github.js +79 -0
- package/dist/providers/google.d.ts +56 -0
- package/dist/providers/google.js +59 -0
- package/dist/providers/index.d.ts +16 -0
- package/dist/providers/index.js +16 -0
- package/dist/providers/microsoft.d.ts +59 -0
- package/dist/providers/microsoft.js +98 -0
- package/dist/providers/password.d.ts +68 -0
- package/dist/providers/password.js +348 -0
- package/dist/providers/phone.d.ts +33 -0
- package/dist/providers/phone.js +35 -0
- package/dist/providers/redirect.d.ts +1 -0
- package/dist/providers/redirect.js +11 -0
- package/dist/providers/totp.d.ts +29 -0
- package/dist/providers/totp.js +29 -0
- package/dist/providers/webauthn/attestation.d.ts +42 -0
- package/dist/providers/webauthn/attestation.js +167 -0
- package/dist/providers/webauthn.d.ts +83 -0
- package/dist/providers/webauthn.js +57 -0
- package/dist/react/index.d.ts +55 -0
- package/dist/react/index.js +80 -0
- package/dist/server/auth.d.ts +443 -0
- package/dist/server/auth.js +178 -0
- package/dist/server/cache/context.js +94 -0
- package/dist/server/component/api.d.ts +14 -0
- package/dist/server/component/api.js +13 -0
- package/dist/server/component/context.d.ts +16 -0
- package/dist/server/component/context.js +1 -0
- package/dist/server/component/factor/db.js +71 -0
- package/dist/server/config.d.ts +3 -0
- package/dist/server/config.js +78 -0
- package/dist/server/connection/config.js +101 -0
- package/dist/server/connection/domain.d.ts +878 -0
- package/dist/server/connection/domain.js +1122 -0
- package/dist/server/connection/group/service.d.ts +25 -0
- package/dist/server/connection/group/service.js +250 -0
- package/dist/server/connection/http.js +1485 -0
- package/dist/server/connection/oidc.js +366 -0
- package/dist/server/connection/policy/domain.js +59 -0
- package/dist/server/connection/policy.d.ts +1 -0
- package/dist/server/connection/policy.js +163 -0
- package/dist/server/connection/profile.js +22 -0
- package/dist/server/connection/provision.js +182 -0
- package/dist/server/connection/saml/api.js +70 -0
- package/dist/server/connection/saml/binding/post.js +140 -0
- package/dist/server/connection/saml/binding/redirect.js +139 -0
- package/dist/server/connection/saml/binding/shared.js +18 -0
- package/dist/server/connection/saml/c14n.js +224 -0
- package/dist/server/connection/saml/constants.js +100 -0
- package/dist/server/connection/saml/crypto.js +170 -0
- package/dist/server/connection/saml/dom/select.js +299 -0
- package/dist/server/connection/saml/encoding.js +93 -0
- package/dist/server/connection/saml/encryption.js +34 -0
- package/dist/server/connection/saml/entity.js +24 -0
- package/dist/server/connection/saml/extractor.js +408 -0
- package/dist/server/connection/saml/flow.js +150 -0
- package/dist/server/connection/saml/identity/provider.js +66 -0
- package/dist/server/connection/saml/index.js +5 -0
- package/dist/server/connection/saml/metadata.js +294 -0
- package/dist/server/connection/saml/service/provider.js +117 -0
- package/dist/server/connection/saml/signature.js +214 -0
- package/dist/server/connection/saml/template.js +68 -0
- package/dist/server/connection/saml/types.js +1 -0
- package/dist/server/connection/saml/validator.js +32 -0
- package/dist/server/connection/saml/xml/builder.js +68 -0
- package/dist/server/connection/saml/xmldsig.js +598 -0
- package/dist/server/connection/saml/xmlenc.js +162 -0
- package/dist/server/connection/saml.d.ts +56 -0
- package/dist/server/connection/saml.js +762 -0
- package/dist/server/connection/scim.js +115 -0
- package/dist/server/connection/shared.js +74 -0
- package/dist/server/connection/webhook.js +163 -0
- package/dist/server/context.d.ts +137 -0
- package/dist/server/context.js +108 -0
- package/dist/server/contract.d.ts +48 -0
- package/dist/server/contract.js +107 -0
- package/dist/server/cookies.js +90 -0
- package/dist/server/core.js +163 -0
- package/dist/server/cors.d.ts +22 -0
- package/dist/server/cors.js +93 -0
- package/dist/server/crypto.js +43 -0
- package/dist/server/db.js +88 -0
- package/dist/server/device.js +140 -0
- package/dist/server/domains/access.js +29 -0
- package/dist/server/domains/account.d.ts +16 -0
- package/dist/server/domains/account.js +92 -0
- package/dist/server/domains/factor.d.ts +28 -0
- package/dist/server/domains/factor.js +115 -0
- package/dist/server/domains/group.js +87 -0
- package/dist/server/domains/invite.js +76 -0
- package/dist/server/domains/key.js +253 -0
- package/dist/server/domains/member.js +149 -0
- package/dist/server/domains/session.js +29 -0
- package/dist/server/domains/user.js +119 -0
- package/dist/server/env.d.ts +46 -0
- package/dist/server/env.js +96 -0
- package/dist/server/errors.js +38 -0
- package/dist/server/events.d.ts +880 -0
- package/dist/server/events.js +406 -0
- package/dist/server/facade.d.ts +83 -0
- package/dist/server/facade.js +124 -0
- package/dist/server/http.d.ts +125 -0
- package/dist/server/http.js +566 -0
- package/dist/server/identity/claims.js +58 -0
- package/dist/server/identity/convex.d.ts +15 -0
- package/dist/server/identity/convex.js +1 -0
- package/dist/server/index.d.ts +17 -0
- package/dist/server/index.js +11 -0
- package/dist/server/keys.js +60 -0
- package/dist/server/limits.js +41 -0
- package/dist/server/log.js +28 -0
- package/dist/server/mcp.d.ts +19 -0
- package/dist/server/mcp.js +250 -0
- package/dist/server/mutations/account.js +47 -0
- package/dist/server/mutations/calls.js +16 -0
- package/dist/server/mutations/code.js +91 -0
- package/dist/server/mutations/credentials/signin.js +210 -0
- package/dist/server/mutations/invalidate.js +60 -0
- package/dist/server/mutations/oauth.js +251 -0
- package/dist/server/mutations/refresh.js +152 -0
- package/dist/server/mutations/register.js +93 -0
- package/dist/server/mutations/retrieve.js +66 -0
- package/dist/server/mutations/signature.js +36 -0
- package/dist/server/mutations/signin.js +81 -0
- package/dist/server/mutations/signout.js +61 -0
- package/dist/server/mutations/store/refs.js +15 -0
- package/dist/server/mutations/store.js +82 -0
- package/dist/server/mutations/verifier.js +25 -0
- package/dist/server/mutations/verify.js +199 -0
- package/dist/server/oauth/authorize.js +98 -0
- package/dist/server/oauth/client.d.ts +93 -0
- package/dist/server/oauth/client.js +115 -0
- package/dist/server/oauth/code.d.ts +63 -0
- package/dist/server/oauth/code.js +124 -0
- package/dist/server/oauth/domain.d.ts +23 -0
- package/dist/server/oauth/domain.js +1 -0
- package/dist/server/oauth/factory.js +46 -0
- package/dist/server/oauth/grant.js +46 -0
- package/dist/server/oauth/handlers.js +108 -0
- package/dist/server/oauth/manage.js +121 -0
- package/dist/server/oauth/normalize.js +27 -0
- package/dist/server/oauth/refresh.d.ts +71 -0
- package/dist/server/oauth/refresh.js +132 -0
- package/dist/server/oauth/register.js +147 -0
- package/dist/server/oauth/runtime.js +280 -0
- package/dist/server/oauth/token.js +355 -0
- package/dist/server/payloads.d.ts +16 -0
- package/dist/server/payloads.js +30 -0
- package/dist/server/preload.d.ts +249 -0
- package/dist/server/preload.js +673 -0
- package/dist/server/random.js +25 -0
- package/dist/server/redirects.js +85 -0
- package/dist/server/runtime.d.ts +845 -0
- package/dist/server/runtime.js +387 -0
- package/dist/server/secret.js +46 -0
- package/dist/server/services/factors.js +117 -0
- package/dist/server/services/providers.js +23 -0
- package/dist/server/services/resolve.js +17 -0
- package/dist/server/session/lifecycle.d.ts +23 -0
- package/dist/server/session/lifecycle.js +139 -0
- package/dist/server/signin/flow.js +359 -0
- package/dist/server/telemetry.js +68 -0
- package/dist/server/templates.js +91 -0
- package/dist/server/token/refresh.js +35 -0
- package/dist/server/tokens.js +164 -0
- package/dist/server/totp.js +282 -0
- package/dist/server/types.d.ts +1154 -0
- package/dist/server/types.js +1 -0
- package/dist/server/url.js +43 -0
- package/dist/server/user/account.js +325 -0
- package/dist/server/utils/bearer.js +24 -0
- package/dist/server/utils/cache.js +51 -0
- package/dist/server/utils/retry.js +3 -0
- package/dist/server/utils/span.js +59 -0
- package/dist/server/validators.d.ts +2061 -0
- package/dist/server/validators.js +320 -0
- package/dist/server/webauthn.js +699 -0
- package/dist/server/wellknown.d.ts +74 -0
- package/dist/server/wellknown.js +195 -0
- package/dist/shared/brand.d.ts +28 -0
- package/dist/shared/brand.js +13 -0
- package/dist/shared/codes.d.ts +99 -0
- package/dist/shared/codes.js +98 -0
- package/dist/shared/compare.js +23 -0
- package/dist/shared/errors.js +24 -0
- package/dist/shared/event/kinds.d.ts +188 -0
- package/dist/shared/event/kinds.js +103 -0
- package/dist/shared/fetch/guard.js +189 -0
- package/dist/shared/log.js +62 -0
- package/dist/shared/results.d.ts +58 -0
- package/dist/shared/retry.js +27 -0
- package/dist/shared/webauthn.js +9 -0
- package/dist/svelte/AuthLoading.svelte +13 -0
- package/dist/svelte/AuthLoading.svelte.d.ts +8 -0
- package/dist/svelte/SignedIn.svelte +14 -0
- package/dist/svelte/SignedIn.svelte.d.ts +8 -0
- package/dist/svelte/SignedOut.svelte +13 -0
- package/dist/svelte/SignedOut.svelte.d.ts +8 -0
- package/dist/svelte/context.svelte.d.ts +26 -0
- package/dist/svelte/context.svelte.js +61 -0
- package/dist/svelte/index.d.ts +5 -0
- package/dist/svelte/index.js +4 -0
- package/dist/test.d.ts +48 -0
- package/dist/test.js +54 -0
- package/package.json +247 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createArcticOAuthClient, createOAuthProvider } from "../server/oauth/factory.js";
|
|
2
|
+
import { defaultOAuthRedirectUri } from "./redirect.js";
|
|
3
|
+
import { Apple } from "arctic";
|
|
4
|
+
|
|
5
|
+
//#region src/providers/apple.ts
|
|
6
|
+
/**
|
|
7
|
+
* Apple OAuth provider.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { apple } from "@estifanos-sh/convex-auth/providers/apple";
|
|
11
|
+
*
|
|
12
|
+
* apple({
|
|
13
|
+
* clientId: env.AUTH_APPLE_ID!,
|
|
14
|
+
* teamId: env.AUTH_APPLE_TEAM_ID!,
|
|
15
|
+
* keyId: env.AUTH_APPLE_KEY_ID!,
|
|
16
|
+
* privateKey: env.AUTH_APPLE_PRIVATE_KEY!,
|
|
17
|
+
* })
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @module
|
|
21
|
+
*/
|
|
22
|
+
const DEFAULT_SCOPES = ["name", "email"];
|
|
23
|
+
/**
|
|
24
|
+
* Create an Apple OAuth provider.
|
|
25
|
+
*
|
|
26
|
+
* @param config - Apple Sign In client settings and signing key material.
|
|
27
|
+
* @returns A configured Apple OAuth provider for `defineAuth`.
|
|
28
|
+
* @throws {Error} When no callback URL can be derived and `redirectUri` is omitted.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { apple } from "@estifanos-sh/convex-auth/providers/apple";
|
|
33
|
+
*
|
|
34
|
+
* apple({
|
|
35
|
+
* clientId: env.AUTH_APPLE_ID!,
|
|
36
|
+
* teamId: env.AUTH_APPLE_TEAM_ID!,
|
|
37
|
+
* keyId: env.AUTH_APPLE_KEY_ID!,
|
|
38
|
+
* privateKey: env.AUTH_APPLE_PRIVATE_KEY!,
|
|
39
|
+
* })
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
function apple(config) {
|
|
43
|
+
const privateKey = typeof config.privateKey === "string" ? config.privateKey : new TextDecoder().decode(config.privateKey);
|
|
44
|
+
const scopes = config.scopes ?? DEFAULT_SCOPES;
|
|
45
|
+
const createProvider = (redirectUri) => new Apple(config.clientId, config.teamId, config.keyId, new TextEncoder().encode(privateKey), config.redirectUri ?? defaultOAuthRedirectUri("apple", redirectUri));
|
|
46
|
+
return createOAuthProvider({
|
|
47
|
+
id: "apple",
|
|
48
|
+
provider: createArcticOAuthClient(createProvider, { pkce: "never" }),
|
|
49
|
+
scopes,
|
|
50
|
+
accountLinking: config.accountLinking,
|
|
51
|
+
updateProfileOnLogin: config.updateProfileOnLogin
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
export { apple };
|
|
57
|
+
//# sourceMappingURL=apple.js.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ConnectionProviderConfig } from "../server/types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/providers/connection.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Create the group Connection provider.
|
|
6
|
+
*
|
|
7
|
+
* @param options - Optional Connection provider settings.
|
|
8
|
+
* @param options.redirectURI - Override the callback URI used for provider
|
|
9
|
+
* initiated sign-in flows.
|
|
10
|
+
* @returns A provider that enables the `auth.connection.*` admin facade and
|
|
11
|
+
* registers the runtime Connection routes.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { connection } from "@estifanos-sh/convex-auth/providers";
|
|
16
|
+
*
|
|
17
|
+
* connection()
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* connection({ redirectURI: "https://app.example.com/auth/connection/callback" })
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
declare function connection(options?: {
|
|
26
|
+
redirectURI?: string;
|
|
27
|
+
}): ConnectionProviderConfig;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { connection };
|
|
30
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/providers/connection.ts
|
|
2
|
+
/**
|
|
3
|
+
* Create the group Connection provider.
|
|
4
|
+
*
|
|
5
|
+
* @param options - Optional Connection provider settings.
|
|
6
|
+
* @param options.redirectURI - Override the callback URI used for provider
|
|
7
|
+
* initiated sign-in flows.
|
|
8
|
+
* @returns A provider that enables the `auth.connection.*` admin facade and
|
|
9
|
+
* registers the runtime Connection routes.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { connection } from "@estifanos-sh/convex-auth/providers";
|
|
14
|
+
*
|
|
15
|
+
* connection()
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* connection({ redirectURI: "https://app.example.com/auth/connection/callback" })
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
function connection(options) {
|
|
24
|
+
return {
|
|
25
|
+
id: "connection",
|
|
26
|
+
type: "connection",
|
|
27
|
+
redirectURI: options?.redirectURI
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
export { connection };
|
|
33
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Hashed } from "../shared/brand.js";
|
|
2
|
+
import { SignInFlowResult } from "../shared/results.js";
|
|
3
|
+
import { SessionIssuance } from "../server/session/lifecycle.js";
|
|
4
|
+
import { AuthProfile } from "../server/payloads.js";
|
|
5
|
+
import { AuthProviderConfig, ConvexCredentialsConfig, GenericActionCtxWithAuthConfig } from "../server/types.js";
|
|
6
|
+
import { GenericId, Value } from "convex/values";
|
|
7
|
+
import { GenericDataModel } from "convex/server";
|
|
8
|
+
|
|
9
|
+
//#region src/providers/credentials.d.ts
|
|
10
|
+
type CredentialsProvisioning = {
|
|
11
|
+
/** Stable provider-owned identifier and optional credential secret. */account: {
|
|
12
|
+
id: string;
|
|
13
|
+
secret?: string;
|
|
14
|
+
}; /** User profile established by the provider's verified ceremony. */
|
|
15
|
+
profile: AuthProfile; /** Verified profile fields that may safely match an existing user. */
|
|
16
|
+
match?: Array<"email" | "phone">;
|
|
17
|
+
};
|
|
18
|
+
type CredentialsAuthorizeResult = {
|
|
19
|
+
userId: GenericId<"User">;
|
|
20
|
+
sessionId?: GenericId<"Session">;
|
|
21
|
+
/**
|
|
22
|
+
* TOTP step-up hint. `false` skips the verified-TOTP lookup;
|
|
23
|
+
* `true`/`undefined` falls back to it.
|
|
24
|
+
*/
|
|
25
|
+
hasTotp?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Pre-issued session from a combined verify+issue mutation. When set,
|
|
28
|
+
* the framework skips the second `callSignIn` mutation and finalizes
|
|
29
|
+
* the issuance directly on the action side.
|
|
30
|
+
*/
|
|
31
|
+
issuance?: SessionIssuance;
|
|
32
|
+
} | {
|
|
33
|
+
/** Provision or retrieve the provider account before issuing a session. */provision: CredentialsProvisioning; /** TOTP step-up hint for the resulting user. */
|
|
34
|
+
hasTotp?: boolean;
|
|
35
|
+
} | Exclude<SignInFlowResult<null>, {
|
|
36
|
+
kind: "signedIn";
|
|
37
|
+
}> | null;
|
|
38
|
+
/** Configuration for the {@link credentials} provider. */
|
|
39
|
+
interface CredentialsConfig<DataModel extends GenericDataModel = GenericDataModel> {
|
|
40
|
+
/** Stable provider identifier used in `signIn("<id>")`. */
|
|
41
|
+
id?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Validate the submitted credentials and return the authenticated user or
|
|
44
|
+
* verified identity to provision.
|
|
45
|
+
* Return `null` to reject the sign-in attempt.
|
|
46
|
+
*/
|
|
47
|
+
authorize: (credentials: Partial<Record<string, Value | undefined>>, ctx: GenericActionCtxWithAuthConfig<DataModel>) => Promise<CredentialsAuthorizeResult>;
|
|
48
|
+
/** Optional hashing helpers for password-style credential verification. */
|
|
49
|
+
crypto?: {
|
|
50
|
+
hashSecret: (secret: string) => Promise<Hashed<"Password">>;
|
|
51
|
+
verifySecret: (secret: string, hash: Hashed<"Password">) => Promise<boolean>;
|
|
52
|
+
};
|
|
53
|
+
/** Additional providers to register alongside this credentials provider. */
|
|
54
|
+
extraProviders?: (AuthProviderConfig | undefined)[];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create a credentials provider for custom sign-in logic.
|
|
58
|
+
*
|
|
59
|
+
* @typeParam DataModel - The Convex data model used by the auth context.
|
|
60
|
+
* @param config - Custom authorization and hashing hooks.
|
|
61
|
+
* @returns A configured credentials provider for `defineAuth`.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* import { credentials } from "@estifanos-sh/convex-auth/providers";
|
|
66
|
+
*
|
|
67
|
+
* credentials({
|
|
68
|
+
* authorize: async (params, ctx) => {
|
|
69
|
+
* const user = await lookupUser(params.email, params.password, ctx);
|
|
70
|
+
* return user ? { userId: user._id } : null;
|
|
71
|
+
* },
|
|
72
|
+
* })
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
declare function credentials<DataModel extends GenericDataModel = GenericDataModel>(config: CredentialsConfig<DataModel>): ConvexCredentialsConfig<DataModel>;
|
|
76
|
+
//#endregion
|
|
77
|
+
export { CredentialsAuthorizeResult, CredentialsConfig, CredentialsProvisioning, credentials };
|
|
78
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/providers/credentials.ts
|
|
2
|
+
/**
|
|
3
|
+
* Create a credentials provider for custom sign-in logic.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam DataModel - The Convex data model used by the auth context.
|
|
6
|
+
* @param config - Custom authorization and hashing hooks.
|
|
7
|
+
* @returns A configured credentials provider for `defineAuth`.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { credentials } from "@estifanos-sh/convex-auth/providers";
|
|
12
|
+
*
|
|
13
|
+
* credentials({
|
|
14
|
+
* authorize: async (params, ctx) => {
|
|
15
|
+
* const user = await lookupUser(params.email, params.password, ctx);
|
|
16
|
+
* return user ? { userId: user._id } : null;
|
|
17
|
+
* },
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
function credentials(config) {
|
|
22
|
+
return {
|
|
23
|
+
...config,
|
|
24
|
+
id: config.id ?? "credentials",
|
|
25
|
+
type: "credentials"
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
export { credentials };
|
|
31
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { OAuthMaterializedConfig, OAuthProfile, OAuthTokens } from "../server/types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/providers/custom.d.ts
|
|
4
|
+
type ScopeSeparator = " " | ",";
|
|
5
|
+
type PkceMode = "required" | "optional" | "never";
|
|
6
|
+
type TokenAuthMethod = "basic" | "body" | "none";
|
|
7
|
+
/** Configuration for the custom provider authorization URL. */
|
|
8
|
+
interface CustomOAuthAuthorizationConfig {
|
|
9
|
+
/** Authorization endpoint URL. */
|
|
10
|
+
url: string;
|
|
11
|
+
/** PKCE requirement for this provider's authorization flow. */
|
|
12
|
+
pkce?: PkceMode;
|
|
13
|
+
/** Query parameter name used for the client ID. */
|
|
14
|
+
clientIdParam?: string;
|
|
15
|
+
/** Query parameter name used for scopes. */
|
|
16
|
+
scopeParam?: string;
|
|
17
|
+
/** Separator used when joining multiple scopes. */
|
|
18
|
+
scopeSeparator?: ScopeSeparator;
|
|
19
|
+
/** Additional query parameters appended to the authorization URL. */
|
|
20
|
+
extraParams?: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
/** Configuration for the custom provider token exchange request. */
|
|
23
|
+
interface CustomOAuthTokenConfig {
|
|
24
|
+
/** Token endpoint URL. */
|
|
25
|
+
url: string;
|
|
26
|
+
/** How client credentials are sent to the token endpoint. */
|
|
27
|
+
authMethod?: TokenAuthMethod;
|
|
28
|
+
/** Form field name used for the client ID. */
|
|
29
|
+
clientIdParam?: string;
|
|
30
|
+
/** Form field name used for the client secret. */
|
|
31
|
+
clientSecretParam?: string;
|
|
32
|
+
/** Form field name used for the PKCE code verifier. */
|
|
33
|
+
codeVerifierParam?: string;
|
|
34
|
+
/** Form field name used for scopes. */
|
|
35
|
+
scopeParam?: string;
|
|
36
|
+
/** Separator used when joining multiple scopes. */
|
|
37
|
+
scopeSeparator?: ScopeSeparator;
|
|
38
|
+
/** Whether to include the redirect URI in token requests. */
|
|
39
|
+
includeRedirectUri?: boolean;
|
|
40
|
+
/** Whether to include configured scopes in token requests. */
|
|
41
|
+
includeScopes?: boolean;
|
|
42
|
+
/** Additional form parameters appended to token requests. */
|
|
43
|
+
extraParams?: Record<string, string>;
|
|
44
|
+
}
|
|
45
|
+
/** Configuration for the {@link custom} provider. */
|
|
46
|
+
interface CustomOAuthConfig {
|
|
47
|
+
/** Stable provider identifier used in `signIn("<id>")`. */
|
|
48
|
+
id: string;
|
|
49
|
+
/** OAuth client identifier. */
|
|
50
|
+
clientId: string;
|
|
51
|
+
/** Optional OAuth client secret. */
|
|
52
|
+
clientSecret?: string | null;
|
|
53
|
+
/** Optional callback URL override. Defaults to the auth site URL plus `/callback/<id>`. */
|
|
54
|
+
redirectUri?: string;
|
|
55
|
+
/** Optional default scopes requested during sign-in. */
|
|
56
|
+
scopes?: string[];
|
|
57
|
+
/** Account-linking strategy for existing users with matching email addresses. */
|
|
58
|
+
accountLinking?: "verifiedEmail" | "none";
|
|
59
|
+
/** On returning sign-in, refresh `User.name`/`image`/`email` from the new profile. Defaults to `true`. */
|
|
60
|
+
updateProfileOnLogin?: boolean;
|
|
61
|
+
/** Whether the provider requires nonce generation and validation. */
|
|
62
|
+
nonce?: boolean;
|
|
63
|
+
/** Authorization endpoint configuration. */
|
|
64
|
+
authorization: CustomOAuthAuthorizationConfig;
|
|
65
|
+
/** Token exchange endpoint configuration. */
|
|
66
|
+
token: CustomOAuthTokenConfig;
|
|
67
|
+
/** Optional profile loader that converts OAuth tokens into a normalized profile. */
|
|
68
|
+
profile?: (tokens: OAuthTokens) => Promise<OAuthProfile>;
|
|
69
|
+
/** Optional token validation hook for provider-specific checks. */
|
|
70
|
+
validateTokens?: (tokens: OAuthTokens, ctx: {
|
|
71
|
+
nonce?: string;
|
|
72
|
+
}) => Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create a custom OAuth provider.
|
|
76
|
+
*
|
|
77
|
+
* @param config - OAuth endpoints, credentials, and profile callbacks.
|
|
78
|
+
* @returns A configured OAuth provider for `defineAuth`.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* import { custom } from "@estifanos-sh/convex-auth/providers";
|
|
83
|
+
*
|
|
84
|
+
* custom({
|
|
85
|
+
* id: "workos",
|
|
86
|
+
* clientId: env.WORKOS_CLIENT_ID!,
|
|
87
|
+
* clientSecret: env.WORKOS_CLIENT_SECRET!,
|
|
88
|
+
* authorization: { url: "https://api.workos.com/connection/authorize" },
|
|
89
|
+
* token: { url: "https://api.workos.com/connection/token", authMethod: "basic" },
|
|
90
|
+
* })
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
declare function custom(config: CustomOAuthConfig): OAuthMaterializedConfig;
|
|
94
|
+
//#endregion
|
|
95
|
+
export { CustomOAuthAuthorizationConfig, CustomOAuthConfig, CustomOAuthTokenConfig, custom };
|
|
96
|
+
//# sourceMappingURL=custom.d.ts.map
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { normalizeOAuthTokenResponse } from "../server/oauth/normalize.js";
|
|
2
|
+
import { createOAuthProvider } from "../server/oauth/factory.js";
|
|
3
|
+
import { defaultOAuthRedirectUri } from "./redirect.js";
|
|
4
|
+
import { sha256 } from "@oslojs/crypto/sha2";
|
|
5
|
+
import { encodeBase64urlNoPadding } from "@oslojs/encoding";
|
|
6
|
+
|
|
7
|
+
//#region src/providers/custom.ts
|
|
8
|
+
/**
|
|
9
|
+
* Custom OAuth provider.
|
|
10
|
+
*
|
|
11
|
+
* Use this as an escape hatch for OAuth providers that do not have a first-
|
|
12
|
+
* party wrapper yet.
|
|
13
|
+
*
|
|
14
|
+
* @module
|
|
15
|
+
*/
|
|
16
|
+
function joinScopes(scopes, separator = " ") {
|
|
17
|
+
return scopes.join(separator);
|
|
18
|
+
}
|
|
19
|
+
function createCodeChallenge(codeVerifier) {
|
|
20
|
+
return encodeBase64urlNoPadding(sha256(new TextEncoder().encode(codeVerifier)));
|
|
21
|
+
}
|
|
22
|
+
function createRuntimeClient(config) {
|
|
23
|
+
const authorization = config.authorization;
|
|
24
|
+
const token = config.token;
|
|
25
|
+
const pkce = authorization.pkce ?? "required";
|
|
26
|
+
const scopes = [...config.scopes ?? []];
|
|
27
|
+
const getRedirectUri = (redirectUri) => config.redirectUri ?? defaultOAuthRedirectUri(config.id, redirectUri);
|
|
28
|
+
return {
|
|
29
|
+
pkce,
|
|
30
|
+
createAuthorizationURL({ state, codeVerifier, scopes: requestedScopes, nonce, redirectUri: runtimeRedirectUri }) {
|
|
31
|
+
const redirectUri = getRedirectUri(runtimeRedirectUri);
|
|
32
|
+
const url = new URL(authorization.url);
|
|
33
|
+
const nextScopes = requestedScopes.length > 0 ? requestedScopes : scopes;
|
|
34
|
+
url.searchParams.set("response_type", "code");
|
|
35
|
+
url.searchParams.set(authorization.clientIdParam ?? "client_id", config.clientId);
|
|
36
|
+
url.searchParams.set("redirect_uri", redirectUri);
|
|
37
|
+
url.searchParams.set("state", state);
|
|
38
|
+
if (nextScopes.length > 0) url.searchParams.set(authorization.scopeParam ?? "scope", joinScopes(nextScopes, authorization.scopeSeparator));
|
|
39
|
+
if (codeVerifier !== void 0 && pkce !== "never") {
|
|
40
|
+
url.searchParams.set("code_challenge_method", "S256");
|
|
41
|
+
url.searchParams.set("code_challenge", createCodeChallenge(codeVerifier));
|
|
42
|
+
}
|
|
43
|
+
if (nonce !== void 0) url.searchParams.set("nonce", nonce);
|
|
44
|
+
for (const [key, value] of Object.entries(authorization.extraParams ?? {})) url.searchParams.set(key, value);
|
|
45
|
+
return url;
|
|
46
|
+
},
|
|
47
|
+
async validateAuthorizationCode({ code, codeVerifier, redirectUri: runtimeRedirectUri }) {
|
|
48
|
+
const redirectUri = getRedirectUri(runtimeRedirectUri);
|
|
49
|
+
const body = new URLSearchParams();
|
|
50
|
+
body.set("grant_type", "authorization_code");
|
|
51
|
+
body.set("code", code);
|
|
52
|
+
if (token.includeRedirectUri ?? true) body.set("redirect_uri", redirectUri);
|
|
53
|
+
if (pkce !== "never" && codeVerifier !== void 0) body.set(token.codeVerifierParam ?? "code_verifier", codeVerifier);
|
|
54
|
+
if (token.includeScopes === true && scopes.length > 0) body.set(token.scopeParam ?? "scope", joinScopes(scopes, token.scopeSeparator ?? authorization.scopeSeparator));
|
|
55
|
+
if (token.authMethod !== "basic") body.set(token.clientIdParam ?? "client_id", config.clientId);
|
|
56
|
+
if (token.authMethod !== "basic" && token.authMethod !== "none" && config.clientSecret) body.set(token.clientSecretParam ?? "client_secret", config.clientSecret);
|
|
57
|
+
for (const [key, value] of Object.entries(token.extraParams ?? {})) body.set(key, value);
|
|
58
|
+
const headers = new Headers({ "Content-Type": "application/x-www-form-urlencoded" });
|
|
59
|
+
if (token.authMethod === "basic") {
|
|
60
|
+
if (!config.clientSecret) throw new Error(`OAuth provider "${config.id}" requires clientSecret for token.authMethod="basic".`);
|
|
61
|
+
const credentials = btoa(`${config.clientId}:${config.clientSecret}`);
|
|
62
|
+
headers.set("Authorization", `Basic ${credentials}`);
|
|
63
|
+
}
|
|
64
|
+
const response = await fetch(token.url, {
|
|
65
|
+
method: "POST",
|
|
66
|
+
headers,
|
|
67
|
+
body
|
|
68
|
+
});
|
|
69
|
+
if (!response.ok) throw new Error(`OAuth token exchange failed: ${response.status}`);
|
|
70
|
+
return normalizeOAuthTokenResponse(await response.json());
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create a custom OAuth provider.
|
|
76
|
+
*
|
|
77
|
+
* @param config - OAuth endpoints, credentials, and profile callbacks.
|
|
78
|
+
* @returns A configured OAuth provider for `defineAuth`.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* import { custom } from "@estifanos-sh/convex-auth/providers";
|
|
83
|
+
*
|
|
84
|
+
* custom({
|
|
85
|
+
* id: "workos",
|
|
86
|
+
* clientId: env.WORKOS_CLIENT_ID!,
|
|
87
|
+
* clientSecret: env.WORKOS_CLIENT_SECRET!,
|
|
88
|
+
* authorization: { url: "https://api.workos.com/connection/authorize" },
|
|
89
|
+
* token: { url: "https://api.workos.com/connection/token", authMethod: "basic" },
|
|
90
|
+
* })
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
function custom(config) {
|
|
94
|
+
return createOAuthProvider({
|
|
95
|
+
id: config.id,
|
|
96
|
+
provider: createRuntimeClient(config),
|
|
97
|
+
scopes: config.scopes ?? [],
|
|
98
|
+
profile: config.profile,
|
|
99
|
+
nonce: config.nonce,
|
|
100
|
+
validateTokens: config.validateTokens,
|
|
101
|
+
accountLinking: config.accountLinking,
|
|
102
|
+
updateProfileOnLogin: config.updateProfileOnLogin
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
//#endregion
|
|
107
|
+
export { custom };
|
|
108
|
+
//# sourceMappingURL=custom.js.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { DeviceProviderConfig } from "../server/types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/providers/device.d.ts
|
|
4
|
+
/** Configuration for the {@link device} provider. */
|
|
5
|
+
interface DeviceConfig {
|
|
6
|
+
/** Character set used to generate the short user code. */
|
|
7
|
+
charset?: string;
|
|
8
|
+
/** Number of characters in the generated user code. */
|
|
9
|
+
userCodeLength?: number;
|
|
10
|
+
/** Device code lifetime in seconds. */
|
|
11
|
+
expiresIn?: number;
|
|
12
|
+
/** Polling interval in seconds suggested to the device client. */
|
|
13
|
+
interval?: number;
|
|
14
|
+
/** Verification page URL shown to the user on the device. */
|
|
15
|
+
verificationUri?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a device authorization provider.
|
|
19
|
+
*
|
|
20
|
+
* @param config - Optional device flow code and polling settings.
|
|
21
|
+
* @returns A configured device flow provider for `defineAuth`.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* import { device } from "@estifanos-sh/convex-auth/providers";
|
|
26
|
+
*
|
|
27
|
+
* device({ verificationUri: "https://example.com/device" })
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
declare function device(config?: DeviceConfig): DeviceProviderConfig;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { DeviceConfig, device };
|
|
33
|
+
//# sourceMappingURL=device.d.ts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/providers/device.ts
|
|
2
|
+
const DEFAULT_CHARSET = "BCDFGHJKLMNPQRSTVWXZ";
|
|
3
|
+
/**
|
|
4
|
+
* Create a device authorization provider.
|
|
5
|
+
*
|
|
6
|
+
* @param config - Optional device flow code and polling settings.
|
|
7
|
+
* @returns A configured device flow provider for `defineAuth`.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { device } from "@estifanos-sh/convex-auth/providers";
|
|
12
|
+
*
|
|
13
|
+
* device({ verificationUri: "https://example.com/device" })
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function device(config = {}) {
|
|
17
|
+
return {
|
|
18
|
+
id: "device",
|
|
19
|
+
type: "device",
|
|
20
|
+
charset: config.charset ?? DEFAULT_CHARSET,
|
|
21
|
+
userCodeLength: config.userCodeLength ?? 8,
|
|
22
|
+
expiresIn: config.expiresIn ?? 900,
|
|
23
|
+
interval: config.interval ?? 5,
|
|
24
|
+
verificationUri: config.verificationUri
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { device };
|
|
30
|
+
//# sourceMappingURL=device.js.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { EmailConfig } from "../server/types.js";
|
|
2
|
+
import { AnyDataModel, GenericActionCtx } from "convex/server";
|
|
3
|
+
|
|
4
|
+
//#region src/providers/email.d.ts
|
|
5
|
+
/** Configuration for the {@link email} provider. */
|
|
6
|
+
interface EmailProviderConfig {
|
|
7
|
+
/** Sender address used for outgoing verification emails. */
|
|
8
|
+
from: string;
|
|
9
|
+
/** Delivery callback that actually sends the rendered verification email. */
|
|
10
|
+
send: (ctx: GenericActionCtx<AnyDataModel>, opts: {
|
|
11
|
+
from: string;
|
|
12
|
+
to: string;
|
|
13
|
+
subject: string;
|
|
14
|
+
html: string;
|
|
15
|
+
}) => Promise<void>;
|
|
16
|
+
/** Optional custom token generator for OTP or magic-link flows. */
|
|
17
|
+
generateVerificationToken?: () => Promise<string>;
|
|
18
|
+
/** Stable provider identifier used in `signIn("<id>")`. */
|
|
19
|
+
id?: string;
|
|
20
|
+
/** Verification token lifetime in seconds. */
|
|
21
|
+
maxAge?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create an email magic link or OTP provider.
|
|
25
|
+
*
|
|
26
|
+
* @param config - Sender identity and delivery hooks for verification emails.
|
|
27
|
+
* @returns A configured email provider for `defineAuth`.
|
|
28
|
+
* @throws {Error} When `from` is empty.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { email } from "@estifanos-sh/convex-auth/providers";
|
|
33
|
+
*
|
|
34
|
+
* email({
|
|
35
|
+
* from: "My App <noreply@example.com>",
|
|
36
|
+
* send: async (_ctx, message) => {
|
|
37
|
+
* await resend.emails.send(message);
|
|
38
|
+
* },
|
|
39
|
+
* })
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
declare function email(config: EmailProviderConfig): EmailConfig;
|
|
43
|
+
//#endregion
|
|
44
|
+
export { EmailProviderConfig, email };
|
|
45
|
+
//# sourceMappingURL=email.d.ts.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { defaultMagicLinkEmail } from "../server/templates.js";
|
|
2
|
+
|
|
3
|
+
//#region src/providers/email.ts
|
|
4
|
+
/**
|
|
5
|
+
* Create an email magic link or OTP provider.
|
|
6
|
+
*
|
|
7
|
+
* @param config - Sender identity and delivery hooks for verification emails.
|
|
8
|
+
* @returns A configured email provider for `defineAuth`.
|
|
9
|
+
* @throws {Error} When `from` is empty.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { email } from "@estifanos-sh/convex-auth/providers";
|
|
14
|
+
*
|
|
15
|
+
* email({
|
|
16
|
+
* from: "My App <noreply@example.com>",
|
|
17
|
+
* send: async (_ctx, message) => {
|
|
18
|
+
* await resend.emails.send(message);
|
|
19
|
+
* },
|
|
20
|
+
* })
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
function email(config) {
|
|
24
|
+
const from = config.from.trim();
|
|
25
|
+
if (from.length === 0) throw new Error("Email provider requires a non-empty `from` address (for example, `\"My App <noreply@example.com>\"`).");
|
|
26
|
+
const { send } = config;
|
|
27
|
+
const { generateVerificationToken } = config;
|
|
28
|
+
return {
|
|
29
|
+
id: config.id ?? "email",
|
|
30
|
+
type: "email",
|
|
31
|
+
name: "Email",
|
|
32
|
+
from,
|
|
33
|
+
maxAge: config.maxAge ?? 3600 * 24,
|
|
34
|
+
authorize: void 0,
|
|
35
|
+
sendVerificationRequest: async ({ identifier, url }, ctx) => {
|
|
36
|
+
if (!ctx) throw new Error("Email provider requires a Convex action context.");
|
|
37
|
+
const { host } = new URL(url);
|
|
38
|
+
await send(ctx, {
|
|
39
|
+
from,
|
|
40
|
+
to: identifier,
|
|
41
|
+
subject: `Sign in to ${host}`,
|
|
42
|
+
html: defaultMagicLinkEmail(url, host)
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
generateVerificationToken,
|
|
46
|
+
options: { from }
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//#endregion
|
|
51
|
+
export { email };
|
|
52
|
+
//# sourceMappingURL=email.js.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { OAuthMaterializedConfig } from "../server/types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/providers/github.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* GitHub OAuth provider.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { github } from "@estifanos-sh/convex-auth/providers/github";
|
|
9
|
+
*
|
|
10
|
+
* github({
|
|
11
|
+
* clientId: env.AUTH_GITHUB_ID!,
|
|
12
|
+
* clientSecret: env.AUTH_GITHUB_SECRET!,
|
|
13
|
+
* })
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
/** Configuration for the {@link github} provider. */
|
|
19
|
+
interface GitHubConfig {
|
|
20
|
+
/** OAuth app client ID from GitHub. */
|
|
21
|
+
clientId: string;
|
|
22
|
+
/** OAuth app client secret from GitHub. */
|
|
23
|
+
clientSecret: string;
|
|
24
|
+
/** Optional callback URL override. Defaults to the auth site URL plus `/callback/github`. */
|
|
25
|
+
redirectUri?: string;
|
|
26
|
+
/** Optional OAuth scopes. Defaults to `user:email`. */
|
|
27
|
+
scopes?: string[];
|
|
28
|
+
/** Account-linking strategy for existing users with matching email addresses. */
|
|
29
|
+
accountLinking?: "verifiedEmail" | "none";
|
|
30
|
+
/** On returning sign-in, refresh `User.name`/`image`/`email` from the new profile. Defaults to `true`. */
|
|
31
|
+
updateProfileOnLogin?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a GitHub OAuth provider.
|
|
35
|
+
*
|
|
36
|
+
* GitHub is not OIDC by default, so this wrapper fetches the profile and email
|
|
37
|
+
* data for you after the OAuth code exchange.
|
|
38
|
+
*
|
|
39
|
+
* @param config - GitHub OAuth client settings.
|
|
40
|
+
* @returns A configured GitHub OAuth provider for `defineAuth`.
|
|
41
|
+
* @throws {Error} When no callback URL can be derived and `redirectUri` is omitted.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* import { github } from "@estifanos-sh/convex-auth/providers/github";
|
|
46
|
+
*
|
|
47
|
+
* github({
|
|
48
|
+
* clientId: env.AUTH_GITHUB_ID!,
|
|
49
|
+
* clientSecret: env.AUTH_GITHUB_SECRET!,
|
|
50
|
+
* })
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
declare function github(config: GitHubConfig): OAuthMaterializedConfig;
|
|
54
|
+
//#endregion
|
|
55
|
+
export { GitHubConfig, github };
|
|
56
|
+
//# sourceMappingURL=github.d.ts.map
|