Skip to content

Commit 3b6a8d9

Browse files
Anurag GuptaAnurag Gupta
authored andcommitted
feat: SSR
1 parent 4069bef commit 3b6a8d9

File tree

12 files changed

+10193
-61
lines changed

12 files changed

+10193
-61
lines changed

hydrate/index.d.ts

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
// Generated by dts-bundle-generator v5.3.0
2+
3+
export declare function createWindowFromHtml(templateHtml: string, uniqueId: string): any;
4+
export interface HydrateDocumentOptions {
5+
/**
6+
* Build ID that will be added to `<html data-stencil-build="BUILD_ID">`. By default
7+
* a random ID will be generated
8+
*/
9+
buildId?: string;
10+
/**
11+
* Sets the `href` attribute on the `<link rel="canonical">`
12+
* tag within the `<head>`. If the value is not defined it will
13+
* ensure a canonical link tag is no included in the `<head>`.
14+
*/
15+
canonicalUrl?: string;
16+
/**
17+
* Include the HTML comments and attributes used by the clientside
18+
* JavaScript to read the structure of the HTML and rebuild each
19+
* component. Defaults to `true`.
20+
*/
21+
clientHydrateAnnotations?: boolean;
22+
/**
23+
* Constrain `setTimeout()` to 1ms, but still async. Also
24+
* only allows `setInterval()` to fire once, also constrained to 1ms.
25+
* Defaults to `true`.
26+
*/
27+
constrainTimeouts?: boolean;
28+
/**
29+
* Sets `document.cookie`
30+
*/
31+
cookie?: string;
32+
/**
33+
* Sets the `dir` attribute on the top level `<html>`.
34+
*/
35+
direction?: string;
36+
/**
37+
* Component tag names listed here will not be prerendered, nor will
38+
* hydrated on the clientside. Components listed here will be ignored
39+
* as custom elements and treated no differently than a `<div>`.
40+
*/
41+
excludeComponents?: string[];
42+
/**
43+
* Sets the `lang` attribute on the top level `<html>`.
44+
*/
45+
language?: string;
46+
/**
47+
* Maximum number of components to hydrate on one page. Defaults to `300`.
48+
*/
49+
maxHydrateCount?: number;
50+
/**
51+
* Sets `document.referrer`
52+
*/
53+
referrer?: string;
54+
/**
55+
* Removes every `<script>` element found in the `document`. Defaults to `false`.
56+
*/
57+
removeScripts?: boolean;
58+
/**
59+
* Removes CSS not used by elements within the `document`. Defaults to `true`.
60+
*/
61+
removeUnusedStyles?: boolean;
62+
/**
63+
* The url the runtime uses for the resources, such as the assets directory.
64+
*/
65+
resourcesUrl?: string;
66+
/**
67+
* Prints out runtime console logs to the NodeJS process. Defaults to `false`.
68+
*/
69+
runtimeLogging?: boolean;
70+
/**
71+
* Component tags listed here will only be prerendered or serverside-rendered
72+
* and will not be clientside hydrated. This is useful for components that
73+
* are not dynamic and do not need to be defined as a custom element within the
74+
* browser. For example, a header or footer component would be a good example that
75+
* may not require any clientside JavaScript.
76+
*/
77+
staticComponents?: string[];
78+
/**
79+
* The amount of milliseconds to wait for a page to finish rendering until
80+
* a timeout error is thrown. Defaults to `15000`.
81+
*/
82+
timeout?: number;
83+
/**
84+
* Sets `document.title`.
85+
*/
86+
title?: string;
87+
/**
88+
* Sets `location.href`
89+
*/
90+
url?: string;
91+
/**
92+
* Sets `navigator.userAgent`
93+
*/
94+
userAgent?: string;
95+
}
96+
export interface SerializeDocumentOptions extends HydrateDocumentOptions {
97+
/**
98+
* Runs after the `document` has been hydrated.
99+
*/
100+
afterHydrate?(document: any): any | Promise<any>;
101+
/**
102+
* Sets an approximate line width the HTML should attempt to stay within.
103+
* Note that this is "approximate", in that HTML may often not be able
104+
* to be split at an exact line width. Additionally, new lines created
105+
* is where HTML naturally already has whitespce, such as before an
106+
* attribute or spaces between words. Defaults to `100`.
107+
*/
108+
approximateLineWidth?: number;
109+
/**
110+
* Runs before the `document` has been hydrated.
111+
*/
112+
beforeHydrate?(document: any): any | Promise<any>;
113+
/**
114+
* Format the HTML in a nicely indented format.
115+
* Defaults to `false`.
116+
*/
117+
prettyHtml?: boolean;
118+
/**
119+
* Remove quotes from attribute values when possible.
120+
* Defaults to `true`.
121+
*/
122+
removeAttributeQuotes?: boolean;
123+
/**
124+
* Remove the `=""` from standardized `boolean` attributes,
125+
* such as `hidden` or `checked`. Defaults to `true`.
126+
*/
127+
removeBooleanAttributeQuotes?: boolean;
128+
/**
129+
* Remove these standardized attributes when their value is empty:
130+
* `class`, `dir`, `id`, `lang`, and `name`, `title`. Defaults to `true`.
131+
*/
132+
removeEmptyAttributes?: boolean;
133+
/**
134+
* Remove HTML comments. Defaults to `true`.
135+
*/
136+
removeHtmlComments?: boolean;
137+
}
138+
export interface HydrateFactoryOptions extends SerializeDocumentOptions {
139+
serializeToHtml: boolean;
140+
destroyWindow: boolean;
141+
destroyDocument: boolean;
142+
}
143+
export interface Diagnostic {
144+
level: "error" | "warn" | "info" | "log" | "debug";
145+
type: string;
146+
header?: string;
147+
language?: string;
148+
messageText: string;
149+
debugText?: string;
150+
code?: string;
151+
absFilePath?: string;
152+
relFilePath?: string;
153+
lineNumber?: number;
154+
columnNumber?: number;
155+
lines?: {
156+
lineIndex: number;
157+
lineNumber: number;
158+
text?: string;
159+
errorCharStart: number;
160+
errorLength?: number;
161+
}[];
162+
}
163+
export interface HydrateResults {
164+
buildId: string;
165+
diagnostics: Diagnostic[];
166+
url: string;
167+
host: string;
168+
hostname: string;
169+
href: string;
170+
port: string;
171+
pathname: string;
172+
search: string;
173+
hash: string;
174+
html: string;
175+
components: HydrateComponent[];
176+
anchors: HydrateAnchorElement[];
177+
imgs: HydrateImgElement[];
178+
scripts: HydrateScriptElement[];
179+
styles: HydrateStyleElement[];
180+
staticData: HydrateStaticData[];
181+
title: string;
182+
hydratedCount: number;
183+
httpStatus: number;
184+
}
185+
export interface HydrateComponent {
186+
tag: string;
187+
mode: string;
188+
count: number;
189+
depth: number;
190+
}
191+
export interface HydrateElement {
192+
[attrName: string]: string | undefined;
193+
}
194+
export interface HydrateAnchorElement extends HydrateElement {
195+
href?: string;
196+
target?: string;
197+
}
198+
export interface HydrateImgElement extends HydrateElement {
199+
src?: string;
200+
}
201+
export interface HydrateScriptElement extends HydrateElement {
202+
src?: string;
203+
type?: string;
204+
}
205+
export interface HydrateStyleElement extends HydrateElement {
206+
href?: string;
207+
}
208+
export interface HydrateStaticData {
209+
id: string;
210+
type: string;
211+
content: string;
212+
}
213+
export declare function renderToString(html: string | any, options?: SerializeDocumentOptions): Promise<HydrateResults>;
214+
export declare function hydrateDocument(doc: any | string, options?: HydrateDocumentOptions): Promise<HydrateResults>;
215+
export declare function serializeDocumentToString(doc: any, opts: HydrateFactoryOptions): string;
216+
217+
export {};

0 commit comments

Comments
 (0)