Schema and CSV helpers for LookInside private-discriminator indexes.
This package intentionally contains no UI, app settings, filesystem import flow, or swift-pd-guess dependency. LookInside owns those app-level integrations.
Each CSV represents one module and must use this header order:
id,filename,created_at,updated_at,created_by,updated_byValidation rules:
idis uppercase 32-character hexadecimal.filenameis basename-only.- Timestamps use UTC seconds:
yyyy-MM-dd'T'HH:mm:ss'Z'. - Authors use
PrivateDiscriminatorRecordAuthor; built-in values areuserandimported. - IDs and filenames must be unique within a module CSV.
Use PrivateDiscriminatorCSV.read(_:), PrivateDiscriminatorCSV.write(_:), and PrivateDiscriminatorModuleIndex.read(moduleName:csvText:) for strict validation and deterministic output.
PrivateDiscriminatorRecord.created_at and updated_at are Date values in Swift; CSV parsing and writing convert them at the schema boundary.
Use PrivateDiscriminatorVerificationCache to verify that MD5(module + filename) matches a private-discriminator ID. The default cache keeps 20 recent verification entries.
Downloadable module indexes live under Resources/PrivateDiscriminator/. LookInside can fetch those CSV files from raw GitHub URLs and cache updated copies locally.
Example/ contains a Tuist-generated iOS fixture app with UIKit and SwiftUI tabs. It bundles LookInsideServer from https://github.com/LookInsideApp/LookInside-Release.git and can be generated with:
cd Example
mise install
mise x -- tuist generate --no-open