@hotwired/turbo 7.2.5 → 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 +135 -75
- package/dist/turbo.es2017-umd.js +135 -75
- package/dist/types/core/drive/form_submission.d.ts +8 -4
- 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 +1 -1
- package/dist/types/core/drive/page_view.d.ts +2 -2
- package/dist/types/core/drive/visit.d.ts +3 -3
- package/dist/types/core/errors.d.ts +2 -0
- package/dist/types/core/frames/frame_controller.d.ts +6 -2
- 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 +1 -1
- 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 -3
- 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 +7 -7
- package/dist/types/http/index.d.ts +1 -1
- 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/polyfills/custom-elements-native-shim.d.ts +1 -0
- package/dist/types/tests/helpers/dom_test_case.d.ts +1 -2
- package/dist/types/tests/helpers/page.d.ts +10 -10
- 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 +1 -1
- package/package.json +16 -10
- package/dist/types/tests/helpers/intern_test_case.d.ts +0 -19
- package/dist/types/tests/unit/deprecated_adapter_support_test.d.ts +0 -24
- package/dist/types/tests/unit/index.d.ts +0 -3
|
@@ -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,9 +1,9 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export type Action = "advance" | "replace" | "restore";
|
|
2
|
+
export type Position = {
|
|
3
3
|
x: number;
|
|
4
4
|
y: number;
|
|
5
5
|
};
|
|
6
|
-
export
|
|
6
|
+
export type StreamSource = {
|
|
7
7
|
addEventListener(type: "message", listener: (event: MessageEvent) => void, options?: boolean | AddEventListenerOptions): void;
|
|
8
8
|
removeEventListener(type: "message", listener: (event: MessageEvent) => void, options?: boolean | EventListenerOptions): void;
|
|
9
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,14 +1,14 @@
|
|
|
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
|
}>;
|
|
@@ -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,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
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { JSHandle, Locator, Page } from "@playwright/test";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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];
|
|
11
11
|
export declare function attributeForSelector(page: Page, selector: string, attributeName: string): Promise<string | null>;
|
|
12
|
-
|
|
12
|
+
type CancellableEvent = "turbo:click" | "turbo:before-visit";
|
|
13
13
|
export declare function cancelNextEvent(page: Page, eventName: CancellableEvent): Promise<void>;
|
|
14
14
|
export declare function clickWithoutScrolling(page: Page, selector: string, options?: {}): Promise<false | void>;
|
|
15
15
|
export declare function clearLocalStorage(page: Page): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { PageRenderer, PageSnapshot, FrameRenderer, FrameElement, StreamActions, StreamElement, StreamSourceElement, TurboBeforeCacheEvent, TurboBeforeFetchRequestEvent, TurboBeforeFetchResponseEvent, TurboBeforeFrameRenderEvent, TurboBeforeRenderEvent, TurboBeforeStreamRenderEvent, TurboBeforeVisitEvent, TurboClickEvent, TurboFetchRequestErrorEvent, TurboFrameLoadEvent, TurboFrameMissingEvent, TurboFrameRenderEvent, TurboLoadEvent, TurboRenderEvent, TurboStreamAction, TurboStreamActions, TurboSubmitEndEvent, TurboSubmitStartEvent, TurboVisitEvent, } from "../../index";
|
|
3
|
-
export declare class ExportTests extends DOMTestCase {
|
|
4
|
-
"test Turbo interface"(): Promise<void>;
|
|
5
|
-
}
|
|
1
|
+
export type { PageRenderer, PageSnapshot, FrameRenderer, FrameElement, StreamActions, StreamElement, StreamSourceElement, TurboBeforeCacheEvent, TurboBeforeFetchRequestEvent, TurboBeforeFetchResponseEvent, TurboBeforeFrameRenderEvent, TurboBeforeRenderEvent, TurboBeforeStreamRenderEvent, TurboBeforeVisitEvent, TurboClickEvent, TurboFetchRequestErrorEvent, TurboFrameLoadEvent, TurboFrameMissingEvent, TurboFrameRenderEvent, TurboLoadEvent, TurboRenderEvent, TurboStreamAction, TurboStreamActions, TurboSubmitEndEvent, TurboSubmitStartEvent, TurboVisitEvent, } from "../../index";
|
|
@@ -1,13 +1,3 @@
|
|
|
1
1
|
import { DOMTestCase } from "../helpers/dom_test_case";
|
|
2
2
|
export declare class StreamElementTests extends DOMTestCase {
|
|
3
|
-
beforeTest(): Promise<void>;
|
|
4
|
-
"test action=append"(): Promise<void>;
|
|
5
|
-
"test action=append with children ID already present in target"(): Promise<void>;
|
|
6
|
-
"test action=prepend"(): Promise<void>;
|
|
7
|
-
"test action=prepend with children ID already present in target"(): Promise<void>;
|
|
8
|
-
"test action=remove"(): Promise<void>;
|
|
9
|
-
"test action=replace"(): Promise<void>;
|
|
10
|
-
"test action=update"(): Promise<void>;
|
|
11
|
-
"test action=after"(): Promise<void>;
|
|
12
|
-
"test action=before"(): Promise<void>;
|
|
13
3
|
}
|
package/dist/types/util.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hotwired/turbo",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.3.0",
|
|
4
4
|
"description": "The speed of a single-page web application without having to write any JavaScript",
|
|
5
5
|
"module": "dist/turbo.es2017-esm.js",
|
|
6
6
|
"main": "dist/turbo.es2017-umd.js",
|
|
@@ -35,23 +35,29 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
+
"@open-wc/testing": "^3.1.7",
|
|
38
39
|
"@playwright/test": "^1.28.0",
|
|
39
40
|
"@rollup/plugin-node-resolve": "13.1.3",
|
|
40
|
-
"@rollup/plugin-typescript": "^
|
|
41
|
+
"@rollup/plugin-typescript": "^11.0.0",
|
|
41
42
|
"@types/multer": "^1.4.5",
|
|
42
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
43
|
-
"@typescript-eslint/parser": "^5.
|
|
43
|
+
"@typescript-eslint/eslint-plugin": "^5.50.0",
|
|
44
|
+
"@typescript-eslint/parser": "^5.50.0",
|
|
45
|
+
"@web/dev-server-esbuild": "^0.3.3",
|
|
46
|
+
"@web/test-runner": "^0.15.0",
|
|
47
|
+
"@web/test-runner-playwright": "^0.9.0",
|
|
44
48
|
"arg": "^5.0.1",
|
|
49
|
+
"body-parser": "^1.20.1",
|
|
45
50
|
"chai": "~4.3.4",
|
|
46
51
|
"eslint": "^8.13.0",
|
|
47
52
|
"eslint-config-prettier": "^8.5.0",
|
|
48
53
|
"eslint-plugin-prettier": "^4.0.0",
|
|
49
|
-
"
|
|
54
|
+
"express": "^4.18.2",
|
|
50
55
|
"multer": "^1.4.2",
|
|
51
56
|
"prettier": "2.6.2",
|
|
52
57
|
"rollup": "^2.35.1",
|
|
53
|
-
"
|
|
54
|
-
"
|
|
58
|
+
"ts-node": "^10.9.1",
|
|
59
|
+
"tslib": "^2.5.0",
|
|
60
|
+
"typescript": "^4.9.5"
|
|
55
61
|
},
|
|
56
62
|
"scripts": {
|
|
57
63
|
"clean": "rm -fr dist",
|
|
@@ -59,11 +65,11 @@
|
|
|
59
65
|
"build": "tsc --noEmit false --declaration true --emitDeclarationOnly true --outDir dist/types && rollup -c",
|
|
60
66
|
"build:win": "tsc --noEmit false --declaration true --emitDeclarationOnly true --outDir dist/types & rollup -c",
|
|
61
67
|
"watch": "rollup -wc",
|
|
62
|
-
"start": "node src/tests/
|
|
68
|
+
"start": "ts-node -O '{\"module\":\"commonjs\"}' src/tests/server.ts",
|
|
63
69
|
"test": "yarn test:unit && yarn test:browser",
|
|
64
70
|
"test:browser": "playwright test",
|
|
65
|
-
"test:unit": "NODE_OPTIONS=--inspect
|
|
66
|
-
"test:unit:win": "SET NODE_OPTIONS=--inspect &
|
|
71
|
+
"test:unit": "NODE_OPTIONS=--inspect web-test-runner",
|
|
72
|
+
"test:unit:win": "SET NODE_OPTIONS=--inspect & web-test-runner",
|
|
67
73
|
"release": "yarn build && npm publish",
|
|
68
74
|
"lint": "eslint . --ext .ts"
|
|
69
75
|
},
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import Test from "intern/lib/Test";
|
|
2
|
-
import { Tests } from "intern/lib/interfaces/object";
|
|
3
|
-
export declare class InternTestCase {
|
|
4
|
-
readonly internTest: Test;
|
|
5
|
-
static registerSuite(): void;
|
|
6
|
-
static get tests(): Tests;
|
|
7
|
-
static get testNames(): string[];
|
|
8
|
-
static get testKeys(): string[];
|
|
9
|
-
static runTest(internTest: Test): Promise<void>;
|
|
10
|
-
constructor(internTest: Test);
|
|
11
|
-
get testName(): string;
|
|
12
|
-
runTest(): Promise<void>;
|
|
13
|
-
get assert(): Chai.AssertStatic;
|
|
14
|
-
setup(): Promise<void>;
|
|
15
|
-
beforeTest(): Promise<void>;
|
|
16
|
-
get test(): () => Promise<void>;
|
|
17
|
-
afterTest(): Promise<void>;
|
|
18
|
-
teardown(): Promise<void>;
|
|
19
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { VisitOptions, Visit } from "../../core/drive/visit";
|
|
2
|
-
import { FormSubmission } from "../../core/drive/form_submission";
|
|
3
|
-
import { Adapter } from "../../core/native/adapter";
|
|
4
|
-
import { DOMTestCase } from "../helpers/dom_test_case";
|
|
5
|
-
export declare class DeprecatedAdapterSupportTest extends DOMTestCase implements Adapter {
|
|
6
|
-
locations: any[];
|
|
7
|
-
originalAdapter: Adapter;
|
|
8
|
-
setup(): Promise<void>;
|
|
9
|
-
teardown(): Promise<void>;
|
|
10
|
-
"test visit proposal location includes deprecated absoluteURL property"(): Promise<void>;
|
|
11
|
-
"test visit start location includes deprecated absoluteURL property"(): Promise<void>;
|
|
12
|
-
visitProposedToLocation(location: URL, _options?: Partial<VisitOptions>): void;
|
|
13
|
-
visitStarted(visit: Visit): void;
|
|
14
|
-
visitCompleted(_visit: Visit): void;
|
|
15
|
-
visitFailed(_visit: Visit): void;
|
|
16
|
-
visitRequestStarted(_visit: Visit): void;
|
|
17
|
-
visitRequestCompleted(_visit: Visit): void;
|
|
18
|
-
visitRequestFailedWithStatusCode(_visit: Visit, _statusCode: number): void;
|
|
19
|
-
visitRequestFinished(_visit: Visit): void;
|
|
20
|
-
visitRendered(_visit: Visit): void;
|
|
21
|
-
formSubmissionStarted(_formSubmission: FormSubmission): void;
|
|
22
|
-
formSubmissionFinished(_formSubmission: FormSubmission): void;
|
|
23
|
-
pageInvalidated(): void;
|
|
24
|
-
}
|