@estifanos-sh/convex-auth 0.0.1-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/README.md +52 -0
  2. package/dist/_generated/component.d.ts +2981 -0
  3. package/dist/bin.js +7194 -0
  4. package/dist/browser/index.d.ts +22 -0
  5. package/dist/browser/index.js +61 -0
  6. package/dist/browser/locks.js +20 -0
  7. package/dist/browser/navigation.js +14 -0
  8. package/dist/browser/runtime.js +90 -0
  9. package/dist/browser/webauthn.js +99 -0
  10. package/dist/client/core/types.d.ts +615 -0
  11. package/dist/client/core/types.js +23 -0
  12. package/dist/client/errors.js +30 -0
  13. package/dist/client/factors/device.js +100 -0
  14. package/dist/client/factors/totp.js +111 -0
  15. package/dist/client/factors/webauthn.js +69 -0
  16. package/dist/client/index.d.ts +60 -0
  17. package/dist/client/index.js +976 -0
  18. package/dist/client/runtime/invite.js +50 -0
  19. package/dist/client/runtime/mutex.js +25 -0
  20. package/dist/client/runtime/proxy.js +75 -0
  21. package/dist/client/runtime/storage.js +65 -0
  22. package/dist/component/_generated/api.js +26 -0
  23. package/dist/component/_generated/component.d.ts +2981 -0
  24. package/dist/component/_generated/component.js +1 -0
  25. package/dist/component/_generated/dataModel.js +1 -0
  26. package/dist/component/_generated/server.js +74 -0
  27. package/dist/component/account.js +197 -0
  28. package/dist/component/connection/audit.js +152 -0
  29. package/dist/component/connection/cache.js +205 -0
  30. package/dist/component/connection/domain/verification.js +63 -0
  31. package/dist/component/connection/domain.js +108 -0
  32. package/dist/component/connection/saml/assertion.js +41 -0
  33. package/dist/component/connection/saml/request.js +61 -0
  34. package/dist/component/connection/scim/config.js +55 -0
  35. package/dist/component/connection/scim/identity.js +162 -0
  36. package/dist/component/connection/secret.js +65 -0
  37. package/dist/component/connection/webhook/delivery.js +396 -0
  38. package/dist/component/connection/webhook/endpoint.js +77 -0
  39. package/dist/component/connection.js +204 -0
  40. package/dist/component/convex.config.d.ts +7 -0
  41. package/dist/component/convex.config.js +15 -0
  42. package/dist/component/crons.js +27 -0
  43. package/dist/component/event.js +341 -0
  44. package/dist/component/factor/device.js +141 -0
  45. package/dist/component/factor/passkey.js +385 -0
  46. package/dist/component/factor/totp.js +253 -0
  47. package/dist/component/functions.js +3 -0
  48. package/dist/component/group/active.js +63 -0
  49. package/dist/component/group/invite.js +300 -0
  50. package/dist/component/group/member.js +188 -0
  51. package/dist/component/group.js +431 -0
  52. package/dist/component/http.js +9 -0
  53. package/dist/component/index.d.ts +5 -0
  54. package/dist/component/index.js +3 -0
  55. package/dist/component/limits.js +103 -0
  56. package/dist/component/maintenance.js +205 -0
  57. package/dist/component/migrations.js +277 -0
  58. package/dist/component/model.d.ts +384 -0
  59. package/dist/component/model.js +709 -0
  60. package/dist/component/modules.js +53 -0
  61. package/dist/component/oauth/client.js +196 -0
  62. package/dist/component/oauth/code.js +97 -0
  63. package/dist/component/oauth/refresh.js +230 -0
  64. package/dist/component/schema.d.ts +1530 -0
  65. package/dist/component/schema.js +401 -0
  66. package/dist/component/session.js +134 -0
  67. package/dist/component/token/pkce.js +121 -0
  68. package/dist/component/token/refresh.js +189 -0
  69. package/dist/component/token/verification.js +155 -0
  70. package/dist/component/user/email.js +147 -0
  71. package/dist/component/user/key.js +273 -0
  72. package/dist/component/user.js +173 -0
  73. package/dist/core/index.d.ts +531 -0
  74. package/dist/core/index.js +81 -0
  75. package/dist/expo/index.d.ts +43 -0
  76. package/dist/expo/index.js +131 -0
  77. package/dist/expo/webauthn.js +88 -0
  78. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.d.ts +2 -0
  79. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/api/logs.d.ts +3 -0
  80. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/index.d.ts +7 -0
  81. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/AnyValue.d.ts +21 -0
  82. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.d.ts +36 -0
  83. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/Logger.d.ts +1 -0
  84. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LoggerOptions.d.ts +1 -0
  85. package/dist/node_modules/.pnpm/@opentelemetry_api-logs@0.214.0/node_modules/@opentelemetry/api-logs/build/src/types/LoggerProvider.d.ts +2 -0
  86. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.d.ts +1 -0
  87. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/baggage/utils.d.ts +1 -0
  88. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/attributes.d.ts +1 -0
  89. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/global-error-handler.d.ts +2 -0
  90. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.d.ts +1 -0
  91. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/time.d.ts +1 -0
  92. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/common/types.d.ts +16 -0
  93. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/index.d.ts +13 -0
  94. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/propagation/composite.d.ts +1 -0
  95. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/TraceState.d.ts +1 -0
  96. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.d.ts +1 -0
  97. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.d.ts +1 -0
  98. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.d.ts +1 -0
  99. package/dist/node_modules/.pnpm/@opentelemetry_core@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/core/build/src/utils/configuration.d.ts +1 -0
  100. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/LogRecordProcessor.d.ts +24 -0
  101. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/LoggerProvider.d.ts +2 -0
  102. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/config/LoggerConfigurators.d.ts +1 -0
  103. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/BatchLogRecordProcessorBase.d.ts +4 -0
  104. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/ConsoleLogRecordExporter.d.ts +3 -0
  105. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/InMemoryLogRecordExporter.d.ts +3 -0
  106. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/LogRecordExporter.d.ts +2 -0
  107. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/ReadableLogRecord.d.ts +4 -0
  108. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/SdkLogRecord.d.ts +71 -0
  109. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/export/SimpleLogRecordProcessor.d.ts +3 -0
  110. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/index.d.ts +11 -0
  111. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/platform/index.d.ts +1 -0
  112. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/platform/node/export/BatchLogRecordProcessor.d.ts +2 -0
  113. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/platform/node/index.d.ts +1 -0
  114. package/dist/node_modules/.pnpm/@opentelemetry_sdk-logs@0.214.0_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/src/types.d.ts +4 -0
  115. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/InstrumentDescriptor.d.ts +3 -0
  116. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/MeterProvider.d.ts +4 -0
  117. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Drop.d.ts +4 -0
  118. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/ExponentialHistogram.d.ts +5 -0
  119. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Histogram.d.ts +5 -0
  120. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/LastValue.d.ts +5 -0
  121. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Sum.d.ts +5 -0
  122. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/index.d.ts +6 -0
  123. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/types.d.ts +53 -0
  124. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/AggregationSelector.d.ts +16 -0
  125. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/AggregationTemporality.d.ts +11 -0
  126. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/CardinalitySelector.d.ts +10 -0
  127. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/ConsoleMetricExporter.d.ts +4 -0
  128. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/InMemoryMetricExporter.d.ts +3 -0
  129. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricData.d.ts +148 -0
  130. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricExporter.d.ts +3 -0
  131. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricProducer.d.ts +27 -0
  132. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricReader.d.ts +138 -0
  133. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/export/PeriodicExportingMetricReader.d.ts +3 -0
  134. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/index.d.ts +15 -0
  135. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/types.d.ts +10 -0
  136. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/utils.d.ts +2 -0
  137. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/Aggregation.d.ts +4 -0
  138. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/AggregationOption.d.ts +41 -0
  139. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/AttributesProcessor.d.ts +1 -0
  140. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/InstrumentSelector.d.ts +1 -0
  141. package/dist/node_modules/.pnpm/@opentelemetry_sdk-metrics@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-metrics/build/src/view/View.d.ts +5 -0
  142. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.d.ts +2 -0
  143. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.d.ts +11 -0
  144. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.d.ts +74 -0
  145. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/Span.d.ts +17 -0
  146. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.d.ts +43 -0
  147. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.d.ts +19 -0
  148. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.d.ts +6 -0
  149. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.d.ts +3 -0
  150. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.d.ts +3 -0
  151. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.d.ts +4 -0
  152. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.d.ts +29 -0
  153. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.d.ts +5 -0
  154. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.d.ts +2 -0
  155. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/index.d.ts +18 -0
  156. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.d.ts +1 -0
  157. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.d.ts +2 -0
  158. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.d.ts +1 -0
  159. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.d.ts +1 -0
  160. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.d.ts +1 -0
  161. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.d.ts +2 -0
  162. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.d.ts +1 -0
  163. package/dist/node_modules/.pnpm/@opentelemetry_sdk-trace-base@2.6.1_@opentelemetry_api@1.9.1/node_modules/@opentelemetry/sdk-trace-base/build/src/types.d.ts +66 -0
  164. package/dist/otel.d.ts +73 -0
  165. package/dist/otel.js +82 -0
  166. package/dist/permissions/index.d.ts +81 -0
  167. package/dist/permissions/index.js +18 -0
  168. package/dist/providers/anonymous.d.ts +35 -0
  169. package/dist/providers/anonymous.js +40 -0
  170. package/dist/providers/apple.d.ts +61 -0
  171. package/dist/providers/apple.js +57 -0
  172. package/dist/providers/connection.d.ts +30 -0
  173. package/dist/providers/connection.js +33 -0
  174. package/dist/providers/credentials.d.ts +78 -0
  175. package/dist/providers/credentials.js +31 -0
  176. package/dist/providers/custom.d.ts +96 -0
  177. package/dist/providers/custom.js +108 -0
  178. package/dist/providers/device.d.ts +33 -0
  179. package/dist/providers/device.js +30 -0
  180. package/dist/providers/email.d.ts +45 -0
  181. package/dist/providers/email.js +52 -0
  182. package/dist/providers/github.d.ts +56 -0
  183. package/dist/providers/github.js +79 -0
  184. package/dist/providers/google.d.ts +56 -0
  185. package/dist/providers/google.js +59 -0
  186. package/dist/providers/index.d.ts +16 -0
  187. package/dist/providers/index.js +16 -0
  188. package/dist/providers/microsoft.d.ts +59 -0
  189. package/dist/providers/microsoft.js +98 -0
  190. package/dist/providers/password.d.ts +68 -0
  191. package/dist/providers/password.js +348 -0
  192. package/dist/providers/phone.d.ts +33 -0
  193. package/dist/providers/phone.js +35 -0
  194. package/dist/providers/redirect.d.ts +1 -0
  195. package/dist/providers/redirect.js +11 -0
  196. package/dist/providers/totp.d.ts +29 -0
  197. package/dist/providers/totp.js +29 -0
  198. package/dist/providers/webauthn/attestation.d.ts +42 -0
  199. package/dist/providers/webauthn/attestation.js +167 -0
  200. package/dist/providers/webauthn.d.ts +83 -0
  201. package/dist/providers/webauthn.js +57 -0
  202. package/dist/react/index.d.ts +55 -0
  203. package/dist/react/index.js +80 -0
  204. package/dist/server/auth.d.ts +443 -0
  205. package/dist/server/auth.js +178 -0
  206. package/dist/server/cache/context.js +94 -0
  207. package/dist/server/component/api.d.ts +14 -0
  208. package/dist/server/component/api.js +13 -0
  209. package/dist/server/component/context.d.ts +16 -0
  210. package/dist/server/component/context.js +1 -0
  211. package/dist/server/component/factor/db.js +71 -0
  212. package/dist/server/config.d.ts +3 -0
  213. package/dist/server/config.js +78 -0
  214. package/dist/server/connection/config.js +101 -0
  215. package/dist/server/connection/domain.d.ts +878 -0
  216. package/dist/server/connection/domain.js +1122 -0
  217. package/dist/server/connection/group/service.d.ts +25 -0
  218. package/dist/server/connection/group/service.js +250 -0
  219. package/dist/server/connection/http.js +1485 -0
  220. package/dist/server/connection/oidc.js +366 -0
  221. package/dist/server/connection/policy/domain.js +59 -0
  222. package/dist/server/connection/policy.d.ts +1 -0
  223. package/dist/server/connection/policy.js +163 -0
  224. package/dist/server/connection/profile.js +22 -0
  225. package/dist/server/connection/provision.js +182 -0
  226. package/dist/server/connection/saml/api.js +70 -0
  227. package/dist/server/connection/saml/binding/post.js +140 -0
  228. package/dist/server/connection/saml/binding/redirect.js +139 -0
  229. package/dist/server/connection/saml/binding/shared.js +18 -0
  230. package/dist/server/connection/saml/c14n.js +224 -0
  231. package/dist/server/connection/saml/constants.js +100 -0
  232. package/dist/server/connection/saml/crypto.js +170 -0
  233. package/dist/server/connection/saml/dom/select.js +299 -0
  234. package/dist/server/connection/saml/encoding.js +93 -0
  235. package/dist/server/connection/saml/encryption.js +34 -0
  236. package/dist/server/connection/saml/entity.js +24 -0
  237. package/dist/server/connection/saml/extractor.js +408 -0
  238. package/dist/server/connection/saml/flow.js +150 -0
  239. package/dist/server/connection/saml/identity/provider.js +66 -0
  240. package/dist/server/connection/saml/index.js +5 -0
  241. package/dist/server/connection/saml/metadata.js +294 -0
  242. package/dist/server/connection/saml/service/provider.js +117 -0
  243. package/dist/server/connection/saml/signature.js +214 -0
  244. package/dist/server/connection/saml/template.js +68 -0
  245. package/dist/server/connection/saml/types.js +1 -0
  246. package/dist/server/connection/saml/validator.js +32 -0
  247. package/dist/server/connection/saml/xml/builder.js +68 -0
  248. package/dist/server/connection/saml/xmldsig.js +598 -0
  249. package/dist/server/connection/saml/xmlenc.js +162 -0
  250. package/dist/server/connection/saml.d.ts +56 -0
  251. package/dist/server/connection/saml.js +762 -0
  252. package/dist/server/connection/scim.js +115 -0
  253. package/dist/server/connection/shared.js +74 -0
  254. package/dist/server/connection/webhook.js +163 -0
  255. package/dist/server/context.d.ts +137 -0
  256. package/dist/server/context.js +108 -0
  257. package/dist/server/contract.d.ts +48 -0
  258. package/dist/server/contract.js +107 -0
  259. package/dist/server/cookies.js +90 -0
  260. package/dist/server/core.js +163 -0
  261. package/dist/server/cors.d.ts +22 -0
  262. package/dist/server/cors.js +93 -0
  263. package/dist/server/crypto.js +43 -0
  264. package/dist/server/db.js +88 -0
  265. package/dist/server/device.js +140 -0
  266. package/dist/server/domains/access.js +29 -0
  267. package/dist/server/domains/account.d.ts +16 -0
  268. package/dist/server/domains/account.js +92 -0
  269. package/dist/server/domains/factor.d.ts +28 -0
  270. package/dist/server/domains/factor.js +115 -0
  271. package/dist/server/domains/group.js +87 -0
  272. package/dist/server/domains/invite.js +76 -0
  273. package/dist/server/domains/key.js +253 -0
  274. package/dist/server/domains/member.js +149 -0
  275. package/dist/server/domains/session.js +29 -0
  276. package/dist/server/domains/user.js +119 -0
  277. package/dist/server/env.d.ts +46 -0
  278. package/dist/server/env.js +96 -0
  279. package/dist/server/errors.js +38 -0
  280. package/dist/server/events.d.ts +880 -0
  281. package/dist/server/events.js +406 -0
  282. package/dist/server/facade.d.ts +83 -0
  283. package/dist/server/facade.js +124 -0
  284. package/dist/server/http.d.ts +125 -0
  285. package/dist/server/http.js +566 -0
  286. package/dist/server/identity/claims.js +58 -0
  287. package/dist/server/identity/convex.d.ts +15 -0
  288. package/dist/server/identity/convex.js +1 -0
  289. package/dist/server/index.d.ts +17 -0
  290. package/dist/server/index.js +11 -0
  291. package/dist/server/keys.js +60 -0
  292. package/dist/server/limits.js +41 -0
  293. package/dist/server/log.js +28 -0
  294. package/dist/server/mcp.d.ts +19 -0
  295. package/dist/server/mcp.js +250 -0
  296. package/dist/server/mutations/account.js +47 -0
  297. package/dist/server/mutations/calls.js +16 -0
  298. package/dist/server/mutations/code.js +91 -0
  299. package/dist/server/mutations/credentials/signin.js +210 -0
  300. package/dist/server/mutations/invalidate.js +60 -0
  301. package/dist/server/mutations/oauth.js +251 -0
  302. package/dist/server/mutations/refresh.js +152 -0
  303. package/dist/server/mutations/register.js +93 -0
  304. package/dist/server/mutations/retrieve.js +66 -0
  305. package/dist/server/mutations/signature.js +36 -0
  306. package/dist/server/mutations/signin.js +81 -0
  307. package/dist/server/mutations/signout.js +61 -0
  308. package/dist/server/mutations/store/refs.js +15 -0
  309. package/dist/server/mutations/store.js +82 -0
  310. package/dist/server/mutations/verifier.js +25 -0
  311. package/dist/server/mutations/verify.js +199 -0
  312. package/dist/server/oauth/authorize.js +98 -0
  313. package/dist/server/oauth/client.d.ts +93 -0
  314. package/dist/server/oauth/client.js +115 -0
  315. package/dist/server/oauth/code.d.ts +63 -0
  316. package/dist/server/oauth/code.js +124 -0
  317. package/dist/server/oauth/domain.d.ts +23 -0
  318. package/dist/server/oauth/domain.js +1 -0
  319. package/dist/server/oauth/factory.js +46 -0
  320. package/dist/server/oauth/grant.js +46 -0
  321. package/dist/server/oauth/handlers.js +108 -0
  322. package/dist/server/oauth/manage.js +121 -0
  323. package/dist/server/oauth/normalize.js +27 -0
  324. package/dist/server/oauth/refresh.d.ts +71 -0
  325. package/dist/server/oauth/refresh.js +132 -0
  326. package/dist/server/oauth/register.js +147 -0
  327. package/dist/server/oauth/runtime.js +280 -0
  328. package/dist/server/oauth/token.js +355 -0
  329. package/dist/server/payloads.d.ts +16 -0
  330. package/dist/server/payloads.js +30 -0
  331. package/dist/server/preload.d.ts +249 -0
  332. package/dist/server/preload.js +673 -0
  333. package/dist/server/random.js +25 -0
  334. package/dist/server/redirects.js +85 -0
  335. package/dist/server/runtime.d.ts +845 -0
  336. package/dist/server/runtime.js +387 -0
  337. package/dist/server/secret.js +46 -0
  338. package/dist/server/services/factors.js +117 -0
  339. package/dist/server/services/providers.js +23 -0
  340. package/dist/server/services/resolve.js +17 -0
  341. package/dist/server/session/lifecycle.d.ts +23 -0
  342. package/dist/server/session/lifecycle.js +139 -0
  343. package/dist/server/signin/flow.js +359 -0
  344. package/dist/server/telemetry.js +68 -0
  345. package/dist/server/templates.js +91 -0
  346. package/dist/server/token/refresh.js +35 -0
  347. package/dist/server/tokens.js +164 -0
  348. package/dist/server/totp.js +282 -0
  349. package/dist/server/types.d.ts +1154 -0
  350. package/dist/server/types.js +1 -0
  351. package/dist/server/url.js +43 -0
  352. package/dist/server/user/account.js +325 -0
  353. package/dist/server/utils/bearer.js +24 -0
  354. package/dist/server/utils/cache.js +51 -0
  355. package/dist/server/utils/retry.js +3 -0
  356. package/dist/server/utils/span.js +59 -0
  357. package/dist/server/validators.d.ts +2061 -0
  358. package/dist/server/validators.js +320 -0
  359. package/dist/server/webauthn.js +699 -0
  360. package/dist/server/wellknown.d.ts +74 -0
  361. package/dist/server/wellknown.js +195 -0
  362. package/dist/shared/brand.d.ts +28 -0
  363. package/dist/shared/brand.js +13 -0
  364. package/dist/shared/codes.d.ts +99 -0
  365. package/dist/shared/codes.js +98 -0
  366. package/dist/shared/compare.js +23 -0
  367. package/dist/shared/errors.js +24 -0
  368. package/dist/shared/event/kinds.d.ts +188 -0
  369. package/dist/shared/event/kinds.js +103 -0
  370. package/dist/shared/fetch/guard.js +189 -0
  371. package/dist/shared/log.js +62 -0
  372. package/dist/shared/results.d.ts +58 -0
  373. package/dist/shared/retry.js +27 -0
  374. package/dist/shared/webauthn.js +9 -0
  375. package/dist/svelte/AuthLoading.svelte +13 -0
  376. package/dist/svelte/AuthLoading.svelte.d.ts +8 -0
  377. package/dist/svelte/SignedIn.svelte +14 -0
  378. package/dist/svelte/SignedIn.svelte.d.ts +8 -0
  379. package/dist/svelte/SignedOut.svelte +13 -0
  380. package/dist/svelte/SignedOut.svelte.d.ts +8 -0
  381. package/dist/svelte/context.svelte.d.ts +26 -0
  382. package/dist/svelte/context.svelte.js +61 -0
  383. package/dist/svelte/index.d.ts +5 -0
  384. package/dist/svelte/index.js +4 -0
  385. package/dist/test.d.ts +48 -0
  386. package/dist/test.js +54 -0
  387. package/package.json +247 -0
