@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,224 @@
|
|
|
1
|
+
//#region src/server/connection/saml/c14n.ts
|
|
2
|
+
const ELEMENT_NODE = 1;
|
|
3
|
+
const TEXT_NODE = 3;
|
|
4
|
+
const CDATA_SECTION_NODE = 4;
|
|
5
|
+
const PROCESSING_INSTRUCTION_NODE = 7;
|
|
6
|
+
const COMMENT_NODE = 8;
|
|
7
|
+
const xmlSpecialToEncodedAttribute = {
|
|
8
|
+
"&": "&",
|
|
9
|
+
"<": "<",
|
|
10
|
+
"\"": """,
|
|
11
|
+
"\r": "
",
|
|
12
|
+
"\n": "
",
|
|
13
|
+
" ": "	"
|
|
14
|
+
};
|
|
15
|
+
const xmlSpecialToEncodedText = {
|
|
16
|
+
"&": "&",
|
|
17
|
+
"<": "<",
|
|
18
|
+
">": ">",
|
|
19
|
+
"\r": "
"
|
|
20
|
+
};
|
|
21
|
+
function encodeSpecialCharactersInAttribute(attributeValue) {
|
|
22
|
+
return attributeValue.replace(/([&<"\r\n\t])/g, (_str, item) => xmlSpecialToEncodedAttribute[item]);
|
|
23
|
+
}
|
|
24
|
+
function encodeSpecialCharactersInText(text) {
|
|
25
|
+
return text.replace(/([&<>\r])/g, (_str, item) => xmlSpecialToEncodedText[item]);
|
|
26
|
+
}
|
|
27
|
+
function isElementNode(node) {
|
|
28
|
+
return node.nodeType === ELEMENT_NODE;
|
|
29
|
+
}
|
|
30
|
+
function isCommentNode(node) {
|
|
31
|
+
return node.nodeType === COMMENT_NODE;
|
|
32
|
+
}
|
|
33
|
+
function isTextNode(node) {
|
|
34
|
+
return node.nodeType === TEXT_NODE || node.nodeType === CDATA_SECTION_NODE;
|
|
35
|
+
}
|
|
36
|
+
function prefixScopeKey(prefix, namespaceURI) {
|
|
37
|
+
return prefix + "\0" + namespaceURI;
|
|
38
|
+
}
|
|
39
|
+
function isPrefixInScope(scope, prefix, namespaceURI) {
|
|
40
|
+
return scope.has(prefixScopeKey(prefix, namespaceURI));
|
|
41
|
+
}
|
|
42
|
+
function attrCompare(a, b) {
|
|
43
|
+
if (!a.namespaceURI && b.namespaceURI) return -1;
|
|
44
|
+
if (!b.namespaceURI && a.namespaceURI) return 1;
|
|
45
|
+
const left = (a.namespaceURI || "") + a.localName;
|
|
46
|
+
const right = (b.namespaceURI || "") + b.localName;
|
|
47
|
+
if (left === right) return 0;
|
|
48
|
+
return left < right ? -1 : 1;
|
|
49
|
+
}
|
|
50
|
+
function nsCompare(a, b) {
|
|
51
|
+
return a.prefix.localeCompare(b.prefix);
|
|
52
|
+
}
|
|
53
|
+
function findChildren(node, localName) {
|
|
54
|
+
const element = node.documentElement || node;
|
|
55
|
+
const res = [];
|
|
56
|
+
if (!element.childNodes) return res;
|
|
57
|
+
for (let i = 0; i < element.childNodes.length; i++) {
|
|
58
|
+
const child = element.childNodes[i];
|
|
59
|
+
if (isElementNode(child) && child.localName === localName) res.push(child);
|
|
60
|
+
}
|
|
61
|
+
return res;
|
|
62
|
+
}
|
|
63
|
+
function findDirectChildSignature(node) {
|
|
64
|
+
if (!node.childNodes) return null;
|
|
65
|
+
for (let i = 0; i < node.childNodes.length; i++) {
|
|
66
|
+
const child = node.childNodes[i];
|
|
67
|
+
if (isElementNode(child) && child.localName === "Signature" && child.namespaceURI === "http://www.w3.org/2000/09/xmldsig#") return child;
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
function findAllSignatures(node, matches = []) {
|
|
72
|
+
if (isElementNode(node) && node.localName === "Signature" && node.namespaceURI === "http://www.w3.org/2000/09/xmldsig#") matches.push(node);
|
|
73
|
+
if (node.childNodes) for (let i = 0; i < node.childNodes.length; i++) findAllSignatures(node.childNodes[i], matches);
|
|
74
|
+
return matches;
|
|
75
|
+
}
|
|
76
|
+
function getSignatureValueText(signatureNode) {
|
|
77
|
+
if (!signatureNode.childNodes) return null;
|
|
78
|
+
for (let i = 0; i < signatureNode.childNodes.length; i++) {
|
|
79
|
+
const child = signatureNode.childNodes[i];
|
|
80
|
+
if (isElementNode(child) && child.localName === "SignatureValue" && child.childNodes) for (let j = 0; j < child.childNodes.length; j++) {
|
|
81
|
+
const textNode = child.childNodes[j];
|
|
82
|
+
if (isTextNode(textNode) && typeof textNode.data === "string") return textNode.data;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
function exclusiveRenderAttrs(node) {
|
|
88
|
+
if (isCommentNode(node)) return "";
|
|
89
|
+
const attrListToRender = [];
|
|
90
|
+
if (node.attributes) for (let i = 0; i < node.attributes.length; i++) {
|
|
91
|
+
const attr = node.attributes[i];
|
|
92
|
+
if (attr.name.indexOf("xmlns") === 0) continue;
|
|
93
|
+
attrListToRender.push(attr);
|
|
94
|
+
}
|
|
95
|
+
attrListToRender.sort(attrCompare);
|
|
96
|
+
const res = [];
|
|
97
|
+
for (const attr of attrListToRender) res.push(" ", attr.name, "=\"", encodeSpecialCharactersInAttribute(attr.value), "\"");
|
|
98
|
+
return res.join("");
|
|
99
|
+
}
|
|
100
|
+
function exclusiveRenderNs(node, scope, defaultNs, defaultNsForPrefix, inclusiveNamespacesPrefixList) {
|
|
101
|
+
const res = [];
|
|
102
|
+
let newDefaultNs = defaultNs;
|
|
103
|
+
const nsListToRender = [];
|
|
104
|
+
const currNs = node.namespaceURI || "";
|
|
105
|
+
if (node.prefix) {
|
|
106
|
+
const nodeNs = node.namespaceURI || defaultNsForPrefix[node.prefix] || "";
|
|
107
|
+
if (!isPrefixInScope(scope, node.prefix, nodeNs)) {
|
|
108
|
+
nsListToRender.push({
|
|
109
|
+
prefix: node.prefix,
|
|
110
|
+
namespaceURI: nodeNs
|
|
111
|
+
});
|
|
112
|
+
scope.add(prefixScopeKey(node.prefix, nodeNs));
|
|
113
|
+
}
|
|
114
|
+
} else if (defaultNs !== currNs) {
|
|
115
|
+
newDefaultNs = node.namespaceURI || "";
|
|
116
|
+
res.push(" xmlns=\"", newDefaultNs, "\"");
|
|
117
|
+
}
|
|
118
|
+
if (node.attributes) for (let i = 0; i < node.attributes.length; i++) {
|
|
119
|
+
const attr = node.attributes[i];
|
|
120
|
+
if (attr.prefix && !isPrefixInScope(scope, attr.localName, attr.value) && inclusiveNamespacesPrefixList.indexOf(attr.localName) >= 0) {
|
|
121
|
+
nsListToRender.push({
|
|
122
|
+
prefix: attr.localName,
|
|
123
|
+
namespaceURI: attr.value
|
|
124
|
+
});
|
|
125
|
+
scope.add(prefixScopeKey(attr.localName, attr.value));
|
|
126
|
+
}
|
|
127
|
+
if (attr.prefix && !isPrefixInScope(scope, attr.prefix, attr.namespaceURI || "") && attr.prefix !== "xmlns" && attr.prefix !== "xml") {
|
|
128
|
+
nsListToRender.push({
|
|
129
|
+
prefix: attr.prefix,
|
|
130
|
+
namespaceURI: attr.namespaceURI || ""
|
|
131
|
+
});
|
|
132
|
+
scope.add(prefixScopeKey(attr.prefix, attr.namespaceURI || ""));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
nsListToRender.sort(nsCompare);
|
|
136
|
+
for (const p of nsListToRender) res.push(" xmlns:", p.prefix, "=\"", p.namespaceURI, "\"");
|
|
137
|
+
return {
|
|
138
|
+
rendered: res.join(""),
|
|
139
|
+
newDefaultNs
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function exclusiveProcessInner(node, scope, defaultNs, defaultNsForPrefix, inclusiveNamespacesPrefixList) {
|
|
143
|
+
if (isCommentNode(node)) return "";
|
|
144
|
+
if (isTextNode(node)) return encodeSpecialCharactersInText(node.data || "");
|
|
145
|
+
if (node.nodeType === PROCESSING_INSTRUCTION_NODE) return "";
|
|
146
|
+
if (isElementNode(node)) {
|
|
147
|
+
const ns = exclusiveRenderNs(node, scope, defaultNs, defaultNsForPrefix, inclusiveNamespacesPrefixList);
|
|
148
|
+
const nodeTag = node.tagName || node.nodeName;
|
|
149
|
+
const res = [
|
|
150
|
+
"<",
|
|
151
|
+
nodeTag,
|
|
152
|
+
ns.rendered,
|
|
153
|
+
exclusiveRenderAttrs(node),
|
|
154
|
+
">"
|
|
155
|
+
];
|
|
156
|
+
if (node.childNodes) for (let i = 0; i < node.childNodes.length; i++) {
|
|
157
|
+
const pfxCopy = new Set(scope);
|
|
158
|
+
res.push(exclusiveProcessInner(node.childNodes[i], pfxCopy, ns.newDefaultNs, defaultNsForPrefix, inclusiveNamespacesPrefixList));
|
|
159
|
+
}
|
|
160
|
+
res.push("</", nodeTag, ">");
|
|
161
|
+
return res.join("");
|
|
162
|
+
}
|
|
163
|
+
throw new Error(`Unable to exclusive canonicalize node type: ${node.nodeType}`);
|
|
164
|
+
}
|
|
165
|
+
function exclusiveProcess(elem, options = {}) {
|
|
166
|
+
let inclusiveNamespacesPrefixList = options.inclusiveNamespacesPrefixList || [];
|
|
167
|
+
const defaultNs = options.defaultNs || "";
|
|
168
|
+
const defaultNsForPrefix = options.defaultNsForPrefix || {};
|
|
169
|
+
const ancestorNamespaces = options.ancestorNamespaces || [];
|
|
170
|
+
if (inclusiveNamespacesPrefixList.length === 0) {
|
|
171
|
+
const canonicalizationMethod = findChildren(elem, "CanonicalizationMethod");
|
|
172
|
+
if (canonicalizationMethod.length !== 0) {
|
|
173
|
+
const inclusiveNamespaces = findChildren(canonicalizationMethod[0], "InclusiveNamespaces");
|
|
174
|
+
if (inclusiveNamespaces.length !== 0 && inclusiveNamespaces[0].getAttribute) inclusiveNamespacesPrefixList = (inclusiveNamespaces[0].getAttribute("PrefixList") || "").split(" ").filter(Boolean);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (inclusiveNamespacesPrefixList.length > 0) inclusiveNamespacesPrefixList.forEach((prefix) => {
|
|
178
|
+
ancestorNamespaces.forEach((ancestorNamespace) => {
|
|
179
|
+
if (prefix === ancestorNamespace.prefix && elem.setAttributeNS) elem.setAttributeNS("http://www.w3.org/2000/xmlns/", `xmlns:${prefix}`, ancestorNamespace.namespaceURI);
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
return exclusiveProcessInner(elem, /* @__PURE__ */ new Set(), defaultNs, defaultNsForPrefix, inclusiveNamespacesPrefixList);
|
|
183
|
+
}
|
|
184
|
+
function envelopedSignatureProcess(node, options = {}) {
|
|
185
|
+
if (options.signatureNode == null) {
|
|
186
|
+
const signature = findDirectChildSignature(node);
|
|
187
|
+
if (signature && signature.parentNode && signature.parentNode.removeChild) signature.parentNode.removeChild(signature);
|
|
188
|
+
return node;
|
|
189
|
+
}
|
|
190
|
+
const expectedSignatureValue = getSignatureValueText(options.signatureNode);
|
|
191
|
+
if (expectedSignatureValue) {
|
|
192
|
+
const signatures = findAllSignatures(node);
|
|
193
|
+
for (const nodeSignature of signatures) {
|
|
194
|
+
const signatureValue = getSignatureValueText(nodeSignature);
|
|
195
|
+
if (signatureValue && signatureValue === expectedSignatureValue) {
|
|
196
|
+
if (nodeSignature.parentNode && nodeSignature.parentNode.removeChild) nodeSignature.parentNode.removeChild(nodeSignature);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return node;
|
|
201
|
+
}
|
|
202
|
+
const exclusiveCanonicalization = {
|
|
203
|
+
process: exclusiveProcess,
|
|
204
|
+
getAlgorithmName: () => "http://www.w3.org/2001/10/xml-exc-c14n#"
|
|
205
|
+
};
|
|
206
|
+
const envelopedSignature = {
|
|
207
|
+
process: envelopedSignatureProcess,
|
|
208
|
+
getAlgorithmName: () => "http://www.w3.org/2000/09/xmldsig#enveloped-signature"
|
|
209
|
+
};
|
|
210
|
+
/** XML-dsig transform algorithm URI → its implementation. */
|
|
211
|
+
const TRANSFORM_ALGORITHMS = {
|
|
212
|
+
"http://www.w3.org/2001/10/xml-exc-c14n#": exclusiveCanonicalization,
|
|
213
|
+
"http://www.w3.org/2000/09/xmldsig#enveloped-signature": envelopedSignature
|
|
214
|
+
};
|
|
215
|
+
/** Resolve an XML-dsig transform algorithm URI to its implementation. */
|
|
216
|
+
function getTransformByAlgorithm(algorithm) {
|
|
217
|
+
const transform = TRANSFORM_ALGORITHMS[algorithm];
|
|
218
|
+
if (transform === void 0) throw new Error(`canonicalization algorithm '${algorithm}' is not supported`);
|
|
219
|
+
return transform;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
//#endregion
|
|
223
|
+
export { getTransformByAlgorithm };
|
|
224
|
+
//# sourceMappingURL=c14n.js.map
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
//#region src/server/connection/saml/constants.ts
|
|
2
|
+
/** SAML 2.0 protocol-binding URIs, keyed by binding short-name. */
|
|
3
|
+
const BINDING_URI = {
|
|
4
|
+
redirect: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect",
|
|
5
|
+
post: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
|
|
6
|
+
artifact: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
|
|
7
|
+
};
|
|
8
|
+
/** Redirect-binding query-param names carried alongside the message body. */
|
|
9
|
+
const SamlQueryParam = {
|
|
10
|
+
sigAlg: "SigAlg",
|
|
11
|
+
signature: "Signature",
|
|
12
|
+
relayState: "RelayState"
|
|
13
|
+
};
|
|
14
|
+
/** XML element-namespace URIs used when building SAML documents. */
|
|
15
|
+
const SamlNamespace = {
|
|
16
|
+
protocol: "urn:oasis:names:tc:SAML:2.0:protocol",
|
|
17
|
+
assertion: "urn:oasis:names:tc:SAML:2.0:assertion",
|
|
18
|
+
metadata: "urn:oasis:names:tc:SAML:2.0:metadata"
|
|
19
|
+
};
|
|
20
|
+
/** SAML 2.0 NameID-format URIs. */
|
|
21
|
+
const NameIdFormat = {
|
|
22
|
+
emailAddress: "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
|
|
23
|
+
persistent: "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
|
|
24
|
+
transient: "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
|
|
25
|
+
entity: "urn:oasis:names:tc:SAML:2.0:nameid-format:entity",
|
|
26
|
+
unspecified: "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
|
|
27
|
+
kerberos: "urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos",
|
|
28
|
+
windowsDomainQualifiedName: "urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName",
|
|
29
|
+
x509SubjectName: "urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName"
|
|
30
|
+
};
|
|
31
|
+
/** The success status-code URI — the only SAML status this library asserts on. */
|
|
32
|
+
const SAML_STATUS_SUCCESS = "urn:oasis:names:tc:SAML:2.0:status:Success";
|
|
33
|
+
/** XML-dsig signature algorithm URIs. */
|
|
34
|
+
const SignatureAlgorithm = {
|
|
35
|
+
RSA_SHA1: "http://www.w3.org/2000/09/xmldsig#rsa-sha1",
|
|
36
|
+
RSA_SHA256: "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
|
|
37
|
+
};
|
|
38
|
+
/** Bulk-data XML-enc algorithm URIs. */
|
|
39
|
+
const DataEncryptionAlgorithm = {
|
|
40
|
+
AES_128: "http://www.w3.org/2001/04/xmlenc#aes128-cbc",
|
|
41
|
+
AES_256: "http://www.w3.org/2001/04/xmlenc#aes256-cbc",
|
|
42
|
+
AES_128_GCM: "http://www.w3.org/2009/xmlenc11#aes128-gcm"
|
|
43
|
+
};
|
|
44
|
+
/** Key-transport XML-enc algorithm URIs. */
|
|
45
|
+
const KeyEncryptionAlgorithm = { RSA_OAEP_MGF1P: "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" };
|
|
46
|
+
/** The digest algorithm URI paired with each signature algorithm URI. */
|
|
47
|
+
const DIGEST_BY_SIGNATURE = {
|
|
48
|
+
"http://www.w3.org/2000/09/xmldsig#rsa-sha1": "http://www.w3.org/2000/09/xmldsig#sha1",
|
|
49
|
+
"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256": "http://www.w3.org/2001/04/xmlenc#sha256"
|
|
50
|
+
};
|
|
51
|
+
/** Whether a message is signed-then-encrypted or encrypted-then-signed. */
|
|
52
|
+
const SigningOrder = {
|
|
53
|
+
SIGN_THEN_ENCRYPT: "sign-then-encrypt",
|
|
54
|
+
ENCRYPT_THEN_SIGN: "encrypt-then-sign"
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Default upper bound (in characters of the received payload) on an inbound
|
|
58
|
+
* `SAMLResponse`, applied when a connection sets no explicit
|
|
59
|
+
* `security.maxResponseSize`. The ACS handler base64-decodes and DOM-parses the
|
|
60
|
+
* response *before* any signature is verified, so an unauthenticated caller
|
|
61
|
+
* could otherwise feed an unbounded document into the parser; this generous cap
|
|
62
|
+
* (~500 KB, far above any legitimate assertion — even encrypted, multi-cert
|
|
63
|
+
* ones) bounds that pre-auth work while staying operator-overridable. A
|
|
64
|
+
* configured non-positive limit disables the cap.
|
|
65
|
+
*/
|
|
66
|
+
const DEFAULT_MAX_SAML_RESPONSE_SIZE = 5e5;
|
|
67
|
+
/**
|
|
68
|
+
* Default upper bound (in characters) on an IdP metadata XML document, applied
|
|
69
|
+
* when a connection sets no explicit `security.maxMetadataSize`. Mirrors
|
|
70
|
+
* {@link DEFAULT_MAX_SAML_RESPONSE_SIZE}: generous enough for any real IdP
|
|
71
|
+
* metadata while bounding parser work against an oversized payload. A configured
|
|
72
|
+
* non-positive limit disables the cap.
|
|
73
|
+
*/
|
|
74
|
+
const DEFAULT_MAX_SAML_METADATA_SIZE = 5e5;
|
|
75
|
+
/** Required child-element ordering of an SPSSODescriptor, per IdP vendor profile. */
|
|
76
|
+
const ElementsOrder = {
|
|
77
|
+
default: [
|
|
78
|
+
"KeyDescriptor",
|
|
79
|
+
"NameIDFormat",
|
|
80
|
+
"SingleLogoutService",
|
|
81
|
+
"AssertionConsumerService"
|
|
82
|
+
],
|
|
83
|
+
onelogin: [
|
|
84
|
+
"KeyDescriptor",
|
|
85
|
+
"NameIDFormat",
|
|
86
|
+
"SingleLogoutService",
|
|
87
|
+
"AssertionConsumerService"
|
|
88
|
+
],
|
|
89
|
+
shibboleth: [
|
|
90
|
+
"KeyDescriptor",
|
|
91
|
+
"SingleLogoutService",
|
|
92
|
+
"NameIDFormat",
|
|
93
|
+
"AssertionConsumerService",
|
|
94
|
+
"AttributeConsumingService"
|
|
95
|
+
]
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
//#endregion
|
|
99
|
+
export { BINDING_URI, DEFAULT_MAX_SAML_METADATA_SIZE, DEFAULT_MAX_SAML_RESPONSE_SIZE, DIGEST_BY_SIGNATURE, DataEncryptionAlgorithm, ElementsOrder, KeyEncryptionAlgorithm, NameIdFormat, SAML_STATUS_SUCCESS, SamlNamespace, SamlQueryParam, SignatureAlgorithm, SigningOrder };
|
|
100
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { decodeBase64, encodeBase64 } from "@oslojs/encoding";
|
|
2
|
+
import { sha1 } from "@noble/hashes/legacy.js";
|
|
3
|
+
import { sha256 } from "@noble/hashes/sha2.js";
|
|
4
|
+
|
|
5
|
+
//#region src/server/connection/saml/crypto.ts
|
|
6
|
+
const utf8Encoder = new TextEncoder();
|
|
7
|
+
/** Base64-encoded SHA-1 digest of a UTF-8 string. */
|
|
8
|
+
function sha1Base64(text) {
|
|
9
|
+
return encodeBase64(sha1(utf8Encoder.encode(text)));
|
|
10
|
+
}
|
|
11
|
+
/** Base64-encoded SHA-256 digest of a UTF-8 string. */
|
|
12
|
+
function sha256Base64(text) {
|
|
13
|
+
return encodeBase64(sha256(utf8Encoder.encode(text)));
|
|
14
|
+
}
|
|
15
|
+
/** Decode a PEM block to its raw DER bytes, stripping the armor and whitespace. */
|
|
16
|
+
function pemToDer(pem) {
|
|
17
|
+
return decodeBase64(pem.replace(/-----[^-]+-----/g, "").replace(/\s+/g, ""));
|
|
18
|
+
}
|
|
19
|
+
function derToPem(der, label) {
|
|
20
|
+
const b64 = encodeBase64(der);
|
|
21
|
+
return `-----BEGIN ${label}-----\n${b64.match(/.{1,64}/g)?.join("\n") ?? b64}\n-----END ${label}-----`;
|
|
22
|
+
}
|
|
23
|
+
function readDerLength(buf, pos) {
|
|
24
|
+
const first = buf[pos];
|
|
25
|
+
if (first < 128) return {
|
|
26
|
+
length: first,
|
|
27
|
+
consumed: 1
|
|
28
|
+
};
|
|
29
|
+
const n = first & 127;
|
|
30
|
+
let length = 0;
|
|
31
|
+
for (let i = 0; i < n; i++) length = length << 8 | buf[pos + 1 + i];
|
|
32
|
+
return {
|
|
33
|
+
length,
|
|
34
|
+
consumed: 1 + n
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function readDerElement(buf, pos) {
|
|
38
|
+
const { length, consumed } = readDerLength(buf, pos + 1);
|
|
39
|
+
const valueStart = pos + 1 + consumed;
|
|
40
|
+
return {
|
|
41
|
+
value: buf.subarray(valueStart, valueStart + length),
|
|
42
|
+
end: valueStart + length
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function derEncodeLength(len) {
|
|
46
|
+
if (len < 128) return new Uint8Array([len]);
|
|
47
|
+
if (len < 256) return new Uint8Array([129, len]);
|
|
48
|
+
return new Uint8Array([
|
|
49
|
+
130,
|
|
50
|
+
len >> 8 & 255,
|
|
51
|
+
len & 255
|
|
52
|
+
]);
|
|
53
|
+
}
|
|
54
|
+
function concatBytes(...arrays) {
|
|
55
|
+
const total = arrays.reduce((sum, a) => sum + a.length, 0);
|
|
56
|
+
const out = new Uint8Array(total);
|
|
57
|
+
let offset = 0;
|
|
58
|
+
for (const a of arrays) {
|
|
59
|
+
out.set(a, offset);
|
|
60
|
+
offset += a.length;
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Walk a DER-encoded X.509 certificate's TBSCertificate (Certificate SEQUENCE →
|
|
66
|
+
* first element), skipping optional version, serialNumber, signature
|
|
67
|
+
* AlgorithmIdentifier, issuer, validity, and subject to reach and return the
|
|
68
|
+
* SubjectPublicKeyInfo bytes.
|
|
69
|
+
*/
|
|
70
|
+
function extractSpkiFromCert(certPem) {
|
|
71
|
+
const tbsContent = readDerElement(readDerElement(pemToDer(certPem), 0).value, 0).value;
|
|
72
|
+
let pos = 0;
|
|
73
|
+
if (tbsContent[pos] === 160) pos = readDerElement(tbsContent, pos).end;
|
|
74
|
+
pos = readDerElement(tbsContent, pos).end;
|
|
75
|
+
pos = readDerElement(tbsContent, pos).end;
|
|
76
|
+
pos = readDerElement(tbsContent, pos).end;
|
|
77
|
+
pos = readDerElement(tbsContent, pos).end;
|
|
78
|
+
pos = readDerElement(tbsContent, pos).end;
|
|
79
|
+
const spki = readDerElement(tbsContent, pos);
|
|
80
|
+
return tbsContent.subarray(pos, spki.end);
|
|
81
|
+
}
|
|
82
|
+
const RSA_ALG_ID = new Uint8Array([
|
|
83
|
+
48,
|
|
84
|
+
13,
|
|
85
|
+
6,
|
|
86
|
+
9,
|
|
87
|
+
42,
|
|
88
|
+
134,
|
|
89
|
+
72,
|
|
90
|
+
134,
|
|
91
|
+
247,
|
|
92
|
+
13,
|
|
93
|
+
1,
|
|
94
|
+
1,
|
|
95
|
+
1,
|
|
96
|
+
5,
|
|
97
|
+
0
|
|
98
|
+
]);
|
|
99
|
+
/**
|
|
100
|
+
* Wrap a PKCS#1 `RSA PRIVATE KEY` in a PKCS#8 PrivateKeyInfo structure.
|
|
101
|
+
*
|
|
102
|
+
* Needed because WebCrypto only imports PKCS#8; a key in PKCS#1 form must be
|
|
103
|
+
* converted before {@link crypto.subtle.importKey}.
|
|
104
|
+
*
|
|
105
|
+
* @returns the PKCS#8 DER bytes.
|
|
106
|
+
*/
|
|
107
|
+
function pkcs1ToPkcs8(pkcs1Pem) {
|
|
108
|
+
const pkcs1 = pemToDer(pkcs1Pem);
|
|
109
|
+
const octetLen = derEncodeLength(pkcs1.length);
|
|
110
|
+
const octetString = concatBytes(new Uint8Array([4]), octetLen, pkcs1);
|
|
111
|
+
const inner = concatBytes(new Uint8Array([
|
|
112
|
+
2,
|
|
113
|
+
1,
|
|
114
|
+
0
|
|
115
|
+
]), RSA_ALG_ID, octetString);
|
|
116
|
+
const outerLen = derEncodeLength(inner.length);
|
|
117
|
+
return concatBytes(new Uint8Array([48]), outerLen, inner);
|
|
118
|
+
}
|
|
119
|
+
function normalizeCertPem(input) {
|
|
120
|
+
if (input.includes("BEGIN CERTIFICATE")) return input;
|
|
121
|
+
return `-----BEGIN CERTIFICATE-----\n${input}\n-----END CERTIFICATE-----`;
|
|
122
|
+
}
|
|
123
|
+
async function importSpkiKey(spki, hash) {
|
|
124
|
+
const copy = new Uint8Array(spki).buffer;
|
|
125
|
+
return crypto.subtle.importKey("spki", copy, {
|
|
126
|
+
name: "RSASSA-PKCS1-v1_5",
|
|
127
|
+
hash
|
|
128
|
+
}, false, ["verify"]);
|
|
129
|
+
}
|
|
130
|
+
async function importPublicKeyFromCert(certPem, hash) {
|
|
131
|
+
return importSpkiKey(extractSpkiFromCert(normalizeCertPem(certPem)), hash);
|
|
132
|
+
}
|
|
133
|
+
async function importPrivateKey(privateKeyPem, hash, usages, algo = "RSASSA-PKCS1-v1_5") {
|
|
134
|
+
let pkcs8;
|
|
135
|
+
if (privateKeyPem.includes("BEGIN RSA PRIVATE KEY")) pkcs8 = pkcs1ToPkcs8(privateKeyPem);
|
|
136
|
+
else pkcs8 = pemToDer(privateKeyPem);
|
|
137
|
+
const copy = new Uint8Array(pkcs8).buffer;
|
|
138
|
+
return crypto.subtle.importKey("pkcs8", copy, {
|
|
139
|
+
name: algo,
|
|
140
|
+
hash
|
|
141
|
+
}, false, usages);
|
|
142
|
+
}
|
|
143
|
+
/** Sign `data` with an RSASSA-PKCS1-v1_5 private key, returning a base64 signature. */
|
|
144
|
+
async function rsaSign(privateKeyPem, data, hash) {
|
|
145
|
+
const key = await importPrivateKey(privateKeyPem, hash, ["sign"]);
|
|
146
|
+
const bytes = utf8Encoder.encode(data);
|
|
147
|
+
const sig = await crypto.subtle.sign("RSASSA-PKCS1-v1_5", key, bytes);
|
|
148
|
+
return encodeBase64(new Uint8Array(sig));
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Verify an RSASSA-PKCS1-v1_5 signature.
|
|
152
|
+
*
|
|
153
|
+
* @param certOrPubKeyPem an `X509 CERTIFICATE` or `PUBLIC KEY` PEM.
|
|
154
|
+
*/
|
|
155
|
+
async function rsaVerify(certOrPubKeyPem, data, signatureBase64, hash) {
|
|
156
|
+
let key;
|
|
157
|
+
if (certOrPubKeyPem.includes("BEGIN CERTIFICATE")) key = await importPublicKeyFromCert(certOrPubKeyPem, hash);
|
|
158
|
+
else key = await importSpkiKey(pemToDer(certOrPubKeyPem), hash);
|
|
159
|
+
const sigBytes = new Uint8Array(decodeBase64(signatureBase64.replace(/\s+/g, ""))).buffer;
|
|
160
|
+
const dataBytes = utf8Encoder.encode(data);
|
|
161
|
+
return crypto.subtle.verify("RSASSA-PKCS1-v1_5", key, sigBytes, dataBytes);
|
|
162
|
+
}
|
|
163
|
+
/** Extract the SubjectPublicKeyInfo from an X.509 cert as a `PUBLIC KEY` PEM. */
|
|
164
|
+
function getPublicKeyPemFromCert(certPem) {
|
|
165
|
+
return derToPem(extractSpkiFromCert(normalizeCertPem(certPem)), "PUBLIC KEY");
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
//#endregion
|
|
169
|
+
export { getPublicKeyPemFromCert, pemToDer, pkcs1ToPkcs8, rsaSign, rsaVerify, sha1Base64, sha256Base64 };
|
|
170
|
+
//# sourceMappingURL=crypto.js.map
|