@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/errors.ts","../src/identifiers.ts","../src/schema.ts","../src/manifest.ts","../src/fakes.ts"],"names":[],"mappings":"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","file":"fakes.js","sourcesContent":["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","/** 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","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 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"]}
|