@@ -0,0 +1,182 @@
1
+ import { ErrorCode } from "../../shared/codes.js";
2
+ import { convexError } from "../errors.js";
3
+ import { getGroupConnection, getScimConfigByConnection, getScimConfigByTokenHash, getScimIdentity, upsertScimConfig, upsertScimIdentity } from "../contract.js";
4
+
5
+ //#region src/server/connection/provision.ts
6
+ function getScimConfigShape(scimConfig) {
7
+ return typeof scimConfig?.extend === "object" && scimConfig.extend !== null ? scimConfig.extend : {};
8
+ }
9
+ function getPublicScimConfig(scimConfig) {
10
+ if (!scimConfig) return null;
11
+ const { tokenHash, ...rest } = scimConfig;
12
+ return {
13
+ ...rest,
14
+ hasToken: typeof tokenHash === "string" && tokenHash.length > 0
15
+ };
16
+ }
17
+ function createGroupScimDomain(deps) {
18
+ const { config, requireEnv, generateRandomString, INVITE_TOKEN_ALPHABET, sha256, loadGroupPolicyOrThrow, emitGroupAuthEvent } = deps;
19
+ const getScimBasePath = (connectionId) => `${requireEnv("CONVEX_SITE_URL")}/connections/${connectionId}/scim/v2`;
20
+ const validateScim = async (ctx, connectionId) => {
21
+ const checks = [];
22
+ const connection = await getGroupConnection(ctx, config.component.connection, connectionId);
23
+ if (!connection) return {
24
+ ok: false,
25
+ connectionId,
26
+ checks: [{
27
+ name: "group_connection_exists",
28
+ ok: false,
29
+ message: "Connection not found."
30
+ }]
31
+ };
32
+ const policy = await loadGroupPolicyOrThrow(ctx, connection.groupId);
33
+ const scimConfig = await getScimConfigByConnection(ctx, config.component.connection, connectionId);
34
+ const hasConfig = scimConfig !== null && scimConfig !== void 0;
35
+ checks.push({
36
+ name: "scim_config_exists",
37
+ ok: hasConfig,
38
+ message: hasConfig ? void 0 : "SCIM has not been configured."
39
+ });
40
+ const isActive = scimConfig?.status === "active";
41
+ checks.push({
42
+ name: "scim_config_active",
43
+ ok: isActive,
44
+ message: isActive ? void 0 : `SCIM config status is ${hasConfig ? scimConfig?.status : "unknown"}.`
45
+ });
46
+ const hasToken = typeof scimConfig?.tokenHash === "string" && scimConfig.tokenHash.length > 0;
47
+ checks.push({
48
+ name: "token_hash_set",
49
+ ok: hasToken,
50
+ message: hasToken ? void 0 : "SCIM bearer token has not been set."
51
+ });
52
+ const hasBasePath = typeof scimConfig?.basePath === "string" && scimConfig.basePath === getScimBasePath(connection._id);
53
+ checks.push({
54
+ name: "base_path_matches_route",
55
+ ok: hasBasePath,
56
+ message: hasBasePath ? void 0 : "SCIM basePath does not match the derived route."
57
+ });
58
+ const supportsIdempotentExternalId = policy.provisioning.scimReuse.user === "externalId";
59
+ checks.push({
60
+ name: "user_external_id_reuse_enabled",
61
+ ok: supportsIdempotentExternalId,
62
+ message: supportsIdempotentExternalId ? void 0 : "SCIM user retry-safe provisioning works best with scimReuse.user = externalId."
63
+ });
64
+ checks.push({
65
+ name: "filter_subset_supported",
66
+ ok: true,
67
+ message: "Supported filters: eq, co, sw, ew, pr on common user/group fields."
68
+ });
69
+ checks.push({
70
+ name: "protocol_capabilities_declared",
71
+ ok: true
72
+ });
73
+ return {
74
+ ok: checks.every((c) => c.ok),
75
+ connectionId: connection._id,
76
+ basePath: getScimBasePath(connection._id),
77
+ deprovisionMode: policy.provisioning.deprovision.mode,
78
+ capabilities: {
79
+ users: true,
80
+ groups: true,
81
+ patch: true,
82
+ put: true,
83
+ filters: [
84
+ "eq",
85
+ "co",
86
+ "sw",
87
+ "ew",
88
+ "pr"
89
+ ],
90
+ bulk: false,
91
+ etag: false
92
+ },
93
+ checks
94
+ };
95
+ };
96
+ return {
97
+ upsert: async (ctx, data) => {
98
+ const connection = await getGroupConnection(ctx, config.component.connection, data.connectionId);
99
+ if (connection === null) throw convexError(ErrorCode.INVALID_PARAMETERS, "Connection not found.");
100
+ const rawToken = generateRandomString(48, INVITE_TOKEN_ALPHABET);
101
+ const tokenHash = await sha256(rawToken);
102
+ const basePath = getScimBasePath(connection._id);
103
+ const configId = await upsertScimConfig(ctx, config.component.connection, {
104
+ connectionId: connection._id,
105
+ groupId: connection.groupId,
106
+ status: data.status ?? "active",
107
+ basePath,
108
+ tokenHash,
109
+ lastRotatedAt: Date.now(),
110
+ extend: {
111
+ security: data.security,
112
+ profile: data.profile
113
+ }
114
+ });
115
+ await emitGroupAuthEvent(ctx, {
116
+ connectionId: connection._id,
117
+ groupId: connection.groupId,
118
+ kind: "connection.scim.set",
119
+ actor: { type: "system" },
120
+ subject: {
121
+ type: "connection",
122
+ id: connection._id
123
+ },
124
+ data: { scimConfigId: configId },
125
+ webhook: { payload: {
126
+ connectionId: connection._id,
127
+ scimConfigId: configId
128
+ } }
129
+ });
130
+ return {
131
+ connectionId: connection._id,
132
+ configId,
133
+ basePath,
134
+ token: rawToken
135
+ };
136
+ },
137
+ get: async (ctx, args) => {
138
+ const scimConfig = await getScimConfigByConnection(ctx, config.component.connection, args.connectionId);
139
+ if (!scimConfig) return null;
140
+ const shape = getScimConfigShape(scimConfig);
141
+ return {
142
+ ...getPublicScimConfig(scimConfig),
143
+ security: shape.security,
144
+ profile: shape.profile
145
+ };
146
+ },
147
+ status: async (ctx, args) => {
148
+ const { connectionId } = args;
149
+ const currentConfig = await getScimConfigByConnection(ctx, config.component.connection, connectionId);
150
+ const result = await validateScim(ctx, connectionId);
151
+ return {
152
+ connectionId,
153
+ configured: currentConfig?.status !== void 0,
154
+ ready: result.ok,
155
+ config: getPublicScimConfig(currentConfig),
156
+ checks: result.checks,
157
+ capabilities: "capabilities" in result ? result.capabilities : void 0
158
+ };
159
+ },
160
+ getConfigByToken: async (ctx, args) => {
161
+ return await getScimConfigByTokenHash(ctx, config.component.connection, await sha256(args.token));
162
+ },
163
+ validate: async (ctx, args) => {
164
+ return await validateScim(ctx, args.connectionId);
165
+ },
166
+ identity: {
167
+ get: async (ctx, data) => {
168
+ return await getScimIdentity(ctx, config.component.connection, data);
169
+ },
170
+ upsert: async (ctx, data) => {
171
+ return await upsertScimIdentity(ctx, config.component.connection, {
172
+ ...data,
173
+ lastProvisionedAt: Date.now()
174
+ });
175
+ }
176
+ }
177
+ };
178
+ }
179
+
180
+ //#endregion
181
+ export { createGroupScimDomain };
182
+ //# sourceMappingURL=provision.js.map
@@ -0,0 +1,70 @@
1
+ import { DOMParser } from "@xmldom/xmldom";
2
+
3
+ //#region src/server/connection/saml/api.ts
4
+ /**
5
+ * Resolve a DOMParser constructor: the platform global if present, else xmldom's.
6
+ * xmldom implements the standard DOM interfaces but its declared types don't unify
7
+ * with the global ones, so its constructor is bridged to {@link DomParserCtor}
8
+ * through the single typed assertion at that cross-package boundary.
9
+ */
10
+ function loadDomParserCtor() {
11
+ const globalParser = globalThis.DOMParser;
12
+ if (typeof globalParser === "function") return globalParser;
13
+ if (typeof DOMParser === "function") return DOMParser;
14
+ throw new Error("ERR_DOM_PARSER_NOT_AVAILABLE");
15
+ }
16
+ const DOCTYPE_OR_ENTITY = /<!\s*(DOCTYPE|ENTITY)\b/i;
17
+ function rejectDoctypeOrEntity(xml) {
18
+ if (DOCTYPE_OR_ENTITY.test(xml)) throw new Error("ERR_XML_DOCTYPE_OR_ENTITY_FORBIDDEN");
19
+ }
20
+ function createDOMParser(options = {}) {
21
+ const parser = new (loadDomParserCtor())(options);
22
+ return { parseFromString: (xml, mimeType = "text/xml") => {
23
+ rejectDoctypeOrEntity(xml);
24
+ return parser.parseFromString(xml, mimeType);
25
+ } };
26
+ }
27
+ const context = {
28
+ validate: void 0,
29
+ dom: void 0,
30
+ readFile: void 0,
31
+ writeFile: void 0
32
+ };
33
+ /** Return the shared module context, lazily initializing a safe DOM parser. */
34
+ function getContext() {
35
+ if (context.dom === void 0) context.dom = createDOMParser();
36
+ return context;
37
+ }
38
+ /**
39
+ * Parse XML through the configured DOMParser, with DOCTYPE/ENTITY rejection.
40
+ * Use this for any XML coming from a network peer (IdP responses, signed
41
+ * payloads, encrypted assertions) instead of constructing a `DOMParser`
42
+ * directly — direct construction bypasses the doctype/entity guard.
43
+ */
44
+ function safeParseXml(xml, mimeType = "text/xml") {
45
+ const { dom } = getContext();
46
+ return dom.parseFromString(xml, mimeType);
47
+ }
48
+ /** Register the XML schema validation callback used by {@link safeParseXml} consumers. */
49
+ function setSchemaValidator(params) {
50
+ if (typeof params.validate !== "function") throw new Error("validate must be a callback function having one argument as xml input");
51
+ context.validate = params.validate;
52
+ }
53
+ /**
54
+ * Check if the xml string is valid and bounded.
55
+ *
56
+ * Security: a validator must be registered (see {@link setSchemaValidator}).
57
+ * A user may supply a validate function that always resolves to deliberately
58
+ * skip validation, but then takes responsibility for the resulting exposure;
59
+ * when no validator is registered this rejects rather than passing untrusted
60
+ * XML through unchecked.
61
+ */
62
+ async function isValidXml(input) {
63
+ const { validate } = getContext();
64
+ if (!validate) return Promise.reject("XML validation was requested but no validator is registered; refusing to process untrusted XML without validation. Register a schema validator before validating XML.");
65
+ return await validate(input);
66
+ }
67
+
68
+ //#endregion
69
+ export { getContext, isValidXml, safeParseXml, setSchemaValidator };
70
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1,140 @@
1
+ import { SAML_STATUS_SUCCESS } from "../constants.js";
2
+ import { base64Encode, get } from "../encoding.js";
3
+ import { constructSamlSignature } from "../signature.js";
4
+ import { defaultLoginRequestTemplate, defaultLogoutResponseTemplate, replaceTagsByValue } from "../template.js";
5
+ import { getBindingField } from "./shared.js";
6
+
7
+ //#region src/server/connection/saml/binding/post.ts
8
+ /**
9
+ * Binding-level API for functions using POST binding.
10
+ */
11
+ /**
12
+ * Assemble the signing config from entity settings. The IdP signing path always
13
+ * carries a configured `privateKey` and algorithm, and the signing certificate
14
+ * resolves to a single PEM string. The signer declares these as `string` /
15
+ * `string | Uint8Array`; the boundary casts narrow the optional `BinaryLike`
16
+ * settings and the `string | string[] | null` certificate return to those
17
+ * established types with no runtime change.
18
+ */
19
+ function buildSignatureConfig(privateKey, privateKeyPass, signatureAlgorithm, signingCert) {
20
+ return {
21
+ privateKey,
22
+ privateKeyPass,
23
+ signatureAlgorithm,
24
+ signingCert,
25
+ isBase64Output: false
26
+ };
27
+ }
28
+ /** Generate a base64-encoded login request for the POST binding. */
29
+ async function base64LoginRequest(referenceTagXPath, entity, customTagReplacement) {
30
+ const metadata = {
31
+ idp: entity.idp.entityMeta,
32
+ sp: entity.sp.entityMeta
33
+ };
34
+ const spSetting = entity.sp.entitySetting;
35
+ let id = "";
36
+ if (metadata && metadata.idp && metadata.sp) {
37
+ const base = metadata.idp.getSingleSignOnService("post");
38
+ let rawSamlRequest;
39
+ if (spSetting.loginRequestTemplate && customTagReplacement) {
40
+ const info = customTagReplacement(spSetting.loginRequestTemplate.context);
41
+ id = getBindingField(info, "id");
42
+ rawSamlRequest = getBindingField(info, "context");
43
+ } else {
44
+ const nameIDFormat = spSetting.nameIDFormat;
45
+ const selectedNameIDFormat = Array.isArray(nameIDFormat) ? nameIDFormat[0] : nameIDFormat;
46
+ id = spSetting.generateID();
47
+ rawSamlRequest = replaceTagsByValue(defaultLoginRequestTemplate.context, {
48
+ ID: id,
49
+ Destination: base,
50
+ Issuer: metadata.sp.getEntityID(),
51
+ IssueInstant: (/* @__PURE__ */ new Date()).toISOString(),
52
+ AssertionConsumerServiceURL: metadata.sp.getAssertionConsumerService("post"),
53
+ EntityID: metadata.sp.getEntityID(),
54
+ AllowCreate: spSetting.allowCreate,
55
+ NameIDFormat: selectedNameIDFormat
56
+ });
57
+ }
58
+ if (metadata.idp.isWantAuthnRequestsSigned()) {
59
+ const { privateKey, privateKeyPass, requestSignatureAlgorithm: signatureAlgorithm, transformationAlgorithms } = spSetting;
60
+ return {
61
+ id,
62
+ context: await constructSamlSignature({
63
+ ...buildSignatureConfig(privateKey, privateKeyPass, signatureAlgorithm, metadata.sp.getX509Certificate("signing")),
64
+ referenceTagXPath,
65
+ transformationAlgorithms,
66
+ rawSamlMessage: rawSamlRequest,
67
+ signatureConfig: spSetting.signatureConfig || {
68
+ prefix: "ds",
69
+ location: {
70
+ reference: "/*[local-name(.)='AuthnRequest']/*[local-name(.)='Issuer']",
71
+ action: "after"
72
+ }
73
+ }
74
+ })
75
+ };
76
+ }
77
+ return {
78
+ id,
79
+ context: base64Encode(rawSamlRequest)
80
+ };
81
+ }
82
+ throw new Error("ERR_GENERATE_POST_LOGIN_REQUEST_MISSING_METADATA");
83
+ }
84
+ /** Generate a base64-encoded logout response for the POST binding. */
85
+ async function base64LogoutResponse(requestInfo, entity, customTagReplacement) {
86
+ const metadata = {
87
+ init: entity.init.entityMeta,
88
+ target: entity.target.entityMeta
89
+ };
90
+ let id = "";
91
+ const initSetting = entity.init.entitySetting;
92
+ if (metadata && metadata.init && metadata.target) {
93
+ let rawSamlResponse;
94
+ if (initSetting.logoutResponseTemplate) {
95
+ const template = customTagReplacement(initSetting.logoutResponseTemplate.context);
96
+ id = template.id;
97
+ rawSamlResponse = template.context;
98
+ } else {
99
+ id = initSetting.generateID();
100
+ const tvalue = {
101
+ ID: id,
102
+ Destination: metadata.target.getSingleLogoutService("post"),
103
+ EntityID: metadata.init.getEntityID(),
104
+ Issuer: metadata.init.getEntityID(),
105
+ IssueInstant: (/* @__PURE__ */ new Date()).toISOString(),
106
+ StatusCode: SAML_STATUS_SUCCESS,
107
+ InResponseTo: get(requestInfo, "extract.request.id", null)
108
+ };
109
+ rawSamlResponse = replaceTagsByValue(defaultLogoutResponseTemplate.context, tvalue);
110
+ }
111
+ if (entity.target.entitySetting.wantLogoutResponseSigned) {
112
+ const { privateKey, privateKeyPass, requestSignatureAlgorithm: signatureAlgorithm, transformationAlgorithms } = initSetting;
113
+ return {
114
+ id,
115
+ context: await constructSamlSignature({
116
+ ...buildSignatureConfig(privateKey, privateKeyPass, signatureAlgorithm, metadata.init.getX509Certificate("signing")),
117
+ isMessageSigned: true,
118
+ transformationAlgorithms,
119
+ rawSamlMessage: rawSamlResponse,
120
+ signatureConfig: {
121
+ prefix: "ds",
122
+ location: {
123
+ reference: "/*[local-name(.)='LogoutResponse']/*[local-name(.)='Issuer']",
124
+ action: "after"
125
+ }
126
+ }
127
+ })
128
+ };
129
+ }
130
+ return {
131
+ id,
132
+ context: base64Encode(rawSamlResponse)
133
+ };
134
+ }
135
+ throw new Error("ERR_GENERATE_POST_LOGOUT_RESPONSE_MISSING_METADATA");
136
+ }
137
+
138
+ //#endregion
139
+ export { base64LoginRequest, base64LogoutResponse };
140
+ //# sourceMappingURL=post.js.map
@@ -0,0 +1,139 @@
1
+ import { SAML_STATUS_SUCCESS, SamlQueryParam } from "../constants.js";
2
+ import { base64Encode, deflateString } from "../encoding.js";
3
+ import { constructMessageSignature } from "../signature.js";
4
+ import { defaultLoginRequestTemplate, defaultLogoutResponseTemplate, getQueryParamByType, replaceTagsByValue } from "../template.js";
5
+ import { getBindingField } from "./shared.js";
6
+
7
+ //#region src/server/connection/saml/binding/redirect.ts
8
+ /**
9
+ * Binding-level API for functions using Redirect binding.
10
+ */
11
+ /**
12
+ * View the extractor's genuinely-open {@link ExtractedProperties} through the
13
+ * concrete request shape these response/logout builders read. The extract is
14
+ * dynamically assembled from inbound XML, so this is the single dynamic-shape
15
+ * boundary where the open record is narrowed to {@link ParsedRequestExtract}.
16
+ */
17
+ function asParsedRequest(extract) {
18
+ return extract;
19
+ }
20
+ function pvPair(param, value, first) {
21
+ return (first === true ? "?" : "&") + param + "=" + value;
22
+ }
23
+ function hasNoQuery(baseUrl) {
24
+ const queryIndex = baseUrl.indexOf("?");
25
+ if (queryIndex < 0) return true;
26
+ return queryIndex === baseUrl.length - 1;
27
+ }
28
+ /** Build the redirect-binding URL, optionally appending a query-string signature. */
29
+ async function buildRedirectURL(opts) {
30
+ const { baseUrl, type, isSigned, context, entitySetting } = opts;
31
+ let { relayState = "" } = opts;
32
+ const noParams = hasNoQuery(baseUrl);
33
+ const queryParam = getQueryParamByType(type);
34
+ const samlRequest = encodeURIComponent(base64Encode(deflateString(context)));
35
+ if (relayState !== "") relayState = pvPair(SamlQueryParam.relayState, encodeURIComponent(relayState));
36
+ if (isSigned) {
37
+ /**
38
+ * The signed redirect path always runs with a configured algorithm and key
39
+ * (the entity defaults supply `requestSignatureAlgorithm`, and a signed
40
+ * request requires `privateKey`); the signer also declares `privateKey` as
41
+ * `string`. These two boundary casts narrow the optional/`BinaryLike`
42
+ * settings to what the signer consumes without runtime change.
43
+ */
44
+ const sigAlg = pvPair(SamlQueryParam.sigAlg, encodeURIComponent(entitySetting.requestSignatureAlgorithm));
45
+ const octetString = samlRequest + relayState + sigAlg;
46
+ const signature = await constructMessageSignature(queryParam + "=" + octetString, entitySetting.privateKey, entitySetting.privateKeyPass, void 0, entitySetting.requestSignatureAlgorithm);
47
+ return baseUrl + pvPair(queryParam, octetString, noParams) + pvPair(SamlQueryParam.signature, encodeURIComponent(signature.toString()));
48
+ }
49
+ return baseUrl + pvPair(queryParam, samlRequest + relayState, noParams);
50
+ }
51
+ /** Build the redirect-binding URL for a login request. */
52
+ async function loginRequestRedirectURL(entity, customTagReplacement) {
53
+ const metadata = {
54
+ idp: entity.idp.entityMeta,
55
+ sp: entity.sp.entityMeta
56
+ };
57
+ const spSetting = entity.sp.entitySetting;
58
+ let id = "";
59
+ if (metadata && metadata.idp && metadata.sp) {
60
+ const base = metadata.idp.getSingleSignOnService("redirect");
61
+ let rawSamlRequest;
62
+ if (spSetting.loginRequestTemplate && customTagReplacement) {
63
+ const info = customTagReplacement(spSetting.loginRequestTemplate);
64
+ id = getBindingField(info, "id");
65
+ rawSamlRequest = getBindingField(info, "context");
66
+ } else {
67
+ const nameIDFormat = spSetting.nameIDFormat;
68
+ const selectedNameIDFormat = Array.isArray(nameIDFormat) ? nameIDFormat[0] : nameIDFormat;
69
+ id = spSetting.generateID();
70
+ rawSamlRequest = replaceTagsByValue(defaultLoginRequestTemplate.context, {
71
+ ID: id,
72
+ Destination: base,
73
+ Issuer: metadata.sp.getEntityID(),
74
+ IssueInstant: (/* @__PURE__ */ new Date()).toISOString(),
75
+ NameIDFormat: selectedNameIDFormat,
76
+ AssertionConsumerServiceURL: metadata.sp.getAssertionConsumerService("post"),
77
+ EntityID: metadata.sp.getEntityID(),
78
+ AllowCreate: spSetting.allowCreate
79
+ });
80
+ }
81
+ return {
82
+ id,
83
+ context: await buildRedirectURL({
84
+ context: rawSamlRequest,
85
+ type: "SAMLRequest",
86
+ isSigned: metadata.sp.isAuthnRequestSigned(),
87
+ entitySetting: spSetting,
88
+ baseUrl: base,
89
+ relayState: spSetting.relayState
90
+ })
91
+ };
92
+ }
93
+ throw new Error("ERR_GENERATE_REDIRECT_LOGIN_REQUEST_MISSING_METADATA");
94
+ }
95
+ /** Build the redirect-binding URL for a logout response. */
96
+ async function logoutResponseRedirectURL(requestInfo, entity, relayState, customTagReplacement) {
97
+ const metadata = {
98
+ init: entity.init.entityMeta,
99
+ target: entity.target.entityMeta
100
+ };
101
+ const initSetting = entity.init.entitySetting;
102
+ let id = initSetting.generateID();
103
+ if (metadata && metadata.init && metadata.target) {
104
+ const base = metadata.target.getSingleLogoutService("redirect");
105
+ let rawSamlResponse;
106
+ if (initSetting.logoutResponseTemplate && customTagReplacement) {
107
+ const template = customTagReplacement(initSetting.logoutResponseTemplate);
108
+ id = getBindingField(template, "id");
109
+ rawSamlResponse = getBindingField(template, "context");
110
+ } else {
111
+ const tvalue = {
112
+ ID: id,
113
+ Destination: base,
114
+ Issuer: metadata.init.getEntityID(),
115
+ EntityID: metadata.init.getEntityID(),
116
+ IssueInstant: (/* @__PURE__ */ new Date()).toISOString(),
117
+ StatusCode: SAML_STATUS_SUCCESS
118
+ };
119
+ if (requestInfo && requestInfo.extract && asParsedRequest(requestInfo.extract).request) tvalue.InResponseTo = asParsedRequest(requestInfo.extract).request.id;
120
+ rawSamlResponse = replaceTagsByValue(defaultLogoutResponseTemplate.context, tvalue);
121
+ }
122
+ return {
123
+ id,
124
+ context: await buildRedirectURL({
125
+ baseUrl: base,
126
+ type: "LogoutResponse",
127
+ isSigned: entity.target.entitySetting.wantLogoutResponseSigned,
128
+ context: rawSamlResponse,
129
+ entitySetting: initSetting,
130
+ relayState
131
+ })
132
+ };
133
+ }
134
+ throw new Error("ERR_GENERATE_REDIRECT_LOGOUT_RESPONSE_MISSING_METADATA");
135
+ }
136
+
137
+ //#endregion
138
+ export { loginRequestRedirectURL, logoutResponseRedirectURL };
139
+ //# sourceMappingURL=redirect.js.map
@@ -0,0 +1,18 @@
1
+ import { get } from "../encoding.js";
2
+
3
+ //#region src/server/connection/saml/binding/shared.ts
4
+ /**
5
+ * Helpers and entity types shared by the redirect and POST binding builders.
6
+ */
7
+ /**
8
+ * `get` performs lodash-style traversal and returns `unknown`; a custom-tag
9
+ * replacement yields a {@link BindingContext}, so `id`/`context` are strings.
10
+ * The single boundary cast preserves `get`'s truthy-or-null runtime semantics.
11
+ */
12
+ function getBindingField(source, field) {
13
+ return get(source, field, null);
14
+ }
15
+
16
+ //#endregion
17
+ export { getBindingField };
18
+ //# sourceMappingURL=shared.js.map