@optionfactory/ful 6.0.7 → 7.0.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/dist/ful.d.mts ADDED
@@ -0,0 +1,941 @@
1
+ export type Problem = {
2
+ type: string;
3
+ context: string | null;
4
+ reason: string;
5
+ details: any | null;
6
+ };
7
+ export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;
8
+ export type HttpInterceptor = {
9
+ intercept: (arg0: URL, arg1: RequestInit | undefined, arg2: HttpInterceptorChain) => Promise<Response>;
10
+ };
11
+ export type AsyncExtension = {
12
+ promises: Promise<any>[];
13
+ };
14
+ export type AsyncEvent = Event & {
15
+ async?: AsyncExtension;
16
+ };
17
+ /**
18
+ * @typedef {Object} AsyncExtension
19
+ * @property {Promise<any>[]} promises
20
+ * @typedef {Event & { async?: AsyncExtension }} AsyncEvent
21
+ */
22
+ export class AsyncEvents {
23
+ /**
24
+ * Dispatches an event and handles asynchronous resolution based on the execution mode.
25
+ * @param {HTMLElement} el - The target element dispatching the event.
26
+ * @param {AsyncEvent} evt - The event instance.
27
+ * @param {{mode?: 'broadcast' | 'pipeline' | 'delegate'}} [options] - Configuration options (defaults to 'broadcast').
28
+ * @returns {Promise<any>} Resolves with an array of values for broadcasts, a single value for pipelines/delegates, or undefined.
29
+ */
30
+ static fireAsync(el: HTMLElement, evt: AsyncEvent, options?: {
31
+ mode?: "broadcast" | "pipeline" | "delegate";
32
+ }): Promise<any>;
33
+ /**
34
+ * Registers an asynchronous event listener wrapper.
35
+ * @param {HTMLElement} el - The target element.
36
+ * @param {string} type - The event name/type.
37
+ * @param {Function} fn - The async listener middleware function returning the execution result.
38
+ * @param {AddEventListenerOptions} [options] - Native addEventListener options.
39
+ * @returns {EventListener} The underlying proxy listener function needed for cleanup via asyncOff.
40
+ */
41
+ static asyncOn(el: HTMLElement, type: string, fn: Function, options?: AddEventListenerOptions): EventListener;
42
+ /**
43
+ * Unregisters an asynchronous event listener proxy.
44
+ * @param {HTMLElement} el - The target element.
45
+ * @param {string} type - The event name/type.
46
+ * @param {EventListener} listener - The proxy listener instance previously returned by asyncOn.
47
+ * @param {EventListenerOptions} [options] - Native removeEventListener options.
48
+ */
49
+ static asyncOff(el: HTMLElement, type: string, listener: EventListener, options?: EventListenerOptions): void;
50
+ /**
51
+ * Mixes the asynchronous execution engine extensions into target class prototypes.
52
+ * @param {...Function} classes - The target class constructors to decorate.
53
+ */
54
+ static mixInto(...classes: Function[]): void;
55
+ }
56
+ export class AuthorizationCodeFlow {
57
+ static forKeycloak(clientId: any, realmBaseUrl: any, redirectUri: any, maybeScope: any): AuthorizationCodeFlow;
58
+ constructor(clientId: any, scope: any, { auth, token, registration, logout, redirect }: {
59
+ auth: any;
60
+ token: any;
61
+ registration: any;
62
+ logout: any;
63
+ redirect: any;
64
+ });
65
+ clientId: any;
66
+ scope: any;
67
+ uri: {
68
+ auth: any;
69
+ token: any;
70
+ registration: any;
71
+ logout: any;
72
+ redirect: any;
73
+ };
74
+ action(uri: any, additionalParams: any): Promise<void>;
75
+ registration(additionalParams: any): Promise<void>;
76
+ applicationInitiatedAction(kcAction: any, additionalParams: any): Promise<void>;
77
+ ensureLoggedIn(): Promise<AuthorizationCodeFlowSession | null>;
78
+ #private;
79
+ }
80
+ export namespace AuthorizationCodeFlow {
81
+ let PKCE_AND_STATE_KEY: string;
82
+ }
83
+ export class AuthorizationCodeFlowInterceptor {
84
+ constructor(session: any, gracePeriodBefore: any, gracePeriodAfter: any);
85
+ intercept(url: any, request: any, chain: any): Promise<any>;
86
+ #private;
87
+ }
88
+ export class AuthorizationCodeFlowSession {
89
+ static parseToken(token: any): {
90
+ header: any;
91
+ payload: any;
92
+ signature: any;
93
+ };
94
+ constructor(clientId: any, t: any, { token, logout, redirect }: {
95
+ token: any;
96
+ logout: any;
97
+ redirect: any;
98
+ });
99
+ clientId: any;
100
+ token: any;
101
+ idToken: {
102
+ header: any;
103
+ payload: any;
104
+ signature: any;
105
+ };
106
+ accessToken: {
107
+ header: any;
108
+ payload: any;
109
+ signature: any;
110
+ };
111
+ refreshToken: {
112
+ header: any;
113
+ payload: any;
114
+ signature: any;
115
+ };
116
+ uri: {
117
+ token: any;
118
+ logout: any;
119
+ redirect: any;
120
+ };
121
+ refreshCallback: any;
122
+ onRefresh(callback: any): void;
123
+ refresh(): Promise<void>;
124
+ shouldBeRefreshed(gracePeriod: any): boolean;
125
+ refreshIf(gracePeriod: any): Promise<void>;
126
+ logout(): void;
127
+ bearerToken(): string;
128
+ interceptor(gracePeriodBefore: any, gracePeriodAfter: any): AuthorizationCodeFlowInterceptor;
129
+ }
130
+ export class Base64 {
131
+ static encode(arrayBuffer: any, dialect: any): string;
132
+ static decode(str: any, dialect: any): ArrayBuffer;
133
+ }
134
+ export namespace Base64 {
135
+ let STANDARD: string;
136
+ let URL_SAFE: string;
137
+ }
138
+ export class Bindings {
139
+ /**
140
+ * @param {{ [x: string]: any; }} obj
141
+ * @param {string} prefix
142
+ * @param {Set<String>} stops
143
+ * @return {{ [x: string]: any; }}
144
+ */
145
+ static flatten(obj: {
146
+ [x: string]: any;
147
+ }, prefix: string, stops: Set<string>): {
148
+ [x: string]: any;
149
+ };
150
+ /**
151
+ * @param {any} result
152
+ * @param {string} path
153
+ * @param {any} value
154
+ */
155
+ static providePath(result: any, path: string, value: any): any;
156
+ /**
157
+ *
158
+ * @param {Element & {dataset?: any} & {checked?: boolean} & {value?: any}} el
159
+ * @returns
160
+ */
161
+ static extract(el: Element & {
162
+ dataset?: any;
163
+ } & {
164
+ checked?: boolean;
165
+ } & {
166
+ value?: any;
167
+ }): any;
168
+ /**
169
+ *
170
+ * @param {HTMLFormElement} form
171
+ * @param {HTMLElement} [submitter]
172
+ * @returns
173
+ */
174
+ static extractFrom(form: HTMLFormElement, submitter?: HTMLElement): {};
175
+ /**
176
+ *
177
+ * @param {Element & {checked?: boolean} & {value?: any}} el
178
+ * @returns
179
+ */
180
+ static mutate(el: Element & {
181
+ checked?: boolean;
182
+ } & {
183
+ value?: any;
184
+ }, raw: any): void;
185
+ static mutateIn(form: any, values: any): void;
186
+ static errors(form: any, es: any, scrollOnError: any): void;
187
+ }
188
+ export class Checkbox extends ParsedElement {
189
+ static observed: string[];
190
+ static slots: boolean;
191
+ static template: string;
192
+ static formAssociated: boolean;
193
+ internals: ElementInternals;
194
+ render({ slots, observed, disabled }: {
195
+ slots: any;
196
+ observed: any;
197
+ disabled: any;
198
+ }): void;
199
+ set disabled(d: any);
200
+ get disabled(): any;
201
+ set readonly(v: any);
202
+ get readonly(): any;
203
+ set required(d: boolean);
204
+ get required(): boolean;
205
+ set value(value: any);
206
+ get value(): any;
207
+ focus(options: any): void;
208
+ setCustomValidity(error: any): void;
209
+ #private;
210
+ }
211
+ export class Dropdown extends ParsedElement {
212
+ static slots: boolean;
213
+ static template: string;
214
+ static templates: {
215
+ options: string;
216
+ };
217
+ render({ slots }: {
218
+ slots: any;
219
+ }): void;
220
+ acceptSelection(): void;
221
+ update(values: any): void;
222
+ hide(): void;
223
+ get shown(): boolean;
224
+ show(loader: any): Promise<void>;
225
+ moveOrShow(forward: any, loader: any): Promise<void>;
226
+ #private;
227
+ }
228
+ /**
229
+ * @typedef {{ type: string; context: string?; reason: string; details: any?; }} Problem
230
+ */
231
+ export class Failure extends Error {
232
+ static dropProblemsContext(problems: any, prefix: any): any;
233
+ /**
234
+ *
235
+ * @param {string} message
236
+ * @param {Problem[]} problems
237
+ * @param {*} cause
238
+ */
239
+ constructor(message: string, problems: Problem[], cause: any);
240
+ problems: Problem[];
241
+ dropping(prefix: any): Failure;
242
+ }
243
+ export class Form extends ParsedElement {
244
+ form: any;
245
+ render(): void;
246
+ /**
247
+ *
248
+ * @param {HTMLElement} [submitter]
249
+ * @returns
250
+ */
251
+ submit(submitter?: HTMLElement): Promise<void>;
252
+ set errors(es: any);
253
+ reset(): void;
254
+ spinner(spin: any): void;
255
+ set values(vs: {});
256
+ get values(): {};
257
+ }
258
+ export class FormLoader {
259
+ static create(el: any, conf: any): RemoteJsonFormLoader | LocalFormLoader;
260
+ }
261
+ export class Hex {
262
+ static decode(hex: any): Uint8Array<ArrayBuffer>;
263
+ static encode(bytes: any, upper: any): string;
264
+ }
265
+ export class HttpClient {
266
+ /**
267
+ * Creates a builder for an HttpClient.
268
+ * @returns {HttpClientBuilder} the client builder
269
+ */
270
+ static builder(): HttpClientBuilder;
271
+ /**
272
+ * Creates an HttpClient.
273
+ * @param {HttpInterceptor[]|undefined} interceptors - a list of interceptors to be registered for every request performed by the created client.
274
+ */
275
+ constructor(interceptors: HttpInterceptor[] | undefined);
276
+ /**
277
+ * Performs an HTTP exchange.
278
+ * @async
279
+ * @param {string} uri - the (possibly relative) request url
280
+ * @param {RequestInit|undefined} options - fetch options
281
+ * @param {HttpInterceptor[]|undefined} interceptors - the HttpInterceptors to be registered for this exchange.
282
+ * @returns {Promise<Response>} the response
283
+ */
284
+ exchange(uri: string, options: RequestInit | undefined, interceptors: HttpInterceptor[] | undefined): Promise<Response>;
285
+ /**
286
+ * Creates a request builder.
287
+ * @param {string} method - the HTTP method to be used
288
+ * @param {string} uri - the (possibly relative) request url
289
+ * @returns {HttpRequestBuilder} the request builder
290
+ */
291
+ request(method: string, uri: string): HttpRequestBuilder;
292
+ /**
293
+ * Creates a request builder.
294
+ * @param {string} uri - the (possibly relative) request url
295
+ * @returns {HttpRequestBuilder} the request builder
296
+ */
297
+ get(uri: string): HttpRequestBuilder;
298
+ /**
299
+ * Creates a request builder.
300
+ * @param {string} uri - the (possibly relative) request url
301
+ * @returns {HttpRequestBuilder} the request builder
302
+ */
303
+ head(uri: string): HttpRequestBuilder;
304
+ /**
305
+ * Creates a request builder.
306
+ * @param {string} uri - the (possibly relative) request url
307
+ * @returns {HttpRequestBuilder} the request builder
308
+ */
309
+ post(uri: string): HttpRequestBuilder;
310
+ /**
311
+ * Creates a request builder.
312
+ * @param {string} uri - the (possibly relative) request url
313
+ * @returns {HttpRequestBuilder} the request builder
314
+ */
315
+ put(uri: string): HttpRequestBuilder;
316
+ /**
317
+ * Creates a request builder.
318
+ * @param {string} uri - the (possibly relative) request url
319
+ * @returns {HttpRequestBuilder} the request builder
320
+ */
321
+ patch(uri: string): HttpRequestBuilder;
322
+ /**
323
+ * Creates a request builder.
324
+ * @param {string} uri - the (possibly relative) request url
325
+ * @returns {HttpRequestBuilder} the request builder
326
+ */
327
+ delete(uri: string): HttpRequestBuilder;
328
+ #private;
329
+ }
330
+ /**
331
+ * @typedef {Int8Array| Uint8Array| Uint8ClampedArray| Int16Array| Uint16Array| Int32Array| Uint32Array| Float32Array| Float64Array| BigInt64Array| BigUint64Array} TypedArray
332
+ */
333
+ /**
334
+ * @typedef HttpInterceptor
335
+ * @property {function(URL,RequestInit|undefined,HttpInterceptorChain):Promise<Response>} intercept
336
+ */
337
+ export class HttpClientError extends Failure {
338
+ /**
339
+ *
340
+ * @param {string} type
341
+ * @param {any} cause
342
+ * @returns
343
+ */
344
+ static of(type: string, cause: any): HttpClientError;
345
+ /**
346
+ * Creates an HttpClientError from a Response.
347
+ * @param {Response} response
348
+ * @returns an HttpClientError
349
+ */
350
+ static fromResponse(response: Response): Promise<HttpClientError>;
351
+ /**
352
+ * @param {string} message
353
+ * @param {number} status
354
+ * @param {{ type: string; context: string?; reason: string; details: any?; }[]} problems
355
+ * @param {Error|undefined} [cause]
356
+ */
357
+ constructor(message: string, status: number, problems: {
358
+ type: string;
359
+ context: string | null;
360
+ reason: string;
361
+ details: any | null;
362
+ }[], cause?: Error | undefined);
363
+ status: number;
364
+ dropping(prefix: any): HttpClientError;
365
+ }
366
+ export class Input extends ParsedElement {
367
+ static observed: string[];
368
+ static slots: boolean;
369
+ static template: string;
370
+ static formAssociated: boolean;
371
+ _input: any;
372
+ _fieldError: any;
373
+ internals: ElementInternals;
374
+ _type(): string;
375
+ _fragment(type: any, slots: any): any;
376
+ render({ slots, observed, disabled, skipObservedSetup }: {
377
+ slots: any;
378
+ observed: any;
379
+ disabled: any;
380
+ skipObservedSetup: any;
381
+ }): void;
382
+ set disabled(d: any);
383
+ get disabled(): any;
384
+ set readonly(v: any);
385
+ get readonly(): any;
386
+ set required(d: boolean);
387
+ get required(): boolean;
388
+ set value(value: any);
389
+ get value(): any;
390
+ focus(options: any): void;
391
+ setCustomValidity(error: any): void;
392
+ formResetCallback(): void;
393
+ }
394
+ export class InputFile extends Input {
395
+ static l10n: {
396
+ en: {
397
+ dropzonelabel: string;
398
+ unaccepptablefiletype: string;
399
+ maxfilesizeexceeded: string;
400
+ maxtotalsizeexceeded: string;
401
+ maxfilesexceeded: string;
402
+ };
403
+ it: {
404
+ dropzonelabel: string;
405
+ unaccepptablefiletype: string;
406
+ maxfilesizeexceeded: string;
407
+ maxtotalsizeexceeded: string;
408
+ maxfilesexceeded: string;
409
+ };
410
+ };
411
+ static templates: {
412
+ items: string;
413
+ warning: string;
414
+ };
415
+ render(conf: any): void;
416
+ set accept(vs: any);
417
+ get accept(): any;
418
+ set multiple(v: any);
419
+ get multiple(): any;
420
+ set itemlist(v: any);
421
+ get itemlist(): any;
422
+ set dropzone(v: any);
423
+ get dropzone(): any;
424
+ set maxfiles(v: any);
425
+ get maxfiles(): any;
426
+ set maxfilesize(v: any);
427
+ get maxfilesize(): any;
428
+ set maxtotalsize(v: any);
429
+ get maxtotalsize(): any;
430
+ set files(vs: any);
431
+ get files(): any;
432
+ warning(key: any, args: any): void;
433
+ set file(v: any);
434
+ get file(): any;
435
+ get totalsize(): any;
436
+ #private;
437
+ }
438
+ export class InputInstant extends Input {
439
+ render(conf: any): void;
440
+ set min(v: string | null);
441
+ get min(): string | null;
442
+ set max(v: string | null);
443
+ get max(): string | null;
444
+ set step(v: any);
445
+ get step(): any;
446
+ set value(v: string | null);
447
+ get value(): string | null;
448
+ }
449
+ export class InputLocalDate extends Input {
450
+ static #fromIsoOrOffset(v: any): any;
451
+ render(conf: any): void;
452
+ set min(v: any);
453
+ get min(): any;
454
+ set max(v: any);
455
+ get max(): any;
456
+ set step(v: any);
457
+ get step(): any;
458
+ }
459
+ export class InputLocalTime extends InputLocalDate {
460
+ }
461
+ export class Instant extends ParsedElement {
462
+ static isoToLocal(iso: any): string;
463
+ render(): void;
464
+ }
465
+ export class InstantFilter extends Input {
466
+ render(conf: any): void;
467
+ set value(v: any[] | undefined);
468
+ get value(): any[] | undefined;
469
+ #private;
470
+ }
471
+ export class LocalDate extends ParsedElement {
472
+ render(): void;
473
+ }
474
+ export class LocalDateFilter extends Input {
475
+ render(conf: any): void;
476
+ set value(v: any[] | undefined);
477
+ get value(): any[] | undefined;
478
+ #private;
479
+ }
480
+ export class LocalStorage extends Storage {
481
+ static save(k: any, v: any): void;
482
+ static load(k: any): any;
483
+ static remove(k: any): void;
484
+ static pop(k: any): any;
485
+ }
486
+ export class LocalizationModule {
487
+ static t(k: any, ...args: any[]): any;
488
+ static tl(k: any, args: any): any;
489
+ }
490
+ export class MediaType {
491
+ /**
492
+ *
493
+ * @param {string|null|undefined} v
494
+ * @returns
495
+ */
496
+ static parse(v: string | null | undefined): MediaType;
497
+ constructor(type: any, subtype: any);
498
+ get normalized(): string;
499
+ get type(): any;
500
+ get subtype(): any;
501
+ #private;
502
+ }
503
+ export class Pagination extends ParsedElement {
504
+ static observed: string[];
505
+ static l10n: {
506
+ en: {
507
+ showing: string;
508
+ navigation: string;
509
+ previous: string;
510
+ next: string;
511
+ };
512
+ it: {
513
+ showing: string;
514
+ navigation: string;
515
+ previous: string;
516
+ next: string;
517
+ };
518
+ };
519
+ static config: {
520
+ prevIcon: string;
521
+ nextIcon: string;
522
+ reloadIcon: string;
523
+ };
524
+ static template: string;
525
+ render({ observed }: {
526
+ observed: any;
527
+ }): void;
528
+ update(current: any, total: any): void;
529
+ set total(value: number);
530
+ get total(): number;
531
+ set current(value: number);
532
+ get current(): number;
533
+ #private;
534
+ }
535
+ export class Plugin {
536
+ configure(registry: any): void;
537
+ }
538
+ export class RadioGroup extends ParsedElement {
539
+ static observed: string[];
540
+ static slots: boolean;
541
+ static template: string;
542
+ static formAssociated: boolean;
543
+ internals: ElementInternals;
544
+ render({ slots, observed, disabled }: {
545
+ slots: any;
546
+ observed: any;
547
+ disabled: any;
548
+ }): void;
549
+ set disabled(d: any);
550
+ get disabled(): any;
551
+ set readonly(v: any);
552
+ get readonly(): any;
553
+ set required(d: boolean);
554
+ get required(): boolean;
555
+ set value(value: string | boolean | null);
556
+ get value(): string | boolean | null;
557
+ focus(options: any): void;
558
+ setCustomValidity(error: any): void;
559
+ #private;
560
+ }
561
+ export class Select extends ParsedElement {
562
+ static observed: string[];
563
+ static slots: boolean;
564
+ static template: string;
565
+ static templates: {
566
+ items: string;
567
+ };
568
+ static formAssociated: boolean;
569
+ internals: ElementInternals;
570
+ render({ slots, observed, disabled }: {
571
+ slots: any;
572
+ observed: any;
573
+ disabled: any;
574
+ }): Promise<void>;
575
+ set value(vs: any);
576
+ get value(): any;
577
+ set disabled(d: any);
578
+ get disabled(): any;
579
+ set readonly(v: any);
580
+ get readonly(): any;
581
+ set required(d: boolean);
582
+ get required(): boolean;
583
+ set itemlist(v: any);
584
+ get itemlist(): any;
585
+ withLoader(fn: any): Promise<any>;
586
+ get entry(): [any, any] | [any, any][];
587
+ focus(options: any): void;
588
+ setCustomValidity(error: any): void;
589
+ #private;
590
+ }
591
+ export class SelectLoader {
592
+ static create(el: any, conf: any): RemoteLoader | PartialRemoteLoader | InMemoryLoader;
593
+ static #responseMapperFrom(el: any): any;
594
+ }
595
+ export class SessionStorage extends Storage {
596
+ static save(k: any, v: any): void;
597
+ static load(k: any): any;
598
+ static remove(k: any): void;
599
+ static pop(k: any): any;
600
+ }
601
+ export class SortButton extends ParsedElement {
602
+ static observed: string[];
603
+ render(): void;
604
+ set order(value: any);
605
+ get order(): any;
606
+ #private;
607
+ }
608
+ export class Spinner extends ParsedElement {
609
+ static slots: boolean;
610
+ static template: string;
611
+ render({ slots }: {
612
+ slots: any;
613
+ }): void;
614
+ }
615
+ export class Table extends ParsedElement {
616
+ static slots: boolean;
617
+ static l10n: {
618
+ en: {
619
+ initial: string;
620
+ error: string;
621
+ nodata: string;
622
+ };
623
+ it: {
624
+ initial: string;
625
+ error: string;
626
+ nodata: string;
627
+ };
628
+ };
629
+ static config: {
630
+ searchIcon: string;
631
+ };
632
+ static template: string;
633
+ static templates: {
634
+ row: string;
635
+ };
636
+ render({ slots, observed }: {
637
+ slots: any;
638
+ observed: any;
639
+ }): Promise<void>;
640
+ reload(): Promise<void>;
641
+ load(pageRequest: any, sortRequest: any, filterRequest: any): Promise<void>;
642
+ withLoader(fn: any): Promise<any>;
643
+ resetWithFilter(filterRequest: any): Promise<void>;
644
+ #private;
645
+ }
646
+ export class TableSchemaParser {
647
+ static parse(nodeOrFragment: any, template: any): {
648
+ headersTemplate: any;
649
+ rowsTemplate: any;
650
+ sort: {
651
+ sorter: string | null;
652
+ order: string | null;
653
+ };
654
+ length: number;
655
+ };
656
+ }
657
+ export class TextFilter extends Input {
658
+ render(conf: any): void;
659
+ set value(v: any[] | undefined);
660
+ get value(): any[] | undefined;
661
+ #private;
662
+ }
663
+ export class Timing {
664
+ static sleep(ms: any): Promise<any>;
665
+ static DEBOUNCE_DEFAULT: number;
666
+ static DEBOUNCE_IMMEDIATE: number;
667
+ /**
668
+ * Executes only after a period of inactivity (pause in events).
669
+ * Respond to the "end" of a series of events.
670
+ * @param {*} timeoutMs
671
+ * @param {*} func
672
+ * @param {*} [options]
673
+ * @returns {[function, function]}
674
+ */
675
+ static debounce(timeoutMs: any, func: any, options?: any): [Function, Function];
676
+ static THROTTLE_DEFAULT: number;
677
+ static THROTTLE_NO_LEADING: number;
678
+ static THROTTLE_NO_TRAILING: number;
679
+ /**
680
+ * Executes at most once per specified time interval, regardless of ongoing events.
681
+ * @param {*} timeoutMs
682
+ * @param {*} func
683
+ * @param {*} [options]
684
+ * @returns {[function, function]}
685
+ */
686
+ static throttle(timeoutMs: any, func: any, options?: any): [Function, Function];
687
+ }
688
+ export class VersionedLocalStorage {
689
+ static save(key: any, revision: any, data: any): void;
690
+ static load(key: any, revision: any): any;
691
+ }
692
+ export class VersionedSessionStorage {
693
+ static save(key: any, revision: any, data: any): void;
694
+ static load(key: any, revision: any): any;
695
+ }
696
+ declare class HttpInterceptorChain {
697
+ /**
698
+ *
699
+ * @param {HttpInterceptor[]} interceptors
700
+ * @param {number} current
701
+ */
702
+ constructor(interceptors: HttpInterceptor[], current: number);
703
+ /**
704
+ *
705
+ * @param {URL} url
706
+ * @param {RequestInit} request
707
+ * @returns {Promise<Response>} the response
708
+ */
709
+ proceed(url: URL, request: RequestInit): Promise<Response>;
710
+ #private;
711
+ }
712
+ import { ParsedElement } from '@optionfactory/ftl';
713
+ declare class RemoteJsonFormLoader {
714
+ constructor(http: any, url: any, method: any, requestMapper: any, responseMapper: any);
715
+ prepare(values: any, form: any): any;
716
+ submit(values: any, form: any): Promise<any>;
717
+ transform(response: any, form: any): any;
718
+ #private;
719
+ }
720
+ declare class LocalFormLoader {
721
+ constructor(requestMapper: any, responseMapper: any);
722
+ prepare(values: any, form: any): Promise<any>;
723
+ submit(values: any, form: any, response: any): Promise<any>;
724
+ transform(response: any, form: any): Promise<any>;
725
+ #private;
726
+ }
727
+ declare class HttpRequestBuilder {
728
+ /**
729
+ * Creates an HttpRequestBuilder.
730
+ * @param {HttpClient} client
731
+ * @param {string} method - the HTTP method to be used
732
+ * @param {string} uri - the (possibly relative) request url
733
+ * @returns {HttpRequestBuilder} the builder
734
+ */
735
+ static create(client: HttpClient, method: string, uri: string): HttpRequestBuilder;
736
+ /**
737
+ * Creates an HttpRequestBuilder.
738
+ * @param {HttpClient} client
739
+ * @param {string} method - the HTTP method to be used
740
+ * @param {string} uri - the (possibly relative) request url
741
+ * @param {URLSearchParams} params
742
+ * @param {Headers} headers
743
+ * @param {any} body
744
+ * @param {Omit<RequestInit,"headers"|"method"|"body">} options
745
+ * @param {HttpInterceptor[]} interceptors
746
+ */
747
+ constructor(client: HttpClient, method: string, uri: string, params: URLSearchParams, headers: Headers, body: any, options: Omit<RequestInit, "headers" | "method" | "body">, interceptors: HttpInterceptor[]);
748
+ /**
749
+ * Add all passed headers to the request, overriding existing ones if that key already exists. Null and undefined values cause the key to be removed.
750
+ * @param {HeadersInit} hs
751
+ * @returns {HttpRequestBuilder} this builder
752
+ */
753
+ headers(hs: HeadersInit): HttpRequestBuilder;
754
+ /**
755
+ * Adds an header to the request, overriding it if it already exists. Null and undefined values cause the key to be removed
756
+ * @param {string} k
757
+ * @param {string} v
758
+ * @returns {HttpRequestBuilder} this builder
759
+ */
760
+ header(k: string, v: string): HttpRequestBuilder;
761
+ /**
762
+ * Add all query parameters to the request, overriding existing ones if that key already exists. Null and undefined values cause the key to be removed
763
+ * @param {URLSearchParams|Record<string,string>|string[][]|string} ps
764
+ * @returns {HttpRequestBuilder} this builder
765
+ */
766
+ params(ps: URLSearchParams | Record<string, string> | string[][] | string): HttpRequestBuilder;
767
+ /**
768
+ * Adds a query parameter to the request, overriding it if it already exists. Empty vs, or a single null or undefined value cause the key to be removed.
769
+ * @param {string} k
770
+ * @param {...string} vs
771
+ * @returns {HttpRequestBuilder} this builder
772
+ */
773
+ param(k: string, ...vs: string[]): HttpRequestBuilder;
774
+ /**
775
+ * Sets the request body.
776
+ * `Content-Type: multipart/form-data` header is automatically added by fetch when data is a FormData instance if not explicitly set.
777
+ * `Content-Type: application/x-www-form-urlencoded` header is automatically added by fetch when data is an URLSearchParams instance if not explicitly set.
778
+ * `Content-Type: text/plain` header is automatically added by fetch when data is a string instance if not explicitly set.
779
+ * @param {string|ArrayBuffer|Blob|DataView|File|FormData|TypedArray|URLSearchParams|ReadableStream} data
780
+ * @returns {HttpRequestBuilder} this builder
781
+ */
782
+ body(data: string | ArrayBuffer | Blob | DataView | File | FormData | TypedArray | URLSearchParams | ReadableStream): HttpRequestBuilder;
783
+ /**
784
+ * Sets the request body that will be serialized as json. Calling this method adds the `Content-Type application/json` header for the request.
785
+ * @param {any} body - the body to be serialized as json
786
+ * @returns {HttpRequestBuilder} this builder
787
+ */
788
+ json(body: any): HttpRequestBuilder;
789
+ /**
790
+ * Sets the request body as a FormData configured using the callback.
791
+ * `Content-Type: multipart/form-data` header is automatically added by fetch if not explicitly set.
792
+ * @param {function(HttpMultipartRequestCustomizer):void} callback
793
+ */
794
+ multipart(callback: (arg0: HttpMultipartRequestCustomizer) => void): this;
795
+ /**
796
+ * Sets a fetch options for the request.
797
+ * @param {Omit<RequestInit,"headers"|"method"|"body">} kvs
798
+ * @returns {HttpRequestBuilder} this builder
799
+ */
800
+ options(kvs: Omit<RequestInit, "headers" | "method" | "body">): HttpRequestBuilder;
801
+ /**
802
+ * Sets a fetch option for the request.
803
+ * @param {keyof Omit<RequestInit,"headers"|"method"|"body">} k
804
+ * @param {*} v
805
+ * @returns {HttpRequestBuilder} this builder
806
+ */
807
+ option(k: keyof Omit<RequestInit, "headers" | "method" | "body">, v: any): HttpRequestBuilder;
808
+ /**
809
+ * Adds interceptors to the request.
810
+ * @param {[HttpInterceptor]} is - the interceptor to be regisered
811
+ * @returns {HttpRequestBuilder} this builder
812
+ */
813
+ interceptors(is: [HttpInterceptor]): HttpRequestBuilder;
814
+ /**
815
+ * Adds an interceptor to the request.
816
+ * @param {HttpInterceptor} i - the interceptor to be regisered
817
+ * @returns {HttpRequestBuilder} this builder
818
+ */
819
+ interceptor(i: HttpInterceptor): HttpRequestBuilder;
820
+ /**
821
+ * Performs an HTTP exchange using the configured client, request and interceptors.
822
+ * @returns {Promise<Response>} the response
823
+ */
824
+ exchange(): Promise<Response>;
825
+ /**
826
+ * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.
827
+ * @returns {Promise<Response>} the response
828
+ */
829
+ fetch(): Promise<Response>;
830
+ /**
831
+ * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.
832
+ * @returns {Promise<string>} the response body, as text
833
+ */
834
+ fetchText(): Promise<string>;
835
+ /**
836
+ * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.
837
+ * @returns {Promise<any>} the response body, deserialized as JSON
838
+ */
839
+ fetchJson(): Promise<any>;
840
+ /**
841
+ * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.
842
+ * @returns {Promise<Blob>} the response body, as a Blob
843
+ */
844
+ fetchBlob(): Promise<Blob>;
845
+ /**
846
+ * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.
847
+ * @returns {Promise<ArrayBuffer>} the response body, as an ArrayBuffer
848
+ */
849
+ fetchArrayBuffer(): Promise<ArrayBuffer>;
850
+ #private;
851
+ }
852
+ declare class HttpClientBuilder {
853
+ withCsrfToken(): this;
854
+ withRedirectOnUnauthorized(redirectUri: any): this;
855
+ /**
856
+ * @param {...HttpInterceptor} interceptors
857
+ */
858
+ withInterceptors(...interceptors: HttpInterceptor[]): this;
859
+ build(): HttpClient;
860
+ #private;
861
+ }
862
+ declare class RemoteLoader {
863
+ static #revisionedData(http: any, method: any, url: any, revision: any): Promise<any>;
864
+ constructor({ http, url, method, responseMapper, prefetch, revision }: {
865
+ http: any;
866
+ url: any;
867
+ method: any;
868
+ responseMapper: any;
869
+ prefetch: any;
870
+ revision: any;
871
+ });
872
+ prefetch(): Promise<void>;
873
+ exact(...keys: any[]): Promise<any>;
874
+ load(needle: any): Promise<any>;
875
+ reconfigureUrl(url: any): Promise<void>;
876
+ #private;
877
+ }
878
+ declare class PartialRemoteLoader {
879
+ constructor({ http, url, method, responseMapper }: {
880
+ http: any;
881
+ url: any;
882
+ method: any;
883
+ responseMapper: any;
884
+ });
885
+ exact(...keys: any[]): Promise<any>;
886
+ load(needle: any): Promise<any>;
887
+ #private;
888
+ }
889
+ declare class InMemoryLoader {
890
+ constructor(data: any);
891
+ update(data: any): void;
892
+ exact(...keys: any[]): any;
893
+ load(needle: any): any;
894
+ #private;
895
+ }
896
+ declare class HttpMultipartRequestCustomizer {
897
+ /**
898
+ *
899
+ * @param {FormData} formData
900
+ */
901
+ constructor(formData: FormData);
902
+ /**
903
+ * Appends a value to the FormData.
904
+ * @param {string} name
905
+ * @param {*} value
906
+ * @returns this builder
907
+ */
908
+ field(name: string, value: any): this;
909
+ /**
910
+ * Appends a Blob to the FormData.
911
+ * If `filename` is omitted, FormData defaults are applied:
912
+ * The default filename for Blob objects is "blob";
913
+ * The default filename for File objects is the file's filename.
914
+ * @param {string} name
915
+ * @param {Blob} value
916
+ * @param {string|undefined} filename
917
+ * @returns this builder
918
+ */
919
+ blob(name: string, value: Blob, filename: string | undefined): this;
920
+ /**
921
+ * Appends multiple Blobs to the FormData with the same name.
922
+ * The default filename for Blob objects is "blob";
923
+ * The default filename for File objects is the file's filename.
924
+ * @param {string} name
925
+ * @param {Blob[]} values
926
+ * @returns this builder
927
+ */
928
+ blobs(name: string, values: Blob[]): this;
929
+ /**
930
+ * Appends a JSON serialized blob to the FormData.
931
+ * @param {string} name
932
+ * @param {any} value
933
+ * @param {string|undefined} filename
934
+ * @returns this builder
935
+ */
936
+ json(name: string, value: any, filename: string | undefined): this;
937
+ #private;
938
+ }
939
+ export {};
940
+
941
+ export as namespace ful;