@splitin/verification-adapter-persona 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 +45 -0
- package/dist/browser.cjs +42 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.cts +23 -0
- package/dist/browser.d.ts +23 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +39 -0
- package/dist/browser.js.map +1 -0
- package/dist/index.cjs +1363 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +127 -0
- package/dist/index.d.ts +127 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1356 -0
- package/dist/index.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/configuration.ts","../src/constants.ts","../src/manifest.ts","../src/status.ts","../src/util.ts","../src/webhook.ts","../src/adapter.ts"],"names":["safeCode","ProviderError","VERIFICATION_ADAPTER_CONTRACT_VERSION","isOpaqueSubjectReference"],"mappings":"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","file":"index.js","sourcesContent":["import {\n ProviderError,\n isCanonicalStatus,\n type VerificationCanonicalStatus,\n} from '@splitin/verification-adapter-sdk';\n\nexport interface PersonaKybFieldMap {\n associatedPeople: string;\n legalName: string;\n registeredAddress: string;\n physicalAddress: string;\n jurisdictionCountryCode: string;\n entityType: string;\n evidenceReferences: string;\n relationshipReference: string;\n relationshipKind: string;\n claimedOwnershipPercentage: string;\n subjectReference: string;\n}\n\nexport interface PersonaStatusMappings {\n inquiry?: Record<string, VerificationCanonicalStatus>;\n transaction?: Record<string, VerificationCanonicalStatus>;\n case?: Record<string, VerificationCanonicalStatus>;\n report?: Record<string, VerificationCanonicalStatus>;\n verification?: Record<string, VerificationCanonicalStatus>;\n}\n\nexport interface PersonaAdapterConfiguration {\n apiKey: string;\n environmentId: string;\n idvTemplateId: string;\n idvTemplateVersion: string;\n associatedPersonTemplateId: string;\n associatedPersonTemplateVersion: string;\n kybTransactionTypeId: string;\n kybWorkflowId: string;\n kybWorkflowVersion: string;\n caseTemplateId: string;\n caseType?: string;\n ownershipCaseType?: string;\n businessAuthorityCaseType?: string;\n kybCaseMode?: 'workflow_managed' | 'engine_managed';\n kybFieldMap: PersonaKybFieldMap;\n statusMappings?: PersonaStatusMappings;\n apiVersion: string;\n webhookSecretCurrent: string;\n webhookSecretPrevious?: string;\n webhookToleranceSeconds?: number;\n allowedOrigins?: string[];\n}\n\nexport const DEFAULT_KYB_FIELD_MAP: PersonaKybFieldMap = {\n associatedPeople: 'associated_people',\n legalName: 'business-legal-name',\n registeredAddress: 'business-registered-address',\n physicalAddress: 'business-physical-address',\n jurisdictionCountryCode: 'business-jurisdiction-country-code',\n entityType: 'business-entity-type',\n evidenceReferences: 'business-evidence-references',\n relationshipReference: 'relationship-reference',\n relationshipKind: 'relationship-kind',\n claimedOwnershipPercentage: 'claimed-ownership-percentage',\n subjectReference: 'subject-reference',\n};\n\n/**\n * CLI/env mapping helper. Adapter logic never reads process.env.\n */\nexport function createPersonaConfiguration(\n values: Record<string, string | undefined>,\n): PersonaAdapterConfiguration {\n const kybCaseMode = parseKybCaseMode(values.kybCaseMode ?? values.PERSONA_KYB_CASE_MODE);\n return Object.freeze({\n apiKey: pick(values, 'apiKey', 'PERSONA_API_KEY'),\n environmentId: pick(values, 'environmentId', 'PERSONA_ENVIRONMENT_ID'),\n idvTemplateId: pick(values, 'idvTemplateId', 'PERSONA_IDV_TEMPLATE_ID'),\n idvTemplateVersion: pick(values, 'idvTemplateVersion', 'PERSONA_IDV_TEMPLATE_VERSION'),\n associatedPersonTemplateId: pick(values, 'associatedPersonTemplateId', 'PERSONA_ASSOCIATED_PERSON_TEMPLATE_ID'),\n associatedPersonTemplateVersion: pick(values, 'associatedPersonTemplateVersion', 'PERSONA_ASSOCIATED_PERSON_TEMPLATE_VERSION'),\n kybTransactionTypeId: pick(values, 'kybTransactionTypeId', 'PERSONA_KYB_TRANSACTION_TYPE_ID'),\n kybWorkflowId: pick(values, 'kybWorkflowId', 'PERSONA_KYB_WORKFLOW_ID'),\n kybWorkflowVersion: pick(values, 'kybWorkflowVersion', 'PERSONA_KYB_WORKFLOW_VERSION'),\n caseTemplateId: pick(values, 'caseTemplateId', 'PERSONA_CASE_TEMPLATE_ID'),\n caseType: optional(values, 'caseType', 'PERSONA_CASE_TYPE'),\n ownershipCaseType: optional(values, 'ownershipCaseType', 'PERSONA_OWNERSHIP_CASE_TYPE'),\n businessAuthorityCaseType: optional(values, 'businessAuthorityCaseType', 'PERSONA_BUSINESS_AUTHORITY_CASE_TYPE'),\n kybCaseMode,\n kybFieldMap: parseFieldMap(values.kybFieldMapJson ?? values.PERSONA_KYB_FIELD_MAP_JSON),\n statusMappings: parseStatusMappings(values.statusMappingsJson ?? values.PERSONA_STATUS_MAPPINGS_JSON),\n apiVersion: pick(values, 'apiVersion', 'PERSONA_API_VERSION'),\n webhookSecretCurrent: pick(values, 'webhookSecretCurrent', 'PERSONA_WEBHOOK_SECRET_CURRENT'),\n webhookSecretPrevious: optional(values, 'webhookSecretPrevious', 'PERSONA_WEBHOOK_SECRET_PREVIOUS'),\n webhookToleranceSeconds: parseTolerance(values.webhookToleranceSeconds ?? values.PERSONA_WEBHOOK_TOLERANCE_SECONDS),\n allowedOrigins: parseAllowedOrigins(values.allowedOrigins ?? values.PERSONA_ALLOWED_ORIGINS),\n });\n}\n\nexport function personaWebhookSecrets(config: PersonaAdapterConfiguration): string[] {\n return [config.webhookSecretCurrent, config.webhookSecretPrevious]\n .map((value) => value?.trim() ?? '')\n .filter(Boolean);\n}\n\nexport function validatePersonaConfiguration(\n config: PersonaAdapterConfiguration,\n environment: 'sandbox' | 'production',\n): void {\n const required = [\n config.apiKey, config.environmentId, config.idvTemplateId, config.idvTemplateVersion,\n config.associatedPersonTemplateId, config.associatedPersonTemplateVersion,\n config.kybTransactionTypeId, config.kybWorkflowId, config.kybWorkflowVersion,\n config.caseTemplateId, config.apiVersion,\n ];\n if (required.some((value) => !value.trim()) || personaWebhookSecrets(config).length === 0) {\n throw invalid('Persona verification is not configured.', 'persona_not_configured');\n }\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(config.apiVersion)) {\n throw invalid('Persona API version is invalid.', 'persona_api_version_invalid');\n }\n const expectedKeyPrefix = environment === 'production' ? 'persona_production_' : 'persona_sandbox_';\n if (!config.apiKey.startsWith(expectedKeyPrefix)) {\n throw invalid('Persona API key does not match the pinned environment.', 'persona_credential_environment_mismatch');\n }\n assertPublishedVersion(config.idvTemplateVersion, 'idv template');\n assertPublishedVersion(config.associatedPersonTemplateVersion, 'associated person template');\n assertPublishedVersion(config.kybWorkflowVersion, 'KYB workflow');\n validateFieldMap(config.kybFieldMap);\n validateStatusMappings(config.statusMappings);\n if (environment === 'production' && (!config.allowedOrigins || config.allowedOrigins.length === 0)) {\n throw invalid('Persona production embedding origin allowlist is missing.', 'persona_allowed_origins_missing');\n }\n}\n\nfunction assertPublishedVersion(value: string, label: string): void {\n if (!/^[A-Za-z0-9._-]{3,128}$/.test(value) || /draft|latest|unpublished/i.test(value)) {\n throw invalid(`Persona ${label} version must be a published version pin.`, 'persona_unpublished_version');\n }\n}\n\nfunction invalid(message: string, safeCode: string): ProviderError {\n return new ProviderError('INVALID_CONFIGURATION', message, { safeCode });\n}\n\nfunction pick(values: Record<string, string | undefined>, camel: string, conventional: string): string {\n return values[camel]?.trim() || values[conventional]?.trim() || '';\n}\n\nfunction optional(values: Record<string, string | undefined>, camel: string, conventional: string): string | undefined {\n const value = pick(values, camel, conventional);\n return value || undefined;\n}\n\nfunction parseTolerance(value: string | undefined): number | undefined {\n if (value == null || value === '') return undefined;\n const parsed = Number(value);\n return Number.isInteger(parsed) && parsed >= 60 && parsed <= 900 ? parsed : 300;\n}\n\nfunction parseAllowedOrigins(value: string | undefined): string[] | undefined {\n if (!value) return undefined;\n const result: string[] = [];\n for (const candidate of value.split(',')) {\n try {\n const origin = new URL(candidate.trim()).origin;\n if (!origin.startsWith('https:')) {\n throw invalid('Persona embedding origins must be HTTPS.', 'persona_origin_invalid');\n }\n if (!result.includes(origin)) result.push(origin);\n } catch (error) {\n if (error instanceof ProviderError) throw error;\n throw invalid('Persona embedding origin allowlist is invalid.', 'persona_origin_invalid');\n }\n }\n return result;\n}\n\nfunction parseKybCaseMode(value: string | undefined): 'workflow_managed' | 'engine_managed' {\n const normalized = value?.trim() || 'workflow_managed';\n if (normalized !== 'workflow_managed' && normalized !== 'engine_managed') {\n throw invalid('Persona KYB case mode is invalid.', 'persona_kyb_case_mode_invalid');\n }\n return normalized;\n}\n\nfunction parseFieldMap(value: string | undefined): PersonaKybFieldMap {\n if (!value) return DEFAULT_KYB_FIELD_MAP;\n try {\n const parsed = JSON.parse(value) as PersonaKybFieldMap;\n validateFieldMap(parsed);\n return parsed;\n } catch (error) {\n if (error instanceof ProviderError) throw error;\n throw invalid('Persona KYB field map is invalid.', 'persona_field_map_invalid');\n }\n}\n\nfunction validateFieldMap(value: PersonaKybFieldMap): void {\n const keys = Object.keys(DEFAULT_KYB_FIELD_MAP) as Array<keyof PersonaKybFieldMap>;\n if (!value || keys.some((key) => typeof value[key] !== 'string' || !/^[a-z][a-z0-9_-]{1,127}$/.test(value[key]!))) {\n throw invalid('Persona KYB field map is invalid.', 'persona_field_map_invalid');\n }\n if (new Set(keys.map((key) => value[key])).size !== keys.length) {\n throw invalid('Persona KYB field map contains duplicate fields.', 'persona_field_map_duplicate');\n }\n}\n\nfunction parseStatusMappings(value: string | undefined): PersonaStatusMappings | undefined {\n if (!value) return undefined;\n try {\n const parsed = JSON.parse(value) as PersonaStatusMappings;\n validateStatusMappings(parsed);\n return parsed;\n } catch (error) {\n if (error instanceof ProviderError) throw error;\n throw invalid('Persona status mappings are invalid.', 'persona_status_mappings_invalid');\n }\n}\n\nfunction validateStatusMappings(value: PersonaStatusMappings | undefined): void {\n if (!value) return;\n for (const [resource, mappings] of Object.entries(value)) {\n if (!['inquiry', 'transaction', 'case', 'report', 'verification'].includes(resource)\n || !mappings || typeof mappings !== 'object' || Array.isArray(mappings)) {\n throw invalid('Persona status mappings are invalid.', 'persona_status_mappings_invalid');\n }\n for (const [providerStatus, normalized] of Object.entries(mappings)) {\n if (!/^[a-z0-9_-]{2,64}$/.test(providerStatus) || typeof normalized !== 'string' || !isCanonicalStatus(normalized)) {\n throw invalid('Persona status mappings are invalid.', 'persona_status_mappings_invalid');\n }\n }\n }\n}\n","export const PERSONA_API_HOST = 'api.withpersona.com';\nexport const PERSONA_INQUIRY_HOST = 'inquiry.withpersona.com';\nexport const PERSONA_DISCLOSURE = 'Powered by Persona';\nexport const PERSONA_NORMALIZATION_VERSION = 'persona-v1';\n\nexport const PERSONA_ALLOWED_EVENTS = new Set([\n 'inquiry.created', 'inquiry.started', 'inquiry.pending', 'inquiry.completed',\n 'inquiry.marked-for-review', 'inquiry.approved', 'inquiry.declined',\n 'inquiry.failed', 'inquiry.expired', 'inquiry.redacted',\n 'transaction.created', 'transaction.status-updated',\n 'transaction.updated', 'transaction.redacted',\n 'case.created', 'case.assigned', 'case.resolved', 'case.reopened',\n 'case.updated', 'case.status-updated', 'case.redacted',\n 'report.created', 'report.ready', 'report.failed', 'report.redacted',\n 'verification.created', 'verification.passed', 'verification.failed', 'verification.redacted',\n]);\n\nexport const HUMAN_PACKAGES = new Set(['human_idv']);\nexport const INQUIRY_PACKAGES = new Set(['human_idv', 'associated_person_idv']);\n","import {\n VERIFICATION_ADAPTER_CONTRACT_VERSION,\n defineProviderManifest,\n plainStringProperty,\n secretStringProperty,\n type ProviderManifestV1,\n} from '@splitin/verification-adapter-sdk';\n\nexport const personaProviderManifest: Readonly<ProviderManifestV1> = defineProviderManifest({\n contractVersion: VERIFICATION_ADAPTER_CONTRACT_VERSION,\n adapterVersion: '1.0.0',\n engineCompatibility: '1.0.0',\n provider: 'persona',\n displayName: 'Persona',\n description: 'Persona identity verification: human IDV, business KYB, associated people, and ownership review. Documents remain at Persona; adapters return opaque evidence references only.',\n supportedPackages: ['human_idv', 'business_kyb', 'associated_person_idv', 'ownership_review'],\n supportedCountries: ['US'],\n environments: ['sandbox', 'production'],\n capabilities: {\n presentations: ['embedded', 'hosted', 'qr', 'none'],\n canResume: true,\n canRetry: true,\n canCancel: true,\n canRedact: true,\n },\n launcherKeys: ['persona_embedded', 'hosted'],\n launchPresentations: ['embedded', 'hosted', 'qr', 'none'],\n configurationSchemaVersion: 'urn:splitin:verification:config:persona:v1',\n configurationSchema: {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n type: 'object',\n additionalProperties: false,\n required: [\n 'apiKey',\n 'environmentId',\n 'idvTemplateId',\n 'idvTemplateVersion',\n 'associatedPersonTemplateId',\n 'associatedPersonTemplateVersion',\n 'kybTransactionTypeId',\n 'kybWorkflowId',\n 'kybWorkflowVersion',\n 'caseTemplateId',\n 'apiVersion',\n 'webhookSecretCurrent',\n ],\n properties: {\n apiKey: secretStringProperty(),\n environmentId: plainStringProperty(),\n idvTemplateId: plainStringProperty(),\n idvTemplateVersion: plainStringProperty(),\n associatedPersonTemplateId: plainStringProperty(),\n associatedPersonTemplateVersion: plainStringProperty(),\n kybTransactionTypeId: plainStringProperty(),\n kybWorkflowId: plainStringProperty(),\n kybWorkflowVersion: plainStringProperty(),\n caseTemplateId: plainStringProperty(),\n caseType: plainStringProperty(),\n ownershipCaseType: { type: 'string', minLength: 1, 'x-secret': false },\n businessAuthorityCaseType: { type: 'string', minLength: 1, 'x-secret': false },\n kybCaseMode: { type: 'string', enum: ['workflow_managed', 'engine_managed'] },\n kybFieldMapJson: { type: 'string', minLength: 1, 'x-secret': false },\n statusMappingsJson: { type: 'string', minLength: 1, 'x-secret': false },\n apiVersion: { type: 'string', pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}$' },\n webhookSecretCurrent: secretStringProperty(),\n webhookSecretPrevious: { type: 'string', minLength: 1, 'x-secret': true },\n webhookToleranceSeconds: { type: 'integer', minimum: 60, maximum: 900 },\n allowedOrigins: { type: 'string', minLength: 1, 'x-secret': false },\n },\n },\n webhook: {\n protocol: 'persona_hmac_sha256',\n eventFamilies: ['inquiry', 'transaction', 'case', 'report', 'verification'],\n toleranceSeconds: 300,\n },\n dataPolicy: {\n classifications: ['provider_resource_id', 'normalized_status', 'reason_codes', 'evidence_reference'],\n prohibitedPersistence: ['raw_webhook', 'launch_secret', 'document', 'selfie', 'government_id'],\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: false },\n apiHosts: ['api.withpersona.com'],\n testedApiVersions: ['2023-01-05'],\n});\n","import type { VerificationCanonicalStatus } from '@splitin/verification-adapter-sdk';\n\nimport type { PersonaStatusMappings } from './configuration.ts';\n\nexport function normalizePersonaStatus(value: unknown): { status: VerificationCanonicalStatus; reasonCodes: string[] } {\n switch (normalizeStatusKey(value)) {\n case 'created': return { status: 'created', reasonCodes: [] };\n case 'started':\n case 'pending': return { status: 'pending_user_input', reasonCodes: [] };\n case 'completed': return { status: 'processing', reasonCodes: ['persona_completed_awaiting_decision'] };\n case 'approved':\n case 'passed': return { status: 'verified', reasonCodes: [] };\n case 'declined': return { status: 'declined', reasonCodes: ['persona_declined'] };\n case 'marked_for_review':\n case 'needs_review':\n case 'in_review':\n case 'open': return { status: 'manual_review_required', reasonCodes: ['persona_manual_review_required'] };\n case 'failed':\n case 'errored': return { status: 'failed', reasonCodes: ['persona_verification_failed'] };\n case 'expired': return { status: 'expired', reasonCodes: ['persona_inquiry_expired'] };\n case 'canceled':\n case 'cancelled': return { status: 'canceled', reasonCodes: ['persona_inquiry_canceled'] };\n case 'redacted': return { status: 'redacted', reasonCodes: ['persona_redacted'] };\n default: return { status: 'manual_review_required', reasonCodes: ['persona_unknown_status'] };\n }\n}\n\nexport function resolvePersonaStatus(\n resourceKind: string,\n providerStatus: string,\n mappings?: PersonaStatusMappings,\n): { status: VerificationCanonicalStatus; reasonCodes: string[] } {\n const configured = mappings?.[resourceKind as keyof PersonaStatusMappings]?.[normalizeStatusKey(providerStatus)];\n return configured ? { status: configured, reasonCodes: [] } : normalizePersonaStatus(providerStatus);\n}\n\nexport function normalizeStatusKey(value: unknown): string {\n return String(value ?? '').trim().toLowerCase().replace(/[ -]+/g, '_');\n}\n\nexport function resourceCategory(value: string): keyof PersonaStatusMappings {\n if (value === 'inquiry' || value === 'transaction' || value === 'case') return value;\n if (value.startsWith('report')) return 'report';\n if (value.startsWith('verification')) return 'verification';\n return 'verification';\n}\n","import {\n ProviderError,\n ProviderRequiredInformationError,\n isOpaqueSubjectReference,\n type ProviderAddressInput,\n type ProviderAttemptCommand,\n type VerificationCanonicalStatus,\n} from '@splitin/verification-adapter-sdk';\n\nimport type { PersonaKybFieldMap } from './configuration.ts';\nimport { normalizeStatusKey } from './status.ts';\nimport type { PersonaCaseTreeSnapshot, PersonaResource } from './types.ts';\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nexport function asOptionalRecord(value: unknown): Record<string, unknown> | null {\n return isRecord(value) ? value : null;\n}\n\nexport function asRecord(value: unknown): Record<string, unknown> {\n if (!isRecord(value)) throw new ProviderError('UNKNOWN_PROVIDER_STATE', 'Persona resource is invalid.', {\n safeCode: 'malformed_provider_response',\n });\n return value;\n}\n\nexport function requireResource(value: PersonaResource | undefined, type?: string): PersonaResource {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new ProviderError('UNKNOWN_PROVIDER_STATE', 'Persona resource is invalid.', {\n safeCode: 'malformed_provider_response',\n });\n }\n if (type && value.type !== type) {\n throw new ProviderError('UNKNOWN_PROVIDER_STATE', 'Persona resource type is invalid.', {\n safeCode: 'malformed_provider_response',\n });\n }\n return value;\n}\n\nexport function requireId(value: unknown): string {\n if (typeof value !== 'string' || value.length < 4 || value.length > 256 || /\\s/.test(value)) {\n throw new ProviderError('UNKNOWN_PROVIDER_STATE', 'Persona resource ID is invalid.', {\n safeCode: 'malformed_provider_response',\n });\n }\n return value;\n}\n\nexport function requireText(value: unknown, label: string): string {\n if (typeof value !== 'string' || value.trim().length === 0 || value.length > 256) {\n throw new ProviderError('UNKNOWN_PROVIDER_STATE', `${label} is invalid.`, {\n safeCode: 'malformed_provider_response',\n });\n }\n return value;\n}\n\nexport function assertOpaqueReference(value: string): string {\n if (!isOpaqueSubjectReference(value)) {\n throw new ProviderError('TERMINAL_INPUT_FAILURE', 'The subject reference is not an opaque identifier.', {\n safeCode: 'subject_reference_invalid',\n });\n }\n return value;\n}\n\nexport function isTransactionId(value: string): boolean {\n return /^txn_[A-Za-z0-9_-]{4,252}$/.test(value);\n}\n\nexport function isCaseId(value: string): boolean {\n return /^case_[A-Za-z0-9_-]{4,251}$/.test(value);\n}\n\nexport function parseRetryAfter(value: string | null): number | undefined {\n if (!value || !/^\\d{1,6}$/.test(value)) return undefined;\n return Math.min(Number(value), 3600);\n}\n\nexport function mapPersonaHttpError(status: number, retryAfterHeader: string | null): ProviderError {\n const retryAfter = parseRetryAfter(retryAfterHeader);\n const code = status === 401 || status === 403 ? 'AUTHENTICATION_FAILED'\n : status === 429 ? 'RATE_LIMITED'\n : status === 408 || status === 504 ? 'TIMEOUT'\n : status >= 500 ? 'RETRYABLE_PROVIDER_FAILURE' : 'TERMINAL_INPUT_FAILURE';\n return new ProviderError(code, 'Persona request failed.', {\n retryable: status === 408 || status === 429 || status >= 500,\n retryAfterSeconds: retryAfter,\n safeCode: code === 'AUTHENTICATION_FAILED' ? 'persona_authentication_failed'\n : code === 'RATE_LIMITED' ? 'persona_rate_limited'\n : code === 'TIMEOUT' ? 'persona_timeout'\n : code === 'RETRYABLE_PROVIDER_FAILURE' ? 'persona_provider_failure'\n : 'persona_terminal_input_failure',\n });\n}\n\nexport function legalPrefill(command: ProviderAttemptCommand): Record<string, string> {\n const fields: Record<string, string> = {};\n const first = safePrefill(command.legalFirstName);\n const last = safePrefill(command.legalLastName);\n const email = safePrefill(command.email);\n if (first) fields['name-first'] = first;\n if (last) fields['name-last'] = last;\n if (email) fields['email-address'] = email;\n return fields;\n}\n\nexport function businessFields(command: ProviderAttemptCommand, map: PersonaKybFieldMap): Record<string, unknown> {\n const organization = command.organization;\n if (!organization) throw new ProviderRequiredInformationError();\n const fields: Record<string, unknown> = {\n [map.legalName]: requiredCanonicalText(organization.legalName, 256),\n [map.jurisdictionCountryCode]: normalizeCountryCode(organization.jurisdictionCountryCode),\n };\n if (organization.registeredAddress) fields[map.registeredAddress] = canonicalAddress(organization.registeredAddress);\n if (organization.physicalAddress) fields[map.physicalAddress] = canonicalAddress(organization.physicalAddress);\n const entityType = safePrefill(organization.entityType);\n if (entityType) fields[map.entityType] = entityType;\n const associatedPeople = (organization.associatedPeople ?? []).map((person) => {\n const percentage = person.claimedOwnershipPercentage;\n if (percentage !== null && percentage !== undefined\n && (!Number.isFinite(percentage) || percentage < 0 || percentage > 100)) {\n throw new ProviderRequiredInformationError('Ownership percentage is invalid.');\n }\n const result: Record<string, unknown> = {\n subject_reference: assertOpaqueReference(person.subjectReference),\n name_first: requiredCanonicalText(person.legalFirstName, 128),\n name_last: requiredCanonicalText(person.legalLastName, 128),\n association: person.relationshipKind,\n };\n const email = safePrefill(person.email);\n if (email) result.email_address = email;\n if (percentage !== null && percentage !== undefined) result.percentage_ownership = percentage;\n return result;\n });\n if (associatedPeople.length > 0) fields[map.associatedPeople] = associatedPeople;\n const evidence = (organization.evidenceReferences ?? command.evidenceReferences ?? []).map((value) => ({\n id: requireId(value),\n type: 'evidence',\n }));\n if (evidence.length > 0) fields[map.evidenceReferences] = evidence;\n if (command.relationship) {\n fields[map.relationshipReference] = assertOpaqueReference(command.relationship.relationshipReference);\n fields[map.relationshipKind] = command.relationship.kind;\n const percentage = command.relationship.claimedOwnershipPercentage;\n if (percentage !== null && percentage !== undefined) {\n if (!Number.isFinite(percentage) || percentage < 0 || percentage > 100) {\n throw new ProviderRequiredInformationError('Ownership percentage is invalid.');\n }\n fields[map.claimedOwnershipPercentage] = percentage;\n }\n if (command.relationship.subjectReference) {\n fields[map.subjectReference] = assertOpaqueReference(command.relationship.subjectReference);\n }\n }\n return fields;\n}\n\nfunction canonicalAddress(value: ProviderAddressInput): Record<string, string> {\n const result: Record<string, string> = {\n street_1: requiredCanonicalText(value.street1, 256),\n city: requiredCanonicalText(value.city, 128),\n postal_code: requiredCanonicalText(value.postalCode, 32),\n country_code: normalizeCountryCode(value.countryCode),\n };\n const street2 = safePrefill(value.street2);\n const subdivision = safePrefill(value.subdivision);\n if (street2) result.street_2 = street2;\n if (subdivision) result.subdivision = subdivision;\n return result;\n}\n\nexport function parseAssociatedPersonRequirements(\n fieldsValue: unknown,\n fieldKey: string,\n): PersonaCaseTreeSnapshot['associatedPersonRequirements'] {\n const fields = asOptionalRecord(fieldsValue);\n const field = fields?.[fieldKey];\n const fieldRecord = asOptionalRecord(field);\n const value = fieldRecord && 'value' in fieldRecord ? fieldRecord.value : field;\n if (!Array.isArray(value)) return [];\n const result: PersonaCaseTreeSnapshot['associatedPersonRequirements'] = [];\n for (const candidate of value.slice(0, 100)) {\n const item = asOptionalRecord(candidate);\n if (!item) continue;\n const subjectReference = firstString(item, ['subject_reference', 'subject-reference', 'account_reference_id']);\n const requirementKind = normalizeRequirementKind(firstString(item, ['requirement_kind', 'requirement-kind', 'association']));\n const verificationMode = normalizeVerificationMode(firstString(item, ['verification_mode', 'verification-mode']));\n const providerStatus = firstString(item, ['status', 'verification_status', 'verification-status']);\n if (!subjectReference || !isOpaqueSubjectReference(subjectReference)\n || !requirementKind || !verificationMode || !providerStatus) continue;\n const inquiryId = firstString(item, ['inquiry_id', 'inquiry-id']);\n result.push({\n subjectReference,\n inquiryId: inquiryId && /^inq_[A-Za-z0-9_-]{4,252}$/.test(inquiryId) ? inquiryId : null,\n requirementKind,\n verificationMode,\n normalizedStatus: normalizeAssociatedRequirementStatus(providerStatus, verificationMode),\n mandatory: item.mandatory !== false && item.is_mandatory !== false && item['is-mandatory'] !== false,\n claimedOwnershipPercentage: typeof item.percentage_ownership === 'number' && Number.isFinite(item.percentage_ownership)\n && item.percentage_ownership >= 0 && item.percentage_ownership <= 100 ? item.percentage_ownership : null,\n });\n }\n return result;\n}\n\nfunction firstString(value: Record<string, unknown>, keys: string[]): string | null {\n for (const key of keys) {\n if (typeof value[key] === 'string' && String(value[key]).trim()) return String(value[key]).trim();\n }\n return null;\n}\n\nfunction normalizeRequirementKind(value: string | null): PersonaCaseTreeSnapshot['associatedPersonRequirements'][number]['requirementKind'] | null {\n const normalized = normalizeStatusKey(value ?? '');\n if (normalized === 'ubo' || normalized === 'director' || normalized === 'officer'\n || normalized === 'authorized_representative' || normalized === 'associated_person') return normalized;\n return null;\n}\n\nfunction normalizeVerificationMode(value: string | null): PersonaCaseTreeSnapshot['associatedPersonRequirements'][number]['verificationMode'] | null {\n const normalized = normalizeStatusKey(value ?? '');\n if (normalized === 'not_required' || normalized === 'database' || normalized === 'inquiry') return normalized;\n return null;\n}\n\nfunction normalizeAssociatedRequirementStatus(\n value: string,\n mode: PersonaCaseTreeSnapshot['associatedPersonRequirements'][number]['verificationMode'],\n): PersonaCaseTreeSnapshot['associatedPersonRequirements'][number]['normalizedStatus'] {\n const normalized = normalizeStatusKey(value);\n if (mode === 'not_required' || normalized === 'not_required') return 'not_required';\n if (normalized === 'approved' || normalized === 'passed' || normalized === 'verified') return 'verified';\n if (normalized === 'completed' || normalized === 'processing') return 'processing';\n if (normalized === 'needs_review' || normalized === 'marked_for_review' || normalized === 'in_review') return 'manual_review_required';\n if (normalized === 'declined') return 'declined';\n if (normalized === 'failed' || normalized === 'errored') return 'failed';\n if (normalized === 'expired') return 'expired';\n if (normalized === 'canceled' || normalized === 'cancelled') return 'canceled';\n if (normalized === 'required') return 'required';\n return 'pending';\n}\n\nexport function requiredCanonicalText(value: string | null | undefined, maxLength: number): string {\n const trimmed = value?.trim();\n if (!trimmed || trimmed.length > maxLength) throw new ProviderRequiredInformationError();\n return trimmed;\n}\n\nexport function normalizeCountryCode(value: string): string {\n const normalized = value.trim().toUpperCase();\n if (!/^[A-Z]{2}$/.test(normalized)) throw new ProviderRequiredInformationError();\n return normalized;\n}\n\nexport function safePrefill(value: string | null | undefined): string | null {\n const trimmed = value?.trim();\n return trimmed && trimmed.length <= 254 ? trimmed : null;\n}\n\nexport function parseObject(value: string): Record<string, unknown> {\n try {\n const result = JSON.parse(value) as unknown;\n if (!isRecord(result)) throw new Error();\n return result;\n } catch {\n throw new ProviderError('TERMINAL_INPUT_FAILURE', 'Persona webhook JSON is invalid.', {\n safeCode: 'persona_webhook_payload_invalid',\n });\n }\n}\n\nexport function safeDate(value: unknown, fallback: Date): string {\n const parsed = typeof value === 'string' ? new Date(value) : fallback;\n return Number.isFinite(parsed.getTime()) ? parsed.toISOString() : fallback.toISOString();\n}\n\nexport function safeOptionalDate(value: unknown): string | undefined {\n if (typeof value !== 'string') return undefined;\n const parsed = new Date(value);\n return Number.isFinite(parsed.getTime()) ? parsed.toISOString() : undefined;\n}\n\nexport function statusFromEvent(name: string): string {\n return name.split('.').at(-1) ?? 'needs_review';\n}\n\nexport function safeCode(value: unknown): string | null {\n if (typeof value !== 'string') return null;\n const normalized = value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '_').slice(0, 64);\n return normalized || null;\n}\n\nexport function relatedResourceId(resource: PersonaResource, relationshipName: string): string | null {\n const relationship = asOptionalRecord(resource.relationships?.[relationshipName]);\n const data = asOptionalRecord(relationship?.data);\n return typeof data?.id === 'string' ? requireId(data.id) : null;\n}\n\nexport function findAssociatedPerson(payload: Record<string, unknown>): { reference: string; inquiryId: string } | null {\n if (!Array.isArray(payload.included)) return null;\n for (const value of payload.included) {\n const resource = asOptionalRecord(value);\n if (resource?.type !== 'inquiry') continue;\n const attributes = asOptionalRecord(resource.attributes);\n const reference = attributes?.['reference-id'];\n if (typeof reference === 'string' && isOpaqueSubjectReference(reference) && typeof resource.id === 'string') {\n return { reference, inquiryId: requireId(resource.id) };\n }\n }\n return null;\n}\n\nexport function caseRelatedResourceType(value: string): PersonaCaseTreeSnapshot['relatedResources'][number]['resourceType'] | null {\n if (value === 'inquiry' || value === 'transaction') return value;\n if (value.startsWith('report')) return 'report';\n if (value.startsWith('verification')) return 'verification';\n return null;\n}\n\nexport function redactionCollection(resourceType: string | undefined): string {\n if (resourceType === 'case') return 'cases';\n if (resourceType === 'account') return 'accounts';\n if (resourceType === 'transaction') return 'transactions';\n if (resourceType === 'report') return 'reports';\n if (resourceType === 'verification') return 'verifications';\n return 'inquiries';\n}\n\nexport const RESUMABLE_STATUSES = new Set<VerificationCanonicalStatus>(['created', 'pending_user_input', 'paused']);\n","import { ProviderError, type VerifiedWebhookEnvelope } from '@splitin/verification-adapter-sdk';\n\nconst HEX_64 = /^[0-9a-f]{64}$/i;\n\nexport interface PersonaWebhookVerificationOptions {\n secrets: string[];\n expectedEnvironmentId: string;\n toleranceSeconds?: number;\n now?: () => Date;\n crypto: Crypto;\n}\n\n/** Verifies Persona's HMAC over the exact timestamp.raw_body byte sequence. */\nexport async function verifyPersonaWebhook(\n request: Request,\n options: PersonaWebhookVerificationOptions,\n): Promise<VerifiedWebhookEnvelope> {\n const signatureHeader = request.headers.get('Persona-Signature');\n const environmentId = request.headers.get('Persona-Environment-Id');\n const secrets = options.secrets.map((value) => value.trim()).filter(Boolean);\n if (!signatureHeader || secrets.length === 0 || environmentId !== options.expectedEnvironmentId) {\n throw signatureFailure('Persona webhook authentication is invalid.');\n }\n\n const candidates = parsePersonaSignatures(signatureHeader);\n if (candidates.length === 0) throw signatureFailure('Persona webhook signature is invalid.');\n const nowSeconds = Math.floor((options.now?.() ?? new Date()).getTime() / 1000);\n const tolerance = options.toleranceSeconds ?? 300;\n const rawBytes = new Uint8Array(await request.arrayBuffer());\n if (rawBytes.byteLength === 0 || rawBytes.byteLength > 1_048_576) {\n throw payloadFailure('Persona webhook body size is invalid.');\n }\n\n let matched: { timestamp: number; signature: string } | null = null;\n for (const candidate of candidates) {\n if (Math.abs(nowSeconds - candidate.timestamp) > tolerance) continue;\n for (const secret of secrets) {\n const expected = await hmacSha256Hex(options.crypto, secret, signedPayload(candidate.timestamp, rawBytes));\n if (timingSafeHexEqual(expected, candidate.signature)) {\n matched = candidate;\n break;\n }\n }\n if (matched) break;\n }\n if (!matched) throw signatureFailure('Persona webhook signature is invalid or stale.');\n\n const bodySha256 = await sha256HexBytes(options.crypto, rawBytes);\n let transientJson: unknown;\n try {\n transientJson = JSON.parse(new TextDecoder().decode(rawBytes)) as unknown;\n } catch {\n transientJson = null;\n }\n let providerEventKey: string;\n try {\n providerEventKey = readPersonaEventId(transientJson);\n } catch {\n providerEventKey = `persona_${bodySha256}`;\n }\n return {\n providerEventKey,\n receivedAt: new Date(nowSeconds * 1000).toISOString(),\n signatureIssuedAt: new Date(matched.timestamp * 1000).toISOString(),\n bodySha256,\n opaquePayload: rawBytes,\n };\n}\n\nexport function parsePersonaSignatures(header: string): Array<{ timestamp: number; signature: string }> {\n const groups = header.trim().split(/\\s+/);\n const result: Array<{ timestamp: number; signature: string }> = [];\n for (const group of groups) {\n let timestamp: number | null = null;\n const signatures: string[] = [];\n for (const part of group.split(',')) {\n const [key, value] = part.split('=', 2);\n if (key === 't' && /^\\d{1,12}$/.test(value ?? '')) timestamp = Number(value);\n if (key === 'v1' && HEX_64.test(value ?? '')) signatures.push((value ?? '').toLowerCase());\n }\n if (timestamp !== null && Number.isSafeInteger(timestamp)) {\n for (const signature of signatures) result.push({ timestamp, signature });\n }\n }\n return result;\n}\n\nfunction signedPayload(timestamp: number, rawBody: Uint8Array): Uint8Array {\n const prefix = new TextEncoder().encode(`${timestamp}.`);\n const result = new Uint8Array(prefix.length + rawBody.length);\n result.set(prefix);\n result.set(rawBody, prefix.length);\n return result;\n}\n\nasync function hmacSha256Hex(crypto: Crypto, secret: string, value: Uint8Array): Promise<string> {\n const key = await crypto.subtle.importKey(\n 'raw',\n new TextEncoder().encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign'],\n );\n return bytesToHex(new Uint8Array(await crypto.subtle.sign('HMAC', key, value as BufferSource)));\n}\n\nasync function sha256HexBytes(crypto: Crypto, value: Uint8Array): Promise<string> {\n return bytesToHex(new Uint8Array(await crypto.subtle.digest('SHA-256', Uint8Array.from(value))));\n}\n\nfunction timingSafeHexEqual(left: string, right: string): boolean {\n if (!HEX_64.test(left) || !HEX_64.test(right)) return false;\n const a = hexToBytes(left);\n const b = hexToBytes(right);\n let mismatch = a.length ^ b.length;\n for (let index = 0; index < Math.max(a.length, b.length); index += 1) {\n mismatch |= (a[index] ?? 0) ^ (b[index] ?? 0);\n }\n return mismatch === 0;\n}\n\nfunction hexToBytes(value: string): Uint8Array {\n return Uint8Array.from(value.match(/.{2}/g) ?? [], (pair) => Number.parseInt(pair, 16));\n}\n\nfunction bytesToHex(value: Uint8Array): string {\n return Array.from(value, (byte) => byte.toString(16).padStart(2, '0')).join('');\n}\n\nfunction readPersonaEventId(value: unknown): string {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw payloadFailure('Persona webhook JSON is invalid.');\n }\n const data = (value as Record<string, unknown>).data;\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\n throw payloadFailure('Persona webhook event is invalid.');\n }\n const id = (data as Record<string, unknown>).id;\n if (typeof id !== 'string' || id.length < 8 || id.length > 256) {\n throw payloadFailure('Persona webhook event ID is invalid.');\n }\n return id;\n}\n\nfunction signatureFailure(message: string): ProviderError {\n return new ProviderError('SIGNATURE_INVALID', message, {\n retryable: false,\n safeCode: 'persona_webhook_signature_invalid',\n });\n}\n\nfunction payloadFailure(message: string): ProviderError {\n return new ProviderError('TERMINAL_INPUT_FAILURE', message, {\n retryable: false,\n safeCode: 'persona_webhook_payload_invalid',\n });\n}\n","import {\n ProviderError,\n VERIFICATION_ADAPTER_CONTRACT_VERSION,\n isOpaqueSubjectReference,\n metadataContainsForbiddenIdentifier,\n type NormalizedProviderEvent,\n type NormalizedProviderSnapshot,\n type ProviderAttemptCommand,\n type ProviderAttemptResult,\n type ProviderLaunchEnvelope,\n type ProviderOperation,\n type ProviderOperationResult,\n type ProviderRedactionCommand,\n type ProviderRedactionResult,\n type ProviderResourceCommand,\n type ProviderResumeCommand,\n type ProviderRetryCommand,\n type ProviderRuntimeContext,\n type VerificationAdapterV1,\n type VerifiedWebhookEnvelope,\n} from '@splitin/verification-adapter-sdk';\n\nimport {\n type PersonaAdapterConfiguration,\n personaWebhookSecrets,\n validatePersonaConfiguration,\n} from './configuration.ts';\nimport {\n HUMAN_PACKAGES,\n INQUIRY_PACKAGES,\n PERSONA_ALLOWED_EVENTS,\n PERSONA_API_HOST,\n PERSONA_DISCLOSURE,\n PERSONA_INQUIRY_HOST,\n PERSONA_NORMALIZATION_VERSION,\n} from './constants.ts';\nimport { personaProviderManifest } from './manifest.ts';\nimport { resolvePersonaStatus, resourceCategory } from './status.ts';\nimport type { PersonaCaseTreeSnapshot, PersonaResource, PersonaResponse } from './types.ts';\nimport {\n RESUMABLE_STATUSES,\n asOptionalRecord,\n asRecord,\n assertOpaqueReference,\n businessFields,\n caseRelatedResourceType,\n findAssociatedPerson,\n isCaseId,\n isTransactionId,\n legalPrefill,\n mapPersonaHttpError,\n parseAssociatedPersonRequirements,\n parseObject,\n redactionCollection,\n requireId,\n requireResource,\n requireText,\n safeCode,\n safeDate,\n safeOptionalDate,\n statusFromEvent,\n} from './util.ts';\nimport { verifyPersonaWebhook } from './webhook.ts';\n\nexport class PersonaVerificationAdapter implements VerificationAdapterV1<PersonaAdapterConfiguration> {\n readonly contractVersion = VERIFICATION_ADAPTER_CONTRACT_VERSION;\n readonly manifest = personaProviderManifest;\n readonly provider = 'persona' as const;\n readonly environment: 'sandbox' | 'production';\n readonly runtime: ProviderRuntimeContext<PersonaAdapterConfiguration>;\n\n constructor(runtime: ProviderRuntimeContext<PersonaAdapterConfiguration>) {\n this.runtime = runtime;\n this.environment = runtime.environment;\n this.validateConfiguration();\n }\n\n validateConfiguration(): void {\n validatePersonaConfiguration(this.runtime.configuration, this.environment);\n }\n\n async createAttempt(command: ProviderAttemptCommand): Promise<ProviderAttemptResult> {\n this.assertCommand(command);\n this.assertAllowedOrigin(command.requestOrigin);\n if (command.packageCode === 'business_kyb') return this.createBusinessTransaction(command);\n if (command.packageCode === 'ownership_review') return this.createOwnershipReviewCase(command);\n const template = this.templateFor(command.packageCode);\n const attributes: Record<string, unknown> = {\n 'inquiry-template-id': template.id,\n 'inquiry-template-version-id': template.version,\n 'reference-id': assertOpaqueReference(command.subjectReference),\n };\n const fields = legalPrefill(command);\n if (Object.keys(fields).length > 0) attributes.fields = fields;\n const result = await this.call<PersonaResponse>('/inquiries', {\n method: 'POST',\n operation: 'create',\n idempotencyKey: command.idempotencyKey,\n body: { data: { attributes } },\n });\n const inquiry = requireResource(result.data, 'inquiry');\n const status = requireText(inquiry.attributes?.status, 'Persona inquiry status');\n return {\n attemptId: command.attemptId,\n providerResourceId: requireId(inquiry.id),\n providerStatus: status,\n canonicalStatus: this.normalizeStatus('inquiry', status).status,\n launch: await this.launchFor(command.attemptId, inquiry),\n };\n }\n\n async resumeAttempt(command: ProviderResumeCommand): Promise<ProviderLaunchEnvelope> {\n this.assertAllowedOrigin(command.requestOrigin);\n if (isTransactionId(command.providerResourceId) || isCaseId(command.providerResourceId)) {\n if (isTransactionId(command.providerResourceId)) await this.getTransaction(command.providerResourceId, 'resume');\n else await this.getCase(command.providerResourceId, 'resume');\n return this.nonInteractiveLaunch(command.attemptId, 'processing');\n }\n const inquiry = await this.getInquiry(command.providerResourceId, 'resume');\n return this.launchFor(command.attemptId, inquiry);\n }\n\n async retrieveAttempt(command: ProviderResourceCommand): Promise<NormalizedProviderSnapshot> {\n const resourceKind = isTransactionId(command.providerResourceId) ? 'transaction'\n : isCaseId(command.providerResourceId) ? 'case' : 'inquiry';\n const resource = resourceKind === 'transaction'\n ? await this.getTransaction(command.providerResourceId, 'retrieve')\n : resourceKind === 'case' ? await this.getCase(command.providerResourceId, 'retrieve')\n : await this.getInquiry(command.providerResourceId, 'retrieve');\n const providerStatus = requireText(resource.attributes?.status, `Persona ${resourceKind} status`);\n const normalized = this.normalizeStatus(resourceKind, providerStatus);\n return {\n providerResourceId: requireId(resource.id),\n providerStatus,\n canonicalStatus: normalized.status,\n occurredAt: safeDate(resource.attributes?.['updated-at'] ?? resource.attributes?.['created-at'], this.runtime.now()),\n normalizedReasonCodes: normalized.reasonCodes,\n safeMetadata: {\n source: 'retrieve',\n adapter_version: this.manifest.adapterVersion,\n event_version: this.runtime.configuration.apiVersion,\n normalization_version: PERSONA_NORMALIZATION_VERSION,\n provider_environment: this.environment,\n provider_event_category: resourceKind,\n },\n };\n }\n\n async retryAttempt(command: ProviderRetryCommand): Promise<ProviderAttemptResult> {\n this.assertCommand(command);\n if (command.previousProviderResourceId) {\n const previous = await this.retrieveAttempt({\n attemptId: command.attemptId,\n providerResourceId: command.previousProviderResourceId,\n configurationRevision: command.configurationRevision,\n requestOrigin: command.requestOrigin,\n });\n if (RESUMABLE_STATUSES.has(previous.canonicalStatus)) {\n return {\n attemptId: command.attemptId,\n providerResourceId: previous.providerResourceId,\n providerStatus: previous.providerStatus,\n canonicalStatus: previous.canonicalStatus,\n launch: await this.resumeAttempt({\n attemptId: command.attemptId,\n providerResourceId: previous.providerResourceId,\n configurationRevision: command.configurationRevision,\n requestOrigin: command.requestOrigin,\n }),\n };\n }\n if (previous.canonicalStatus === 'processing') {\n throw new ProviderError('RETRYABLE_PROVIDER_FAILURE', 'Persona is still processing this attempt.', {\n retryable: true,\n retryAfterSeconds: 15,\n safeCode: 'persona_attempt_processing',\n });\n }\n if (previous.canonicalStatus === 'manual_review_required' || previous.canonicalStatus === 'verified') {\n throw new ProviderError('TERMINAL_INPUT_FAILURE', 'Persona review state cannot be retried.', {\n safeCode: previous.canonicalStatus === 'verified'\n ? 'persona_attempt_already_verified'\n : 'persona_manual_review_pending',\n });\n }\n }\n const idempotencyKey = this.runtime.idempotency.keyFor('retry', command.attemptId, command.idempotencyKey);\n return this.createAttempt({ ...command, idempotencyKey });\n }\n\n async cancelAttempt(command: ProviderResourceCommand): Promise<ProviderOperationResult> {\n if (isTransactionId(command.providerResourceId) || isCaseId(command.providerResourceId)) {\n throw new ProviderError('UNSUPPORTED_CAPABILITY', 'Persona does not support canceling non-interactive transactions or cases.', {\n safeCode: 'persona_noninteractive_cancel_unsupported',\n });\n }\n const result = await this.call<PersonaResponse>(\n `/inquiries/${encodeURIComponent(requireId(command.providerResourceId))}/expire`,\n {\n method: 'POST',\n operation: 'cancel',\n idempotencyScope: command.attemptId,\n idempotencyKey: `cancel:${command.attemptId}`,\n body: {},\n },\n );\n const inquiry = requireResource(result.data, 'inquiry');\n const providerStatus = requireText(inquiry.attributes?.status, 'Persona inquiry status');\n return {\n accepted: true,\n providerStatus,\n canonicalStatus: this.normalizeStatus('inquiry', providerStatus).status,\n };\n }\n\n async redactSubject(command: ProviderRedactionCommand): Promise<ProviderRedactionResult> {\n if (!command.providerResourceId) return { completed: true, retryable: false, disposition: 'not_applicable' };\n try {\n const collection = redactionCollection(command.providerResourceType);\n await this.call<PersonaResponse>(`/${collection}/${encodeURIComponent(requireId(command.providerResourceId))}`, {\n method: 'DELETE',\n operation: 'redact',\n idempotencyScope: command.requestReference,\n idempotencyKey: command.requestReference,\n allowNotFound: true,\n });\n return { completed: true, retryable: false, disposition: 'redacted' };\n } catch (error) {\n return {\n completed: false,\n retryable: error instanceof ProviderError && error.retryable,\n disposition: error instanceof ProviderError && error.retryable ? 'retryable' : 'failed',\n };\n }\n }\n\n verifyWebhook(request: Request): Promise<VerifiedWebhookEnvelope> {\n return verifyPersonaWebhook(request, {\n secrets: personaWebhookSecrets(this.runtime.configuration),\n expectedEnvironmentId: this.runtime.configuration.environmentId,\n toleranceSeconds: this.runtime.configuration.webhookToleranceSeconds ?? this.manifest.webhook.toleranceSeconds,\n now: this.runtime.now,\n crypto: this.runtime.crypto,\n });\n }\n\n async normalizeWebhook(input: VerifiedWebhookEnvelope): Promise<NormalizedProviderEvent> {\n try {\n const body = parseObject(new TextDecoder().decode(input.opaquePayload));\n const event = requireResource(body.data as PersonaResource | undefined, 'event');\n const name = requireText(event.attributes?.name, 'Persona event name');\n const eventAllowlisted = PERSONA_ALLOWED_EVENTS.has(name);\n const payload = asRecord(event.attributes?.payload);\n const resource = requireResource(payload.data as PersonaResource | undefined);\n const providerStatus = String(resource.attributes?.status ?? statusFromEvent(name));\n const resourceKind = requireText(resource.type, 'Persona resource type');\n const normalized = eventAllowlisted\n ? this.normalizeStatus(resourceCategory(resourceKind), providerStatus)\n : { status: 'manual_review_required' as const, reasonCodes: ['persona_unknown_event'] };\n const associatedPerson = findAssociatedPerson(payload);\n const isCase = resourceKind === 'case';\n const isTransaction = resourceKind === 'transaction';\n return {\n providerEventKey: input.providerEventKey,\n providerResourceId: requireId(resource.id),\n eventType: `verification.provider_event.${normalized.status}`,\n providerEventType: name,\n canonicalStatus: normalized.status,\n occurredAt: safeDate(event.attributes?.['created-at'], this.runtime.now()),\n normalizedReasonCodes: normalized.reasonCodes,\n safeMetadata: {\n adapter_version: this.manifest.adapterVersion,\n event_version: this.runtime.configuration.apiVersion,\n normalization_version: PERSONA_NORMALIZATION_VERSION,\n provider_environment: this.environment,\n provider_event_category: resourceKind,\n provider_status: providerStatus,\n event_allowlisted: eventAllowlisted,\n reconcile_required: !eventAllowlisted || normalized.reasonCodes.includes('persona_unknown_status'),\n ...(isCase ? {\n provider_case_id: requireId(resource.id),\n case_status: providerStatus,\n case_resolution: safeCode(resource.attributes?.resolution),\n } : {}),\n ...(isTransaction ? {\n provider_transaction_id: requireId(resource.id),\n transaction_status: providerStatus,\n } : {}),\n ...(associatedPerson ? {\n associated_subject_reference: associatedPerson.reference,\n associated_inquiry_id: associatedPerson.inquiryId,\n associated_requirement_kind: 'associated_person',\n } : {}),\n redacted: name.endsWith('.redacted'),\n },\n };\n } catch (error) {\n if (error instanceof ProviderError && error.code === 'TERMINAL_INPUT_FAILURE') throw error;\n throw new ProviderError('TERMINAL_INPUT_FAILURE', 'Persona webhook payload is invalid.', {\n safeCode: 'persona_webhook_payload_invalid',\n cause: error,\n });\n }\n }\n\n async retrieveCaseTree(providerCaseId: string): Promise<PersonaCaseTreeSnapshot> {\n const result = await this.call<PersonaResponse>(\n `/cases/${encodeURIComponent(requireId(providerCaseId))}?include=inquiries,txns,reports,verifications`,\n { method: 'GET', operation: 'retrieve' },\n );\n const reviewCase = requireResource(result.data, 'case');\n const relatedResources: PersonaCaseTreeSnapshot['relatedResources'] = [];\n const associatedPersonRequirements: PersonaCaseTreeSnapshot['associatedPersonRequirements'] = [];\n let associatedPersonDiscoveryComplete = false;\n for (const candidate of result.included ?? []) {\n const rawType = requireText(candidate.type, 'Persona related resource type');\n const resourceType = caseRelatedResourceType(rawType);\n if (!resourceType) continue;\n const status = typeof candidate.attributes?.status === 'string' ? candidate.attributes.status : 'unknown';\n const reference = candidate.attributes?.['reference-id'];\n relatedResources.push({\n resourceType,\n resourceId: requireId(candidate.id),\n providerStatus: status,\n subjectReference: typeof reference === 'string' && isOpaqueSubjectReference(reference) ? reference : null,\n });\n if (resourceType === 'transaction') {\n const normalized = this.normalizeStatus('transaction', status).status;\n if (['verified', 'declined', 'failed', 'manual_review_required'].includes(normalized)) {\n associatedPersonDiscoveryComplete = true;\n }\n associatedPersonRequirements.push(...parseAssociatedPersonRequirements(\n candidate.attributes?.fields,\n this.runtime.configuration.kybFieldMap.associatedPeople,\n ));\n }\n }\n return {\n caseId: requireId(reviewCase.id),\n providerStatus: requireText(reviewCase.attributes?.status, 'Persona case status'),\n resolution: safeCode(reviewCase.attributes?.resolution),\n occurredAt: safeDate(reviewCase.attributes?.['updated-at'] ?? reviewCase.attributes?.['created-at'], this.runtime.now()),\n relatedResources,\n associatedPersonRequirements,\n associatedPersonDiscoveryComplete,\n };\n }\n\n private assertCommand(command: ProviderAttemptCommand): void {\n if (!this.manifest.supportedPackages.includes(command.packageCode)) {\n throw new ProviderError('UNSUPPORTED_CAPABILITY', 'Persona does not support this verification package.', {\n safeCode: 'unsupported_package',\n });\n }\n if (!isOpaqueSubjectReference(command.subjectReference)) {\n throw new ProviderError('TERMINAL_INPUT_FAILURE', 'The subject reference is not an opaque identifier.', {\n safeCode: 'subject_reference_invalid',\n });\n }\n if (metadataContainsForbiddenIdentifier(command.metadata)) {\n throw new ProviderError('TERMINAL_INPUT_FAILURE', 'Attempt metadata contains a forbidden identifier.', {\n safeCode: 'forbidden_identifier',\n });\n }\n }\n\n private assertAllowedOrigin(origin: string | null | undefined): void {\n const allowed = this.runtime.configuration.allowedOrigins ?? [];\n if (!origin) {\n if (this.environment === 'production') {\n throw new ProviderError('TERMINAL_INPUT_FAILURE', 'Persona launch origin is missing.', {\n safeCode: 'persona_origin_required',\n });\n }\n return;\n }\n let normalized: string;\n try {\n normalized = new URL(origin).origin;\n } catch {\n throw new ProviderError('TERMINAL_INPUT_FAILURE', 'Persona launch origin is invalid.', {\n safeCode: 'persona_origin_invalid',\n });\n }\n if (allowed.length > 0 && !allowed.includes(normalized)) {\n throw new ProviderError('TERMINAL_INPUT_FAILURE', 'Persona launch origin is not allowlisted.', {\n safeCode: 'persona_origin_denied',\n });\n }\n }\n\n private templateFor(packageCode: string): { id: string; version: string } {\n if (packageCode === 'associated_person_idv') {\n return {\n id: this.runtime.configuration.associatedPersonTemplateId,\n version: this.runtime.configuration.associatedPersonTemplateVersion,\n };\n }\n if (HUMAN_PACKAGES.has(packageCode) || INQUIRY_PACKAGES.has(packageCode)) {\n return {\n id: this.runtime.configuration.idvTemplateId,\n version: this.runtime.configuration.idvTemplateVersion,\n };\n }\n throw new ProviderError('UNSUPPORTED_CAPABILITY', 'Persona package is unsupported.', {\n safeCode: 'unsupported_package',\n });\n }\n\n private async getInquiry(providerResourceId: string, operation: ProviderOperation): Promise<PersonaResource> {\n const result = await this.call<PersonaResponse>(`/inquiries/${encodeURIComponent(requireId(providerResourceId))}`, {\n method: 'GET',\n operation,\n });\n return requireResource(result.data, 'inquiry');\n }\n\n private async getTransaction(providerResourceId: string, operation: ProviderOperation): Promise<PersonaResource> {\n const result = await this.call<PersonaResponse>(`/transactions/${encodeURIComponent(requireId(providerResourceId))}`, {\n method: 'GET',\n operation,\n });\n return requireResource(result.data, 'transaction');\n }\n\n private async getCase(providerResourceId: string, operation: ProviderOperation): Promise<PersonaResource> {\n const result = await this.call<PersonaResponse>(`/cases/${encodeURIComponent(requireId(providerResourceId))}`, {\n method: 'GET',\n operation,\n });\n return requireResource(result.data, 'case');\n }\n\n private async createOwnershipReviewCase(command: ProviderAttemptCommand): Promise<ProviderAttemptResult> {\n const relationshipReference = assertOpaqueReference(command.subjectReference);\n const caseType = command.relationship?.kind === 'property_owner'\n ? this.runtime.configuration.ownershipCaseType\n : this.runtime.configuration.businessAuthorityCaseType ?? this.runtime.configuration.caseType;\n const result = await this.call<PersonaResponse>('/cases', {\n method: 'POST',\n operation: 'create',\n idempotencyKey: command.idempotencyKey,\n body: {\n data: {\n attributes: {\n 'case-template-id': this.runtime.configuration.caseTemplateId,\n fields: {\n 'case-type': caseType,\n 'relationship-reference': relationshipReference,\n },\n },\n },\n },\n });\n const reviewCase = requireResource(result.data, 'case');\n const providerStatus = requireText(reviewCase.attributes?.status, 'Persona case status');\n return {\n attemptId: command.attemptId,\n providerResourceId: requireId(reviewCase.id),\n providerStatus,\n canonicalStatus: this.normalizeStatus('case', providerStatus).status,\n launch: this.nonInteractiveLaunch(command.attemptId, this.normalizeStatus('case', providerStatus).status),\n linkedResources: [{\n resourceType: 'case',\n resourceId: requireId(reviewCase.id),\n relationshipCode: 'initial_review_case',\n providerStatus,\n occurredAt: safeDate(reviewCase.attributes?.['created-at'], this.runtime.now()),\n }],\n };\n }\n\n private async createBusinessTransaction(command: ProviderAttemptCommand): Promise<ProviderAttemptResult> {\n const fields = businessFields(command, this.runtime.configuration.kybFieldMap);\n const created = await this.call<PersonaResponse>('/transactions', {\n method: 'POST',\n operation: 'create',\n idempotencyKey: command.idempotencyKey,\n body: {\n data: {\n attributes: {\n 'transaction-type-id': this.runtime.configuration.kybTransactionTypeId,\n 'workflow-id': this.runtime.configuration.kybWorkflowId,\n 'workflow-version-id': this.runtime.configuration.kybWorkflowVersion,\n 'reference-id': assertOpaqueReference(command.subjectReference),\n fields,\n },\n },\n },\n });\n const transaction = requireResource(created.data, 'transaction');\n const transactionId = requireId(transaction.id);\n const transactionStatus = requireText(transaction.attributes?.status, 'Persona transaction status');\n let reviewCase = await this.findWorkflowManagedCase(transactionId);\n if (!reviewCase && (this.runtime.configuration.kybCaseMode ?? 'workflow_managed') === 'engine_managed') {\n const caseResponse = await this.call<PersonaResponse>('/cases', {\n method: 'POST',\n operation: 'create',\n idempotencyKey: `${command.idempotencyKey}:case`,\n body: {\n data: {\n attributes: {\n 'case-template-id': this.runtime.configuration.caseTemplateId,\n fields: { 'case-type': this.runtime.configuration.caseType },\n },\n },\n },\n });\n reviewCase = requireResource(caseResponse.data, 'case');\n await this.call<PersonaResponse>(`/cases/${encodeURIComponent(requireId(reviewCase.id))}/add-objects`, {\n method: 'POST',\n operation: 'create',\n idempotencyKey: `${command.idempotencyKey}:case-link`,\n body: { meta: { 'object-ids': [transactionId] } },\n });\n }\n const linkedResources: NonNullable<ProviderAttemptResult['linkedResources']> = [{\n resourceType: 'transaction',\n resourceId: transactionId,\n relationshipCode: 'kyb_transaction',\n providerStatus: transactionStatus,\n occurredAt: safeDate(transaction.attributes?.['created-at'], this.runtime.now()),\n }];\n if (reviewCase) {\n linkedResources.push({\n resourceType: 'case',\n resourceId: requireId(reviewCase.id),\n relationshipCode: 'initial_review_case',\n providerStatus: requireText(reviewCase.attributes?.status, 'Persona case status'),\n occurredAt: safeDate(reviewCase.attributes?.['created-at'], this.runtime.now()),\n });\n }\n return {\n attemptId: command.attemptId,\n providerResourceId: transactionId,\n providerStatus: transactionStatus,\n canonicalStatus: this.normalizeStatus('transaction', transactionStatus).status,\n launch: this.nonInteractiveLaunch(command.attemptId, this.normalizeStatus('transaction', transactionStatus).status),\n linkedResources,\n };\n }\n\n private async findWorkflowManagedCase(transactionId: string): Promise<PersonaResource | null> {\n const result = await this.call<PersonaResponse>(\n `/transactions/${encodeURIComponent(transactionId)}?include=related-objects`,\n { method: 'GET', operation: 'retrieve' },\n );\n for (const resource of result.included ?? []) {\n if (resource.type === 'case') return requireResource(resource, 'case');\n }\n const transaction = requireResource(result.data, 'transaction');\n const related = asOptionalRecord(transaction.relationships?.['related-objects']);\n if (Array.isArray(related?.data)) {\n const relationship = related.data.find((value) => asOptionalRecord(value)?.type === 'case');\n const caseId = asOptionalRecord(relationship)?.id;\n if (typeof caseId === 'string') return this.getCase(requireId(caseId), 'retrieve');\n }\n return null;\n }\n\n private normalizeStatus(resourceKind: string, providerStatus: string) {\n return resolvePersonaStatus(resourceKind, providerStatus, this.runtime.configuration.statusMappings);\n }\n\n private async launchFor(attemptId: string, inquiry: PersonaResource): Promise<ProviderLaunchEnvelope> {\n const inquiryId = requireId(inquiry.id);\n const status = requireText(inquiry.attributes?.status, 'Persona inquiry status').toLowerCase();\n const canonical = this.normalizeStatus('inquiry', status).status;\n let sessionToken: string | undefined;\n if (status !== 'created') {\n const resumed = await this.call<PersonaResponse>(`/inquiries/${encodeURIComponent(inquiryId)}/resume`, {\n method: 'POST',\n operation: 'resume',\n idempotencyScope: inquiryId,\n body: {},\n });\n sessionToken = requireText(resumed.meta?.['session-token'], 'Persona session token');\n }\n const hostedUrl = `https://${PERSONA_INQUIRY_HOST}/verify?inquiry-id=${encodeURIComponent(inquiryId)}`;\n return {\n attemptId,\n canonicalStatus: canonical,\n presentation: sessionToken ? 'embedded' : 'hosted',\n launcherKey: sessionToken ? 'persona_embedded' : 'hosted',\n providerDisclosure: PERSONA_DISCLOSURE,\n transientSecret: sessionToken,\n transientSecretExpiresAt: sessionToken ? safeOptionalDate(inquiry.attributes?.['expires-at']) : undefined,\n hostedUrl: status === 'created' || !sessionToken ? hostedUrl : hostedUrl,\n hostedFallbackExpiresAt: safeOptionalDate(inquiry.attributes?.['expires-at']),\n continuationReference: inquiryId,\n };\n }\n\n private nonInteractiveLaunch(attemptId: string, canonicalStatus: ProviderLaunchEnvelope['canonicalStatus']): ProviderLaunchEnvelope {\n return {\n attemptId,\n canonicalStatus,\n presentation: 'none',\n launcherKey: 'hosted',\n providerDisclosure: PERSONA_DISCLOSURE,\n continuationReference: attemptId,\n };\n }\n\n private async call<T>(\n path: string,\n options: {\n method: 'GET' | 'POST' | 'DELETE';\n operation: ProviderOperation;\n idempotencyScope?: string;\n body?: Record<string, unknown>;\n idempotencyKey?: string;\n allowNotFound?: boolean;\n },\n ): Promise<T> {\n if (this.runtime.rateBudget) {\n const budget = await this.runtime.rateBudget.acquire(options.operation);\n if (!budget.allowed) {\n throw new ProviderError('RATE_LIMITED', 'Persona rate budget is exhausted.', {\n retryable: true,\n retryAfterSeconds: budget.retryAfterSeconds,\n safeCode: 'persona_rate_limited',\n });\n }\n }\n const startedAt = this.runtime.now().getTime();\n const idempotencyKey = options.method === 'GET'\n ? undefined\n : this.runtime.idempotency.keyFor(options.operation, options.idempotencyScope ?? path, options.idempotencyKey);\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 10_000);\n try {\n const response = await this.runtime.http.fetch(`https://${PERSONA_API_HOST}/api/v1${path}`, {\n method: options.method,\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${this.runtime.configuration.apiKey}`,\n 'Content-Type': 'application/json',\n 'Persona-Version': this.runtime.configuration.apiVersion,\n ...(idempotencyKey ? { 'Idempotency-Key': idempotencyKey } : {}),\n },\n body: options.body === undefined ? undefined : JSON.stringify(options.body),\n signal: controller.signal,\n });\n if (!response.ok && !(options.allowNotFound && response.status === 404)) {\n throw mapPersonaHttpError(response.status, response.headers.get('retry-after'));\n }\n const environmentId = response.headers.get('Persona-Environment-Id');\n if (environmentId && environmentId !== this.runtime.configuration.environmentId) {\n throw new ProviderError('TERMINAL_INPUT_FAILURE', 'Persona response environment did not match the pinned route.', {\n safeCode: 'persona_environment_mismatch',\n });\n }\n if (response.status === 204 || (options.allowNotFound && response.status === 404)) {\n await this.recordObservation(options.operation, 'success', `persona_${options.operation}_ok`, startedAt);\n return {} as T;\n }\n const result = await response.json().catch(() => {\n throw new ProviderError('UNKNOWN_PROVIDER_STATE', 'Persona returned a malformed response.', {\n safeCode: 'malformed_provider_response',\n });\n }) as T;\n const unknown = this.responseHasUnknownStatus(result);\n await this.recordObservation(\n options.operation,\n unknown ? 'unknown_status' : 'success',\n unknown ? 'persona_unknown_status' : `persona_${options.operation}_ok`,\n startedAt,\n );\n return result;\n } catch (error) {\n const failure = error instanceof ProviderError\n ? error\n : error instanceof DOMException && error.name === 'AbortError'\n ? new ProviderError('TIMEOUT', 'Persona request timed out.', {\n retryable: true, safeCode: 'persona_timeout',\n })\n : new ProviderError('RETRYABLE_PROVIDER_FAILURE', 'Persona verification is temporarily unavailable.', {\n retryable: true, safeCode: 'persona_provider_failure', cause: error,\n });\n await this.recordObservation(\n options.operation,\n failure.retryable ? 'retryable_failure' : 'terminal_failure',\n failure.safeCode,\n startedAt,\n );\n throw failure;\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n private responseHasUnknownStatus(value: unknown): boolean {\n const result = asOptionalRecord(value);\n const resource = asOptionalRecord(result?.data);\n const attributes = asOptionalRecord(resource?.attributes);\n if (typeof resource?.type !== 'string' || typeof attributes?.status !== 'string') return false;\n return this.normalizeStatus(resourceCategory(resource.type), attributes.status)\n .reasonCodes.includes('persona_unknown_status');\n }\n\n private async recordObservation(\n operation: ProviderOperation,\n outcome: 'success' | 'retryable_failure' | 'terminal_failure' | 'unknown_status',\n safeCode: string,\n startedAt: number,\n ): Promise<void> {\n const observedAt = this.runtime.now();\n const latencyMs = Math.max(0, observedAt.getTime() - startedAt);\n const metadata = {\n provider: this.provider,\n environment: this.environment,\n operation,\n outcome,\n safe_code: safeCode,\n latency_ms: latencyMs,\n };\n this.runtime.telemetry?.histogram?.('verification.provider.latency_ms', latencyMs, {\n provider: this.provider,\n operation,\n });\n try {\n await this.runtime.recordHealth({\n operation, outcome, safeCode, observedAt: observedAt.toISOString(), latencyMs,\n });\n if (outcome === 'success') this.runtime.logger.info('verification_provider_operation', metadata);\n else this.runtime.logger.warn('verification_provider_operation', metadata);\n } catch {\n this.runtime.logger.warn('verification_provider_health_record_failed', {\n provider: this.provider,\n environment: this.environment,\n operation,\n });\n }\n }\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@splitin/verification-adapter-persona",
|
|
3
|
+
"version": "0.1.0-beta.0",
|
|
4
|
+
"description": "Official Persona adapter for the Universal Open-Source Verification Adapter SDK. Human IDV, KYB, associated people, and ownership review.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "SplitInTech, @ojchavan",
|
|
7
|
+
"homepage": "https://github.com/splitintech/open-internal-tools/tree/main/verification-adapter-sdk/packages/verification-adapter-persona#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/splitintech/open-internal-tools.git",
|
|
11
|
+
"directory": "verification-adapter-sdk/packages/verification-adapter-persona"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"sideEffects": false,
|
|
15
|
+
"engines": { "node": ">=20" },
|
|
16
|
+
"main": "./dist/index.cjs",
|
|
17
|
+
"module": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"import": "./dist/index.js",
|
|
23
|
+
"require": "./dist/index.cjs"
|
|
24
|
+
},
|
|
25
|
+
"./browser": {
|
|
26
|
+
"types": "./dist/browser.d.ts",
|
|
27
|
+
"import": "./dist/browser.js",
|
|
28
|
+
"require": "./dist/browser.cjs"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"files": ["dist", "LICENSE", "NOTICE", "README.md", "package.json"],
|
|
32
|
+
"publishConfig": { "access": "public" },
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsup",
|
|
35
|
+
"test": "vitest run",
|
|
36
|
+
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@splitin/verification-adapter-sdk": "0.1.0-beta.0"
|
|
40
|
+
},
|
|
41
|
+
"peerDependencies": {
|
|
42
|
+
"persona": "^5.0.0"
|
|
43
|
+
},
|
|
44
|
+
"peerDependenciesMeta": {
|
|
45
|
+
"persona": { "optional": true }
|
|
46
|
+
},
|
|
47
|
+
"optionalPeerDependencies": {
|
|
48
|
+
"persona": "^5.0.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"tsup": "^8.5.0",
|
|
52
|
+
"typescript": "^5.8.3",
|
|
53
|
+
"vitest": "^3.2.4"
|
|
54
|
+
}
|
|
55
|
+
}
|