Skip to content

Commit 73f61b6

Browse files
committed
Renames PrerenderResource.of() to PrerenderResource.fromHtml().
Refs #71. This more accurately reflects its actual usage and semantics now that `fromText()` and `fromBinary()` exist.
1 parent 217ae5b commit 73f61b6

25 files changed

Lines changed: 55 additions & 50 deletions

File tree

common/models/prerender_resource.mts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ export class PrerenderResource {
3030
* @param contents A {@link SafeHtml} object to encode as a UTF-8 string.
3131
* @returns A {@link PrerenderResource} object representing the resource.
3232
*/
33-
public static of(path: string, contents: SafeHtml): PrerenderResource {
33+
public static fromHtml(path: string, contents: SafeHtml):
34+
PrerenderResource {
3435
if (!isSafeHtml(contents)) {
3536
throw new Error(`Only \`SafeHtml\` objects can be used in \`*.html\` or \`*.htm\` files. Use a rendering engine like \`@rules_prerender/preact\` to render to \`SafeHtml\`.`);
3637
}
@@ -49,7 +50,7 @@ export class PrerenderResource {
4950
*
5051
* @param path The path the file will be generated at relative to the final
5152
* generated site. Must begin with a `/` character. Must *not* end in
52-
* `.html` or `.htm`. Use {@link PrerenderResource.of} with
53+
* `.html` or `.htm`. Use {@link PrerenderResource.fromHtml} with
5354
* {@link SafeHtml} to generate HTML content.
5455
* @param contents A UTF-8 encoded string to output at the given path.
5556
* @returns A {@link PrerenderResource} object representing the resource.
@@ -60,7 +61,7 @@ export class PrerenderResource {
6061
// constructed and there could be injection attacks within it.
6162
if (path.endsWith('.html') || path.endsWith('.htm')) {
6263
throw new Error(`Cannot generate a \`*.html\` or \`*.htm\` file (${
63-
path}) from a raw string (this would be unsafe!). HTML content should be rendered to \`SafeHtml\` first, and then written to a file in \`PrerenderResource.of()\`.`);
64+
path}) from a raw string (this would be unsafe!). HTML content should be rendered to \`SafeHtml\` first, and then written to a file in \`PrerenderResource.fromHtml()\`.`);
6465
}
6566

6667
return new PrerenderResource({
@@ -75,7 +76,7 @@ export class PrerenderResource {
7576
*
7677
* @param path The path the file will be generated at relative to the final
7778
* generated site. Must begin with a `/` character. Must *not* end in
78-
* `.html` or `.htm`. Use {@link PrerenderResource.of} with
79+
* `.html` or `.htm`. Use {@link PrerenderResource.fromHtml} with
7980
* {@link SafeHtml} to generate HTML content.
8081
* @param contents Binary content to associate with the given path.
8182
* @returns A {@link PrerenderResource} object representing the resource.
@@ -89,7 +90,7 @@ export class PrerenderResource {
8990
// constructed and there could be injection attacks within it.
9091
if (path.endsWith('.html') || path.endsWith('.htm')) {
9192
throw new Error(`Cannot generate a \`*.html\` or \`*.htm\` file (${
92-
path}) from a raw string (this would be unsafe!). HTML content should be rendered to \`SafeHtml\` first, and then written to a file in \`PrerenderResource.of()\`.`);
93+
path}) from a raw string (this would be unsafe!). HTML content should be rendered to \`SafeHtml\` first, and then written to a file in \`PrerenderResource.fromHtml()\`.`);
9394
}
9495

9596
return new PrerenderResource({

common/models/prerender_resource_test.mts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,27 @@ import { PrerenderResource } from './prerender_resource.mjs';
44
describe('PrerenderResource', () => {
55
describe('of()', () => {
66
it('returns a `PrerenderResource` from `SafeHtml` data', () => {
7-
const res = PrerenderResource.of(
7+
const res = PrerenderResource.fromHtml(
88
'/foo/bar.html', safe`<div></div>`);
99

1010
expect(res.path).toBe('/foo/bar.html');
1111
expect(new TextDecoder().decode(res.contents)).toBe('<div></div>');
1212
});
1313

1414
it('throws when given non-`SafeHtml` input', () => {
15-
expect(() => PrerenderResource.of(
15+
expect(() => PrerenderResource.fromHtml(
1616
'/foo/bar.html',
1717
'unsafe HTML content' as unknown as SafeHtml,
1818
)).toThrowError(/Only `SafeHtml` objects can be used in `\*.html` or `\*.htm` files\./);
1919

20-
expect(() => PrerenderResource.of(
20+
expect(() => PrerenderResource.fromHtml(
2121
'/foo/bar.html',
2222
{ getHtmlAsString: () => 'unsafe HTML content' } as SafeHtml,
2323
)).toThrowError(/Only `SafeHtml` objects can be used in `\*.html` or `\*.htm` files\./);
2424
});
2525

2626
it('throws when given an invalid URL path', () => {
27-
expect(() => PrerenderResource.of(
27+
expect(() => PrerenderResource.fromHtml(
2828
'does/not/start/with/a/slash.ext',
2929
safe`Hello, World!`,
3030
)).toThrowError(/must start with a "\/"/);

examples/components/site.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Component } from './component.js';
33

44
/** Renders a page using components. */
55
export default function*(): Generator<PrerenderResource, void, void> {
6-
yield PrerenderResource.of('/index.html', renderToHtml(
6+
yield PrerenderResource.fromHtml('/index.html', renderToHtml(
77
<html>
88
<head>
99
<title>Components</title>

examples/data/site.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export default async function*():
1111
const files = entries.filter((entry) => entry.isFile());
1212

1313
// Generate an index page which links to all posts.
14-
yield PrerenderResource.of('/index.html', renderToHtml(
14+
yield PrerenderResource.fromHtml('/index.html', renderToHtml(
1515
<html>
1616
<head>
1717
<title>Data</title>
@@ -40,7 +40,7 @@ export default async function*():
4040
encoding: 'utf8',
4141
});
4242

43-
yield PrerenderResource.of(`/posts/${baseName}.html`, renderToHtml(
43+
yield PrerenderResource.fromHtml(`/posts/${baseName}.html`, renderToHtml(
4444
<html>
4545
<head>
4646
<title>{baseName}</title>

examples/declarative_shadow_dom/site.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { PrerenderResource, renderToHtml } from '@rules_prerender/preact';
22
import { Component } from './component.js';
33

44
export default async function*(): AsyncGenerator<PrerenderResource, void, void> {
5-
yield PrerenderResource.of('/index.html', renderToHtml(
5+
yield PrerenderResource.fromHtml('/index.html', renderToHtml(
66
<html>
77
<head>
88
<title>Declarative Shadow DOM</title>

examples/external/site.mts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ export default function*(): Generator<PrerenderResource, void, void> {
55
// TODO: Migrate to Preact once we figure out how to handle
66
// `@rules_prerender/preact`'s peer dep in an external repository with
77
// manual `npm_link_package()` dependencies.
8-
yield PrerenderResource.of('/index.html', unsafeTreatStringAsSafeHtml(`
8+
yield PrerenderResource.fromHtml(
9+
'/index.html',
10+
unsafeTreatStringAsSafeHtml(`
911
<!DOCTYPE html>
1012
<html>
1113
<head>
@@ -18,5 +20,6 @@ export default function*(): Generator<PrerenderResource, void, void> {
1820
${renderComponent()}
1921
</body>
2022
</html>
21-
`.trim()));
23+
`.trim()),
24+
);
2225
}

examples/javascript/site.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Component } from './component/component.mjs';
44

55
/* Renders the page. */
66
export default function* () {
7-
yield PrerenderResource.of('/index.html', renderToHtml(
7+
yield PrerenderResource.fromHtml('/index.html', renderToHtml(
88
h('html', {}, [
99
h('head', {}, [
1010
h('meta', { charSet: 'utf8' }),

examples/minimal/site.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { PrerenderResource, renderToHtml } from '@rules_prerender/preact';
33

44
/** Renders the page. */
55
export default function*(): Generator<PrerenderResource, void, void> {
6-
yield PrerenderResource.of('/index.html', renderToHtml(
6+
yield PrerenderResource.fromHtml('/index.html', renderToHtml(
77
<html>
88
<head>
99
<title>Minimal</title>

examples/multi_page/site.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { PrerenderResource, includeScript, inlineStyle, renderToHtml } from '@ru
22
import { ComponentChildren, VNode } from 'preact';
33

44
export default function* (): Generator<PrerenderResource, void, void> {
5-
yield PrerenderResource.of('/index.html', renderToHtml(
5+
yield PrerenderResource.fromHtml('/index.html', renderToHtml(
66
<Page>
77
<h2>Multi-Page</h2>
88
<img src="/logo.png" />
@@ -16,17 +16,17 @@ export default function* (): Generator<PrerenderResource, void, void> {
1616
</Page>,
1717
));
1818

19-
yield PrerenderResource.of('/foo.html', renderToHtml(
19+
yield PrerenderResource.fromHtml('/foo.html', renderToHtml(
2020
<Page>
2121
<h2>Foo</h2>
2222
</Page>,
2323
));
24-
yield PrerenderResource.of('/bar.html', renderToHtml(
24+
yield PrerenderResource.fromHtml('/bar.html', renderToHtml(
2525
<Page>
2626
<h2>Bar</h2>
2727
</Page>,
2828
));
29-
yield PrerenderResource.of('/hello/world.html', renderToHtml(
29+
yield PrerenderResource.fromHtml('/hello/world.html', renderToHtml(
3030
<Page>
3131
<h2>Hello, World!</h2>
3232
</Page>,

examples/preact/site.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { PrerenderResource, renderToHtml } from '@rules_prerender/preact';
22
import { Component } from './component/component.js';
33

44
export default function*(): Generator<PrerenderResource, void, void> {
5-
yield PrerenderResource.of('/index.html', renderToHtml(
5+
yield PrerenderResource.fromHtml('/index.html', renderToHtml(
66
<html>
77
<head>
88
<title>Preact</title>

0 commit comments

Comments
 (0)