@hotwired/turbo 7.2.4 → 7.3.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/turbo.es2017-esm.js +238 -128
- package/dist/turbo.es2017-umd.js +238 -128
- package/dist/types/core/bardo.d.ts +1 -1
- package/dist/types/core/drive/form_submission.d.ts +10 -6
- package/dist/types/core/drive/head_snapshot.d.ts +3 -3
- package/dist/types/core/drive/history.d.ts +3 -3
- package/dist/types/core/drive/navigator.d.ts +2 -2
- package/dist/types/core/drive/page_renderer.d.ts +4 -2
- package/dist/types/core/drive/page_view.d.ts +2 -2
- package/dist/types/core/drive/visit.d.ts +5 -5
- package/dist/types/core/errors.d.ts +2 -0
- package/dist/types/core/frames/frame_controller.d.ts +11 -9
- package/dist/types/core/frames/frame_view.d.ts +2 -2
- package/dist/types/core/index.d.ts +5 -4
- package/dist/types/core/native/browser_adapter.d.ts +1 -1
- package/dist/types/core/renderer.d.ts +2 -2
- package/dist/types/core/session.d.ts +12 -12
- package/dist/types/core/snapshot.d.ts +1 -1
- package/dist/types/core/streams/stream_actions.d.ts +2 -2
- package/dist/types/core/types.d.ts +3 -4
- package/dist/types/core/url.d.ts +1 -1
- package/dist/types/core/view.d.ts +1 -1
- package/dist/types/elements/frame_element.d.ts +1 -1
- package/dist/types/elements/stream_element.d.ts +2 -2
- package/dist/types/http/fetch_request.d.ts +8 -8
- package/dist/types/http/index.d.ts +1 -1
- package/dist/types/observers/appearance_observer.d.ts +6 -6
- package/dist/types/observers/cache_observer.d.ts +5 -1
- package/dist/types/observers/form_link_click_observer.d.ts +1 -1
- package/dist/types/observers/link_click_observer.d.ts +1 -1
- package/dist/types/polyfills/custom-elements-native-shim.d.ts +1 -0
- package/dist/types/tests/functional/frame_tests.d.ts +7 -0
- package/dist/types/tests/helpers/dom_test_case.d.ts +1 -2
- package/dist/types/tests/helpers/page.d.ts +15 -8
- package/dist/types/tests/unit/deprecated_adapter_support_tests.d.ts +1 -0
- package/dist/types/tests/unit/export_tests.d.ts +1 -5
- package/dist/types/tests/unit/stream_element_tests.d.ts +0 -10
- package/dist/types/util.d.ts +3 -1
- package/package.json +17 -11
- package/dist/types/tests/helpers/intern_test_case.d.ts +0 -20
- package/dist/types/tests/unit/deprecated_adapter_support_test.d.ts +0 -24
- package/dist/types/tests/unit/index.d.ts +0 -3
- /package/dist/types/tests/{functional → integration}/ujs_tests.d.ts +0 -0
|
@@ -6,7 +6,7 @@ export interface BardoDelegate {
|
|
|
6
6
|
export declare class Bardo {
|
|
7
7
|
readonly permanentElementMap: PermanentElementMap;
|
|
8
8
|
readonly delegate: BardoDelegate;
|
|
9
|
-
static preservingPermanentElements(delegate: BardoDelegate, permanentElementMap: PermanentElementMap, callback: () => void): void
|
|
9
|
+
static preservingPermanentElements(delegate: BardoDelegate, permanentElementMap: PermanentElementMap, callback: () => void): Promise<void>;
|
|
10
10
|
constructor(delegate: BardoDelegate, permanentElementMap: PermanentElementMap);
|
|
11
11
|
enter(): void;
|
|
12
12
|
leave(): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FetchRequest, FetchMethod
|
|
1
|
+
import { FetchRequest, FetchMethod } from "../../http/fetch_request";
|
|
2
2
|
import { FetchResponse } from "../../http/fetch_response";
|
|
3
3
|
export interface FormSubmissionDelegate {
|
|
4
4
|
formSubmissionStarted(formSubmission: FormSubmission): void;
|
|
@@ -7,7 +7,7 @@ export interface FormSubmissionDelegate {
|
|
|
7
7
|
formSubmissionErrored(formSubmission: FormSubmission, error: Error): void;
|
|
8
8
|
formSubmissionFinished(formSubmission: FormSubmission): void;
|
|
9
9
|
}
|
|
10
|
-
export
|
|
10
|
+
export type FormSubmissionResult = {
|
|
11
11
|
success: boolean;
|
|
12
12
|
fetchResponse: FetchResponse;
|
|
13
13
|
} | {
|
|
@@ -27,10 +27,10 @@ declare enum FormEnctype {
|
|
|
27
27
|
multipart = "multipart/form-data",
|
|
28
28
|
plain = "text/plain"
|
|
29
29
|
}
|
|
30
|
-
export
|
|
30
|
+
export type TurboSubmitStartEvent = CustomEvent<{
|
|
31
31
|
formSubmission: FormSubmission;
|
|
32
32
|
}>;
|
|
33
|
-
export
|
|
33
|
+
export type TurboSubmitEndEvent = CustomEvent<{
|
|
34
34
|
formSubmission: FormSubmission;
|
|
35
35
|
} & {
|
|
36
36
|
[K in keyof FormSubmissionResult]?: FormSubmissionResult[K];
|
|
@@ -45,24 +45,28 @@ export declare class FormSubmission {
|
|
|
45
45
|
readonly mustRedirect: boolean;
|
|
46
46
|
state: FormSubmissionState;
|
|
47
47
|
result?: FormSubmissionResult;
|
|
48
|
+
originalSubmitText?: string;
|
|
48
49
|
static confirmMethod(message: string, _element: HTMLFormElement, _submitter: HTMLElement | undefined): Promise<boolean>;
|
|
49
50
|
constructor(delegate: FormSubmissionDelegate, formElement: HTMLFormElement, submitter?: HTMLElement, mustRedirect?: boolean);
|
|
50
51
|
get method(): FetchMethod;
|
|
51
52
|
get action(): string;
|
|
52
53
|
get body(): FormData;
|
|
53
54
|
get enctype(): FormEnctype;
|
|
54
|
-
get
|
|
55
|
+
get isSafe(): boolean;
|
|
55
56
|
get stringFormData(): [string, string][];
|
|
56
57
|
start(): Promise<void | FetchResponse>;
|
|
57
58
|
stop(): true | undefined;
|
|
58
|
-
|
|
59
|
+
prepareRequest(request: FetchRequest): void;
|
|
59
60
|
requestStarted(_request: FetchRequest): void;
|
|
60
61
|
requestPreventedHandlingResponse(request: FetchRequest, response: FetchResponse): void;
|
|
61
62
|
requestSucceededWithResponse(request: FetchRequest, response: FetchResponse): void;
|
|
62
63
|
requestFailedWithResponse(request: FetchRequest, response: FetchResponse): void;
|
|
63
64
|
requestErrored(request: FetchRequest, error: Error): void;
|
|
64
65
|
requestFinished(_request: FetchRequest): void;
|
|
66
|
+
setSubmitsWith(): void;
|
|
67
|
+
resetSubmitterText(): void;
|
|
65
68
|
requestMustRedirect(request: FetchRequest): boolean;
|
|
66
69
|
requestAcceptsTurboStreamResponse(request: FetchRequest): boolean;
|
|
70
|
+
get submitsWith(): string | null | undefined;
|
|
67
71
|
}
|
|
68
72
|
export {};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Snapshot } from "../snapshot";
|
|
2
|
-
|
|
2
|
+
type ElementDetailMap = {
|
|
3
3
|
[outerHTML: string]: ElementDetails;
|
|
4
4
|
};
|
|
5
|
-
|
|
5
|
+
type ElementDetails = {
|
|
6
6
|
type?: ElementType;
|
|
7
7
|
tracked: boolean;
|
|
8
8
|
elements: Element[];
|
|
9
9
|
};
|
|
10
|
-
|
|
10
|
+
type ElementType = "script" | "stylesheet";
|
|
11
11
|
export declare class HeadSnapshot extends Snapshot<HTMLHeadElement> {
|
|
12
12
|
readonly detailsByOuterHTML: ElementDetailMap;
|
|
13
13
|
get trackedElementSignature(): string;
|
|
@@ -2,11 +2,11 @@ import { Position } from "../types";
|
|
|
2
2
|
export interface HistoryDelegate {
|
|
3
3
|
historyPoppedToLocationWithRestorationIdentifier(location: URL, restorationIdentifier: string): void;
|
|
4
4
|
}
|
|
5
|
-
|
|
6
|
-
export
|
|
5
|
+
type HistoryMethod = (this: typeof history, state: any, title: string, url?: string | null | undefined) => void;
|
|
6
|
+
export type RestorationData = {
|
|
7
7
|
scrollPosition?: Position;
|
|
8
8
|
};
|
|
9
|
-
export
|
|
9
|
+
export type RestorationDataMap = {
|
|
10
10
|
[restorationIdentifier: string]: RestorationData;
|
|
11
11
|
};
|
|
12
12
|
export declare class History {
|
|
@@ -3,7 +3,7 @@ import { FetchResponse } from "../../http/fetch_response";
|
|
|
3
3
|
import { FormSubmission } from "./form_submission";
|
|
4
4
|
import { Locatable } from "../url";
|
|
5
5
|
import { Visit, VisitDelegate, VisitOptions } from "./visit";
|
|
6
|
-
export
|
|
6
|
+
export type NavigatorDelegate = VisitDelegate & {
|
|
7
7
|
allowsVisitingLocationWithAction(location: URL, action?: Action): boolean;
|
|
8
8
|
visitProposedToLocation(location: URL, options: Partial<VisitOptions>): void;
|
|
9
9
|
notifyApplicationAfterVisitingSamePageLocation(oldURL: URL, newURL: URL): void;
|
|
@@ -31,5 +31,5 @@ export declare class Navigator {
|
|
|
31
31
|
visitScrolledToSamePageLocation(oldURL: URL, newURL: URL): void;
|
|
32
32
|
get location(): URL;
|
|
33
33
|
get restorationIdentifier(): string;
|
|
34
|
-
getActionForFormSubmission(
|
|
34
|
+
getActionForFormSubmission({ submitter, formElement }: FormSubmission): Action;
|
|
35
35
|
}
|
|
@@ -12,15 +12,17 @@ export declare class PageRenderer extends Renderer<HTMLBodyElement, PageSnapshot
|
|
|
12
12
|
get newHeadSnapshot(): import("./head_snapshot").HeadSnapshot;
|
|
13
13
|
get newElement(): HTMLBodyElement;
|
|
14
14
|
mergeHead(): Promise<void>;
|
|
15
|
-
replaceBody(): void
|
|
15
|
+
replaceBody(): Promise<void>;
|
|
16
16
|
get trackedElementsAreIdentical(): boolean;
|
|
17
17
|
copyNewHeadStylesheetElements(): Promise<void>;
|
|
18
18
|
copyNewHeadScriptElements(): void;
|
|
19
|
+
mergeProvisionalElements(): Promise<void>;
|
|
20
|
+
isCurrentElementInElementList(element: Element, elementList: Element[]): boolean;
|
|
19
21
|
removeCurrentHeadProvisionalElements(): void;
|
|
20
22
|
copyNewHeadProvisionalElements(): void;
|
|
21
23
|
activateNewBody(): void;
|
|
22
24
|
activateNewBodyScriptElements(): void;
|
|
23
|
-
assignNewBody(): void
|
|
25
|
+
assignNewBody(): Promise<void>;
|
|
24
26
|
get newHeadStylesheetElements(): HTMLLinkElement[];
|
|
25
27
|
get newHeadScriptElements(): HTMLScriptElement[];
|
|
26
28
|
get currentHeadProvisionalElements(): Element[];
|
|
@@ -4,11 +4,11 @@ import { PageRenderer } from "./page_renderer";
|
|
|
4
4
|
import { PageSnapshot } from "./page_snapshot";
|
|
5
5
|
import { SnapshotCache } from "./snapshot_cache";
|
|
6
6
|
import { Visit } from "./visit";
|
|
7
|
-
export
|
|
7
|
+
export type PageViewRenderOptions = ViewRenderOptions<HTMLBodyElement>;
|
|
8
8
|
export interface PageViewDelegate extends ViewDelegate<HTMLBodyElement, PageSnapshot> {
|
|
9
9
|
viewWillCacheSnapshot(): void;
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
type PageViewRenderer = PageRenderer | ErrorRenderer;
|
|
12
12
|
export declare class PageView extends View<HTMLBodyElement, PageSnapshot, PageViewRenderer, PageViewDelegate> {
|
|
13
13
|
readonly snapshotCache: SnapshotCache;
|
|
14
14
|
lastRenderedLocation: URL;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Adapter } from "../native/adapter";
|
|
2
|
-
import { FetchRequest, FetchRequestDelegate
|
|
2
|
+
import { FetchRequest, FetchRequestDelegate } from "../../http/fetch_request";
|
|
3
3
|
import { FetchResponse } from "../../http/fetch_response";
|
|
4
4
|
import { History } from "./history";
|
|
5
5
|
import { Snapshot } from "../snapshot";
|
|
@@ -21,7 +21,7 @@ export declare enum TimingMetric {
|
|
|
21
21
|
requestEnd = "requestEnd",
|
|
22
22
|
visitEnd = "visitEnd"
|
|
23
23
|
}
|
|
24
|
-
export
|
|
24
|
+
export type TimingMetrics = Partial<{
|
|
25
25
|
[metric in TimingMetric]: any;
|
|
26
26
|
}>;
|
|
27
27
|
export declare enum VisitState {
|
|
@@ -31,7 +31,7 @@ export declare enum VisitState {
|
|
|
31
31
|
failed = "failed",
|
|
32
32
|
completed = "completed"
|
|
33
33
|
}
|
|
34
|
-
export
|
|
34
|
+
export type VisitOptions = {
|
|
35
35
|
action: Action;
|
|
36
36
|
historyChanged: boolean;
|
|
37
37
|
referrer?: URL;
|
|
@@ -46,7 +46,7 @@ export declare type VisitOptions = {
|
|
|
46
46
|
frame?: string;
|
|
47
47
|
acceptsStreamResponse: boolean;
|
|
48
48
|
};
|
|
49
|
-
export
|
|
49
|
+
export type VisitResponse = {
|
|
50
50
|
statusCode: number;
|
|
51
51
|
redirected: boolean;
|
|
52
52
|
responseHTML?: string;
|
|
@@ -104,7 +104,7 @@ export declare class Visit implements FetchRequestDelegate {
|
|
|
104
104
|
loadCachedSnapshot(): void;
|
|
105
105
|
followRedirect(): void;
|
|
106
106
|
goToSamePageAnchor(): void;
|
|
107
|
-
|
|
107
|
+
prepareRequest(request: FetchRequest): void;
|
|
108
108
|
requestStarted(): void;
|
|
109
109
|
requestPreventedHandlingResponse(_request: FetchRequest, _response: FetchResponse): void;
|
|
110
110
|
requestSucceededWithResponse(request: FetchRequest, response: FetchResponse): Promise<void>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FrameElement, FrameElementDelegate, FrameLoadingStyle } from "../../elements/frame_element";
|
|
2
|
-
import { FetchRequest, FetchRequestDelegate
|
|
2
|
+
import { FetchRequest, FetchRequestDelegate } from "../../http/fetch_request";
|
|
3
3
|
import { FetchResponse } from "../../http/fetch_response";
|
|
4
4
|
import { AppearanceObserver, AppearanceObserverDelegate } from "../../observers/appearance_observer";
|
|
5
5
|
import { FormSubmission, FormSubmissionDelegate } from "../drive/form_submission";
|
|
@@ -11,16 +11,15 @@ import { FrameView } from "./frame_view";
|
|
|
11
11
|
import { LinkInterceptor, LinkInterceptorDelegate } from "./link_interceptor";
|
|
12
12
|
import { FormLinkClickObserver, FormLinkClickObserverDelegate } from "../../observers/form_link_click_observer";
|
|
13
13
|
import { VisitOptions } from "../drive/visit";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export declare type TurboFrameMissingEvent = CustomEvent<{
|
|
14
|
+
type VisitFallback = (location: Response | Locatable, options: Partial<VisitOptions>) => Promise<void>;
|
|
15
|
+
export type TurboFrameMissingEvent = CustomEvent<{
|
|
17
16
|
response: Response;
|
|
18
17
|
visit: VisitFallback;
|
|
19
18
|
}>;
|
|
20
|
-
export declare class FrameController implements AppearanceObserverDelegate
|
|
19
|
+
export declare class FrameController implements AppearanceObserverDelegate<FrameElement>, FetchRequestDelegate, FormSubmitObserverDelegate, FormSubmissionDelegate, FrameElementDelegate, FormLinkClickObserverDelegate, LinkInterceptorDelegate, ViewDelegate<FrameElement, Snapshot<FrameElement>> {
|
|
21
20
|
readonly element: FrameElement;
|
|
22
21
|
readonly view: FrameView;
|
|
23
|
-
readonly appearanceObserver: AppearanceObserver
|
|
22
|
+
readonly appearanceObserver: AppearanceObserver<FrameElement>;
|
|
24
23
|
readonly formLinkClickObserver: FormLinkClickObserver;
|
|
25
24
|
readonly linkInterceptor: LinkInterceptor;
|
|
26
25
|
readonly formSubmitObserver: FormSubmitObserver;
|
|
@@ -35,7 +34,6 @@ export declare class FrameController implements AppearanceObserverDelegate, Fetc
|
|
|
35
34
|
readonly restorationIdentifier: string;
|
|
36
35
|
private previousFrameElement?;
|
|
37
36
|
private currentNavigationElement?;
|
|
38
|
-
pageSnapshot?: PageSnapshot;
|
|
39
37
|
constructor(element: FrameElement);
|
|
40
38
|
connect(): void;
|
|
41
39
|
disconnect(): void;
|
|
@@ -46,14 +44,14 @@ export declare class FrameController implements AppearanceObserverDelegate, Fetc
|
|
|
46
44
|
loadingStyleChanged(): void;
|
|
47
45
|
private loadSourceURL;
|
|
48
46
|
loadResponse(fetchResponse: FetchResponse): Promise<void>;
|
|
49
|
-
elementAppearedInViewport(
|
|
47
|
+
elementAppearedInViewport(element: FrameElement): void;
|
|
50
48
|
willSubmitFormLinkToLocation(link: Element): boolean;
|
|
51
49
|
submittedFormLinkToLocation(link: Element, _location: URL, form: HTMLFormElement): void;
|
|
52
50
|
shouldInterceptLinkClick(element: Element, _location: string, _event: MouseEvent): boolean;
|
|
53
51
|
linkClickIntercepted(element: Element, location: string): void;
|
|
54
52
|
willSubmitForm(element: HTMLFormElement, submitter?: HTMLElement): boolean;
|
|
55
53
|
formSubmitted(element: HTMLFormElement, submitter?: HTMLElement): void;
|
|
56
|
-
|
|
54
|
+
prepareRequest(request: FetchRequest): void;
|
|
57
55
|
requestStarted(_request: FetchRequest): void;
|
|
58
56
|
requestPreventedHandlingResponse(_request: FetchRequest, _response: FetchResponse): void;
|
|
59
57
|
requestSucceededWithResponse(request: FetchRequest, response: FetchResponse): Promise<void>;
|
|
@@ -71,11 +69,15 @@ export declare class FrameController implements AppearanceObserverDelegate, Fetc
|
|
|
71
69
|
viewInvalidated(): void;
|
|
72
70
|
willRenderFrame(currentElement: FrameElement, _newElement: FrameElement): void;
|
|
73
71
|
visitCachedSnapshot: ({ element }: Snapshot) => void;
|
|
72
|
+
private loadFrameResponse;
|
|
74
73
|
private visit;
|
|
75
74
|
private navigateFrame;
|
|
76
75
|
proposeVisitIfNavigatedWithAction(frame: FrameElement, element: Element, submitter?: HTMLElement): void;
|
|
77
76
|
changeHistory(): void;
|
|
77
|
+
private handleUnvisitableFrameResponse;
|
|
78
78
|
private willHandleFrameMissingFromResponse;
|
|
79
|
+
private handleFrameMissingFromResponse;
|
|
80
|
+
private throwFrameMissingError;
|
|
79
81
|
private visitResponse;
|
|
80
82
|
private findFrameElement;
|
|
81
83
|
extractForeignFrameElement(container: ParentNode): Promise<FrameElement | null>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FrameElement } from "../../elements";
|
|
2
2
|
import { Snapshot } from "../snapshot";
|
|
3
3
|
import { View, ViewRenderOptions } from "../view";
|
|
4
|
-
export
|
|
4
|
+
export type FrameViewRenderOptions = ViewRenderOptions<FrameElement>;
|
|
5
5
|
export declare class FrameView extends View<FrameElement> {
|
|
6
|
-
|
|
6
|
+
missing(): void;
|
|
7
7
|
get snapshot(): Snapshot<FrameElement>;
|
|
8
8
|
}
|
|
@@ -12,10 +12,11 @@ declare const session: Session;
|
|
|
12
12
|
declare const cache: Cache;
|
|
13
13
|
declare const navigator: import("./drive/navigator").Navigator;
|
|
14
14
|
export { navigator, session, cache, PageRenderer, PageSnapshot, FrameRenderer };
|
|
15
|
-
export { TurboBeforeCacheEvent, TurboBeforeRenderEvent, TurboBeforeVisitEvent, TurboClickEvent, TurboBeforeFrameRenderEvent, TurboFrameLoadEvent, TurboFrameRenderEvent, TurboLoadEvent, TurboRenderEvent, TurboVisitEvent, } from "./session";
|
|
16
|
-
export { TurboSubmitStartEvent, TurboSubmitEndEvent } from "./drive/form_submission";
|
|
17
|
-
export { TurboFrameMissingEvent } from "./frames/frame_controller";
|
|
18
|
-
export { StreamActions
|
|
15
|
+
export type { TurboBeforeCacheEvent, TurboBeforeRenderEvent, TurboBeforeVisitEvent, TurboClickEvent, TurboBeforeFrameRenderEvent, TurboFrameLoadEvent, TurboFrameRenderEvent, TurboLoadEvent, TurboRenderEvent, TurboVisitEvent, } from "./session";
|
|
16
|
+
export type { TurboSubmitStartEvent, TurboSubmitEndEvent } from "./drive/form_submission";
|
|
17
|
+
export type { TurboFrameMissingEvent } from "./frames/frame_controller";
|
|
18
|
+
export { StreamActions } from "./streams/stream_actions";
|
|
19
|
+
export type { TurboStreamAction, TurboStreamActions } from "./streams/stream_actions";
|
|
19
20
|
export declare function start(): void;
|
|
20
21
|
export declare function registerAdapter(adapter: Adapter): void;
|
|
21
22
|
export declare function visit(location: Locatable, options?: Partial<VisitOptions>): void;
|
|
@@ -3,7 +3,7 @@ import { ProgressBar } from "../drive/progress_bar";
|
|
|
3
3
|
import { Visit, VisitOptions } from "../drive/visit";
|
|
4
4
|
import { FormSubmission } from "../drive/form_submission";
|
|
5
5
|
import { Session } from "../session";
|
|
6
|
-
export
|
|
6
|
+
export type ReloadReason = StructuredReason | undefined;
|
|
7
7
|
interface StructuredReason {
|
|
8
8
|
reason: string;
|
|
9
9
|
context?: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BardoDelegate } from "./bardo";
|
|
2
2
|
import { Snapshot } from "./snapshot";
|
|
3
3
|
import { ReloadReason } from "./native/browser_adapter";
|
|
4
|
-
export
|
|
4
|
+
export type Render<E> = (currentElement: E, newElement: E) => void;
|
|
5
5
|
export declare abstract class Renderer<E extends Element, S extends Snapshot<E> = Snapshot<E>> implements BardoDelegate {
|
|
6
6
|
readonly currentSnapshot: S;
|
|
7
7
|
readonly newSnapshot: S;
|
|
@@ -17,7 +17,7 @@ export declare abstract class Renderer<E extends Element, S extends Snapshot<E>
|
|
|
17
17
|
prepareToRender(): void;
|
|
18
18
|
abstract render(): Promise<void>;
|
|
19
19
|
finishRendering(): void;
|
|
20
|
-
preservingPermanentElements(callback: () => void): void
|
|
20
|
+
preservingPermanentElements(callback: () => void): Promise<void>;
|
|
21
21
|
focusFirstAutofocusableElement(): void;
|
|
22
22
|
enteringBardo(currentPermanentElement: Element): void;
|
|
23
23
|
leavingBardo(currentPermanentElement: Element): void;
|
|
@@ -21,32 +21,32 @@ import { FrameElement } from "../elements/frame_element";
|
|
|
21
21
|
import { FrameViewRenderOptions } from "./frames/frame_view";
|
|
22
22
|
import { FetchResponse } from "../http/fetch_response";
|
|
23
23
|
import { Preloader, PreloaderDelegate } from "./drive/preloader";
|
|
24
|
-
export
|
|
25
|
-
export
|
|
26
|
-
export
|
|
27
|
-
export
|
|
24
|
+
export type FormMode = "on" | "off" | "optin";
|
|
25
|
+
export type TimingData = unknown;
|
|
26
|
+
export type TurboBeforeCacheEvent = CustomEvent;
|
|
27
|
+
export type TurboBeforeRenderEvent = CustomEvent<{
|
|
28
28
|
newBody: HTMLBodyElement;
|
|
29
29
|
} & PageViewRenderOptions>;
|
|
30
|
-
export
|
|
30
|
+
export type TurboBeforeVisitEvent = CustomEvent<{
|
|
31
31
|
url: string;
|
|
32
32
|
}>;
|
|
33
|
-
export
|
|
33
|
+
export type TurboClickEvent = CustomEvent<{
|
|
34
34
|
url: string;
|
|
35
35
|
originalEvent: MouseEvent;
|
|
36
36
|
}>;
|
|
37
|
-
export
|
|
38
|
-
export
|
|
37
|
+
export type TurboFrameLoadEvent = CustomEvent;
|
|
38
|
+
export type TurboBeforeFrameRenderEvent = CustomEvent<{
|
|
39
39
|
newFrame: FrameElement;
|
|
40
40
|
} & FrameViewRenderOptions>;
|
|
41
|
-
export
|
|
41
|
+
export type TurboFrameRenderEvent = CustomEvent<{
|
|
42
42
|
fetchResponse: FetchResponse;
|
|
43
43
|
}>;
|
|
44
|
-
export
|
|
44
|
+
export type TurboLoadEvent = CustomEvent<{
|
|
45
45
|
url: string;
|
|
46
46
|
timing: TimingData;
|
|
47
47
|
}>;
|
|
48
|
-
export
|
|
49
|
-
export
|
|
48
|
+
export type TurboRenderEvent = CustomEvent;
|
|
49
|
+
export type TurboVisitEvent = CustomEvent<{
|
|
50
50
|
url: string;
|
|
51
51
|
action: Action;
|
|
52
52
|
}>;
|
|
@@ -13,4 +13,4 @@ export declare class Snapshot<E extends Element = Element> {
|
|
|
13
13
|
}
|
|
14
14
|
export declare function getPermanentElementById(node: ParentNode, id: string): Element | null;
|
|
15
15
|
export declare function queryPermanentElementsAll(node: ParentNode): NodeListOf<Element>;
|
|
16
|
-
export
|
|
16
|
+
export type PermanentElementMap = Record<string, [Element, Element]>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { StreamElement } from "../../elements/stream_element";
|
|
2
|
-
export
|
|
3
|
-
export
|
|
2
|
+
export type TurboStreamAction = (this: StreamElement) => void;
|
|
3
|
+
export type TurboStreamActions = {
|
|
4
4
|
[action: string]: TurboStreamAction;
|
|
5
5
|
};
|
|
6
6
|
export declare const StreamActions: TurboStreamActions;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export declare type Position = {
|
|
1
|
+
export type Action = "advance" | "replace" | "restore";
|
|
2
|
+
export type Position = {
|
|
4
3
|
x: number;
|
|
5
4
|
y: number;
|
|
6
5
|
};
|
|
7
|
-
export
|
|
6
|
+
export type StreamSource = {
|
|
8
7
|
addEventListener(type: "message", listener: (event: MessageEvent) => void, options?: boolean | AddEventListenerOptions): void;
|
|
9
8
|
removeEventListener(type: "message", listener: (event: MessageEvent) => void, options?: boolean | EventListenerOptions): void;
|
|
10
9
|
};
|
package/dist/types/core/url.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type Locatable = URL | string;
|
|
2
2
|
export declare function expandURL(locatable: Locatable): URL;
|
|
3
3
|
export declare function getAnchor(url: URL): string | undefined;
|
|
4
4
|
export declare function getAction(form: HTMLFormElement, submitter?: HTMLElement): URL;
|
|
@@ -3,7 +3,7 @@ import { Renderer, Render } from "./renderer";
|
|
|
3
3
|
import { Snapshot } from "./snapshot";
|
|
4
4
|
import { Position } from "./types";
|
|
5
5
|
export interface ViewRenderOptions<E> {
|
|
6
|
-
resume: (value
|
|
6
|
+
resume: (value?: any) => void;
|
|
7
7
|
render: Render<E>;
|
|
8
8
|
}
|
|
9
9
|
export interface ViewDelegate<E extends Element, S extends Snapshot<E>> {
|
|
@@ -6,7 +6,7 @@ export declare enum FrameLoadingStyle {
|
|
|
6
6
|
eager = "eager",
|
|
7
7
|
lazy = "lazy"
|
|
8
8
|
}
|
|
9
|
-
export
|
|
9
|
+
export type FrameElementObservedAttribute = keyof FrameElement & ("disabled" | "complete" | "loading" | "src");
|
|
10
10
|
export interface FrameElementDelegate extends LinkInterceptorDelegate, FormSubmitObserverDelegate {
|
|
11
11
|
connect(): void;
|
|
12
12
|
disconnect(): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
type Render = (currentElement: StreamElement) => Promise<void>;
|
|
2
|
+
export type TurboBeforeStreamRenderEvent = CustomEvent<{
|
|
3
3
|
newStream: StreamElement;
|
|
4
4
|
render: Render;
|
|
5
5
|
}>;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { FetchResponse } from "./fetch_response";
|
|
2
2
|
import { FrameElement } from "../elements/frame_element";
|
|
3
|
-
export
|
|
3
|
+
export type TurboBeforeFetchRequestEvent = CustomEvent<{
|
|
4
4
|
fetchOptions: RequestInit;
|
|
5
5
|
url: URL;
|
|
6
|
-
resume: (value
|
|
6
|
+
resume: (value?: any) => void;
|
|
7
7
|
}>;
|
|
8
|
-
export
|
|
8
|
+
export type TurboBeforeFetchResponseEvent = CustomEvent<{
|
|
9
9
|
fetchResponse: FetchResponse;
|
|
10
10
|
}>;
|
|
11
|
-
export
|
|
11
|
+
export type TurboFetchRequestErrorEvent = CustomEvent<{
|
|
12
12
|
request: FetchRequest;
|
|
13
13
|
error: Error;
|
|
14
14
|
}>;
|
|
15
15
|
export interface FetchRequestDelegate {
|
|
16
16
|
referrer?: URL;
|
|
17
|
-
|
|
17
|
+
prepareRequest(request: FetchRequest): void;
|
|
18
18
|
requestStarted(request: FetchRequest): void;
|
|
19
19
|
requestPreventedHandlingResponse(request: FetchRequest, response: FetchResponse): void;
|
|
20
20
|
requestSucceededWithResponse(request: FetchRequest, response: FetchResponse): void;
|
|
@@ -30,8 +30,8 @@ export declare enum FetchMethod {
|
|
|
30
30
|
delete = 4
|
|
31
31
|
}
|
|
32
32
|
export declare function fetchMethodFromString(method: string): FetchMethod | undefined;
|
|
33
|
-
export
|
|
34
|
-
export
|
|
33
|
+
export type FetchRequestBody = FormData | URLSearchParams;
|
|
34
|
+
export type FetchRequestHeaders = {
|
|
35
35
|
[header: string]: string;
|
|
36
36
|
};
|
|
37
37
|
export interface FetchRequestOptions {
|
|
@@ -59,7 +59,7 @@ export declare class FetchRequest {
|
|
|
59
59
|
get defaultHeaders(): {
|
|
60
60
|
Accept: string;
|
|
61
61
|
};
|
|
62
|
-
get
|
|
62
|
+
get isSafe(): boolean;
|
|
63
63
|
get abortSignal(): AbortSignal;
|
|
64
64
|
acceptResponseType(mimeType: string): void;
|
|
65
65
|
private allowRequestToBeIntercepted;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { TurboBeforeFetchRequestEvent, TurboBeforeFetchResponseEvent, TurboFetchRequestErrorEvent, } from "./fetch_request";
|
|
1
|
+
export type { TurboBeforeFetchRequestEvent, TurboBeforeFetchResponseEvent, TurboFetchRequestErrorEvent, } from "./fetch_request";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export interface AppearanceObserverDelegate {
|
|
2
|
-
elementAppearedInViewport(element:
|
|
1
|
+
export interface AppearanceObserverDelegate<T extends Element> {
|
|
2
|
+
elementAppearedInViewport(element: T): void;
|
|
3
3
|
}
|
|
4
|
-
export declare class AppearanceObserver {
|
|
5
|
-
readonly delegate: AppearanceObserverDelegate
|
|
6
|
-
readonly element:
|
|
4
|
+
export declare class AppearanceObserver<T extends Element> {
|
|
5
|
+
readonly delegate: AppearanceObserverDelegate<T>;
|
|
6
|
+
readonly element: T;
|
|
7
7
|
readonly intersectionObserver: IntersectionObserver;
|
|
8
8
|
started: boolean;
|
|
9
|
-
constructor(delegate: AppearanceObserverDelegate
|
|
9
|
+
constructor(delegate: AppearanceObserverDelegate<T>, element: T);
|
|
10
10
|
start(): void;
|
|
11
11
|
stop(): void;
|
|
12
12
|
intersect: IntersectionObserverCallback;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export declare class CacheObserver {
|
|
2
|
+
readonly selector: string;
|
|
3
|
+
readonly deprecatedSelector: string;
|
|
2
4
|
started: boolean;
|
|
3
5
|
start(): void;
|
|
4
6
|
stop(): void;
|
|
5
|
-
|
|
7
|
+
removeTemporaryElements: EventListener;
|
|
8
|
+
get temporaryElements(): Element[];
|
|
9
|
+
get temporaryElementsWithDeprecation(): Element[];
|
|
6
10
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LinkClickObserver, LinkClickObserverDelegate } from "./link_click_observer";
|
|
2
|
-
export
|
|
2
|
+
export type FormLinkClickObserverDelegate = {
|
|
3
3
|
willSubmitFormLinkToLocation(link: Element, location: URL, event: MouseEvent): boolean;
|
|
4
4
|
submittedFormLinkToLocation(link: Element, location: URL, form: HTMLFormElement): void;
|
|
5
5
|
};
|
|
@@ -12,6 +12,6 @@ export declare class LinkClickObserver {
|
|
|
12
12
|
clickCaptured: () => void;
|
|
13
13
|
clickBubbled: (event: Event) => void;
|
|
14
14
|
clickEventIsSignificant(event: MouseEvent): boolean;
|
|
15
|
-
findLinkFromClickTarget(target: EventTarget | null): HTMLAnchorElement |
|
|
15
|
+
findLinkFromClickTarget(target: EventTarget | null): HTMLAnchorElement | undefined;
|
|
16
16
|
getLocationForLink(link: Element): URL;
|
|
17
17
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { JSHandle, Locator, Page } from "@playwright/test";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
type Target = string | null;
|
|
3
|
+
type EventType = string;
|
|
4
|
+
type EventDetail = any;
|
|
5
|
+
type EventLog = [EventType, EventDetail, Target];
|
|
6
|
+
type MutationAttributeName = string;
|
|
7
|
+
type MutationAttributeValue = string | null;
|
|
8
|
+
type MutationLog = [MutationAttributeName, Target, MutationAttributeValue];
|
|
9
|
+
type BodyHTML = string;
|
|
10
|
+
type BodyMutationLog = [BodyHTML];
|
|
9
11
|
export declare function attributeForSelector(page: Page, selector: string, attributeName: string): Promise<string | null>;
|
|
10
|
-
|
|
12
|
+
type CancellableEvent = "turbo:click" | "turbo:before-visit";
|
|
11
13
|
export declare function cancelNextEvent(page: Page, eventName: CancellableEvent): Promise<void>;
|
|
12
14
|
export declare function clickWithoutScrolling(page: Page, selector: string, options?: {}): Promise<false | void>;
|
|
13
15
|
export declare function clearLocalStorage(page: Page): Promise<void>;
|
|
@@ -23,13 +25,17 @@ export declare function nextBody(_page: Page, timeout?: number): Promise<void>;
|
|
|
23
25
|
export declare function nextEventNamed(page: Page, eventName: string): Promise<any>;
|
|
24
26
|
export declare function nextEventOnTarget(page: Page, elementId: string, eventName: string): Promise<any>;
|
|
25
27
|
export declare function listenForEventOnTarget(page: Page, elementId: string, eventName: string): Promise<void>;
|
|
28
|
+
export declare function nextBodyMutation(page: Page): Promise<string | null>;
|
|
29
|
+
export declare function noNextBodyMutation(page: Page): Promise<boolean>;
|
|
26
30
|
export declare function nextAttributeMutationNamed(page: Page, elementId: string, attributeName: string): Promise<string | null>;
|
|
27
31
|
export declare function noNextAttributeMutationNamed(page: Page, elementId: string, attributeName: string): Promise<boolean>;
|
|
28
32
|
export declare function noNextEventNamed(page: Page, eventName: string): Promise<boolean>;
|
|
29
33
|
export declare function noNextEventOnTarget(page: Page, elementId: string, eventName: string): Promise<boolean>;
|
|
30
34
|
export declare function outerHTMLForSelector(page: Page, selector: string): Promise<string>;
|
|
31
35
|
export declare function pathname(url: string): string;
|
|
36
|
+
export declare function pathnameForIFrame(page: Page, name: string): Promise<string>;
|
|
32
37
|
export declare function propertyForSelector(page: Page, selector: string, propertyName: string): Promise<any>;
|
|
38
|
+
export declare function readBodyMutationLogs(page: Page, length?: number): Promise<BodyMutationLog[]>;
|
|
33
39
|
export declare function readEventLogs(page: Page, length?: number): Promise<EventLog[]>;
|
|
34
40
|
export declare function readMutationLogs(page: Page, length?: number): Promise<MutationLog[]>;
|
|
35
41
|
export declare function search(url: string): string;
|
|
@@ -47,6 +53,7 @@ export declare function strictElementEquals(left: Locator, right: Locator): Prom
|
|
|
47
53
|
export declare function textContent(page: Page, html: string): Promise<string | null>;
|
|
48
54
|
export declare function visitAction(page: Page): Promise<string>;
|
|
49
55
|
export declare function waitForPathname(page: Page, pathname: string): Promise<void>;
|
|
56
|
+
export declare function waitUntilText(page: Page, text: string, state?: "visible" | "attached"): Promise<import("playwright-core").ElementHandle<HTMLElement | SVGElement>>;
|
|
50
57
|
export declare function waitUntilSelector(page: Page, selector: string, state?: "visible" | "attached"): Promise<import("playwright-core").ElementHandle<HTMLElement | SVGElement>>;
|
|
51
58
|
export declare function waitUntilNoSelector(page: Page, selector: string, state?: "hidden" | "detached"): Promise<import("playwright-core").ElementHandle<HTMLElement | SVGElement> | null>;
|
|
52
59
|
export declare function willChangeBody(page: Page, callback: () => Promise<void>): Promise<boolean>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|