Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | // src/types-extended.ts
// Additional type definitions for extended feature set
// ─── Livewire ─────────────────────────────────────────────────────────────
export interface LivewireComponent {
name: string; // e.g. "counter"
className: string; // e.g. "App\Livewire\Counter"
filePath: string;
viewPath?: string; // resources/views/livewire/counter.blade.php
properties: LivewireProperty[];
methods: LivewireMethod[];
computedProperties: LivewireComputed[];
rules: Record<string, string>; // validation rules
listeners: string[];
isVolt: boolean;
}
export interface LivewireProperty {
name: string;
type?: string;
isPublic: boolean;
hasUrl: boolean; // #[Url] attribute
hasLocked: boolean; // #[Locked] attribute
}
export interface LivewireMethod {
name: string;
parameters: string[];
isAction: boolean;
}
export interface LivewireComputed {
name: string; // without "get" prefix + camel
returnType?: string;
}
// ─── Inertia ──────────────────────────────────────────────────────────────
export interface InertiaPage {
name: string; // e.g. "Dashboard/Index"
filePath: string;
props: InertiaPageProp[];
}
export interface InertiaPageProp {
name: string;
type?: string;
required: boolean;
}
// ─── Filament ─────────────────────────────────────────────────────────────
export interface FilamentResource {
name: string;
className: string;
modelClass?: string;
filePath: string;
type: 'resource' | 'page' | 'widget' | 'relation-manager';
formFields: FilamentField[];
tableColumns: FilamentField[];
}
export interface FilamentField {
name: string;
type: string; // e.g. "TextInput", "Select", "Toggle"
label?: string;
}
// ─── Validation ───────────────────────────────────────────────────────────
export interface FormRequestDefinition {
className: string;
namespace: string;
filePath: string;
rules: Record<string, string[]>; // field → rule array
controllerUsages: string[];
}
// ─── .env ─────────────────────────────────────────────────────────────────
export interface EnvVariable {
key: string;
value: string;
comment?: string;
lineNumber: number;
}
// ─── Database Migration ────────────────────────────────────────────────────
export interface MigrationDefinition {
className: string;
filePath: string;
tableName?: string;
operation: 'create' | 'alter' | 'unknown';
columns: MigrationColumn[];
}
export interface MigrationColumn {
name: string;
type: string;
modifiers: string[];
}
// ─── Observer ─────────────────────────────────────────────────────────────
export interface ObserverDefinition {
className: string;
modelClass: string;
methods: string[];
}
// ─── Extended WorkspaceIndex (augments base) ──────────────────────────────
export interface ExtendedIndex {
livewireComponents: Map<string, LivewireComponent>;
inertiaPages: Map<string, InertiaPage>;
filamentResources: Map<string, FilamentResource>;
formRequests: Map<string, FormRequestDefinition>;
envVariables: Map<string, EnvVariable>;
migrations: Map<string, MigrationDefinition>;
}
|