@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,598 @@
1
+ import { safeParseXml } from "./api.js";
2
+ import { evaluateXPathToNodes, serializeXmlNode } from "./dom/select.js";
3
+ import { toUtf8String } from "./encoding.js";
4
+ import { rsaSign, rsaVerify, sha1Base64, sha256Base64 } from "./crypto.js";
5
+ import { getTransformByAlgorithm } from "./c14n.js";
6
+
7
+ //#region src/server/connection/saml/xmldsig.ts
8
+ function selectNodes(expression, source) {
9
+ /**
10
+ * The XPath engine descends from an `Element` or `Document`; every `source`
11
+ * passed here is one of those at runtime (a parsed signature document or an
12
+ * element selected from one). This bridges the nominal `Node` supertype to the
13
+ * engine's `Element | Document` container across the xmldom/global-DOM boundary.
14
+ */
15
+ return evaluateXPathToNodes(expression, source);
16
+ }
17
+ function normalizePem(pem) {
18
+ return `${(pem.trim().replace(/(\r\n|\r)/g, "\n").match(/.{1,64}/g) || []).join("\n")}\n`;
19
+ }
20
+ function derToPem(derBase64, pemLabel) {
21
+ return normalizePem(`-----BEGIN ${pemLabel}-----\n${derBase64.replace(/(\r\n|\r|\n)/g, "").trim()}\n-----END ${pemLabel}-----`);
22
+ }
23
+ function normalizeCertificateBody(raw) {
24
+ return raw.replace(/-----BEGIN CERTIFICATE-----/g, "").replace(/-----END CERTIFICATE-----/g, "").replace(/\s+/g, "");
25
+ }
26
+ /**
27
+ * Map a signature-scheme name or algorithm URI to its WebCrypto hash.
28
+ *
29
+ * Accepts the `pkcs1-sha1` / `pkcs1-sha256` short-hands as well as `sha-256`,
30
+ * defaulting to SHA-1 when nothing matches.
31
+ */
32
+ function schemeToHash(scheme) {
33
+ const normalized = scheme.toLowerCase();
34
+ if (normalized.includes("sha256")) return "SHA-256";
35
+ if (normalized.includes("sha1")) return "SHA-1";
36
+ if (normalized.includes("sha-256")) return "SHA-256";
37
+ return "SHA-1";
38
+ }
39
+ function isElementNode(node) {
40
+ return typeof node === "object" && node !== null && node.nodeType === 1;
41
+ }
42
+ function isAttributeNode(node) {
43
+ return typeof node === "object" && node !== null && node.nodeType === 2;
44
+ }
45
+ function isTextNode(node) {
46
+ return typeof node === "object" && node !== null && node.nodeType === 3;
47
+ }
48
+ function isDocument(node) {
49
+ return node.nodeType === 9;
50
+ }
51
+ function findChildren(node, localName) {
52
+ const element = isDocument(node) ? node.documentElement || node : node;
53
+ const res = [];
54
+ if (!element.childNodes) return res;
55
+ for (let i = 0; i < element.childNodes.length; i++) {
56
+ const child = element.childNodes.item(i);
57
+ if (isElementNode(child) && child.localName === localName) res.push(child);
58
+ }
59
+ return res;
60
+ }
61
+ function findAttr(element, localName, namespace) {
62
+ for (let i = 0; i < element.attributes.length; i++) {
63
+ const attr = element.attributes[i];
64
+ if (attr.localName === localName && (namespace == null || attr.namespaceURI === namespace || !attr.namespaceURI && element.namespaceURI === namespace)) return attr;
65
+ }
66
+ return null;
67
+ }
68
+ function isArrayHasLength(input) {
69
+ return Array.isArray(input) && input.length > 0;
70
+ }
71
+ function getElementNamespaceDeclarations(node) {
72
+ const out = [];
73
+ for (let i = 0; i < node.attributes.length; i++) {
74
+ const attr = node.attributes[i];
75
+ if (attr.nodeName.search(/^xmlns:?/) !== -1) out.push({
76
+ prefix: attr.nodeName.replace(/^xmlns:?/, ""),
77
+ namespaceURI: attr.nodeValue || ""
78
+ });
79
+ }
80
+ return out;
81
+ }
82
+ function findAncestorNs(doc, docSubsetXpath) {
83
+ if (!docSubsetXpath) return [];
84
+ const docSubset = selectNodes(docSubsetXpath, doc);
85
+ if (!isArrayHasLength(docSubset)) return [];
86
+ const first = docSubset[0];
87
+ if (!isElementNode(first)) throw new Error("Document subset must be list of elements");
88
+ const nsList = [];
89
+ let parent = first.parentNode;
90
+ while (parent && isElementNode(parent)) {
91
+ nsList.push(...getElementNamespaceDeclarations(parent));
92
+ parent = parent.parentNode;
93
+ }
94
+ const unique = [];
95
+ const seen = /* @__PURE__ */ new Set();
96
+ for (const entry of nsList) if (!seen.has(entry.prefix)) {
97
+ seen.add(entry.prefix);
98
+ unique.push(entry);
99
+ }
100
+ const subsetPrefix = (() => {
101
+ for (let i = 0; i < first.attributes.length; i++) {
102
+ const nodeName = first.attributes[i].nodeName;
103
+ if (nodeName.search(/^xmlns:?/) !== -1) return nodeName.replace(/^xmlns:?/, "");
104
+ }
105
+ return first.prefix || "";
106
+ })();
107
+ return unique.filter((v) => v.prefix !== subsetPrefix);
108
+ }
109
+ const sha1 = {
110
+ getHash(xml) {
111
+ return sha1Base64(xml);
112
+ },
113
+ getAlgorithmName() {
114
+ return "http://www.w3.org/2000/09/xmldsig#sha1";
115
+ }
116
+ };
117
+ const sha256 = {
118
+ getHash(xml) {
119
+ return sha256Base64(xml);
120
+ },
121
+ getAlgorithmName() {
122
+ return "http://www.w3.org/2001/04/xmlenc#sha256";
123
+ }
124
+ };
125
+ const rsaSha1 = {
126
+ async getSignature(signedInfo, privateKey) {
127
+ return rsaSign(privateKey, signedInfo, "SHA-1");
128
+ },
129
+ async verifySignature(material, key, signatureValue) {
130
+ return rsaVerify(key, material, signatureValue, "SHA-1");
131
+ },
132
+ getAlgorithmName() {
133
+ return "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
134
+ }
135
+ };
136
+ const rsaSha256 = {
137
+ async getSignature(signedInfo, privateKey) {
138
+ return rsaSign(privateKey, signedInfo, "SHA-256");
139
+ },
140
+ async verifySignature(material, key, signatureValue) {
141
+ return rsaVerify(key, material, signatureValue, "SHA-256");
142
+ },
143
+ getAlgorithmName() {
144
+ return "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";
145
+ }
146
+ };
147
+ const HASH_ALGORITHMS = {
148
+ "http://www.w3.org/2000/09/xmldsig#sha1": sha1,
149
+ "http://www.w3.org/2001/04/xmlenc#sha256": sha256
150
+ };
151
+ const SIGNATURE_ALGORITHMS = {
152
+ "http://www.w3.org/2000/09/xmldsig#rsa-sha1": rsaSha1,
153
+ "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256": rsaSha256
154
+ };
155
+ function findHashAlgorithm(name) {
156
+ const algo = HASH_ALGORITHMS[name];
157
+ if (!algo) throw new Error(`hash algorithm '${name}' is not supported`);
158
+ return algo;
159
+ }
160
+ function findSignatureAlgorithm(name) {
161
+ if (!name) throw new Error("signatureAlgorithm is required");
162
+ const algo = SIGNATURE_ALGORITHMS[name];
163
+ if (!algo) throw new Error(`signature algorithm '${name}' is not supported`);
164
+ return algo;
165
+ }
166
+ const defaultNsForPrefix = { ds: "http://www.w3.org/2000/09/xmldsig#" };
167
+ function staticGetKeyInfoContent({ publicCert, prefix }) {
168
+ if (!publicCert) return null;
169
+ const currentPrefix = prefix ? `${prefix}:` : "";
170
+ const certBody = normalizeCertificateBody(publicCert);
171
+ if (!certBody) return null;
172
+ return `<${currentPrefix}X509Data><${currentPrefix}X509Certificate>${certBody}</${currentPrefix}X509Certificate></${currentPrefix}X509Data>`;
173
+ }
174
+ function staticGetCertFromKeyInfo(keyInfo) {
175
+ if (!isElementNode(keyInfo)) return null;
176
+ const certNode = selectNodes(".//*[local-name(.)='X509Certificate']", keyInfo)[0];
177
+ if (isElementNode(certNode) && typeof certNode.textContent === "string") return derToPem(certNode.textContent, "CERTIFICATE");
178
+ return null;
179
+ }
180
+ /** Create a fresh XML-dsig signer/verifier instance. */
181
+ function createSignedXml() {
182
+ const self = {
183
+ signatureAlgorithm: void 0,
184
+ canonicalizationAlgorithm: void 0,
185
+ inclusiveNamespacesPrefixList: [],
186
+ keyInfoAttributes: {},
187
+ getKeyInfoContent: (args) => staticGetKeyInfoContent(args),
188
+ getCertFromKeyInfo: (keyInfo) => staticGetCertFromKeyInfo(keyInfo),
189
+ id: 0,
190
+ signedXml: "",
191
+ signatureXml: "",
192
+ signatureNode: null,
193
+ signatureValue: "",
194
+ originalXmlWithIds: "",
195
+ keyInfo: null,
196
+ references: [],
197
+ signedReferences: [],
198
+ idAttributes: [
199
+ "Id",
200
+ "ID",
201
+ "id"
202
+ ],
203
+ privateKey: void 0,
204
+ publicCert: void 0,
205
+ addReference({ xpath, transforms, digestAlgorithm, uri = "", digestValue, inclusiveNamespacesPrefixList = [], isEmptyUri = false }) {
206
+ if (!digestAlgorithm) throw new Error("digestAlgorithm is required");
207
+ if (!isArrayHasLength(transforms)) throw new Error("transforms must contain at least one transform algorithm");
208
+ self.references.push({
209
+ xpath,
210
+ transforms,
211
+ digestAlgorithm,
212
+ uri,
213
+ digestValue,
214
+ inclusiveNamespacesPrefixList,
215
+ isEmptyUri
216
+ });
217
+ },
218
+ getSignedReferences() {
219
+ return [...self.signedReferences];
220
+ },
221
+ getCanonXml(transforms, node, options = {}) {
222
+ options.defaultNsForPrefix = options.defaultNsForPrefix || defaultNsForPrefix;
223
+ options.signatureNode = self.signatureNode === null ? void 0 : self.signatureNode;
224
+ let transformed = node.cloneNode(true);
225
+ transforms.forEach((transformName) => {
226
+ if (typeof transformed !== "string") transformed = getTransformByAlgorithm(transformName).process(transformed, options);
227
+ });
228
+ return typeof transformed === "string" ? transformed : transformed.toString();
229
+ },
230
+ ensureHasId(node) {
231
+ for (const idAttr of self.idAttributes) {
232
+ const attr = findAttr(node, idAttr);
233
+ if (attr) return attr.value;
234
+ }
235
+ const id = `_${self.id++}`;
236
+ node.setAttribute("Id", id);
237
+ return id;
238
+ },
239
+ getCanonReferenceXml(doc, ref, node) {
240
+ if (Array.isArray(ref.transforms)) ref.ancestorNamespaces = findAncestorNs(doc, ref.xpath);
241
+ const c14nOptions = {
242
+ inclusiveNamespacesPrefixList: ref.inclusiveNamespacesPrefixList,
243
+ ancestorNamespaces: ref.ancestorNamespaces
244
+ };
245
+ return self.getCanonXml(ref.transforms, node, c14nOptions);
246
+ },
247
+ getCanonSignedInfoXml(doc) {
248
+ if (self.signatureNode == null) throw new Error("No signature found.");
249
+ if (typeof self.canonicalizationAlgorithm !== "string") throw new Error("Missing canonicalizationAlgorithm when trying to get signed info for XML");
250
+ const signedInfo = findChildren(self.signatureNode, "SignedInfo");
251
+ if (signedInfo.length === 0) throw new Error("could not find SignedInfo element in the message");
252
+ if (signedInfo.length > 1) throw new Error("could not get canonicalized signed info for a signature that contains multiple SignedInfo nodes");
253
+ const ancestorNamespaces = findAncestorNs(doc, "//*[local-name()='SignedInfo']");
254
+ return self.getCanonXml([self.canonicalizationAlgorithm], signedInfo[0], { ancestorNamespaces });
255
+ },
256
+ createReferences(doc, prefix) {
257
+ const currentPrefix = prefix ? `${prefix}:` : "";
258
+ let res = "";
259
+ for (const ref of self.references) {
260
+ const nodes = selectNodes(ref.xpath || "", doc);
261
+ if (!isArrayHasLength(nodes)) throw new Error(`the following xpath cannot be signed because it was not found: ${ref.xpath}`);
262
+ for (const selected of nodes) {
263
+ if (!isElementNode(selected)) continue;
264
+ const node = selected;
265
+ if (ref.isEmptyUri) res += `<${currentPrefix}Reference URI="">`;
266
+ else {
267
+ const id = self.ensureHasId(node);
268
+ ref.uri = id;
269
+ res += `<${currentPrefix}Reference URI="#${id}">`;
270
+ }
271
+ res += `<${currentPrefix}Transforms>`;
272
+ for (const trans of ref.transforms || []) {
273
+ const transform = getTransformByAlgorithm(trans);
274
+ res += `<${currentPrefix}Transform Algorithm="${transform.getAlgorithmName()}"`;
275
+ if (isArrayHasLength(ref.inclusiveNamespacesPrefixList)) {
276
+ res += ">";
277
+ res += `<InclusiveNamespaces PrefixList="${ref.inclusiveNamespacesPrefixList.join(" ")}" xmlns="${transform.getAlgorithmName()}"/>`;
278
+ res += `</${currentPrefix}Transform>`;
279
+ } else res += " />";
280
+ }
281
+ const canonXml = self.getCanonReferenceXml(doc, ref, node);
282
+ const digestAlgorithm = findHashAlgorithm(ref.digestAlgorithm);
283
+ res += `</${currentPrefix}Transforms><${currentPrefix}DigestMethod Algorithm="${digestAlgorithm.getAlgorithmName()}" /><${currentPrefix}DigestValue>${digestAlgorithm.getHash(canonXml)}</${currentPrefix}DigestValue></${currentPrefix}Reference>`;
284
+ }
285
+ }
286
+ return res;
287
+ },
288
+ createSignedInfo(doc, prefix) {
289
+ if (typeof self.canonicalizationAlgorithm !== "string") throw new Error("Missing canonicalizationAlgorithm when trying to create signed info for XML");
290
+ const transform = getTransformByAlgorithm(self.canonicalizationAlgorithm);
291
+ const algo = findSignatureAlgorithm(self.signatureAlgorithm);
292
+ const currentPrefix = prefix ? `${prefix}:` : "";
293
+ let res = `<${currentPrefix}SignedInfo>`;
294
+ res += `<${currentPrefix}CanonicalizationMethod Algorithm="${transform.getAlgorithmName()}"`;
295
+ if (isArrayHasLength(self.inclusiveNamespacesPrefixList)) {
296
+ res += ">";
297
+ res += `<InclusiveNamespaces PrefixList="${self.inclusiveNamespacesPrefixList.join(" ")}" xmlns="${transform.getAlgorithmName()}"/>`;
298
+ res += `</${currentPrefix}CanonicalizationMethod>`;
299
+ } else res += " />";
300
+ res += `<${currentPrefix}SignatureMethod Algorithm="${algo.getAlgorithmName()}" />`;
301
+ res += self.createReferences(doc, prefix);
302
+ res += `</${currentPrefix}SignedInfo>`;
303
+ return res;
304
+ },
305
+ createSignature(prefix) {
306
+ let xmlNsAttr = "xmlns";
307
+ let currentPrefix = "";
308
+ if (prefix) {
309
+ xmlNsAttr += `:${prefix}`;
310
+ currentPrefix = `${prefix}:`;
311
+ }
312
+ const signatureValueXml = `<${currentPrefix}SignatureValue>${self.signatureValue}</${currentPrefix}SignatureValue>`;
313
+ return safeParseXml(`<${currentPrefix}Signature ${xmlNsAttr}="http://www.w3.org/2000/09/xmldsig#">${signatureValueXml}</${currentPrefix}Signature>`, "text/xml").documentElement.firstChild;
314
+ },
315
+ async calculateSignatureValue(doc) {
316
+ const signedInfoCanon = self.getCanonSignedInfoXml(doc);
317
+ const signer = findSignatureAlgorithm(self.signatureAlgorithm);
318
+ if (self.privateKey == null) throw new Error("Private key is required to compute signature");
319
+ self.signatureValue = await signer.getSignature(signedInfoCanon, self.privateKey);
320
+ },
321
+ getKeyInfo(prefix) {
322
+ const currentPrefix = prefix ? `${prefix}:` : "";
323
+ let keyInfoAttrs = "";
324
+ if (self.keyInfoAttributes) Object.keys(self.keyInfoAttributes).forEach((name) => {
325
+ keyInfoAttrs += ` ${name}="${self.keyInfoAttributes[name]}"`;
326
+ });
327
+ const keyInfoContent = self.getKeyInfoContent({
328
+ publicCert: self.publicCert,
329
+ prefix
330
+ });
331
+ if (keyInfoAttrs || keyInfoContent) return `<${currentPrefix}KeyInfo${keyInfoAttrs}>${keyInfoContent || ""}</${currentPrefix}KeyInfo>`;
332
+ return "";
333
+ },
334
+ async computeSignature(xml, options) {
335
+ options = options || {};
336
+ const doc = safeParseXml(xml, "text/xml");
337
+ let xmlNsAttr = "xmlns";
338
+ const signatureAttrs = [];
339
+ const validActions = [
340
+ "append",
341
+ "prepend",
342
+ "before",
343
+ "after"
344
+ ];
345
+ const prefix = options.prefix;
346
+ const attrs = options.attrs || {};
347
+ const location = options.location || {};
348
+ const existingPrefixes = options.existingPrefixes || {};
349
+ location.reference = location.reference || "/*";
350
+ location.action = location.action || "append";
351
+ if (validActions.indexOf(location.action) === -1) throw new Error(`location.action option has an invalid action: ${location.action}, must be any of the following values: ${validActions.join(", ")}`);
352
+ let currentPrefix = "";
353
+ if (prefix) {
354
+ xmlNsAttr += `:${prefix}`;
355
+ currentPrefix = `${prefix}:`;
356
+ }
357
+ Object.keys(attrs).forEach((name) => {
358
+ if (name !== "xmlns" && name !== xmlNsAttr) signatureAttrs.push(`${name}="${attrs[name]}"`);
359
+ });
360
+ signatureAttrs.push(`${xmlNsAttr}="http://www.w3.org/2000/09/xmldsig#"`);
361
+ let signatureXml = `<${currentPrefix}Signature ${signatureAttrs.join(" ")}>`;
362
+ signatureXml += self.createSignedInfo(doc, prefix);
363
+ signatureXml += self.getKeyInfo(prefix);
364
+ signatureXml += `</${currentPrefix}Signature>`;
365
+ self.originalXmlWithIds = serializeXmlNode(doc);
366
+ let existingPrefixesString = "";
367
+ Object.keys(existingPrefixes).forEach((key) => {
368
+ existingPrefixesString += `xmlns:${key}="${existingPrefixes[key]}" `;
369
+ });
370
+ const signatureDoc = safeParseXml(`<Dummy ${existingPrefixesString}>${signatureXml}</Dummy>`, "text/xml").documentElement.firstChild;
371
+ const referenceNode = selectNodes(location.reference, doc)[0];
372
+ if (!isElementNode(referenceNode)) throw new Error(`the following xpath cannot be used because it was not found: ${location.reference}`);
373
+ if (location.action === "append") referenceNode.appendChild(signatureDoc);
374
+ else if (location.action === "prepend") referenceNode.insertBefore(signatureDoc, referenceNode.firstChild);
375
+ else if (location.action === "before") {
376
+ if (!referenceNode.parentNode) throw new Error("`location.reference` refers to the root node (by default), so we cannot insert `before`");
377
+ referenceNode.parentNode.insertBefore(signatureDoc, referenceNode);
378
+ } else if (location.action === "after") {
379
+ if (!referenceNode.parentNode) throw new Error("`location.reference` refers to the root node (by default), so we cannot insert `after`");
380
+ referenceNode.parentNode.insertBefore(signatureDoc, referenceNode.nextSibling);
381
+ }
382
+ self.signatureNode = signatureDoc;
383
+ const signedInfoNodes = findChildren(self.signatureNode, "SignedInfo");
384
+ if (signedInfoNodes.length === 0) throw new Error("could not find SignedInfo element in the message");
385
+ await self.calculateSignatureValue(doc);
386
+ signatureDoc.insertBefore(self.createSignature(prefix), signedInfoNodes[0].nextSibling);
387
+ self.signatureXml = signatureDoc.toString();
388
+ self.signedXml = serializeXmlNode(doc);
389
+ },
390
+ loadReference(refNode) {
391
+ const nodeStr = (n) => n.toString();
392
+ let nodes = findChildren(refNode, "DigestMethod");
393
+ if (nodes.length === 0) throw new Error(`could not find DigestMethod in reference ${nodeStr(refNode)}`);
394
+ const digestAlgoNode = nodes[0];
395
+ const digestAttr = findAttr(digestAlgoNode, "Algorithm");
396
+ if (!digestAttr) throw new Error(`could not find Algorithm attribute in node ${nodeStr(digestAlgoNode)}`);
397
+ const digestAlgo = digestAttr.value;
398
+ nodes = findChildren(refNode, "DigestValue");
399
+ if (nodes.length === 0) throw new Error(`could not find DigestValue node in reference ${nodeStr(refNode)}`);
400
+ if (nodes.length > 1) throw new Error(`could not load reference for a node that contains multiple DigestValue nodes: ${nodeStr(refNode)}`);
401
+ const digestValue = nodes[0].textContent || "";
402
+ if (!digestValue) throw new Error(`could not find the value of DigestValue in ${nodeStr(refNode)}`);
403
+ const transforms = [];
404
+ let inclusiveNamespacesPrefixList = [];
405
+ nodes = findChildren(refNode, "Transforms");
406
+ if (nodes.length !== 0) {
407
+ const transformsNode = nodes[0];
408
+ const transformsAll = findChildren(transformsNode, "Transform");
409
+ for (const transform of transformsAll) {
410
+ const transformAttr = findAttr(transform, "Algorithm");
411
+ if (transformAttr) transforms.push(transformAttr.value);
412
+ }
413
+ const lastTransform = transformsAll[transformsAll.length - 1];
414
+ if (lastTransform) {
415
+ const inclusiveNamespaces = findChildren(lastTransform, "InclusiveNamespaces");
416
+ if (isArrayHasLength(inclusiveNamespaces)) {
417
+ const values = [];
418
+ inclusiveNamespaces.forEach((namespaceNode) => {
419
+ (namespaceNode.getAttribute("PrefixList") || "").split(" ").forEach((v) => {
420
+ if (v.length > 0) values.push(v);
421
+ });
422
+ });
423
+ inclusiveNamespacesPrefixList = values;
424
+ }
425
+ }
426
+ }
427
+ if (transforms.length === 0 || transforms[transforms.length - 1] === "http://www.w3.org/2000/09/xmldsig#enveloped-signature") transforms.push("http://www.w3.org/2001/10/xml-exc-c14n#");
428
+ const refUri = isElementNode(refNode) ? refNode.getAttribute("URI") : null;
429
+ self.addReference({
430
+ transforms,
431
+ digestAlgorithm: digestAlgo,
432
+ uri: refUri === null ? void 0 : refUri,
433
+ digestValue,
434
+ inclusiveNamespacesPrefixList,
435
+ isEmptyUri: refUri === ""
436
+ });
437
+ },
438
+ loadSignature(signatureNode) {
439
+ if (typeof signatureNode === "string") self.signatureNode = safeParseXml(signatureNode, "text/xml");
440
+ else self.signatureNode = signatureNode;
441
+ self.signatureXml = self.signatureNode.toString();
442
+ const canonicalizationAlgorithmNode = selectNodes(".//*[local-name(.)='CanonicalizationMethod']/@Algorithm", self.signatureNode)[0];
443
+ if (!canonicalizationAlgorithmNode) throw new Error("could not find CanonicalizationMethod/@Algorithm element");
444
+ if (isAttributeNode(canonicalizationAlgorithmNode)) self.canonicalizationAlgorithm = canonicalizationAlgorithmNode.value;
445
+ const signatureAlgorithmNode = selectNodes(".//*[local-name(.)='SignatureMethod']/@Algorithm", self.signatureNode)[0];
446
+ if (isAttributeNode(signatureAlgorithmNode)) self.signatureAlgorithm = signatureAlgorithmNode.value;
447
+ const signedInfoNodes = findChildren(self.signatureNode, "SignedInfo");
448
+ if (!isArrayHasLength(signedInfoNodes)) throw new Error("no signed info node found");
449
+ if (signedInfoNodes.length > 1) throw new Error("could not load signature that contains multiple SignedInfo nodes");
450
+ self.references = [];
451
+ self.signedReferences = [];
452
+ const signatureValueNode = selectNodes(".//*[local-name(.)='SignatureValue']/text()", self.signatureNode)[0];
453
+ if (isTextNode(signatureValueNode)) self.signatureValue = signatureValueNode.data.replace(/\r?\n/g, "");
454
+ const keyInfoNode = selectNodes(".//*[local-name(.)='KeyInfo']", self.signatureNode)[0];
455
+ if (isElementNode(keyInfoNode)) self.keyInfo = keyInfoNode;
456
+ },
457
+ validateReference(ref, doc) {
458
+ const uri = ref.uri && ref.uri[0] === "#" ? ref.uri.substring(1) : ref.uri;
459
+ let elem = null;
460
+ if (uri === "") {
461
+ const firstNode = selectNodes("//*", doc)[0];
462
+ elem = isElementNode(firstNode) ? firstNode : null;
463
+ } else if (uri && uri.indexOf("'") !== -1) throw new Error("Cannot validate a uri with quotes inside it");
464
+ else if (uri) {
465
+ let numElementsForId = 0;
466
+ for (const attr of self.idAttributes) {
467
+ const tmpElemXpath = `//*[@*[local-name(.)='${attr}']='${uri}']`;
468
+ const tmpElem = selectNodes(tmpElemXpath, doc);
469
+ if (isArrayHasLength(tmpElem)) {
470
+ numElementsForId += tmpElem.length;
471
+ if (numElementsForId > 1) throw new Error("Cannot validate a document which contains multiple elements with the same value for ID attributes");
472
+ const matched = tmpElem[0];
473
+ elem = isElementNode(matched) ? matched : null;
474
+ ref.xpath = tmpElemXpath;
475
+ }
476
+ }
477
+ }
478
+ if (!elem) {
479
+ ref.validationError = /* @__PURE__ */ new Error(`invalid signature: the signature references an element with uri ${ref.uri} but could not find such element in the xml`);
480
+ return false;
481
+ }
482
+ const canonXml = self.getCanonReferenceXml(doc, ref, elem);
483
+ const digest = findHashAlgorithm(ref.digestAlgorithm).getHash(canonXml);
484
+ if (digest !== ref.digestValue) {
485
+ ref.validationError = /* @__PURE__ */ new Error(`invalid signature: for uri ${ref.uri} calculated digest is ${digest} but xml supplies digest ${ref.digestValue}`);
486
+ return false;
487
+ }
488
+ self.signedReferences.push(canonXml);
489
+ ref.signedReference = canonXml;
490
+ return true;
491
+ },
492
+ async checkSignature(xml) {
493
+ self.signedXml = xml;
494
+ const doc = safeParseXml(xml, "text/xml");
495
+ self.references = [];
496
+ const unverifiedSignedInfoCanon = self.getCanonSignedInfoXml(doc);
497
+ if (!unverifiedSignedInfoCanon) throw new Error("Canonical signed info cannot be empty");
498
+ const unverifiedSignedInfoDoc = safeParseXml(unverifiedSignedInfoCanon, "text/xml").documentElement;
499
+ if (!unverifiedSignedInfoDoc) throw new Error("Could not parse unverifiedSignedInfoCanon into a document");
500
+ const references = findChildren(unverifiedSignedInfoDoc, "Reference");
501
+ if (!isArrayHasLength(references)) throw new Error("could not find any Reference elements");
502
+ for (const reference of references) self.loadReference(reference);
503
+ if (!self.references.every((ref) => self.validateReference(ref, doc))) {
504
+ self.signedReferences = [];
505
+ self.references.forEach((ref) => {
506
+ ref.signedReference = void 0;
507
+ });
508
+ return false;
509
+ }
510
+ const signer = findSignatureAlgorithm(self.signatureAlgorithm);
511
+ const key = self.publicCert || self.getCertFromKeyInfo(self.keyInfo) || self.privateKey;
512
+ if (key == null) throw new Error("KeyInfo or publicCert or privateKey is required to validate signature");
513
+ const result = await signer.verifySignature(unverifiedSignedInfoCanon, key, self.signatureValue);
514
+ if (!result) {
515
+ self.signedReferences = [];
516
+ self.references.forEach((ref) => {
517
+ ref.signedReference = void 0;
518
+ });
519
+ }
520
+ return result;
521
+ },
522
+ getSignedXml() {
523
+ return self.signedXml;
524
+ },
525
+ getSignatureXml() {
526
+ return self.signatureXml;
527
+ },
528
+ getOriginalXmlWithIds() {
529
+ return self.originalXmlWithIds;
530
+ },
531
+ setPrivateKey(privateKey) {
532
+ self.privateKey = toUtf8String(privateKey);
533
+ },
534
+ setPublicCert(publicCert) {
535
+ self.publicCert = publicCert;
536
+ }
537
+ };
538
+ return self;
539
+ }
540
+ function getSigningScheme(sigAlg, nrsaAliasMapping, defaultSignatureAlgorithm) {
541
+ if (sigAlg) {
542
+ const algAlias = nrsaAliasMapping[sigAlg];
543
+ if (!(algAlias === void 0)) return algAlias;
544
+ }
545
+ return nrsaAliasMapping[defaultSignatureAlgorithm];
546
+ }
547
+ /** Sign the octet string of a redirect-binding SAML message (detached signature). */
548
+ async function constructMessageSignature(opts) {
549
+ const { octetString, key, passphrase, isBase64, signingAlgorithm, nrsaAliasMapping, defaultSignatureAlgorithm, readPrivateKey, signMessage } = opts;
550
+ const signature = await signMessage({
551
+ octetString,
552
+ privateKey: readPrivateKey(key, passphrase),
553
+ signingScheme: getSigningScheme(signingAlgorithm, nrsaAliasMapping, defaultSignatureAlgorithm),
554
+ isBase64Output: isBase64 !== false
555
+ });
556
+ return isBase64 !== false ? String(signature) : signature;
557
+ }
558
+ /** Verify the detached signature of a redirect-binding SAML message. */
559
+ async function verifyMessageSignature(opts) {
560
+ const { octetString, signature, signCert, verifyAlgorithm, nrsaAliasMapping, defaultSignatureAlgorithm, getPublicKeyPemFromCertificate, verifyMessage } = opts;
561
+ const signingScheme = getSigningScheme(verifyAlgorithm, nrsaAliasMapping, defaultSignatureAlgorithm);
562
+ return verifyMessage({
563
+ octetString,
564
+ signature,
565
+ publicKey: getPublicKeyPemFromCertificate(signCert),
566
+ signingScheme
567
+ });
568
+ }
569
+ /** Build an enveloped XML-dsig signature over a SAML message or assertion. */
570
+ async function constructSamlSignature(opts) {
571
+ const { rawSamlMessage, referenceTagXPath, privateKey, privateKeyPass, signatureAlgorithm, transformationAlgorithms = ["http://www.w3.org/2000/09/xmldsig#enveloped-signature", "http://www.w3.org/2001/10/xml-exc-c14n#"], signingCert, signatureConfig, isBase64Output = true, isMessageSigned = false, getDigestMethod, getKeyInfo, readPrivateKey, base64Encode } = opts;
572
+ const sig = createSignedXml();
573
+ const digestAlgorithm = getDigestMethod(signatureAlgorithm);
574
+ if (!digestAlgorithm) throw new Error("ERR_MISSING_DIGEST_ALGORITHM");
575
+ if (referenceTagXPath) sig.addReference({
576
+ xpath: referenceTagXPath,
577
+ transforms: transformationAlgorithms,
578
+ digestAlgorithm
579
+ });
580
+ if (isMessageSigned) sig.addReference({
581
+ xpath: "/*",
582
+ transforms: transformationAlgorithms,
583
+ digestAlgorithm
584
+ });
585
+ const signingCertString = toUtf8String(signingCert);
586
+ sig.signatureAlgorithm = signatureAlgorithm;
587
+ sig.setPublicCert(getKeyInfo(signingCertString, signatureConfig).getKey());
588
+ sig.getKeyInfoContent = getKeyInfo(signingCertString, signatureConfig).getKeyInfo;
589
+ sig.setPrivateKey(readPrivateKey(privateKey, privateKeyPass, true));
590
+ sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
591
+ if (signatureConfig) await sig.computeSignature(rawSamlMessage, signatureConfig);
592
+ else await sig.computeSignature(rawSamlMessage);
593
+ return isBase64Output !== false ? base64Encode(sig.getSignedXml()) : sig.getSignedXml();
594
+ }
595
+
596
+ //#endregion
597
+ export { constructMessageSignature, constructSamlSignature, createSignedXml, schemeToHash, verifyMessageSignature };
598
+ //# sourceMappingURL=xmldsig.js.map