TypeScript DTOs

Generate front-end interfaces from the package DTOs

TypeScript DTOs

Every response object is a spatie/laravel-data class under OiLab\OiLaravelUmami\Data. These are discoverable by OI Laravel TS, which turns them into TypeScript interfaces for an Inertia / React front-end.

Enabling discovery

Add the package's Data namespace to your app's config/oi-laravel-ts.php:

php
'data_namespaces' => [
    'App\\Data',
    'OiLab\\OiLaravelUmami\\Data',
],

Then regenerate:

bash
php artisan oi:gen-ts

Result

typescript
export interface IWebsiteStatsData {
    pageviews: IStatMetricData;
    visitors: IStatMetricData;
    visits: IStatMetricData;
    bounces: IStatMetricData;
    totaltime: IStatMetricData;
}

export interface IStatMetricData {
    value: number;
    prev?: number;
}

export interface IPageviewsData {
    pageviews: IDataPointData[];
    sessions: IDataPointData[];
}

Available DTOs

DTOReturned by
WebsiteStatsDatastats()
StatMetricDatanested in WebsiteStatsData
ActiveVisitorsDataactiveVisitors()
PageviewsDatapageviews()
DataPointDatanested in PageviewsData
MetricDatametrics()
WebsiteDatawebsites(), website(), createWebsite(), updateWebsite()
UserDatausers(), user(), createUser(), updateUser()
Project under MIT License.
Design by