@splitin/verification-adapter-sdk 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +32 -0
- package/README.md +15 -0
- package/dist/conformance.cjs +727 -0
- package/dist/conformance.cjs.map +1 -0
- package/dist/conformance.d.cts +20 -0
- package/dist/conformance.d.ts +20 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +720 -0
- package/dist/conformance.js.map +1 -0
- package/dist/contracts-5VqcOmjU.d.cts +388 -0
- package/dist/contracts-5VqcOmjU.d.ts +388 -0
- package/dist/contracts-5VqcOmjU.d.ts.map +1 -0
- package/dist/fakes.cjs +543 -0
- package/dist/fakes.cjs.map +1 -0
- package/dist/fakes.d.cts +37 -0
- package/dist/fakes.d.ts +37 -0
- package/dist/fakes.d.ts.map +1 -0
- package/dist/fakes.js +538 -0
- package/dist/fakes.js.map +1 -0
- package/dist/index.cjs +1187 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +302 -0
- package/dist/index.d.ts +302 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1124 -0
- package/dist/index.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/identifiers.ts","../src/errors.ts","../src/schema.ts","../src/manifest.ts","../src/conformance.ts","../src/fakes.ts","../src/helpers.ts"],"names":["Ajv2020"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Public adapter contract version. Npm package versions remain 0.1.x-beta until sandbox certification. */\nexport const VERIFICATION_ADAPTER_CONTRACT_VERSION = '1.0.0' as const;\nexport const ENGINE_CONTRACT_VERSION = '1.0.0' as const;\nexport const PROVIDER_MANIFEST_SCHEMA_URN = 'urn:splitin:verification:provider-manifest:v1';\n\nexport const STANDARD_PACKAGE_CODES = [\n 'human_idv',\n 'business_kyb',\n 'associated_person_idv',\n 'ownership_review',\n] as const;\n\nexport type StandardPackageCode = (typeof STANDARD_PACKAGE_CODES)[number];\n\nexport const STANDARD_WEBHOOK_PROTOCOLS = [\n 'none',\n 'stripe_v1_hmac',\n 'persona_hmac_sha256',\n 'plaid_es256_jwk',\n] as const;\n\nexport type StandardWebhookProtocol = (typeof STANDARD_WEBHOOK_PROTOCOLS)[number];\n\nexport const CANONICAL_STATUSES = [\n 'created',\n 'pending_user_input',\n 'paused',\n 'processing',\n 'manual_review_required',\n 'verified',\n 'declined',\n 'failed',\n 'expired',\n 'canceled',\n 'provider_unavailable',\n 'redacted',\n] as const;\n\nexport type VerificationCanonicalStatus = (typeof CANONICAL_STATUSES)[number];\n\nexport const TERMINAL_STATUSES = [\n 'verified',\n 'declined',\n 'failed',\n 'expired',\n 'canceled',\n 'redacted',\n] as const;\n\nexport type TerminalVerificationStatus = (typeof TERMINAL_STATUSES)[number];\n\nexport const LAUNCH_PRESENTATIONS = ['embedded', 'hosted', 'qr', 'none'] as const;\nexport type VerificationLaunchPresentation = (typeof LAUNCH_PRESENTATIONS)[number];\n\nexport const PROVIDER_ENVIRONMENTS = ['sandbox', 'production'] as const;\nexport type VerificationProviderEnvironment = (typeof PROVIDER_ENVIRONMENTS)[number];\n\nexport const PROVIDER_OPERATIONS = [\n 'create',\n 'resume',\n 'retrieve',\n 'retry',\n 'cancel',\n 'redact',\n 'webhook_verify',\n 'webhook_normalize',\n 'health',\n] as const;\nexport type ProviderOperation = (typeof PROVIDER_OPERATIONS)[number];\n\nexport const STANDARD_RELATIONSHIP_KINDS = [\n 'ubo',\n 'director',\n 'officer',\n 'authorized_representative',\n 'associated_person',\n] as const;\nexport type StandardRelationshipKind = (typeof STANDARD_RELATIONSHIP_KINDS)[number];\n\n/** Standard codes or namespaced custom codes such as `com.example.employee_check`. */\nexport type VerificationPackageCode = StandardPackageCode | (string & {});\nexport type WebhookProtocolId = StandardWebhookProtocol | (string & {});\nexport type ProviderResourceType = string;\nexport type VerificationProviderCode = string;\nexport type VerificationLauncherKey = string;\n\nconst STANDARD_PACKAGE_SET = new Set<string>(STANDARD_PACKAGE_CODES);\nconst STANDARD_STATUS_SET = new Set<string>(CANONICAL_STATUSES);\nconst TERMINAL_STATUS_SET = new Set<string>(TERMINAL_STATUSES);\n\nconst PROVIDER_CODE = /^[a-z][a-z0-9_]{1,63}$/;\nconst LAUNCHER_KEY = /^[a-z][a-z0-9_]{1,63}$/;\nconst CUSTOM_PACKAGE = /^[a-z0-9][a-z0-9-]{0,32}(?:\\.[a-z0-9][a-z0-9_-]{0,63}){1,6}$/;\nconst WEBHOOK_PROTOCOL = /^(?:[a-z][a-z0-9_]{1,63}|[a-z0-9][a-z0-9-]{0,32}(?:\\.[a-z0-9][a-z0-9_-]{0,63}){1,6})$/;\nconst RESOURCE_TYPE = /^[a-z][a-z0-9_]{1,63}$/;\nconst COUNTRY = /^[A-Z]{2}$/;\nconst SEMVER = /^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$/;\nconst OPAQUE_SUBJECT = /^[A-Za-z0-9._:~-]{8,256}$/;\nconst GOVERNMENT_ID = /\\b(?:ssn|itin|nino|sin|aadhaar|passport|national[_-]?id|tax[_-]?id|ein|ssn_last4)\\b/i;\nconst SSN_LIKE = /\\b\\d{3}-\\d{2}-\\d{4}\\b/;\n\nexport function isProviderCode(value: string): boolean {\n return PROVIDER_CODE.test(value);\n}\n\nexport function isLauncherKey(value: string): boolean {\n return LAUNCHER_KEY.test(value);\n}\n\nexport function isStandardPackageCode(value: string): value is StandardPackageCode {\n return STANDARD_PACKAGE_SET.has(value);\n}\n\nexport function isCustomPackageCode(value: string): boolean {\n return CUSTOM_PACKAGE.test(value) && !STANDARD_PACKAGE_SET.has(value);\n}\n\nexport function isPackageCode(value: string): value is VerificationPackageCode {\n return isStandardPackageCode(value) || isCustomPackageCode(value);\n}\n\nexport function assertPackageCode(value: string): VerificationPackageCode {\n if (isStandardPackageCode(value) || isCustomPackageCode(value)) return value;\n throw new Error('Unsupported verification package identifier.');\n}\n\nexport function isWebhookProtocol(value: string): value is WebhookProtocolId {\n return WEBHOOK_PROTOCOL.test(value);\n}\n\nexport function isResourceType(value: string): value is ProviderResourceType {\n return RESOURCE_TYPE.test(value);\n}\n\nexport function isCountryCode(value: string): boolean {\n return COUNTRY.test(value);\n}\n\nexport function isSemver(value: string): boolean {\n return SEMVER.test(value);\n}\n\nexport function isCanonicalStatus(value: string): value is VerificationCanonicalStatus {\n return STANDARD_STATUS_SET.has(value);\n}\n\nexport function isTerminalStatus(value: string): value is TerminalVerificationStatus {\n return TERMINAL_STATUS_SET.has(value);\n}\n\nexport function isOpaqueSubjectReference(value: string): boolean {\n return OPAQUE_SUBJECT.test(value) && !GOVERNMENT_ID.test(value) && !SSN_LIKE.test(value);\n}\n\nexport function metadataContainsForbiddenIdentifier(value: unknown): boolean {\n if (value == null) return false;\n if (typeof value === 'string') return GOVERNMENT_ID.test(value);\n if (Array.isArray(value)) return value.some(metadataContainsForbiddenIdentifier);\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).some(([key, nested]) => (\n GOVERNMENT_ID.test(key) || metadataContainsForbiddenIdentifier(nested)\n ));\n }\n return false;\n}\n\nexport function compareSemver(left: string, right: string): number {\n const parse = (value: string) => value.split('-')[0]!.split('.').map((part) => Number.parseInt(part, 10));\n const a = parse(left);\n const b = parse(right);\n for (let index = 0; index < 3; index += 1) {\n const delta = (a[index] ?? 0) - (b[index] ?? 0);\n if (delta !== 0) return delta;\n }\n return 0;\n}\n\nexport function majorsCompatible(left: string, right: string): boolean {\n return left.split('.')[0] === right.split('.')[0];\n}\n","export type ProviderErrorCode =\n | 'INVALID_CONFIGURATION'\n | 'UNSUPPORTED_CAPABILITY'\n | 'AUTHENTICATION_FAILED'\n | 'SIGNATURE_INVALID'\n | 'RATE_LIMITED'\n | 'TIMEOUT'\n | 'RETRYABLE_PROVIDER_FAILURE'\n | 'TERMINAL_INPUT_FAILURE'\n | 'UNKNOWN_PROVIDER_STATE'\n | 'PROVIDER_UNAVAILABLE';\n\nexport interface ProviderErrorOptions {\n retryable?: boolean;\n safeCode?: string;\n retryAfterSeconds?: number;\n cause?: unknown;\n}\n\n/** Provider-safe error. Message and fields must never contain PII or secrets. */\nexport class ProviderError extends Error {\n readonly retryable: boolean;\n readonly safeCode: string;\n readonly retryAfterSeconds?: number;\n\n constructor(\n readonly code: ProviderErrorCode,\n message: string,\n options: ProviderErrorOptions = {},\n ) {\n super(message, options.cause === undefined ? undefined : { cause: options.cause });\n this.name = 'ProviderError';\n this.retryable = options.retryable ?? false;\n this.safeCode = options.safeCode ?? code.toLowerCase();\n this.retryAfterSeconds = options.retryAfterSeconds;\n }\n}\n\nexport class ProviderUnavailableError extends ProviderError {\n constructor(message = 'No eligible verification provider is available.', options: ProviderErrorOptions = {}) {\n super('PROVIDER_UNAVAILABLE', message, { retryable: true, ...options, safeCode: options.safeCode ?? 'provider_unavailable' });\n this.name = 'ProviderUnavailableError';\n }\n}\n\nexport class ProviderOperationPendingError extends ProviderError {\n constructor(message = 'The verification provider operation is already in progress.') {\n super('RETRYABLE_PROVIDER_FAILURE', message, { retryable: true, safeCode: 'operation_pending' });\n this.name = 'ProviderOperationPendingError';\n }\n}\n\nexport class VerificationAttemptLimitError extends ProviderError {\n constructor(retryAfterSeconds: number) {\n super('RATE_LIMITED', 'The verification session allowance has been reached.', {\n retryable: true,\n safeCode: 'attempt_limit',\n retryAfterSeconds,\n });\n this.name = 'VerificationAttemptLimitError';\n }\n}\n\nexport class ProviderRequiredInformationError extends ProviderError {\n constructor(message = 'Required verification information is missing.') {\n super('TERMINAL_INPUT_FAILURE', message, { retryable: false, safeCode: 'required_information_missing' });\n this.name = 'ProviderRequiredInformationError';\n }\n}\n\nexport interface SafeProviderFailure {\n code: ProviderErrorCode;\n safeCode: string;\n retryable: boolean;\n retryAfterSeconds?: number;\n}\n\nexport function toSafeProviderFailure(error: unknown): SafeProviderFailure {\n if (error instanceof ProviderError) {\n return {\n code: error.code,\n safeCode: error.safeCode,\n retryable: error.retryable,\n retryAfterSeconds: error.retryAfterSeconds,\n };\n }\n return {\n code: 'RETRYABLE_PROVIDER_FAILURE',\n safeCode: 'unexpected_provider_failure',\n retryable: true,\n };\n}\n","import type { ProviderConfigurationSchemaV1 } from './contracts.ts';\nimport { PROVIDER_MANIFEST_SCHEMA_URN } from './identifiers.ts';\n\nexport const providerManifestV1JsonSchema = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n $id: PROVIDER_MANIFEST_SCHEMA_URN,\n title: 'Verification Provider Manifest V1',\n type: 'object',\n additionalProperties: false,\n required: [\n 'contractVersion', 'adapterVersion', 'engineCompatibility', 'provider', 'displayName',\n 'supportedPackages', 'supportedCountries', 'environments', 'capabilities', 'launcherKeys',\n 'launchPresentations', 'configurationSchemaVersion', 'configurationSchema', 'webhook',\n 'dataPolicy', 'retry', 'cancellation', 'redaction', 'apiHosts', 'testedApiVersions',\n ],\n properties: {\n contractVersion: { const: '1.0.0' },\n adapterVersion: { type: 'string', pattern: '^\\\\d+\\\\.\\\\d+\\\\.\\\\d+(?:-[0-9A-Za-z.-]+)?$' },\n engineCompatibility: { type: 'string', pattern: '^\\\\d+\\\\.\\\\d+\\\\.\\\\d+(?:-[0-9A-Za-z.-]+)?$' },\n provider: { type: 'string', pattern: '^[a-z][a-z0-9_]{1,63}$' },\n displayName: { type: 'string', minLength: 1 },\n description: { type: 'string' },\n supportedPackages: {\n type: 'array',\n minItems: 1,\n uniqueItems: true,\n items: {\n type: 'string',\n anyOf: [\n { enum: ['human_idv', 'business_kyb', 'associated_person_idv', 'ownership_review'] },\n { pattern: '^[a-z0-9][a-z0-9-]{0,32}(?:\\\\.[a-z0-9][a-z0-9_-]{0,63}){1,6}$' },\n ],\n },\n },\n supportedCountries: { type: 'array', minItems: 1, uniqueItems: true, items: { type: 'string', pattern: '^[A-Z]{2}$' } },\n environments: { type: 'array', minItems: 1, uniqueItems: true, items: { enum: ['sandbox', 'production'] } },\n capabilities: {\n type: 'object',\n additionalProperties: false,\n required: ['presentations', 'canResume', 'canRetry', 'canCancel', 'canRedact'],\n properties: {\n presentations: { type: 'array', minItems: 1, uniqueItems: true, items: { enum: ['embedded', 'hosted', 'qr', 'none'] } },\n canResume: { type: 'boolean' },\n canRetry: { type: 'boolean' },\n canCancel: { type: 'boolean' },\n canRedact: { type: 'boolean' },\n },\n },\n launcherKeys: { type: 'array', minItems: 1, uniqueItems: true, items: { type: 'string', pattern: '^[a-z][a-z0-9_]{1,63}$' } },\n launchPresentations: { type: 'array', minItems: 1, uniqueItems: true, items: { enum: ['embedded', 'hosted', 'qr', 'none'] } },\n configurationSchemaVersion: { type: 'string', minLength: 1 },\n configurationSchema: { $ref: '#/$defs/jsonSchema2020' },\n webhook: {\n type: 'object',\n additionalProperties: false,\n required: ['protocol', 'eventFamilies'],\n properties: {\n protocol: { type: 'string', minLength: 1, maxLength: 128 },\n eventFamilies: { type: 'array', uniqueItems: true, items: { type: 'string', minLength: 1 } },\n toleranceSeconds: { type: 'integer', minimum: 1 },\n },\n },\n dataPolicy: {\n type: 'object',\n additionalProperties: false,\n required: [\n 'classifications', 'prohibitedPersistence', 'rawPayloadPersistence',\n 'browserSecretPersistence', 'governmentIdentifierPersistence',\n ],\n properties: {\n classifications: { type: 'array', uniqueItems: true, items: { type: 'string', minLength: 1 } },\n prohibitedPersistence: { type: 'array', uniqueItems: true, items: { type: 'string', minLength: 1 } },\n rawPayloadPersistence: { const: false },\n browserSecretPersistence: { const: false },\n governmentIdentifierPersistence: { const: false },\n },\n },\n retry: {\n type: 'object',\n additionalProperties: false,\n required: ['sameResourceWhenResumable', 'newAttemptAfterTerminal'],\n properties: {\n sameResourceWhenResumable: { type: 'boolean' },\n newAttemptAfterTerminal: { type: 'boolean' },\n },\n },\n cancellation: {\n type: 'object',\n additionalProperties: false,\n required: ['supported', 'terminal'],\n properties: { supported: { type: 'boolean' }, terminal: { type: 'boolean' } },\n },\n redaction: {\n type: 'object',\n additionalProperties: false,\n required: ['supported', 'asynchronous'],\n properties: {\n supported: { type: 'boolean' },\n asynchronous: { type: 'boolean' },\n notApplicable: { type: 'boolean' },\n },\n },\n apiHosts: {\n type: 'array',\n minItems: 1,\n uniqueItems: true,\n items: { type: 'string', pattern: '^[a-z0-9.-]+$' },\n },\n testedApiVersions: { type: 'array', minItems: 1, uniqueItems: true, items: { type: 'string', minLength: 1 } },\n },\n $defs: {\n jsonSchema2020: {\n type: 'object',\n required: ['$schema', 'type', 'additionalProperties', 'required', 'properties'],\n properties: {\n $schema: { const: 'https://json-schema.org/draft/2020-12/schema' },\n type: { const: 'object' },\n additionalProperties: { const: false },\n required: { type: 'array', uniqueItems: true, items: { type: 'string', minLength: 1 } },\n properties: { type: 'object' },\n },\n },\n },\n} as const;\n\nexport const emptyConfigurationSchema: ProviderConfigurationSchemaV1 = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n type: 'object',\n additionalProperties: false,\n required: [],\n properties: {},\n};\n\nexport function secretStringProperty(minLength = 1): import('./contracts.ts').JsonSchema2020 {\n return { type: 'string', minLength, 'x-secret': true };\n}\n\nexport function plainStringProperty(minLength = 1): import('./contracts.ts').JsonSchema2020 {\n return { type: 'string', minLength, 'x-secret': false };\n}\n","import { Ajv2020 } from 'ajv/dist/2020.js';\n\nimport type {\n ProviderManifestV1,\n ProviderRuntimeContext,\n VerificationAdapterV1,\n} from './contracts.ts';\nimport { ProviderError } from './errors.ts';\nimport {\n ENGINE_CONTRACT_VERSION,\n VERIFICATION_ADAPTER_CONTRACT_VERSION,\n isCountryCode,\n isCustomPackageCode,\n isLauncherKey,\n isPackageCode,\n isProviderCode,\n isSemver,\n isStandardPackageCode,\n isWebhookProtocol,\n majorsCompatible,\n} from './identifiers.ts';\nimport { providerManifestV1JsonSchema } from './schema.ts';\n\nconst manifestValidator = new Ajv2020({ allErrors: true, strict: false }).compile(providerManifestV1JsonSchema);\n\nexport const REQUIRED_ADAPTER_METHODS = [\n 'validateConfiguration',\n 'createAttempt',\n 'resumeAttempt',\n 'retrieveAttempt',\n 'retryAttempt',\n 'cancelAttempt',\n 'redactSubject',\n 'verifyWebhook',\n 'normalizeWebhook',\n] as const;\n\nexport function defineProviderManifest(input: ProviderManifestV1): Readonly<ProviderManifestV1> {\n assertProviderManifest(input);\n return deepFreeze(JSON.parse(JSON.stringify(input)) as ProviderManifestV1);\n}\n\nexport function assertProviderManifest(manifest: ProviderManifestV1): void {\n if (!manifestValidator(manifest)) {\n const first = manifestValidator.errors?.[0];\n invalid(\n `json_schema_${toSafeCode(first?.keyword ?? 'invalid')}`,\n `The provider adapter manifest does not satisfy ProviderManifestV1 JSON Schema at ${first?.instancePath || '/'}.`,\n );\n }\n if (manifest.contractVersion !== VERIFICATION_ADAPTER_CONTRACT_VERSION) invalid('contract_version');\n if (!isProviderCode(manifest.provider)) invalid('provider_code');\n if (!manifest.displayName.trim() || !isSemver(manifest.adapterVersion) || !isSemver(manifest.engineCompatibility)) {\n invalid('identity');\n }\n if (!majorsCompatible(manifest.adapterVersion, VERIFICATION_ADAPTER_CONTRACT_VERSION)) {\n invalid('adapter_version_incompatible', 'Provider adapter major version must be compatible with contract V1.');\n }\n if (!majorsCompatible(manifest.engineCompatibility, ENGINE_CONTRACT_VERSION)) {\n invalid('engine_incompatible', 'Provider adapter is not compatible with this engine major version.');\n }\n if (!manifest.supportedPackages.length || manifest.supportedPackages.some((value) => !isPackageCode(value))) {\n invalid('supported_packages');\n }\n if (manifest.supportedPackages.some((value) => !isStandardPackageCode(value) && !isCustomPackageCode(value))) {\n invalid('supported_packages');\n }\n if (!manifest.supportedCountries.length || manifest.supportedCountries.some((value) => !isCountryCode(value))) {\n invalid('supported_countries');\n }\n if (!manifest.launcherKeys.length || manifest.launcherKeys.some((value) => !isLauncherKey(value))) {\n invalid('launcher_keys');\n }\n if (!isWebhookProtocol(manifest.webhook.protocol)) invalid('webhook_protocol');\n if (!manifest.apiHosts.length || manifest.apiHosts.some((host) => host.includes('/') || host.includes(':'))) {\n invalid('api_hosts', 'Provider API hosts must be code-owned hostnames, not URLs or caller-supplied origins.');\n }\n if (manifest.dataPolicy.rawPayloadPersistence !== false\n || manifest.dataPolicy.browserSecretPersistence !== false\n || manifest.dataPolicy.governmentIdentifierPersistence !== false) {\n invalid('data_policy');\n }\n if (manifest.capabilities.canCancel !== manifest.cancellation.supported) invalid('cancellation_capability');\n if (manifest.capabilities.canRedact !== manifest.redaction.supported) invalid('redaction_capability');\n assertConfigurationSecrets(manifest);\n}\n\nfunction assertConfigurationSecrets(manifest: ProviderManifestV1): void {\n const properties = manifest.configurationSchema.properties ?? {};\n for (const [name, schema] of Object.entries(properties)) {\n if (schema['x-secret'] === true && schema.type !== 'string') {\n invalid('secret_schema', `Configuration field \"${name}\" marked x-secret must be a string.`);\n }\n }\n}\n\nexport function assertAdapterConformsToManifest(adapter: VerificationAdapterV1): void {\n const candidate = adapter as unknown as Record<string, unknown>;\n const provider = typeof candidate.provider === 'string' && candidate.provider ? candidate.provider : 'unknown';\n for (const method of REQUIRED_ADAPTER_METHODS) {\n if (typeof candidate[method] !== 'function') {\n invalid(\n `missing_method_${toSafeCode(method)}`,\n `Provider adapter \"${provider}\" is missing required method \"${method}\".`,\n );\n }\n }\n if (!candidate.manifest || typeof candidate.manifest !== 'object') {\n invalid('missing_manifest', `Provider adapter \"${provider}\" is missing its manifest.`);\n }\n assertProviderManifest(adapter.manifest);\n if (adapter.contractVersion !== VERIFICATION_ADAPTER_CONTRACT_VERSION\n || adapter.provider !== adapter.manifest.provider\n || !adapter.manifest.environments.includes(adapter.environment)) {\n invalid('adapter_identity', `Provider adapter \"${provider}\" does not match its manifest identity or environment.`);\n }\n if (adapter.manifest.capabilities.canResume === false && typeof candidate.resumeAttempt !== 'function') {\n invalid('resume_capability');\n }\n adapter.validateConfiguration();\n}\n\nexport function createAllowlistedHttp(\n allowedHosts: readonly string[],\n fetchImpl: typeof fetch,\n timeoutMs = 10_000,\n): { fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response> } {\n const hosts = new Set(allowedHosts.map((host) => host.toLowerCase()));\n return {\n async fetch(input, init) {\n const url = new URL(typeof input === 'string' || input instanceof URL ? String(input) : input.url);\n if (url.protocol !== 'https:' && url.hostname !== '127.0.0.1' && url.hostname !== 'localhost') {\n throw new ProviderError('INVALID_CONFIGURATION', 'Provider HTTP is limited to HTTPS or loopback.', {\n safeCode: 'http_origin_denied',\n });\n }\n if (!hosts.has(url.hostname.toLowerCase())) {\n throw new ProviderError('INVALID_CONFIGURATION', 'Provider HTTP origin is not allowlisted in the adapter manifest.', {\n safeCode: 'http_origin_denied',\n });\n }\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n try {\n const parentSignal = init?.signal;\n if (parentSignal) {\n if (parentSignal.aborted) controller.abort();\n else parentSignal.addEventListener('abort', () => controller.abort(), { once: true });\n }\n return await fetchImpl(input, { ...init, signal: controller.signal });\n } catch (error) {\n if (controller.signal.aborted) {\n throw new ProviderError('TIMEOUT', 'The provider HTTP request timed out.', { retryable: true, safeCode: 'timeout' });\n }\n throw error;\n } finally {\n clearTimeout(timeout);\n }\n },\n };\n}\n\nexport function createDefaultRuntime<T extends object>(\n environment: ProviderRuntimeContext<T>['environment'],\n configuration: T,\n options: Partial<ProviderRuntimeContext<T>> & { allowedHosts?: string[] } = {},\n): ProviderRuntimeContext<T> {\n const fetchImpl = options.http?.fetch ?? fetch;\n return {\n environment,\n configuration: Object.freeze({ ...configuration }),\n http: options.http ?? createAllowlistedHttp(options.allowedHosts ?? ['127.0.0.1'], fetchImpl),\n now: options.now ?? (() => new Date()),\n crypto: options.crypto ?? globalThis.crypto,\n idempotency: options.idempotency ?? {\n keyFor: (operation, attemptId, suppliedKey) => suppliedKey ?? `${operation}:${attemptId}`,\n },\n logger: options.logger ?? silentLogger,\n telemetry: options.telemetry,\n recordHealth: options.recordHealth ?? (async () => undefined),\n rateBudget: options.rateBudget,\n };\n}\n\nexport const silentLogger = Object.freeze({\n info: () => undefined,\n warn: () => undefined,\n error: () => undefined,\n});\n\nfunction invalid(safeCode: string, message = 'The provider adapter manifest is invalid.'): never {\n throw new ProviderError('INVALID_CONFIGURATION', message, { safeCode });\n}\n\nfunction toSafeCode(value: string): string {\n return value.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase();\n}\n\nfunction deepFreeze<T>(value: T): T {\n if (value && typeof value === 'object') {\n Object.freeze(value);\n for (const nested of Object.values(value as Record<string, unknown>)) deepFreeze(nested);\n }\n return value;\n}\n","import type {\n NormalizedProviderSnapshot,\n ProviderAttemptCommand,\n ProviderLaunchEnvelope,\n ProviderManifestV1,\n ProviderRedactionResult,\n VerificationAdapterV1,\n VerificationCanonicalStatus,\n} from './contracts.ts';\nimport { ProviderError } from './errors.ts';\nimport { isCanonicalStatus, isTerminalStatus, metadataContainsForbiddenIdentifier } from './identifiers.ts';\nimport { assertAdapterConformsToManifest, assertProviderManifest } from './manifest.ts';\n\nconst CANONICAL_STATUS_RANK: Record<VerificationCanonicalStatus, number> = {\n created: 10,\n pending_user_input: 20,\n paused: 20,\n provider_unavailable: 25,\n processing: 30,\n manual_review_required: 40,\n verified: 100,\n declined: 100,\n failed: 100,\n expired: 100,\n canceled: 100,\n redacted: 200,\n};\n\nexport function canonicalStatusRank(status: VerificationCanonicalStatus): number {\n return CANONICAL_STATUS_RANK[status];\n}\n\nexport interface ConformanceResult {\n name: string;\n passed: boolean;\n detail?: string;\n}\n\nexport const providerConformanceScenarios = Object.freeze([\n 'success',\n 'input_required',\n 'processing',\n 'verified',\n 'decline',\n 'failure',\n 'manual_review',\n 'timeout',\n 'rate_limit',\n 'malformed_response',\n 'unknown_state',\n 'cancellation',\n 'resume',\n 'asynchronous_redaction',\n 'retryable_provider_failure',\n] as const);\n\nexport type ProviderConformanceScenario = (typeof providerConformanceScenarios)[number];\n\nexport type AdapterConformanceScenarioFactory = (\n scenario: ProviderConformanceScenario,\n) => VerificationAdapterV1 | Promise<VerificationAdapterV1>;\n\nexport interface AdapterConformanceOptions {\n webhookRequest?: Request;\n}\n\nexport async function runAdapterConformance(\n adapter: VerificationAdapterV1,\n command: ProviderAttemptCommand,\n options: AdapterConformanceOptions = {},\n): Promise<ConformanceResult[]> {\n const results: ConformanceResult[] = [];\n const manifest = capture('manifest', () => assertAdapterConformsToManifest(adapter));\n results.push(manifest);\n if (!manifest.passed) return results;\n results.push(capture('package', () => {\n if (!adapter.manifest.supportedPackages.includes(command.packageCode)) {\n throw new Error('The fixture package is not declared by the adapter.');\n }\n if (metadataContainsForbiddenIdentifier(command.metadata) || !command.subjectReference) {\n throw new Error('Attempt command contains forbidden identifiers or a missing opaque subject.');\n }\n }));\n\n let created: Awaited<ReturnType<VerificationAdapterV1['createAttempt']>> | null = null;\n try {\n created = await adapter.createAttempt(command);\n assertAttemptResult(adapter, created);\n results.push({ name: 'create', passed: true });\n } catch (error) {\n results.push(failure('create', error));\n }\n\n if (created) {\n try {\n const duplicate = await adapter.createAttempt(command);\n if (duplicate.providerResourceId !== created.providerResourceId) {\n throw new Error('Duplicate create produced a second provider resource.');\n }\n results.push({ name: 'create_idempotency', passed: true });\n } catch (error) {\n results.push(failure('create_idempotency', error));\n }\n if (adapter.manifest.capabilities.canResume) {\n try {\n const resumed = await adapter.resumeAttempt(resourceCommand(command, created.providerResourceId));\n assertLaunchResult(adapter, resumed);\n results.push({ name: 'resume', passed: true });\n } catch (error) {\n results.push(failure('resume', error));\n }\n } else {\n results.push(skipped('resume', 'canResume'));\n }\n try {\n const snapshot = await adapter.retrieveAttempt(resourceCommand(command, created.providerResourceId));\n assertNormalizedSnapshot(snapshot);\n results.push({ name: 'retrieve', passed: true });\n try {\n if (isTerminalStatus(snapshot.canonicalStatus)) {\n const second = await adapter.retrieveAttempt(resourceCommand(command, created.providerResourceId));\n assertNormalizedSnapshot(second);\n const firstRank = canonicalStatusRank(snapshot.canonicalStatus);\n const secondRank = canonicalStatusRank(second.canonicalStatus);\n if (!isTerminalStatus(second.canonicalStatus) && secondRank < firstRank) {\n throw new Error('A terminal snapshot must not regress to a non-terminal status with lower rank.');\n }\n }\n results.push({ name: 'terminal_monotonicity', passed: true });\n } catch (error) {\n results.push(failure('terminal_monotonicity', error));\n }\n } catch (error) {\n results.push(failure('retrieve', error));\n }\n if (adapter.manifest.capabilities.canRetry) {\n try {\n const retried = await adapter.retryAttempt({ ...command, previousProviderResourceId: created.providerResourceId });\n assertAttemptResult(adapter, retried);\n results.push({ name: 'retry', passed: true });\n } catch (error) {\n results.push(failure('retry', error));\n }\n } else {\n results.push(skipped('retry', 'canRetry'));\n }\n if (adapter.manifest.capabilities.canCancel) {\n try {\n const canceled = await adapter.cancelAttempt(resourceCommand(command, created.providerResourceId));\n if (!canceled.accepted) throw new Error('Adapter did not acknowledge cancellation.');\n results.push({ name: 'cancel', passed: true });\n } catch (error) {\n results.push(failure('cancel', error));\n }\n } else {\n results.push(skipped('cancel', 'canCancel'));\n }\n if (adapter.manifest.capabilities.canRedact) {\n try {\n const redaction = await adapter.redactSubject(redactionCommand(command, created.providerResourceId));\n assertRedactionResult(redaction);\n results.push({ name: 'redact', passed: true });\n } catch (error) {\n results.push(failure('redact', error));\n }\n } else {\n results.push(skipped('redact', 'canRedact'));\n }\n }\n\n if (options.webhookRequest) {\n try {\n const verified = await adapter.verifyWebhook(options.webhookRequest);\n const normalized = await adapter.normalizeWebhook(verified);\n if (!verified.providerEventKey || !verified.receivedAt || !verified.bodySha256 || !(verified.opaquePayload instanceof Uint8Array)) {\n throw new Error('The verified webhook envelope is incomplete.');\n }\n if (!normalized.providerEventKey || !normalized.providerResourceId || !normalized.eventType\n || !normalized.providerEventType || !normalized.occurredAt) {\n throw new Error('The normalized webhook event is incomplete.');\n }\n if (normalized.canonicalStatus) assertCanonicalStatus(normalized.canonicalStatus);\n assertProviderTypesDoNotEscape(normalized);\n results.push({ name: 'webhook', passed: true });\n } catch (error) {\n results.push(failure('webhook', error));\n }\n }\n\n return results;\n}\n\nexport async function runAdapterConformanceScenarios(\n adapterForScenario: AdapterConformanceScenarioFactory,\n command: ProviderAttemptCommand,\n): Promise<ConformanceResult[]> {\n const results: ConformanceResult[] = [];\n for (const scenario of providerConformanceScenarios) {\n try {\n const adapter = await adapterForScenario(scenario);\n assertAdapterConformsToManifest(adapter);\n if (!adapter.manifest.supportedPackages.includes(command.packageCode)) {\n throw new Error(`Scenario \"${scenario}\" uses a package that the adapter does not declare.`);\n }\n await executeScenario(adapter, command, scenario);\n results.push({ name: scenario, passed: true });\n } catch (error) {\n results.push(failure(scenario, error));\n }\n }\n return results;\n}\n\nexport function validateManifestOnly(manifest: ProviderManifestV1): ConformanceResult {\n return capture('manifest', () => assertProviderManifest(manifest));\n}\n\nfunction capture(name: string, operation: () => void): ConformanceResult {\n try {\n operation();\n return { name, passed: true };\n } catch (error) {\n return failure(name, error);\n }\n}\n\nfunction failure(name: string, error: unknown): ConformanceResult {\n return { name, passed: false, detail: error instanceof Error ? error.message : 'Unknown conformance failure.' };\n}\n\nfunction skipped(name: string, capability: string): ConformanceResult {\n return { name, passed: true, detail: `Skipped because the manifest declares ${capability}=false.` };\n}\n\nasync function executeScenario(\n adapter: VerificationAdapterV1,\n command: ProviderAttemptCommand,\n scenario: ProviderConformanceScenario,\n): Promise<void> {\n const providerResourceId = `conformance_${command.attemptId.replace(/[^a-zA-Z0-9]/g, '')}`;\n const resource = resourceCommand(command, providerResourceId);\n switch (scenario) {\n case 'success':\n case 'verified': {\n const created = await adapter.createAttempt(command);\n assertAttemptResult(adapter, created);\n const snapshot = await adapter.retrieveAttempt(resourceCommand(command, created.providerResourceId));\n assertNormalizedSnapshot(snapshot);\n if (snapshot.canonicalStatus !== 'verified') {\n throw new Error('The success scenario must normalize to canonical status \"verified\".');\n }\n return;\n }\n case 'input_required':\n await expectCanonicalSnapshot(adapter, resource, 'pending_user_input');\n return;\n case 'processing':\n await expectCanonicalSnapshot(adapter, resource, 'processing');\n return;\n case 'decline':\n await expectCanonicalSnapshot(adapter, resource, 'declined');\n return;\n case 'failure':\n await expectCanonicalSnapshot(adapter, resource, 'failed');\n return;\n case 'manual_review':\n await expectCanonicalSnapshot(adapter, resource, 'manual_review_required');\n return;\n case 'timeout':\n await expectProviderError(() => adapter.retrieveAttempt(resource), 'TIMEOUT', { retryable: true });\n return;\n case 'rate_limit':\n await expectProviderError(() => adapter.retrieveAttempt(resource), 'RATE_LIMITED', { retryable: true, retryAfterRequired: true });\n return;\n case 'retryable_provider_failure':\n await expectProviderError(() => adapter.retrieveAttempt(resource), 'RETRYABLE_PROVIDER_FAILURE', { retryable: true });\n return;\n case 'malformed_response':\n await expectRejectedSnapshot(adapter, resource, 'malformed_provider_response');\n return;\n case 'unknown_state':\n await expectRejectedSnapshot(adapter, resource, 'unknown_provider_status');\n return;\n case 'cancellation': {\n const canceled = await adapter.cancelAttempt(resource);\n if (!canceled.accepted) throw new Error('Cancellation was not accepted.');\n return;\n }\n case 'resume': {\n const launched = await adapter.resumeAttempt(resource);\n assertLaunchResult(adapter, launched);\n return;\n }\n case 'asynchronous_redaction': {\n if (!adapter.manifest.capabilities.canRedact) {\n throw new Error('The redaction scenario requires manifest capability \"canRedact\".');\n }\n const redaction = await adapter.redactSubject(redactionCommand(command, providerResourceId));\n assertRedactionResult(redaction);\n if (adapter.manifest.redaction.asynchronous) {\n if (redaction.completed && redaction.disposition !== 'redacted') {\n throw new Error('Asynchronous redaction must not claim completion until the provider finishes.');\n }\n if (!['processing', 'scheduled', 'retryable'].includes(redaction.disposition ?? '')) {\n throw new Error('Asynchronous redaction must report processing, scheduled, or retryable.');\n }\n } else if (!redaction.completed || redaction.retryable) {\n throw new Error('Synchronous redaction must complete terminally without retry.');\n }\n }\n }\n}\n\nasync function expectCanonicalSnapshot(\n adapter: VerificationAdapterV1,\n command: ReturnType<typeof resourceCommand>,\n expected: VerificationCanonicalStatus,\n): Promise<void> {\n const snapshot = await adapter.retrieveAttempt(command);\n assertNormalizedSnapshot(snapshot);\n if (snapshot.canonicalStatus !== expected) {\n throw new Error(`The scenario must normalize to canonical status \"${expected}\".`);\n }\n}\n\nasync function expectRejectedSnapshot(\n adapter: VerificationAdapterV1,\n command: ReturnType<typeof resourceCommand>,\n expectedSafeCode: 'malformed_provider_response' | 'unknown_provider_status',\n): Promise<void> {\n try {\n const snapshot = await adapter.retrieveAttempt(command);\n assertNormalizedSnapshot(snapshot);\n } catch (error) {\n if (isProviderErrorLike(error) && error.safeCode === expectedSafeCode) return;\n throw new Error(`The scenario must be rejected with safe code \"${expectedSafeCode}\"; received ${describeError(error)}.`);\n }\n throw new Error(`The scenario was accepted instead of being rejected as \"${expectedSafeCode}\".`);\n}\n\nasync function expectProviderError(\n operation: () => Promise<unknown>,\n code: ProviderError['code'],\n expectations: { retryable: boolean; retryAfterRequired?: boolean },\n): Promise<void> {\n try {\n await operation();\n } catch (error) {\n if (!isProviderErrorLike(error)) {\n throw new Error(`Expected ProviderError ${code}; received ${describeError(error)}.`);\n }\n if (error.code !== code) throw new Error(`Expected ProviderError ${code}; received ${error.code}.`);\n if (error.retryable !== expectations.retryable) {\n throw new Error(`ProviderError ${code} must set retryable=${String(expectations.retryable)}.`);\n }\n if (!error.safeCode.trim()) throw new Error(`ProviderError ${code} must provide a safe code.`);\n if (expectations.retryAfterRequired\n && (!Number.isSafeInteger(error.retryAfterSeconds) || Number(error.retryAfterSeconds) <= 0)) {\n throw new Error(`ProviderError ${code} must provide a positive integer retryAfterSeconds.`);\n }\n return;\n }\n throw new Error(`Expected ProviderError ${code}, but the adapter operation succeeded.`);\n}\n\nfunction assertAttemptResult(\n adapter: VerificationAdapterV1,\n result: Awaited<ReturnType<VerificationAdapterV1['createAttempt']>>,\n): void {\n if (!result || typeof result !== 'object'\n || !isNonEmptyString(result.providerResourceId)\n || !isNonEmptyString(result.providerStatus)\n || result.attemptId == null) {\n malformed('The adapter returned an incomplete attempt result.');\n }\n assertLaunchResult(adapter, result.launch);\n assertProviderTypesDoNotEscape(result);\n}\n\nfunction assertLaunchResult(adapter: VerificationAdapterV1, launch: ProviderLaunchEnvelope): void {\n if (!launch || typeof launch !== 'object'\n || !isNonEmptyString(launch.launcherKey)\n || !adapter.manifest.launcherKeys.includes(launch.launcherKey)\n || !adapter.manifest.capabilities.presentations.includes(launch.presentation)\n || !isCanonicalStatus(launch.canonicalStatus)) {\n malformed('The adapter returned an invalid launch envelope.');\n }\n const forbidden = ['inquiryOrSessionId', 'environmentId', 'opaqueLaunchSecret', 'adapter', 'clientSecret'];\n if (forbidden.some((key) => key in (launch as unknown as Record<string, unknown>))) {\n throw new Error('Deprecated or secret launch fields escaped the adapter boundary.');\n }\n}\n\nfunction assertNormalizedSnapshot(snapshot: NormalizedProviderSnapshot): void {\n if (!snapshot || typeof snapshot !== 'object'\n || !isNonEmptyString(snapshot.providerResourceId)\n || !isNonEmptyString(snapshot.providerStatus)\n || !isIsoTimestamp(snapshot.occurredAt)\n || !Array.isArray(snapshot.normalizedReasonCodes)\n || snapshot.normalizedReasonCodes.some((code) => !isNonEmptyString(code))\n || !isSafeMetadata(snapshot.safeMetadata)) {\n malformed('The adapter returned a malformed normalized snapshot.');\n }\n assertCanonicalStatus(snapshot.canonicalStatus);\n assertProviderTypesDoNotEscape(snapshot);\n}\n\nfunction assertRedactionResult(result: ProviderRedactionResult): void {\n if (!result || typeof result !== 'object'\n || typeof result.completed !== 'boolean'\n || typeof result.retryable !== 'boolean') {\n malformed('Adapter returned an invalid redaction result.');\n }\n}\n\nfunction assertCanonicalStatus(value: string): void {\n if (!isCanonicalStatus(value)) {\n throw new ProviderError('UNKNOWN_PROVIDER_STATE', 'Adapter returned an unknown canonical status.', {\n safeCode: 'unknown_provider_status',\n });\n }\n}\n\nexport function assertProviderTypesDoNotEscape(value: unknown): void {\n const serialized = JSON.stringify(value, (_key, nested) => (nested instanceof Uint8Array ? undefined : nested));\n if (/\"(?:access_token|api_key|client_secret|document_number|raw_payload|ssn|template_id|verification_session|webhook_secret|inquiry_status|document_front|selfie)\"/i.test(serialized)) {\n throw new Error('Provider SDK or raw provider fields escaped the adapter boundary.');\n }\n if (metadataContainsForbiddenIdentifier(value)) {\n throw new Error('Government identifiers escaped the adapter boundary.');\n }\n}\n\nfunction resourceCommand(command: ProviderAttemptCommand, providerResourceId: string) {\n return {\n attemptId: command.attemptId,\n providerResourceId,\n configurationRevision: command.configurationRevision,\n requestOrigin: command.requestOrigin,\n };\n}\n\nfunction redactionCommand(command: ProviderAttemptCommand, providerResourceId: string) {\n return {\n subjectReference: command.subjectReference,\n providerResourceId,\n requestReference: command.idempotencyKey,\n };\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nfunction isIsoTimestamp(value: unknown): value is string {\n return isNonEmptyString(value) && !Number.isNaN(Date.parse(value));\n}\n\nfunction isSafeMetadata(value: unknown): value is Record<string, string | boolean | number | null> {\n return Boolean(value)\n && typeof value === 'object'\n && !Array.isArray(value)\n && Object.values(value as Record<string, unknown>).every((entry) => (\n entry === null || ['string', 'boolean', 'number'].includes(typeof entry)\n ));\n}\n\nfunction malformed(message: string): never {\n throw new ProviderError('RETRYABLE_PROVIDER_FAILURE', message, {\n retryable: true,\n safeCode: 'malformed_provider_response',\n });\n}\n\nfunction isProviderErrorLike(error: unknown): error is ProviderError {\n if (error instanceof ProviderError) return true;\n if (!error || typeof error !== 'object') return false;\n const candidate = error as Partial<ProviderError> & { name?: string };\n return candidate.name === 'ProviderError'\n && typeof candidate.code === 'string'\n && typeof candidate.safeCode === 'string'\n && typeof candidate.retryable === 'boolean';\n}\n\nfunction describeError(error: unknown): string {\n return error instanceof Error ? `${error.name}: ${error.message}` : 'a non-Error value';\n}\n","import type {\n NormalizedProviderEvent,\n NormalizedProviderSnapshot,\n ProviderAttemptCommand,\n ProviderAttemptResult,\n ProviderLaunchEnvelope,\n ProviderManifestV1,\n ProviderOperationResult,\n ProviderRedactionCommand,\n ProviderRedactionResult,\n ProviderResourceCommand,\n ProviderRetryCommand,\n ProviderRuntimeContext,\n VerificationAdapterV1,\n VerificationCanonicalStatus,\n VerifiedWebhookEnvelope,\n} from './contracts.ts';\nimport { ProviderError } from './errors.ts';\nimport { VERIFICATION_ADAPTER_CONTRACT_VERSION } from './identifiers.ts';\nimport { createDefaultRuntime, defineProviderManifest } from './manifest.ts';\nimport { emptyConfigurationSchema } from './schema.ts';\n\nexport type FakeScenario =\n | 'success'\n | 'input_required'\n | 'processing'\n | 'verified'\n | 'decline'\n | 'failure'\n | 'manual_review'\n | 'timeout'\n | 'rate_limit'\n | 'malformed_response'\n | 'unknown_state'\n | 'cancellation'\n | 'resume'\n | 'asynchronous_redaction'\n | 'retryable_provider_failure';\n\nexport const fakeProviderManifest: ProviderManifestV1 = defineProviderManifest({\n contractVersion: VERIFICATION_ADAPTER_CONTRACT_VERSION,\n adapterVersion: '1.0.0',\n engineCompatibility: '1.0.0',\n provider: 'test_fake',\n displayName: 'Conformance Fake Provider',\n supportedPackages: ['human_idv', 'com.example.employee_check'],\n supportedCountries: ['US'],\n environments: ['sandbox'],\n capabilities: { presentations: ['embedded', 'hosted'], canResume: true, canRetry: true, canCancel: true, canRedact: true },\n launcherKeys: ['test_embedded', 'hosted'],\n launchPresentations: ['embedded', 'hosted'],\n configurationSchemaVersion: 'urn:splitin:verification:config:test-fake:v1',\n configurationSchema: emptyConfigurationSchema,\n webhook: { protocol: 'none', eventFamilies: ['test'] },\n dataPolicy: {\n classifications: ['normalized_status'],\n prohibitedPersistence: ['raw_webhook', 'launch_secret', 'document', 'selfie'],\n rawPayloadPersistence: false,\n browserSecretPersistence: false,\n governmentIdentifierPersistence: false,\n },\n retry: { sameResourceWhenResumable: true, newAttemptAfterTerminal: true },\n cancellation: { supported: true, terminal: true },\n redaction: { supported: true, asynchronous: true },\n apiHosts: ['127.0.0.1'],\n testedApiVersions: ['fake-1'],\n});\n\nconst SCENARIO_STATUS: Record<FakeScenario, VerificationCanonicalStatus> = {\n success: 'verified',\n verified: 'verified',\n input_required: 'pending_user_input',\n processing: 'processing',\n decline: 'declined',\n failure: 'failed',\n manual_review: 'manual_review_required',\n timeout: 'processing',\n rate_limit: 'processing',\n malformed_response: 'processing',\n unknown_state: 'processing',\n cancellation: 'canceled',\n resume: 'pending_user_input',\n asynchronous_redaction: 'processing',\n retryable_provider_failure: 'processing',\n};\n\nexport class FakeVerificationAdapter implements VerificationAdapterV1<Record<string, never>> {\n readonly contractVersion = VERIFICATION_ADAPTER_CONTRACT_VERSION;\n readonly manifest = fakeProviderManifest;\n readonly provider = 'test_fake';\n readonly environment = 'sandbox' as const;\n readonly runtime: ProviderRuntimeContext<Record<string, never>>;\n private readonly scenario: FakeScenario;\n private readonly resources = new Map<string, string>();\n\n constructor(scenario: FakeScenario = 'input_required', runtime?: ProviderRuntimeContext<Record<string, never>>) {\n this.scenario = scenario;\n this.runtime = runtime ?? createDefaultRuntime('sandbox', {}, { allowedHosts: ['127.0.0.1'] });\n }\n\n validateConfiguration(): void {\n if (this.runtime.environment !== 'sandbox') {\n throw new ProviderError('INVALID_CONFIGURATION', 'The fake provider is sandbox-only.');\n }\n }\n\n async createAttempt(command: ProviderAttemptCommand): Promise<ProviderAttemptResult> {\n this.runtime.idempotency.keyFor('create', command.attemptId, command.idempotencyKey);\n const existing = this.resources.get(command.idempotencyKey);\n const providerResourceId = existing ?? `tfr_${command.attemptId.replace(/[^a-zA-Z0-9]/g, '')}`;\n this.resources.set(command.idempotencyKey, providerResourceId);\n const canonicalStatus = this.scenario === 'success' || this.scenario === 'verified' ? 'verified' : 'pending_user_input';\n return {\n attemptId: command.attemptId,\n providerResourceId,\n providerStatus: canonicalStatus,\n canonicalStatus,\n launch: this.launch(command.attemptId, canonicalStatus),\n };\n }\n\n async resumeAttempt(command: ProviderResourceCommand): Promise<ProviderLaunchEnvelope> {\n return this.launch(command.attemptId, 'pending_user_input');\n }\n\n async retrieveAttempt(command: ProviderResourceCommand): Promise<NormalizedProviderSnapshot> {\n this.throwIfErrorScenario();\n return {\n providerResourceId: command.providerResourceId,\n providerStatus: SCENARIO_STATUS[this.scenario],\n canonicalStatus: SCENARIO_STATUS[this.scenario],\n occurredAt: this.runtime.now().toISOString(),\n normalizedReasonCodes: [],\n safeMetadata: { source: 'fake', scenario: this.scenario },\n };\n }\n\n async retryAttempt(command: ProviderRetryCommand): Promise<ProviderAttemptResult> {\n return this.createAttempt({ ...command, attemptId: `${command.attemptId}_retry` });\n }\n\n async cancelAttempt(_command: ProviderResourceCommand): Promise<ProviderOperationResult> {\n return { accepted: true, providerStatus: 'canceled', canonicalStatus: 'canceled' };\n }\n\n async redactSubject(_command: ProviderRedactionCommand): Promise<ProviderRedactionResult> {\n if (this.scenario === 'asynchronous_redaction') {\n return { completed: false, retryable: true, disposition: 'processing' };\n }\n return { completed: true, retryable: false, disposition: 'redacted' };\n }\n\n async verifyWebhook(): Promise<VerifiedWebhookEnvelope> {\n throw new ProviderError('UNSUPPORTED_CAPABILITY', 'The fake provider does not receive webhooks.', {\n safeCode: 'webhooks_not_supported',\n });\n }\n\n async normalizeWebhook(_input: VerifiedWebhookEnvelope): Promise<NormalizedProviderEvent> {\n throw new ProviderError('UNSUPPORTED_CAPABILITY', 'The fake provider does not receive webhooks.', {\n safeCode: 'webhooks_not_supported',\n });\n }\n\n private throwIfErrorScenario(): void {\n if (this.scenario === 'timeout') {\n throw new ProviderError('TIMEOUT', 'The fake provider timed out.', { retryable: true, safeCode: 'timeout' });\n }\n if (this.scenario === 'rate_limit') {\n throw new ProviderError('RATE_LIMITED', 'The fake provider is rate limited.', {\n retryable: true,\n safeCode: 'rate_limited',\n retryAfterSeconds: 30,\n });\n }\n if (this.scenario === 'retryable_provider_failure') {\n throw new ProviderError('RETRYABLE_PROVIDER_FAILURE', 'The fake provider failed retryably.', {\n retryable: true,\n safeCode: 'retryable_provider_failure',\n });\n }\n if (this.scenario === 'malformed_response') {\n throw new ProviderError('RETRYABLE_PROVIDER_FAILURE', 'The fake provider returned a malformed body.', {\n retryable: true,\n safeCode: 'malformed_provider_response',\n });\n }\n if (this.scenario === 'unknown_state') {\n throw new ProviderError('UNKNOWN_PROVIDER_STATE', 'The fake provider returned an unknown state.', {\n retryable: false,\n safeCode: 'unknown_provider_status',\n });\n }\n }\n\n private launch(attemptId: string, canonicalStatus: VerificationCanonicalStatus): ProviderLaunchEnvelope {\n return {\n attemptId,\n canonicalStatus,\n launcherKey: 'test_embedded',\n presentation: 'embedded',\n providerDisclosure: 'Test provider',\n transientSecret: `test_launch_${attemptId.replace(/-/g, '')}`,\n transientSecretExpiresAt: new Date(this.runtime.now().getTime() + 5 * 60_000).toISOString(),\n continuationReference: `cont_${attemptId}`,\n };\n }\n}\n\nexport function createFakeAdapterForScenario(scenario: FakeScenario): FakeVerificationAdapter {\n return new FakeVerificationAdapter(scenario);\n}\n\n/** Intentionally incomplete adapter used to assert diagnostic quality. */\nexport class IncompleteVerificationAdapter {\n readonly provider = 'incomplete_fixture';\n readonly environment = 'sandbox';\n readonly contractVersion = VERIFICATION_ADAPTER_CONTRACT_VERSION;\n readonly manifest = fakeProviderManifest;\n readonly runtime = createDefaultRuntime('sandbox', {}, { allowedHosts: ['127.0.0.1'] });\n\n validateConfiguration(): void {\n throw new ProviderError('INVALID_CONFIGURATION', 'Incomplete adapter is missing createAttempt, resumeAttempt, retrieveAttempt, retryAttempt, cancelAttempt, redactSubject, verifyWebhook, and normalizeWebhook.', {\n safeCode: 'missing_method_create_attempt',\n });\n }\n}\n","import { ProviderError } from './errors.ts';\n\nexport class FakeClock {\n constructor(private epochMs: number = Date.parse('2026-01-01T00:00:00.000Z')) {}\n now = (): Date => new Date(this.epochMs);\n advance(ms: number): void {\n this.epochMs += ms;\n }\n}\n\nexport function deterministicId(prefix: string, seed: string): string {\n let hash = 0;\n for (let index = 0; index < seed.length; index += 1) {\n hash = ((hash << 5) - hash + seed.charCodeAt(index)) | 0;\n }\n return `${prefix}_${Math.abs(hash).toString(16).padStart(8, '0')}`;\n}\n\nexport function createControlledFetch(handler: (input: Request) => Promise<Response> | Response): typeof fetch {\n return (async (input: RequestInfo | URL, init?: RequestInit) => {\n const request = input instanceof Request ? input : new Request(String(input), init);\n return handler(request);\n }) as typeof fetch;\n}\n\nexport async function signHmacSha256Hex(secret: string, payload: Uint8Array): Promise<string> {\n const key = await crypto.subtle.importKey('raw', new TextEncoder().encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);\n return bytesToHex(new Uint8Array(await crypto.subtle.sign('HMAC', key, payload as BufferSource)));\n}\n\nexport async function sha256Hex(payload: Uint8Array): Promise<string> {\n return bytesToHex(new Uint8Array(await crypto.subtle.digest('SHA-256', payload as BufferSource)));\n}\n\nexport function bytesToHex(value: Uint8Array): string {\n return Array.from(value, (byte) => byte.toString(16).padStart(2, '0')).join('');\n}\n\nexport async function createSignedWebhookFixture(input: {\n protocol: 'stripe_v1_hmac' | 'persona_hmac_sha256' | 'none';\n secret: string;\n body: string;\n now?: Date;\n}): Promise<Request> {\n const now = input.now ?? new Date();\n const timestamp = Math.floor(now.getTime() / 1000);\n const raw = new TextEncoder().encode(input.body);\n const headers = new Headers({ 'content-type': 'application/json' });\n if (input.protocol === 'stripe_v1_hmac') {\n const signature = await signHmacSha256Hex(input.secret, new TextEncoder().encode(`${timestamp}.${input.body}`));\n headers.set('stripe-signature', `t=${timestamp},v1=${signature}`);\n }\n if (input.protocol === 'persona_hmac_sha256') {\n const prefix = new TextEncoder().encode(`${timestamp}.`);\n const payload = new Uint8Array(prefix.length + raw.length);\n payload.set(prefix);\n payload.set(raw, prefix.length);\n const signature = await signHmacSha256Hex(input.secret, payload);\n headers.set('Persona-Signature', `t=${timestamp},v1=${signature}`);\n }\n return new Request('https://example.test/webhooks/provider', { method: 'POST', headers, body: raw });\n}\n\nexport function denySecretLogging(value: string): void {\n if (/sk_|rk_|whsec_|secret|password/i.test(value)) {\n throw new ProviderError('INVALID_CONFIGURATION', 'A secret would have been printed or logged.', {\n safeCode: 'secret_leak',\n });\n }\n}\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { P as ProviderConfigurationSchemaV1, J as JsonSchema2020, V as VerificationAdapterV1, a as ProviderManifestV1, b as ProviderRuntimeContext } from './contracts-5VqcOmjU.cjs';
|
|
2
|
+
export { A as ActorContext, C as CANONICAL_STATUSES, E as ENGINE_CONTRACT_VERSION, L as LAUNCH_PRESENTATIONS, N as NormalizedProviderEvent, c as NormalizedProviderSnapshot, O as OpenTelemetryHooks, d as PROVIDER_ENVIRONMENTS, e as PROVIDER_MANIFEST_SCHEMA_URN, f as PROVIDER_OPERATIONS, g as ProtectedActionDenial, h as ProviderAddressInput, i as ProviderAssociatedPersonInput, j as ProviderAttemptCommand, k as ProviderAttemptResult, l as ProviderCapabilities, m as ProviderError, n as ProviderErrorCode, o as ProviderErrorOptions, p as ProviderHealthObservation, q as ProviderHttpClient, r as ProviderLaunchEnvelope, s as ProviderOperation, t as ProviderOperationPendingError, u as ProviderOperationResult, v as ProviderOrganizationInput, w as ProviderRateBudget, x as ProviderRedactionCommand, y as ProviderRedactionResult, z as ProviderRelationshipInput, B as ProviderRequiredInformationError, D as ProviderResourceCommand, F as ProviderResourceType, G as ProviderResumeCommand, H as ProviderRetryCommand, I as ProviderSafeLogger, K as ProviderUnavailableError, S as STANDARD_PACKAGE_CODES, M as STANDARD_RELATIONSHIP_KINDS, Q as STANDARD_WEBHOOK_PROTOCOLS, R as SafeProviderFailure, T as SafeProviderFailureEnvelope, U as StandardPackageCode, W as StandardRelationshipKind, X as StandardWebhookProtocol, Y as TERMINAL_STATUSES, Z as TerminalVerificationStatus, _ as TraceSpan, $ as VERIFICATION_ADAPTER_CONTRACT_VERSION, a0 as VerificationAttemptLimitError, a1 as VerificationCanonicalStatus, a2 as VerificationLaunchPresentation, a3 as VerificationLauncherKey, a4 as VerificationPackageCode, a5 as VerificationProviderCode, a6 as VerificationProviderEnvironment, a7 as VerifiedWebhookEnvelope, a8 as WebhookProtocolId, a9 as assertPackageCode, aa as compareSemver, ab as isCanonicalStatus, ac as isCountryCode, ad as isCustomPackageCode, ae as isLauncherKey, af as isOpaqueSubjectReference, ag as isPackageCode, ah as isProviderCode, ai as isResourceType, aj as isSemver, ak as isStandardPackageCode, al as isTerminalStatus, am as isWebhookProtocol, an as majorsCompatible, ao as metadataContainsForbiddenIdentifier, ap as toSafeProviderFailure } from './contracts-5VqcOmjU.cjs';
|
|
3
|
+
export { AdapterConformanceOptions, AdapterConformanceScenarioFactory, ConformanceResult, ProviderConformanceScenario, assertProviderTypesDoNotEscape, canonicalStatusRank, providerConformanceScenarios, runAdapterConformance, runAdapterConformanceScenarios, validateManifestOnly } from './conformance.cjs';
|
|
4
|
+
export { FakeScenario, FakeVerificationAdapter, IncompleteVerificationAdapter, createFakeAdapterForScenario, fakeProviderManifest } from './fakes.cjs';
|
|
5
|
+
|
|
6
|
+
declare const providerManifestV1JsonSchema: {
|
|
7
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
8
|
+
readonly $id: "urn:splitin:verification:provider-manifest:v1";
|
|
9
|
+
readonly title: "Verification Provider Manifest V1";
|
|
10
|
+
readonly type: "object";
|
|
11
|
+
readonly additionalProperties: false;
|
|
12
|
+
readonly required: readonly ["contractVersion", "adapterVersion", "engineCompatibility", "provider", "displayName", "supportedPackages", "supportedCountries", "environments", "capabilities", "launcherKeys", "launchPresentations", "configurationSchemaVersion", "configurationSchema", "webhook", "dataPolicy", "retry", "cancellation", "redaction", "apiHosts", "testedApiVersions"];
|
|
13
|
+
readonly properties: {
|
|
14
|
+
readonly contractVersion: {
|
|
15
|
+
readonly const: "1.0.0";
|
|
16
|
+
};
|
|
17
|
+
readonly adapterVersion: {
|
|
18
|
+
readonly type: "string";
|
|
19
|
+
readonly pattern: "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$";
|
|
20
|
+
};
|
|
21
|
+
readonly engineCompatibility: {
|
|
22
|
+
readonly type: "string";
|
|
23
|
+
readonly pattern: "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$";
|
|
24
|
+
};
|
|
25
|
+
readonly provider: {
|
|
26
|
+
readonly type: "string";
|
|
27
|
+
readonly pattern: "^[a-z][a-z0-9_]{1,63}$";
|
|
28
|
+
};
|
|
29
|
+
readonly displayName: {
|
|
30
|
+
readonly type: "string";
|
|
31
|
+
readonly minLength: 1;
|
|
32
|
+
};
|
|
33
|
+
readonly description: {
|
|
34
|
+
readonly type: "string";
|
|
35
|
+
};
|
|
36
|
+
readonly supportedPackages: {
|
|
37
|
+
readonly type: "array";
|
|
38
|
+
readonly minItems: 1;
|
|
39
|
+
readonly uniqueItems: true;
|
|
40
|
+
readonly items: {
|
|
41
|
+
readonly type: "string";
|
|
42
|
+
readonly anyOf: readonly [{
|
|
43
|
+
readonly enum: readonly ["human_idv", "business_kyb", "associated_person_idv", "ownership_review"];
|
|
44
|
+
}, {
|
|
45
|
+
readonly pattern: "^[a-z0-9][a-z0-9-]{0,32}(?:\\.[a-z0-9][a-z0-9_-]{0,63}){1,6}$";
|
|
46
|
+
}];
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
readonly supportedCountries: {
|
|
50
|
+
readonly type: "array";
|
|
51
|
+
readonly minItems: 1;
|
|
52
|
+
readonly uniqueItems: true;
|
|
53
|
+
readonly items: {
|
|
54
|
+
readonly type: "string";
|
|
55
|
+
readonly pattern: "^[A-Z]{2}$";
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
readonly environments: {
|
|
59
|
+
readonly type: "array";
|
|
60
|
+
readonly minItems: 1;
|
|
61
|
+
readonly uniqueItems: true;
|
|
62
|
+
readonly items: {
|
|
63
|
+
readonly enum: readonly ["sandbox", "production"];
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
readonly capabilities: {
|
|
67
|
+
readonly type: "object";
|
|
68
|
+
readonly additionalProperties: false;
|
|
69
|
+
readonly required: readonly ["presentations", "canResume", "canRetry", "canCancel", "canRedact"];
|
|
70
|
+
readonly properties: {
|
|
71
|
+
readonly presentations: {
|
|
72
|
+
readonly type: "array";
|
|
73
|
+
readonly minItems: 1;
|
|
74
|
+
readonly uniqueItems: true;
|
|
75
|
+
readonly items: {
|
|
76
|
+
readonly enum: readonly ["embedded", "hosted", "qr", "none"];
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
readonly canResume: {
|
|
80
|
+
readonly type: "boolean";
|
|
81
|
+
};
|
|
82
|
+
readonly canRetry: {
|
|
83
|
+
readonly type: "boolean";
|
|
84
|
+
};
|
|
85
|
+
readonly canCancel: {
|
|
86
|
+
readonly type: "boolean";
|
|
87
|
+
};
|
|
88
|
+
readonly canRedact: {
|
|
89
|
+
readonly type: "boolean";
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
readonly launcherKeys: {
|
|
94
|
+
readonly type: "array";
|
|
95
|
+
readonly minItems: 1;
|
|
96
|
+
readonly uniqueItems: true;
|
|
97
|
+
readonly items: {
|
|
98
|
+
readonly type: "string";
|
|
99
|
+
readonly pattern: "^[a-z][a-z0-9_]{1,63}$";
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
readonly launchPresentations: {
|
|
103
|
+
readonly type: "array";
|
|
104
|
+
readonly minItems: 1;
|
|
105
|
+
readonly uniqueItems: true;
|
|
106
|
+
readonly items: {
|
|
107
|
+
readonly enum: readonly ["embedded", "hosted", "qr", "none"];
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
readonly configurationSchemaVersion: {
|
|
111
|
+
readonly type: "string";
|
|
112
|
+
readonly minLength: 1;
|
|
113
|
+
};
|
|
114
|
+
readonly configurationSchema: {
|
|
115
|
+
readonly $ref: "#/$defs/jsonSchema2020";
|
|
116
|
+
};
|
|
117
|
+
readonly webhook: {
|
|
118
|
+
readonly type: "object";
|
|
119
|
+
readonly additionalProperties: false;
|
|
120
|
+
readonly required: readonly ["protocol", "eventFamilies"];
|
|
121
|
+
readonly properties: {
|
|
122
|
+
readonly protocol: {
|
|
123
|
+
readonly type: "string";
|
|
124
|
+
readonly minLength: 1;
|
|
125
|
+
readonly maxLength: 128;
|
|
126
|
+
};
|
|
127
|
+
readonly eventFamilies: {
|
|
128
|
+
readonly type: "array";
|
|
129
|
+
readonly uniqueItems: true;
|
|
130
|
+
readonly items: {
|
|
131
|
+
readonly type: "string";
|
|
132
|
+
readonly minLength: 1;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
readonly toleranceSeconds: {
|
|
136
|
+
readonly type: "integer";
|
|
137
|
+
readonly minimum: 1;
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
readonly dataPolicy: {
|
|
142
|
+
readonly type: "object";
|
|
143
|
+
readonly additionalProperties: false;
|
|
144
|
+
readonly required: readonly ["classifications", "prohibitedPersistence", "rawPayloadPersistence", "browserSecretPersistence", "governmentIdentifierPersistence"];
|
|
145
|
+
readonly properties: {
|
|
146
|
+
readonly classifications: {
|
|
147
|
+
readonly type: "array";
|
|
148
|
+
readonly uniqueItems: true;
|
|
149
|
+
readonly items: {
|
|
150
|
+
readonly type: "string";
|
|
151
|
+
readonly minLength: 1;
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
readonly prohibitedPersistence: {
|
|
155
|
+
readonly type: "array";
|
|
156
|
+
readonly uniqueItems: true;
|
|
157
|
+
readonly items: {
|
|
158
|
+
readonly type: "string";
|
|
159
|
+
readonly minLength: 1;
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
readonly rawPayloadPersistence: {
|
|
163
|
+
readonly const: false;
|
|
164
|
+
};
|
|
165
|
+
readonly browserSecretPersistence: {
|
|
166
|
+
readonly const: false;
|
|
167
|
+
};
|
|
168
|
+
readonly governmentIdentifierPersistence: {
|
|
169
|
+
readonly const: false;
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
readonly retry: {
|
|
174
|
+
readonly type: "object";
|
|
175
|
+
readonly additionalProperties: false;
|
|
176
|
+
readonly required: readonly ["sameResourceWhenResumable", "newAttemptAfterTerminal"];
|
|
177
|
+
readonly properties: {
|
|
178
|
+
readonly sameResourceWhenResumable: {
|
|
179
|
+
readonly type: "boolean";
|
|
180
|
+
};
|
|
181
|
+
readonly newAttemptAfterTerminal: {
|
|
182
|
+
readonly type: "boolean";
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
readonly cancellation: {
|
|
187
|
+
readonly type: "object";
|
|
188
|
+
readonly additionalProperties: false;
|
|
189
|
+
readonly required: readonly ["supported", "terminal"];
|
|
190
|
+
readonly properties: {
|
|
191
|
+
readonly supported: {
|
|
192
|
+
readonly type: "boolean";
|
|
193
|
+
};
|
|
194
|
+
readonly terminal: {
|
|
195
|
+
readonly type: "boolean";
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
readonly redaction: {
|
|
200
|
+
readonly type: "object";
|
|
201
|
+
readonly additionalProperties: false;
|
|
202
|
+
readonly required: readonly ["supported", "asynchronous"];
|
|
203
|
+
readonly properties: {
|
|
204
|
+
readonly supported: {
|
|
205
|
+
readonly type: "boolean";
|
|
206
|
+
};
|
|
207
|
+
readonly asynchronous: {
|
|
208
|
+
readonly type: "boolean";
|
|
209
|
+
};
|
|
210
|
+
readonly notApplicable: {
|
|
211
|
+
readonly type: "boolean";
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
};
|
|
215
|
+
readonly apiHosts: {
|
|
216
|
+
readonly type: "array";
|
|
217
|
+
readonly minItems: 1;
|
|
218
|
+
readonly uniqueItems: true;
|
|
219
|
+
readonly items: {
|
|
220
|
+
readonly type: "string";
|
|
221
|
+
readonly pattern: "^[a-z0-9.-]+$";
|
|
222
|
+
};
|
|
223
|
+
};
|
|
224
|
+
readonly testedApiVersions: {
|
|
225
|
+
readonly type: "array";
|
|
226
|
+
readonly minItems: 1;
|
|
227
|
+
readonly uniqueItems: true;
|
|
228
|
+
readonly items: {
|
|
229
|
+
readonly type: "string";
|
|
230
|
+
readonly minLength: 1;
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
};
|
|
234
|
+
readonly $defs: {
|
|
235
|
+
readonly jsonSchema2020: {
|
|
236
|
+
readonly type: "object";
|
|
237
|
+
readonly required: readonly ["$schema", "type", "additionalProperties", "required", "properties"];
|
|
238
|
+
readonly properties: {
|
|
239
|
+
readonly $schema: {
|
|
240
|
+
readonly const: "https://json-schema.org/draft/2020-12/schema";
|
|
241
|
+
};
|
|
242
|
+
readonly type: {
|
|
243
|
+
readonly const: "object";
|
|
244
|
+
};
|
|
245
|
+
readonly additionalProperties: {
|
|
246
|
+
readonly const: false;
|
|
247
|
+
};
|
|
248
|
+
readonly required: {
|
|
249
|
+
readonly type: "array";
|
|
250
|
+
readonly uniqueItems: true;
|
|
251
|
+
readonly items: {
|
|
252
|
+
readonly type: "string";
|
|
253
|
+
readonly minLength: 1;
|
|
254
|
+
};
|
|
255
|
+
};
|
|
256
|
+
readonly properties: {
|
|
257
|
+
readonly type: "object";
|
|
258
|
+
};
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
declare const emptyConfigurationSchema: ProviderConfigurationSchemaV1;
|
|
264
|
+
declare function secretStringProperty(minLength?: number): JsonSchema2020;
|
|
265
|
+
declare function plainStringProperty(minLength?: number): JsonSchema2020;
|
|
266
|
+
|
|
267
|
+
declare const REQUIRED_ADAPTER_METHODS: readonly ["validateConfiguration", "createAttempt", "resumeAttempt", "retrieveAttempt", "retryAttempt", "cancelAttempt", "redactSubject", "verifyWebhook", "normalizeWebhook"];
|
|
268
|
+
declare function defineProviderManifest(input: ProviderManifestV1): Readonly<ProviderManifestV1>;
|
|
269
|
+
declare function assertProviderManifest(manifest: ProviderManifestV1): void;
|
|
270
|
+
declare function assertAdapterConformsToManifest(adapter: VerificationAdapterV1): void;
|
|
271
|
+
declare function createAllowlistedHttp(allowedHosts: readonly string[], fetchImpl: typeof fetch, timeoutMs?: number): {
|
|
272
|
+
fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
|
|
273
|
+
};
|
|
274
|
+
declare function createDefaultRuntime<T extends object>(environment: ProviderRuntimeContext<T>['environment'], configuration: T, options?: Partial<ProviderRuntimeContext<T>> & {
|
|
275
|
+
allowedHosts?: string[];
|
|
276
|
+
}): ProviderRuntimeContext<T>;
|
|
277
|
+
declare const silentLogger: Readonly<{
|
|
278
|
+
info: () => undefined;
|
|
279
|
+
warn: () => undefined;
|
|
280
|
+
error: () => undefined;
|
|
281
|
+
}>;
|
|
282
|
+
|
|
283
|
+
declare class FakeClock {
|
|
284
|
+
private epochMs;
|
|
285
|
+
constructor(epochMs?: number);
|
|
286
|
+
now: () => Date;
|
|
287
|
+
advance(ms: number): void;
|
|
288
|
+
}
|
|
289
|
+
declare function deterministicId(prefix: string, seed: string): string;
|
|
290
|
+
declare function createControlledFetch(handler: (input: Request) => Promise<Response> | Response): typeof fetch;
|
|
291
|
+
declare function signHmacSha256Hex(secret: string, payload: Uint8Array): Promise<string>;
|
|
292
|
+
declare function sha256Hex(payload: Uint8Array): Promise<string>;
|
|
293
|
+
declare function bytesToHex(value: Uint8Array): string;
|
|
294
|
+
declare function createSignedWebhookFixture(input: {
|
|
295
|
+
protocol: 'stripe_v1_hmac' | 'persona_hmac_sha256' | 'none';
|
|
296
|
+
secret: string;
|
|
297
|
+
body: string;
|
|
298
|
+
now?: Date;
|
|
299
|
+
}): Promise<Request>;
|
|
300
|
+
declare function denySecretLogging(value: string): void;
|
|
301
|
+
|
|
302
|
+
export { FakeClock, JsonSchema2020, ProviderConfigurationSchemaV1, ProviderManifestV1, ProviderRuntimeContext, REQUIRED_ADAPTER_METHODS, VerificationAdapterV1, assertAdapterConformsToManifest, assertProviderManifest, bytesToHex, createAllowlistedHttp, createControlledFetch, createDefaultRuntime, createSignedWebhookFixture, defineProviderManifest, denySecretLogging, deterministicId, emptyConfigurationSchema, plainStringProperty, providerManifestV1JsonSchema, secretStringProperty, sha256Hex, signHmacSha256Hex, silentLogger };
|