@zerotal/flow 1.6.3 → 1.7.2

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/api-surface.md ADDED
@@ -0,0 +1,1125 @@
1
+ # @zerotal/flow — public API surface
2
+
3
+ <!-- AUTO-GENERATED by scripts/api-surface.ts. Do not edit by hand.
4
+ Run `bun run api:surface` to regenerate after an intentional API change. -->
5
+
6
+ ## . `(./src/index.ts)`
7
+
8
+ class Component = {
9
+ new (): Component
10
+ static durable?: boolean | { ttl?: string; scope?: 'user' | 'session';}
11
+ static readonly __isFlowPage: true
12
+ static using: Compose
13
+ $refresh: () => void
14
+ $set: (key: string, value: unknown) => void
15
+ _applyClientUpdate: (key: string, value: unknown, arrayKey?: string) => Promise<void>
16
+ _buildSchema: (builders: Map<string, ValidateBuilder>) => Schema
17
+ _childIds: string[]
18
+ _clearDurable: boolean
19
+ _clientScripts: string[]
20
+ _downloads: { filename: string; content: string; mime: string;}[]
21
+ _drainEffects: () => FlowEffects
22
+ _emitUpdateHook: (base: 'onUpdating' | 'onUpdated', prop: string, value: unknown, key?: string) => Promise<void>
23
+ _errors: Record<string, string[]>
24
+ _events: { name: string; data: Record<string, unknown>; to?: string; self?: boolean;}[]
25
+ _exposedData: () => Record<string, unknown>
26
+ _flashes: FlashMessage[]
27
+ _flowId: string
28
+ _flowPath: string
29
+ _flowSlots: Record<string, string>
30
+ _isHydrated: boolean
31
+ _prevChildIds: string[]
32
+ _redirectStatus: number | null
33
+ _redirectUrl: string | null
34
+ _shouldRefresh: boolean
35
+ _streamSender: ((ref: string, content: string, replace: boolean) => void) | null
36
+ _taskSignal: AbortSignal | null
37
+ _titleValue: string | null
38
+ _validateField: (field: string) => Promise<void>
39
+ addError: (field: string, message: string) => void
40
+ bind: (key: string, optionValue?: string) => Record<string, unknown>
41
+ cancelled: boolean
42
+ child: <C extends Component>(ChildClass: new () => C, opts?: { key?: string | number; props?: Partial<C>; lazy?: boolean; defer?: boolean; stream?: boolean; slots?: Record<string, string>;}) => Promise<HtmlNode>
43
+ clearDurable: () => void
44
+ client: (script: string) => void
45
+ currentUrl: (_options?: CurrentUrlOptions) => string
46
+ dispatch: <K extends string>(name: K, ...args: K extends EventName ? EventArgs<FlowEvents[K]> : [payload?: Record<string, unknown>]) => void
47
+ dispatchSelf: <K extends string>(name: K, ...args: K extends EventName ? EventArgs<FlowEvents[K]> : [payload?: Record<string, unknown>]) => void
48
+ dispatchTo: <K extends string>(component: string, name: K, ...args: K extends EventName ? EventArgs<FlowEvents[K]> : [payload?: Record<string, unknown>]) => void
49
+ download: (filename: string, content: string | Uint8Array, mime?: string) => void
50
+ errors: ErrorsProxy
51
+ flash: (message: string, optionsOrLevel?: FlashLevel | FlashOptions) => FlashBuilder
52
+ hasSlot: (name?: string) => boolean
53
+ layout: (page: HtmlNode) => HtmlNode | Promise<HtmlNode>
54
+ navigateCurrent: (_options?: CurrentUrlOptions) => Promise<void>
55
+ onBoot: (_ctx?: HttpContext) => Promise<void>
56
+ onDehydrate: () => Promise<void>
57
+ onError: (error: Error) => Promise<void>
58
+ onHydrate: () => Promise<void>
59
+ onMount: (_ctx?: HttpContext) => Promise<void>
60
+ onRendered: (_html: string) => Promise<void>
61
+ onRendering: () => Promise<void>
62
+ onUpdate: () => Promise<void>
63
+ onUpdated: (_prop: string, _value: unknown, _key?: string) => Promise<void>
64
+ onUpdating: (_prop: string, _value: unknown, _key?: string) => Promise<void>
65
+ placeholder: () => HtmlNode
66
+ redirect: (url: string, status?: number) => RedirectFlash
67
+ redirectIntended: (fallback?: string, status?: number) => RedirectFlash
68
+ redirectRoute: <N extends RouteTarget>(name: N, params?: RouteParamsArg<N>, status?: number) => RedirectFlash
69
+ refresh: () => Promise<void>
70
+ render: () => Promise<HtmlNode>
71
+ resetValidation: (field?: string) => void
72
+ signal: AbortSignal
73
+ slot: (name?: string) => HtmlNode
74
+ stream: (ref: string, content: string, opts?: { replace?: boolean;}) => void
75
+ title: { (): string; (value: string): void;}
76
+ validate: (rulesOrForm?: ValidationRules | { __isFlowForm: true; _validateToErrors(): Record<string, string[]>;}) => Promise<void>
77
+ }
78
+
79
+ class ErrorField = {
80
+ new (field: string, messages: string[]): ErrorField
81
+ readonly __field: string
82
+ readonly __isErrorField: true
83
+ readonly __value: string
84
+ }
85
+
86
+ class FlowActionHandled = {
87
+ new (component: string, action: string, durationMs: number, ok: boolean, ip: string | null, ctx: object | undefined): FlowActionHandled
88
+ readonly action: string
89
+ readonly component: string
90
+ readonly ctx: object | undefined
91
+ readonly durationMs: number
92
+ readonly ip: string | null
93
+ readonly ok: boolean
94
+ }
95
+
96
+ class FlowProvider = {
97
+ new (app: Application): FlowProvider
98
+ static dependsOn?: (new (app: Application) => ServiceProvider)[]
99
+ static environments: AppEnvironment[]
100
+ static persistMiddleware: (...middleware: (string | MiddlewareClass)[]) => void
101
+ static persistentMiddleware: (string | MiddlewareClass)[]
102
+ static priority?: number
103
+ static provides?: readonly (keyof ContainerBindings)[]
104
+ static registerSynth: (synth: Synth) => void
105
+ devProcesses: () => DevProcessDefinition[]
106
+ doctorChecks: () => DoctorCheck[]
107
+ onBooted: () => Promise<void>
108
+ onBooting: () => Promise<void>
109
+ onRegister: () => void
110
+ onRequestProcessed: (_ctx: HttpContext) => Promise<void>
111
+ onRequestReceived: (_ctx: HttpContext) => Promise<void>
112
+ onResponseSent: (_ctx: HttpContext) => Promise<void>
113
+ onStarted: () => Promise<void>
114
+ onStarting: () => Promise<void>
115
+ onStopped: () => Promise<void>
116
+ onStopping: () => Promise<void>
117
+ replContext: () => Record<string, unknown>
118
+ }
119
+
120
+ class Form = {
121
+ new (): Form
122
+ _validateToErrors: () => Record<string, string[]>
123
+ data: () => Record<string, unknown>
124
+ fill: (values: Record<string, unknown>) => Form
125
+ readonly __isFlowForm: true
126
+ reset: (...fields: string[]) => Form
127
+ rules: (_v: RuleBuilder) => Record<string, FieldRule>
128
+ validate: () => Record<string, unknown>
129
+ }
130
+
131
+ class Layout = {
132
+ new (): Layout
133
+ static head?: string
134
+ render: (slot: HtmlNode) => HtmlNode | Promise<HtmlNode>
135
+ }
136
+
137
+ class TemporaryUploadedFile = {
138
+ new (d: TufData): TemporaryUploadedFile
139
+ static fromSignedRef: (ref: UploadRef) => TemporaryUploadedFile | null
140
+ static fromTrustedRef: (data: TufData) => TemporaryUploadedFile
141
+ bytes: () => Promise<Uint8Array>
142
+ extension: () => string
143
+ isImage: () => boolean
144
+ name: string
145
+ readonly mime: string
146
+ readonly originalName: string
147
+ readonly size: number
148
+ readonly tempDisk?: string | undefined
149
+ readonly tmpPath: string
150
+ store: (directory: string, diskName?: string, filename?: string) => Promise<string>
151
+ temporaryUrl: (ttlSeconds?: number) => Promise<string>
152
+ toRef: () => TufData
153
+ }
154
+
155
+ class ValidationError = {
156
+ new (errors: Record<string, string[]>): ValidationError
157
+ readonly code: string
158
+ readonly context?: Record<string, unknown> | undefined
159
+ readonly errors: Record<string, string[]>
160
+ readonly status: number
161
+ }
162
+
163
+ class WebSocketConnected = {
164
+ new (url: string): WebSocketConnected
165
+ readonly url: string
166
+ }
167
+
168
+ class WebSocketDisconnected = {
169
+ new (url: string): WebSocketDisconnected
170
+ readonly url: string
171
+ }
172
+
173
+ const BLOCKED_URL = 'about:blank'
174
+
175
+ const DEFAULT_PERSISTENT_MIDDLEWARE = (string | MiddlewareClass)[]
176
+
177
+ const locked = (value: unknown, context: ClassFieldDecoratorContext) => void
178
+
179
+ const modelable = (value: unknown, context: ClassFieldDecoratorContext) => void
180
+
181
+ const reactive = (value: unknown, context: ClassFieldDecoratorContext) => void
182
+
183
+ const transient = (value: unknown, context: ClassFieldDecoratorContext) => void
184
+
185
+ const URL_ATTRIBUTES = ReadonlySet<string>
186
+
187
+ function Accordion = (props: AccordionProps) => HtmlNode
188
+
189
+ function Alert = (props: AlertProps) => HtmlNode
190
+
191
+ function Calendar = (props: CalendarProps) => HtmlNode
192
+
193
+ function Checkbox = (props: CheckboxProps) => HtmlNode
194
+
195
+ function Combobox = (props: ComboboxProps) => HtmlNode
196
+
197
+ function computed = <This, Return>(getter: (this: This) => Return, context: ClassGetterDecoratorContext<This, Return>) => (this: This) => Return
198
+
199
+ function defineStore = (initial: Record<string, unknown>) => void
200
+
201
+ function Description = (props: DescriptionProps) => HtmlNode
202
+
203
+ function Disclosure = (props: DisclosureProps) => HtmlNode
204
+
205
+ function Drawer = (props: DrawerProps) => HtmlNode
206
+
207
+ function Dropdown = (props: DropdownProps) => HtmlNode
208
+
209
+ function ErrorBoundary = (props: ErrorBoundaryProps) => HtmlNode
210
+
211
+ function ErrorMessage = (props: ErrorProps) => HtmlNode
212
+
213
+ function Errors = (props?: ErrorsProps) => HtmlNode
214
+
215
+ function expose = (_value: unknown, context: ExposeContext) => void
216
+
217
+ function Field = (props: FieldProps) => HtmlNode
218
+
219
+ function Fieldset = (props: FieldsetProps) => HtmlNode
220
+
221
+ function FileUpload = (props: FileUploadProps) => HtmlNode
222
+
223
+ function FileUploads = <TBase extends AbstractComponentCtor>(Base: TBase) => ((abstract new (...args: any[]) => WithUploads) & { prototype: FileUploads<any>.WithUploads;}) & TBase
224
+
225
+ function Flash = (props?: FlashProps) => HtmlNode
226
+
227
+ function flow = <T>(target: T) => FlowChain<T>
228
+
229
+ function flowActiveConnections = () => number
230
+
231
+ function FlowConfig = (options?: Partial<FlowConfigShape>) => FlowConfigShape
232
+
233
+ function flowConnections = () => FlowConnection[]
234
+
235
+ function For = <T>(props: ForProps<T>) => HtmlNode
236
+
237
+ function getDurableStore = () => DurableStore
238
+
239
+ function getSharedStore = () => SharedStore
240
+
241
+ function Head = (props: { children?: unknown;}) => HtmlNode
242
+
243
+ function InfiniteScroll = (props: InfiniteScrollProps) => HtmlNode
244
+
245
+ function isSafeUrl = (url: string) => boolean
246
+
247
+ function jsLiteral = (value: unknown) => string
248
+
249
+ function Label = (props: LabelProps) => HtmlNode
250
+
251
+ function Legend = (props: LegendProps) => HtmlNode
252
+
253
+ function Link = (props: LinkProps & { children?: unknown;}) => HtmlNode
254
+
255
+ function Listbox = (props: ListboxProps) => HtmlNode
256
+
257
+ function Loading = (props: LoadingProps) => HtmlNode
258
+
259
+ function Modal = (props: ModalProps) => HtmlNode
260
+
261
+ function on = (eventName: LooseEventName) => (fn: unknown, context: ClassMethodDecoratorContext) => void
262
+
263
+ function Pager = (props: PagerProps) => HtmlNode
264
+
265
+ function paginate = <T>(items: T[], page?: number, perPage?: number) => Paginator<T>
266
+
267
+ function Pagination = <TBase extends AbstractComponentCtor>(Base: TBase) => ((abstract new (...args: any[]) => Paginated) & { prototype: Pagination<any>.Paginated;}) & TBase
268
+
269
+ function param = { (value: unknown, context: ClassFieldDecoratorContext): void; (source?: string | ParamModel): ParamDecorator;}
270
+
271
+ function Persist = (props: { name: string; children?: unknown;}) => HtmlNode
272
+
273
+ function Popover = (props: PopoverProps) => HtmlNode
274
+
275
+ function presence = (channel: PresenceChannel) => (value: unknown, context: ClassFieldDecoratorContext) => void
276
+
277
+ function RadioGroup = (props: RadioGroupProps) => HtmlNode
278
+
279
+ function registerComponent = (PageClass: typeof Component, path?: string) => void
280
+
281
+ function registerFlowEvent = <K extends EventName>(name: K, guard: (payload: unknown) => payload is FlowEvents[K]) => void
282
+
283
+ function registerFlowModel = (name: string, ModelClass: typeof BaseModel) => void
284
+
285
+ function registerForm = (FormClass: new () => Form) => void
286
+
287
+ function registerSynth = (synth: Synth) => void
288
+
289
+ function renderless = (_fn: unknown, context: ClassMethodDecoratorContext) => void
290
+
291
+ function sanitizeUrl = (url: string) => string
292
+
293
+ function SectionContent = (props: SectionContentProps) => HtmlNode
294
+
295
+ function SectionOutlet = (props: SectionOutletProps) => HtmlNode
296
+
297
+ function Select = (props: SelectProps) => HtmlNode
298
+
299
+ function session = { (value: unknown, context: ClassFieldDecoratorContext): void; (opts?: SessionOptions): SessionDecorator;}
300
+
301
+ function setDurableStore = (store: DurableStore) => void
302
+
303
+ function setSharedStore = (store: SharedStore) => void
304
+
305
+ function shared = (channel: SharedChannel) => (value: unknown, context: ClassFieldDecoratorContext) => void
306
+
307
+ function Skeleton = (props: SkeletonProps) => HtmlNode
308
+
309
+ function Slider = (props: SliderProps) => HtmlNode
310
+
311
+ function Switch = (props: SwitchProps) => HtmlNode
312
+
313
+ function Table = <T extends Record<string, unknown>>(props: TableProps<T>) => HtmlNode
314
+
315
+ function Tabs = (props: TabsProps) => HtmlNode
316
+
317
+ function task = (_fn: unknown, context: ClassMethodDecoratorContext) => void
318
+
319
+ function Title = (props: { children?: unknown;}) => HtmlNode
320
+
321
+ function ToggleGroup = (props: ToggleGroupProps) => HtmlNode
322
+
323
+ function Tooltip = (props: TooltipProps) => HtmlNode
324
+
325
+ function url = { (value: unknown, context: ClassFieldDecoratorContext): void; (opts?: UrlOptions): UrlDecorator;}
326
+
327
+ function validate = (build: ValidateBuilder) => (value: unknown, context: ClassFieldDecoratorContext) => void
328
+
329
+ function Virtualize = <T>(props: VirtualizeProps<T>) => HtmlNode
330
+
331
+ interface AccordionItem = {
332
+ content: unknown
333
+ label: unknown
334
+ }
335
+
336
+ interface AccordionProps = {
337
+ [key: string]: unknown
338
+ buttonClass?: string
339
+ class?: string
340
+ defaultIndex?: number
341
+ itemClass?: string
342
+ items: AccordionItem[]
343
+ multiple?: boolean
344
+ panelClass?: string
345
+ }
346
+
347
+ interface AlertProps = {
348
+ [key: string]: unknown
349
+ children?: unknown
350
+ class?: string
351
+ dismissible?: boolean
352
+ title?: unknown
353
+ variant?: 'success' | 'error' | 'warning' | 'info'
354
+ }
355
+
356
+ interface CalendarProps = {
357
+ [key: string]: unknown
358
+ bind?: unknown
359
+ class?: string
360
+ dayClass?: string
361
+ gridClass?: string
362
+ headerClass?: string
363
+ max?: string
364
+ min?: string
365
+ month?: string
366
+ name?: string
367
+ navClass?: string
368
+ sundayFirst?: boolean
369
+ weekdayClass?: string
370
+ }
371
+
372
+ interface CallFrame = {
373
+ args: unknown[]
374
+ component: string
375
+ method: string
376
+ snapshot: Snapshot
377
+ type: 'call'
378
+ updates: Record<string, unknown>
379
+ }
380
+
381
+ interface CheckboxProps = {
382
+ [key: string]: unknown
383
+ bind: unknown
384
+ children?: unknown
385
+ class?: string
386
+ }
387
+
388
+ interface ChildMemo = {
389
+ id: string
390
+ key: string
391
+ name: string
392
+ }
393
+
394
+ interface ComboboxOption = {
395
+ label: string
396
+ value: string | number
397
+ }
398
+
399
+ interface ComboboxProps = {
400
+ [key: string]: unknown
401
+ bind?: unknown
402
+ class?: string
403
+ inputClass?: string
404
+ name?: string
405
+ optionClass?: string
406
+ options: ComboboxOption[]
407
+ optionsClass?: string
408
+ placeholder?: string
409
+ query?: unknown
410
+ queryName?: string
411
+ }
412
+
413
+ interface Compose = {
414
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor, D extends Constructor, E extends Constructor, F extends Constructor, G extends Constructor, H extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C, d: (base: C) => D, e: (base: D) => E, f: (base: E) => F, g: (base: F) => G, h: (base: G) => H): H
415
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor, D extends Constructor, E extends Constructor, F extends Constructor, G extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C, d: (base: C) => D, e: (base: D) => E, f: (base: E) => F, g: (base: F) => G): G
416
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor, D extends Constructor, E extends Constructor, F extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C, d: (base: C) => D, e: (base: D) => E, f: (base: E) => F): F
417
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor, D extends Constructor, E extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C, d: (base: C) => D, e: (base: D) => E): E
418
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor, D extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C, d: (base: C) => D): D
419
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C): C
420
+ <TBase extends Constructor, A extends Constructor, B extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B): B
421
+ <TBase extends Constructor, A extends Constructor>(this: TBase, a: (base: TBase) => A): A
422
+ }
423
+
424
+ interface DescriptionProps = {
425
+ [key: string]: unknown
426
+ children?: unknown
427
+ class?: string
428
+ }
429
+
430
+ interface DisclosureProps = {
431
+ [key: string]: unknown
432
+ buttonClass?: string
433
+ children?: unknown
434
+ class?: string
435
+ defaultOpen?: boolean
436
+ label?: unknown
437
+ panelClass?: string
438
+ trigger?: unknown
439
+ }
440
+
441
+ interface DownloadFrame = {
442
+ content: string
443
+ filename: string
444
+ mime: string
445
+ type: 'download'
446
+ }
447
+
448
+ interface DrawerProps = {
449
+ [key: string]: unknown
450
+ children?: unknown
451
+ class?: string
452
+ closable?: boolean
453
+ name?: string
454
+ onClose?: unknown
455
+ show?: unknown
456
+ side?: 'left' | 'right' | 'top' | 'bottom'
457
+ title?: unknown
458
+ }
459
+
460
+ interface DropdownProps = {
461
+ [key: string]: unknown
462
+ align?: 'left' | 'right'
463
+ children?: unknown
464
+ class?: string
465
+ label?: unknown
466
+ panelClass?: string
467
+ trigger?: unknown
468
+ }
469
+
470
+ interface DurableStore = {
471
+ delete: (key: string) => Promise<void> | void
472
+ get: (key: string) => Promise<Snapshot | undefined> | Snapshot | undefined
473
+ set: (key: string, value: Snapshot, ttlMs?: number) => Promise<void> | void
474
+ }
475
+
476
+ interface ErrorBoundaryProps = {
477
+ [key: string]: unknown
478
+ children?: unknown
479
+ class?: string
480
+ fallback?: HtmlNode | ((error: unknown) => HtmlNode)
481
+ onError?: (error: unknown) => void
482
+ tag?: string
483
+ }
484
+
485
+ interface ErrorFrame = {
486
+ action?: string
487
+ component: string
488
+ message: string
489
+ name?: string
490
+ stack?: string
491
+ type: 'error'
492
+ }
493
+
494
+ interface ErrorProps = {
495
+ [key: string]: unknown
496
+ class?: string
497
+ for?: unknown
498
+ }
499
+
500
+ interface ErrorsProps = {
501
+ [key: string]: unknown
502
+ class?: string
503
+ only?: string | string[]
504
+ }
505
+
506
+ interface ErrorsProxy = {
507
+ [key: string]: ErrorField | ((...args: never[]) => unknown)
508
+ add: { (field: string, message: string): void; (errors: Record<string, string | string[]>): void;}
509
+ any: () => boolean
510
+ clear: (field?: string) => void
511
+ has: (field: string) => boolean
512
+ }
513
+
514
+ interface EventFrame = {
515
+ data: Record<string, unknown>
516
+ name: string
517
+ type: 'event'
518
+ }
519
+
520
+ interface FieldProps = {
521
+ [key: string]: unknown
522
+ children?: unknown
523
+ class?: string
524
+ description?: unknown
525
+ error?: unknown
526
+ label?: unknown
527
+ }
528
+
529
+ interface FieldsetProps = {
530
+ [key: string]: unknown
531
+ children?: unknown
532
+ class?: string
533
+ disabled?: boolean
534
+ legend?: unknown
535
+ }
536
+
537
+ interface FileUploadProps = {
538
+ [key: string]: unknown
539
+ accept?: string
540
+ bind: unknown
541
+ children?: unknown
542
+ class?: string
543
+ label?: string
544
+ multiple?: boolean
545
+ }
546
+
547
+ interface FlashAction = {
548
+ args?: unknown[]
549
+ color?: string
550
+ label: string
551
+ method: string
552
+ uppercase?: boolean
553
+ variant?: FlashActionVariant
554
+ }
555
+
556
+ interface FlashActionStyle = {
557
+ color?: string
558
+ uppercase?: boolean
559
+ variant?: FlashActionVariant
560
+ }
561
+
562
+ interface FlashBuilder = {
563
+ action: (label: string, method: string, args?: unknown[], style?: string | FlashActionStyle) => FlashBuilder
564
+ dismissible: (value?: boolean) => FlashBuilder
565
+ duration: (ms: number) => FlashBuilder
566
+ error: () => FlashBuilder
567
+ icon: (icon: string | false) => FlashBuilder
568
+ info: () => FlashBuilder
569
+ level: (level: FlashLevel) => FlashBuilder
570
+ noAutoDismiss: () => FlashBuilder
571
+ onClose: (method: string, args?: unknown[]) => FlashBuilder
572
+ position: (position: FlashPosition) => FlashBuilder
573
+ progressBar: (value?: boolean) => FlashBuilder
574
+ success: () => FlashBuilder
575
+ title: (title: string) => FlashBuilder
576
+ warning: () => FlashBuilder
577
+ }
578
+
579
+ interface FlashCallback = {
580
+ args?: unknown[]
581
+ method: string
582
+ }
583
+
584
+ interface FlashFrame = {
585
+ actions?: FlashAction[]
586
+ dismissible?: boolean
587
+ duration?: number
588
+ icon?: string | false
589
+ level: 'success' | 'error' | 'warning' | 'info'
590
+ message: string
591
+ onClose?: FlashCallback
592
+ position?: FlashPosition
593
+ progressBar?: boolean
594
+ title?: string
595
+ type: 'flash'
596
+ }
597
+
598
+ interface FlashMessage = {
599
+ actions?: FlashAction[]
600
+ dismissible?: boolean
601
+ duration?: number
602
+ icon?: string | false
603
+ level: 'success' | 'error' | 'warning' | 'info'
604
+ message: string
605
+ onClose?: FlashCallback
606
+ position?: FlashPosition
607
+ progressBar?: boolean
608
+ title?: string
609
+ }
610
+
611
+ interface FlashOptions = {
612
+ actions?: FlashAction[]
613
+ dismissible?: boolean
614
+ duration?: number
615
+ icon?: string | false
616
+ level?: 'success' | 'error' | 'warning' | 'info'
617
+ onClose?: FlashCallback
618
+ position?: FlashPosition
619
+ progressBar?: boolean
620
+ title?: string
621
+ type?: 'success' | 'error' | 'warning' | 'info'
622
+ }
623
+
624
+ interface FlashProps = {
625
+ [key: string]: unknown
626
+ duration?: number
627
+ position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'
628
+ }
629
+
630
+ interface FlowChain = {
631
+ confirm: (message: string) => FlowChain<T>
632
+ debounce: (ms: string | number) => FlowChain<T>
633
+ readonly __isFlow: true
634
+ readonly __key: string | undefined
635
+ readonly __modifiers: string[]
636
+ readonly __target: T
637
+ readonly blur: FlowChain<T>
638
+ readonly camel: FlowChain<T>
639
+ readonly capture: FlowChain<T>
640
+ readonly document: FlowChain<T>
641
+ readonly fill: FlowChain<T>
642
+ readonly lazy: FlowChain<T>
643
+ readonly live: FlowChain<T>
644
+ readonly once: FlowChain<T>
645
+ readonly outside: FlowChain<T>
646
+ readonly passive: FlowChain<T>
647
+ readonly prevent: FlowChain<T>
648
+ readonly self: FlowChain<T>
649
+ readonly stop: FlowChain<T>
650
+ readonly window: FlowChain<T>
651
+ throttle: (ms: string | number) => FlowChain<T>
652
+ }
653
+
654
+ interface FlowConfigShape = {
655
+ cspSafe: boolean
656
+ persistentMiddleware: (string | MiddlewareClass)[]
657
+ }
658
+
659
+ interface FlowConnection = {
660
+ actions: number
661
+ connectedAt: number
662
+ id: string
663
+ ip: string
664
+ lastActivityAt: number
665
+ user: string | null
666
+ }
667
+
668
+ interface FlowEffects = {
669
+ downloads: { filename: string; content: string; mime: string;}[]
670
+ errors: Record<string, string[]>
671
+ events: { name: string; data: Record<string, unknown>; to?: string; self?: boolean;}[]
672
+ flashes: FlashMessage[]
673
+ redirectUrl: string | null
674
+ scripts: string[]
675
+ shouldRefresh: boolean
676
+ title: string | null
677
+ }
678
+
679
+ interface FlowEvents = {}
680
+
681
+ interface FlowStore = {}
682
+
683
+ interface ForProps = {
684
+ children: (item: T, index: number) => HtmlNode
685
+ each: readonly T[]
686
+ keyBy?: string
687
+ }
688
+
689
+ interface InfiniteScrollProps = {
690
+ [key: string]: unknown
691
+ children?: unknown
692
+ class?: string
693
+ onMore: unknown
694
+ show?: boolean
695
+ }
696
+
697
+ interface LabelProps = {
698
+ [key: string]: unknown
699
+ children?: unknown
700
+ class?: string
701
+ }
702
+
703
+ interface LegendProps = {
704
+ [key: string]: unknown
705
+ children?: unknown
706
+ class?: string
707
+ }
708
+
709
+ interface LinkProps = {
710
+ [key: string]: unknown
711
+ current?: boolean
712
+ exact?: boolean
713
+ hover?: boolean
714
+ href: string
715
+ preserveScroll?: boolean
716
+ }
717
+
718
+ interface ListboxOption = {
719
+ label: unknown
720
+ value: string | number
721
+ }
722
+
723
+ interface ListboxProps = {
724
+ [key: string]: unknown
725
+ bind: unknown
726
+ buttonClass?: string
727
+ class?: string
728
+ multiple?: boolean
729
+ optionClass?: string
730
+ options: ListboxOption[]
731
+ optionsClass?: string
732
+ placeholder?: string
733
+ }
734
+
735
+ interface LoadingProps = {
736
+ [key: string]: unknown
737
+ children?: unknown
738
+ class?: string
739
+ delay?: boolean
740
+ hide?: boolean
741
+ skeleton?: boolean | SkeletonProps
742
+ tag?: string
743
+ target?: string | string[]
744
+ }
745
+
746
+ interface ModalProps = {
747
+ [key: string]: unknown
748
+ children?: unknown
749
+ class?: string
750
+ closable?: boolean
751
+ name?: string
752
+ onClose?: unknown
753
+ show?: unknown
754
+ title?: unknown
755
+ }
756
+
757
+ interface PageClassWithMeta = {
758
+ new (): Component
759
+ head?: string
760
+ layout?: new () => Layout
761
+ models?: Record<string, typeof BaseModel>
762
+ name: string
763
+ title?: string
764
+ }
765
+
766
+ interface PagerProps = {
767
+ [key: string]: unknown
768
+ activeClass?: string
769
+ class?: string
770
+ hover?: boolean
771
+ linkClass?: string
772
+ nextLabel?: string
773
+ paginator: PagerLike
774
+ params?: Record<string, string | number | null | undefined>
775
+ prevLabel?: string
776
+ }
777
+
778
+ interface Paginator = {
779
+ data: T[]
780
+ elements: (each?: number) => (number | '...')[]
781
+ from: number
782
+ hasMorePages: boolean
783
+ lastPage: number
784
+ onFirstPage: boolean
785
+ page: number
786
+ perPage: number
787
+ to: number
788
+ total: number
789
+ }
790
+
791
+ interface PatchFrame = {
792
+ actionError?: boolean
793
+ checksum?: string
794
+ component: string
795
+ dataDelta?: SnapshotData
796
+ dataRemoved?: string[]
797
+ errors?: Record<string, string[]>
798
+ html?: string
799
+ memo?: SnapshotMemo
800
+ partial?: boolean
801
+ scripts?: string[]
802
+ snapshot?: Snapshot
803
+ title?: string
804
+ type: 'patch'
805
+ }
806
+
807
+ interface PopoverProps = {
808
+ [key: string]: unknown
809
+ buttonClass?: string
810
+ children?: unknown
811
+ class?: string
812
+ label?: unknown
813
+ panelClass?: string
814
+ trigger?: unknown
815
+ }
816
+
817
+ interface PresenceMember = {
818
+ [key: string]: unknown
819
+ id: string | number
820
+ }
821
+
822
+ interface RadioGroupProps = {
823
+ [key: string]: unknown
824
+ bind: unknown
825
+ class?: string
826
+ optionClass?: string
827
+ options: RadioOption[]
828
+ }
829
+
830
+ interface RadioOption = {
831
+ label: unknown
832
+ value: string | number
833
+ }
834
+
835
+ interface RedirectFlash = {
836
+ with: (message: string, level: FlashLevel) => RedirectFlash
837
+ withError: (message: string) => RedirectFlash
838
+ withInfo: (message: string) => RedirectFlash
839
+ withSuccess: (message: string) => RedirectFlash
840
+ withWarning: (message: string) => RedirectFlash
841
+ }
842
+
843
+ interface RedirectFrame = {
844
+ sessionToken?: string
845
+ type: 'redirect'
846
+ url: string
847
+ }
848
+
849
+ interface SectionContentProps = {
850
+ children?: unknown
851
+ name: string
852
+ }
853
+
854
+ interface SectionOutletProps = {
855
+ children?: unknown
856
+ name: string
857
+ }
858
+
859
+ interface SelectOption = {
860
+ label: unknown
861
+ value: string | number
862
+ }
863
+
864
+ interface SelectProps = {
865
+ [key: string]: unknown
866
+ bind: unknown
867
+ class?: string
868
+ options: SelectOption[]
869
+ placeholder?: string
870
+ }
871
+
872
+ interface SessionOptions = {
873
+ key?: string
874
+ scoped?: boolean
875
+ }
876
+
877
+ interface SharedStore = {
878
+ get: (key: string) => unknown | undefined
879
+ has: (key: string) => boolean
880
+ set: (key: string, value: unknown) => void
881
+ }
882
+
883
+ interface SkeletonProps = {
884
+ [key: string]: unknown
885
+ class?: string
886
+ height?: string
887
+ lines?: number
888
+ rounded?: string | boolean
889
+ width?: string
890
+ }
891
+
892
+ interface SliderProps = {
893
+ [key: string]: unknown
894
+ bind?: unknown
895
+ children?: unknown
896
+ class?: string
897
+ inputClass?: string
898
+ inputStyle?: string
899
+ inputStyleExpression?: string
900
+ max?: number
901
+ min?: number
902
+ name?: string
903
+ step?: number
904
+ }
905
+
906
+ interface Snapshot = {
907
+ checksum: string
908
+ data: SnapshotData
909
+ memo: SnapshotMemo
910
+ }
911
+
912
+ interface SnapshotMemo = {
913
+ children: string[]
914
+ iat?: number | undefined
915
+ id: string
916
+ listeners?: Record<string, string> | undefined
917
+ name: string
918
+ path: string
919
+ presence?: { prop: string; channel: string;}[] | undefined
920
+ shared?: { prop: string; channel: string;}[] | undefined
921
+ slots?: Record<string, string> | undefined
922
+ sub?: string | undefined
923
+ }
924
+
925
+ interface SwitchProps = {
926
+ [key: string]: unknown
927
+ bind: unknown
928
+ children?: unknown
929
+ class?: string
930
+ }
931
+
932
+ interface Synth = {
933
+ dehydrate: (value: T, meta: Record<string, unknown>) => unknown
934
+ hydrate: (data: unknown, meta: Record<string, unknown>) => T | Promise<T>
935
+ key: string
936
+ match: (value: unknown) => value is T
937
+ }
938
+
939
+ interface TabItem = {
940
+ content: unknown
941
+ label: unknown
942
+ name?: string
943
+ }
944
+
945
+ interface TableColumn = {
946
+ class?: string
947
+ key: string
948
+ label: unknown
949
+ render?: (row: T) => unknown
950
+ sortable?: boolean
951
+ }
952
+
953
+ interface TableProps = {
954
+ [key: string]: unknown
955
+ class?: string
956
+ columns: TableColumn<T>[]
957
+ hover?: boolean
958
+ params?: Record<string, string | number | null | undefined>
959
+ rowKey?: string
960
+ rows: T[]
961
+ sortBy?: string
962
+ sortDir?: 'asc' | 'desc'
963
+ theadClass?: string
964
+ }
965
+
966
+ interface TabsProps = {
967
+ [key: string]: unknown
968
+ class?: string
969
+ items: TabItem[]
970
+ }
971
+
972
+ interface ToggleGroupProps = {
973
+ [key: string]: unknown
974
+ bind?: unknown
975
+ class?: string
976
+ multiple?: boolean
977
+ name?: string
978
+ optionClass?: string
979
+ options: ToggleOption[]
980
+ }
981
+
982
+ interface ToggleOption = {
983
+ disabled?: boolean
984
+ label?: unknown
985
+ value: string
986
+ }
987
+
988
+ interface TooltipProps = {
989
+ [key: string]: unknown
990
+ children?: unknown
991
+ class?: string
992
+ content?: unknown
993
+ placement?: 'top' | 'bottom'
994
+ text?: unknown
995
+ tooltipClass?: string
996
+ }
997
+
998
+ interface UploadRef = {
999
+ __flow_upload: true
1000
+ mime: string
1001
+ originalName: string
1002
+ sig: string
1003
+ size: number
1004
+ tempDisk?: string | undefined
1005
+ tmpPath: string
1006
+ }
1007
+
1008
+ interface UrlOptions = {
1009
+ as?: string
1010
+ history?: 'replace' | 'push'
1011
+ }
1012
+
1013
+ interface VirtualizeProps = {
1014
+ children: (item: T, index: number) => HtmlNode
1015
+ class?: string
1016
+ height?: number
1017
+ itemHeight: number
1018
+ items: readonly T[]
1019
+ onWindow?: unknown
1020
+ overscan?: number
1021
+ start?: number
1022
+ total?: number
1023
+ }
1024
+
1025
+ type Constructor = abstract new (...args: any[]) => T
1026
+
1027
+ type DurableOption = boolean | { ttl?: string; scope?: 'user' | 'session';}
1028
+
1029
+ type EventName = never
1030
+
1031
+ type EventPayload = FlowEvents[K]
1032
+
1033
+ type FlashActionVariant = 'solid' | 'soft' | 'ghost'
1034
+
1035
+ type FlashLevel = 'success' | 'error' | 'warning' | 'info'
1036
+
1037
+ type FlashPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'
1038
+
1039
+ type HtmlNode = { html: string;}
1040
+
1041
+ type Mixin = (Base: TIn) => TOut
1042
+
1043
+ type PresenceChannel = string | ((self: Record<string, any>) => string)
1044
+
1045
+ type SharedChannel = string | ((self: Record<string, any>) => string)
1046
+
1047
+ type SnapshotData = { [x: string]: SnapshotTuple;}
1048
+
1049
+ type ValidationRules = { [x: string]: (rule: RuleBuilder) => FieldRule;}
1050
+
1051
+ ## ./browser `(./src/browser/index.ts)`
1052
+
1053
+ class FlowBrowser = {
1054
+ new (_browser: LaunchedBrowser, _session: CdpSession): FlowBrowser
1055
+ static available: () => boolean
1056
+ static open: (url: string, options?: OpenOptions) => Promise<FlowBrowser>
1057
+ attr: (selector: string, name: string) => Promise<string | null>
1058
+ click: (selector: string) => Promise<void>
1059
+ close: () => Promise<void>
1060
+ consoleErrors: () => string[]
1061
+ evaluate: <T = unknown>(expression: string) => Promise<T>
1062
+ fill: (selector: string, value: string) => Promise<void>
1063
+ goto: (url: string, options?: OpenOptions) => Promise<void>
1064
+ html: () => Promise<string>
1065
+ pageErrors: () => string[]
1066
+ text: (selector: string) => Promise<string>
1067
+ value: (selector: string) => Promise<string>
1068
+ waitForSelector: (selector: string, timeoutMs?: number) => Promise<void>
1069
+ waitForText: (selector: string, text: string, timeoutMs?: number) => Promise<void>
1070
+ waitUntil: (expression: string, label: string, timeoutMs?: number) => Promise<void>
1071
+ }
1072
+
1073
+ function findChrome = () => string | null
1074
+
1075
+ interface OpenOptions = {
1076
+ timeout?: number
1077
+ waitForConnection?: boolean
1078
+ }
1079
+
1080
+ ## ./compiler-helpers `(./src/compiler/helpers.ts)`
1081
+
1082
+ function __esc = (v: unknown) => string
1083
+
1084
+ function __escAttr = (v: unknown) => string
1085
+
1086
+ ## ./store `(./src/store.ts)`
1087
+
1088
+ function clientStore = () => Record<string, unknown>
1089
+
1090
+ function defineStore = (initial: Record<string, unknown>) => void
1091
+
1092
+ function initClientStore = (alpine: AlpineStores) => Record<string, unknown>
1093
+
1094
+ interface FlowStore = {}
1095
+
1096
+ ## ./testing `(./src/testing.ts)`
1097
+
1098
+ class FlowTest = {
1099
+ new <T extends Component>(page: T, name: string): FlowTest<T>
1100
+ static mount: <T extends Component>(PageClass: PageClass<T>, props?: Partial<T>) => Promise<FlowTest<T>>
1101
+ assertDispatched: (eventName: string) => FlowTest<T>
1102
+ assertDontSee: (text: string) => FlowTest<T>
1103
+ assertErrored: (match?: string | RegExp) => FlowTest<T>
1104
+ assertFlashed: (level?: string, message?: string) => FlowTest<T>
1105
+ assertHasErrors: (field: string, message?: string) => FlowTest<T>
1106
+ assertNoErrors: () => FlowTest<T>
1107
+ assertNotRedirected: () => FlowTest<T>
1108
+ assertRedirectedTo: (url: string) => FlowTest<T>
1109
+ assertSee: (text: string) => FlowTest<T>
1110
+ call: (method: string, ...args: unknown[]) => Promise<FlowTest<T>>
1111
+ effects: () => FlowEffects | null
1112
+ errors: () => Record<string, string[]>
1113
+ flashes: () => FlowEffects['flashes']
1114
+ html: () => string
1115
+ lastError: () => Error | null
1116
+ page: () => T
1117
+ render: () => Promise<FlowTest<T>>
1118
+ seed: (prop: keyof T, value: unknown) => Promise<FlowTest<T>>
1119
+ set: (prop: keyof T, value: unknown) => Promise<FlowTest<T>>
1120
+ snapshot: () => Snapshot | null
1121
+ tolerateErrors: () => FlowTest<T>
1122
+ update: (prop: keyof T, value: unknown) => Promise<FlowTest<T>>
1123
+ }
1124
+
1125
+ function hydrate = <T extends Component>(snapshot: Snapshot, PageClass: new () => T) => Promise<T>