Skip to content
This repository was archived by the owner on May 19, 2025. It is now read-only.

Commit 05fd18f

Browse files
committed
Merge branch 'main' into wkillerud-patch-1
2 parents 8ca7541 + 2786f9c commit 05fd18f

9 files changed

+130
-29
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
## [1.10.5](https://github.com/podium-lib/podlet-server/compare/v1.10.4...v1.10.5) (2023-10-30)
2+
3+
4+
### Bug Fixes
5+
6+
* don't render dev scripts in prod mode ([813daa9](https://github.com/podium-lib/podlet-server/commit/813daa95ac03f1f158548f71c57b15dacdcd98e8))
7+
18
## [1.10.4](https://github.com/podium-lib/podlet-server/compare/v1.10.3...v1.10.4) (2023-10-06)
29

310

lib/plugin.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ export default fp(
207207
prefix,
208208
'/_/dynamic/modules/@lit-labs/ssr-client/lit-element-hydrate-support.js',
209209
),
210-
{ dev: development },
210+
{ dev: true },
211211
)
212212
: '';
213213
let markup;
@@ -267,7 +267,7 @@ export default fp(
267267
prefix,
268268
'/_/dynamic/modules/@lit-labs/ssr-client/lit-element-hydrate-support.js',
269269
),
270-
{ dev: development },
270+
{ dev: true },
271271
)
272272
: '';
273273
let markup;

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@podium/podlet-server",
3-
"version": "1.10.4",
3+
"version": "1.10.5",
44
"type": "module",
55
"bin": {
66
"podlet": "./cli.js"
@@ -20,7 +20,7 @@
2020
"scripts": {
2121
"lint": "eslint .",
2222
"lint:fix": "eslint --fix .",
23-
"test": "tap --timeout 60000 --no-check-coverage --no-coverage-report test/**/*.test.js",
23+
"test": "NODE_OPTIONS=--conditions=development tap --timeout 60000 --no-check-coverage --no-coverage-report test/**/*.test.js",
2424
"prepublish": "tsc"
2525
},
2626
"keywords": [],

plugins/script.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
import fp from 'fastify-plugin';
22

33
export default fp(async (fastify, { development = false }) => {
4-
fastify.decorate('script', (url, { dev = false, lazy = false } = {}) => {
5-
if (!development && dev) return '';
6-
if (lazy) {
7-
return `<script type="module">addEventListener('load',()=>import('${url}'))</script>`;
8-
}
9-
return `<script type="module" src="${url}"></script>`;
10-
});
4+
fastify.decorate(
5+
'script',
6+
/**
7+
* @param {string} url
8+
* @param {{ dev?: boolean, lazy?: boolean }} options – dev: only in development, lazy: dynamic import on load event
9+
*/
10+
(url, { dev = false, lazy = false } = {}) => {
11+
if (!development && dev) return '';
12+
if (lazy) {
13+
return `<script type="module">addEventListener('load',()=>import('${url}'))</script>`;
14+
}
15+
return `<script type="module" src="${url}"></script>`;
16+
},
17+
);
1118
});

test/api/start.test.js

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,20 +64,28 @@ test('Starting with package.json file in directory', async (t) => {
6464
});
6565

6666
test('Starting with content file in directory', async (t) => {
67+
const { default: packageJson } = await import('../../package.json', {
68+
assert: { type: 'json' },
69+
});
70+
6771
await writeFile(
6872
join(tmp, 'package.json'),
6973
JSON.stringify({
7074
name: 'test-app',
7175
type: 'module',
72-
dependencies: { lit: '*', '@lit-labs/ssr-client': '*' },
76+
dependencies: {
77+
lit: packageJson.dependencies.lit,
78+
'@lit-labs/ssr-client':
79+
packageJson.dependencies['@lit-labs/ssr-client'],
80+
},
7381
}),
7482
);
7583
await writeFile(
7684
join(tmp, 'content.js'),
7785
`
7886
import { html, LitElement } from "lit";
7987
export default class Content extends LitElement {
80-
render() {
88+
render() {
8189
return html\`<div>hello world</div>\`;
8290
}
8391
}
@@ -123,20 +131,27 @@ test('Using validated query parameters in server.js', async (t) => {
123131
}
124132
`.trim(),
125133
);
134+
const { default: packageJson } = await import('../../package.json', {
135+
assert: { type: 'json' },
136+
});
126137
await writeFile(
127138
join(tmp, 'package.json'),
128139
JSON.stringify({
129140
name: 'test-app',
130141
type: 'module',
131-
dependencies: { lit: '*', '@lit-labs/ssr-client': '*' },
142+
dependencies: {
143+
lit: packageJson.dependencies.lit,
144+
'@lit-labs/ssr-client':
145+
packageJson.dependencies['@lit-labs/ssr-client'],
146+
},
132147
}),
133148
);
134149
await writeFile(
135150
join(tmp, 'content.js'),
136151
`
137152
import { html, LitElement } from "lit";
138153
export default class Content extends LitElement {
139-
render() {
154+
render() {
140155
return html\`<div>hello world</div>\`;
141156
}
142157
}
@@ -170,18 +185,25 @@ test('Fallback route', async (t) => {
170185
`
171186
import { html, LitElement } from "lit";
172187
export default class Content extends LitElement {
173-
render() {
188+
render() {
174189
return html\`<div>Fallback content</div>\`;
175190
}
176191
}
177192
`.trim(),
178193
);
194+
const { default: packageJson } = await import('../../package.json', {
195+
assert: { type: 'json' },
196+
});
179197
await writeFile(
180198
join(tmp, 'package.json'),
181199
JSON.stringify({
182200
name: 'test-app',
183201
type: 'module',
184-
dependencies: { lit: '*', '@lit-labs/ssr-client': '*' },
202+
dependencies: {
203+
lit: packageJson.dependencies.lit,
204+
'@lit-labs/ssr-client':
205+
packageJson.dependencies['@lit-labs/ssr-client'],
206+
},
185207
}),
186208
);
187209
execSync('npm install', { cwd: tmp });
@@ -209,20 +231,23 @@ test('scripts.js loading', async (t) => {
209231
console.log("This script will be loaded after the main podlet scripts.");
210232
`.trim(),
211233
);
234+
const { default: packageJson } = await import('../../package.json', {
235+
assert: { type: 'json' },
236+
});
212237
await writeFile(
213238
join(tmp, 'package.json'),
214239
JSON.stringify({
215240
name: 'test-app',
216241
type: 'module',
217-
dependencies: { lit: '*' },
242+
dependencies: { lit: packageJson.dependencies.lit },
218243
}),
219244
);
220245
await writeFile(
221246
join(tmp, 'content.js'),
222247
`
223248
import { html, LitElement } from "lit";
224249
export default class Content extends LitElement {
225-
render() {
250+
render() {
226251
return html\`<div>hello world</div>\`;
227252
}
228253
}
@@ -261,18 +286,21 @@ test('lazy.js loading', async (t) => {
261286
`
262287
import { html, LitElement } from "lit";
263288
export default class Content extends LitElement {
264-
render() {
289+
render() {
265290
return html\`<div>hello world</div>\`;
266291
}
267292
}
268293
`.trim(),
269294
);
295+
const { default: packageJson } = await import('../../package.json', {
296+
assert: { type: 'json' },
297+
});
270298
await writeFile(
271299
join(tmp, 'package.json'),
272300
JSON.stringify({
273301
name: 'test-app',
274302
type: 'module',
275-
dependencies: { lit: '*' },
303+
dependencies: { lit: packageJson.dependencies.lit },
276304
}),
277305
);
278306
execSync('npm install', { cwd: tmp });

test/lib/plugin.test.js

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const tmp = join(tmpdir(), './plugin.test.js');
1717
const contentFile = `
1818
import { html, LitElement } from "lit";
1919
export default class Element extends LitElement {
20-
render() {
20+
render() {
2121
return html\`<div>hello world</div>\`;
2222
}
2323
}
@@ -39,6 +39,7 @@ async function setupConfig() {
3939
const config = convict({});
4040
// @ts-ignore
4141
config.set('app.name', 'test-app');
42+
config.set('app.base', '/');
4243
config.set('app.port', 0);
4344
config.set('assets.base', '/static');
4445
config.set('podlet.version', '1.0.0');
@@ -63,12 +64,15 @@ beforeEach(async () => {
6364
await mkdir(tmp);
6465
await mkdir(join(tmp, 'schemas'));
6566
await mkdir(join(tmp, 'locale'));
67+
const { default: packageJson } = await import('../../package.json', {
68+
assert: { type: 'json' },
69+
});
6670
await writeFile(
6771
join(tmp, 'package.json'),
6872
JSON.stringify({
6973
name: 'test-app',
7074
type: 'module',
71-
dependencies: { lit: '*' },
75+
dependencies: { lit: packageJson.dependencies.lit },
7276
}),
7377
);
7478
await mkdir(join(tmp, 'dist'));
@@ -334,6 +338,52 @@ test('schemas: fallback.json', async (t) => {
334338
await app.close();
335339
});
336340

341+
test('hydrate: dev mode includes lit-element-hydrate-support as a script tag', async (t) => {
342+
const app = fastify({ logger: false });
343+
const config = await setupConfig();
344+
config.set('app.mode', 'hydrate');
345+
config.set('app.development', true);
346+
347+
await app.register(plugin, {
348+
cwd: tmp,
349+
config,
350+
});
351+
352+
const address = await app.listen({ port: 0 });
353+
const content = await fetch(`${address}/`);
354+
const markup = await content.text();
355+
t.equal(content.status, 200, 'content file should be sucessfully served');
356+
t.match(
357+
markup,
358+
'/_/dynamic/modules/@lit-labs/ssr-client/lit-element-hydrate-support.js',
359+
'should contain lit-element-hydrate-support script',
360+
);
361+
await app.close();
362+
});
363+
364+
test('hydrate: production mode does not include lit-element-hydrate-support as a script tag', async (t) => {
365+
const app = fastify({ logger: false });
366+
const config = await setupConfig();
367+
config.set('app.mode', 'hydrate');
368+
config.set('app.development', false);
369+
370+
await app.register(plugin, {
371+
cwd: tmp,
372+
config,
373+
});
374+
375+
const address = await app.listen({ port: 0 });
376+
const content = await fetch(`${address}/`);
377+
const markup = await content.text();
378+
t.equal(content.status, 200, 'content file should be sucessfully served');
379+
t.notMatch(
380+
markup,
381+
'/_/dynamic/modules/@lit-labs/ssr-client/lit-element-hydrate-support.js',
382+
'should not contain lit-element-hydrate-support script tag when development: false',
383+
);
384+
await app.close();
385+
});
386+
337387
// // test("build plugin", async (t) => {})
338388
// // test("locale", async (t) => {})
339389
// // test("metrics", async (t) => {})

test/plugins/plugins-csr.test.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@ const tmp = join(tmpdir(), './plugins-csr.test.js');
1313

1414
beforeEach(async () => {
1515
await mkdir(tmp);
16+
const { default: packageJson } = await import('../../package.json', {
17+
assert: { type: 'json' },
18+
});
1619
await writeFile(
1720
join(tmp, 'package.json'),
1821
JSON.stringify({
1922
name: 'test-app',
2023
type: 'module',
21-
dependencies: { lit: '*' },
24+
dependencies: { lit: packageJson.dependencies.lit },
2225
}),
2326
);
2427
await mkdir(join(tmp, 'dist'));
@@ -27,7 +30,7 @@ beforeEach(async () => {
2730
`
2831
import { html, LitElement } from "lit";
2932
export default class Element extends LitElement {
30-
render() {
33+
render() {
3134
return html\`<div>hello world</div>\`;
3235
}
3336
}

test/plugins/plugins-hydrate.test.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,15 @@ const tmp = join(tmpdir(), './plugins-hydrate.test.js');
1414

1515
beforeEach(async () => {
1616
await mkdir(tmp);
17+
const { default: packageJson } = await import('../../package.json', {
18+
assert: { type: 'json' },
19+
});
1720
await writeFile(
1821
join(tmp, 'package.json'),
1922
JSON.stringify({
2023
name: 'test-app',
2124
type: 'module',
22-
dependencies: { lit: '*' },
25+
dependencies: { lit: packageJson.dependencies.lit },
2326
}),
2427
);
2528
await mkdir(join(tmp, 'dist'));
@@ -28,7 +31,7 @@ beforeEach(async () => {
2831
`
2932
import { html, LitElement } from "lit";
3033
export default class Element extends LitElement {
31-
render() {
34+
render() {
3235
return html\`<div>hello world</div>\`;
3336
}
3437
}

test/plugins/plugins-ssr.test.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,15 @@ const tmp = join(tmpdir(), './plugins-ssr.test.js');
1414

1515
beforeEach(async () => {
1616
await mkdir(tmp);
17+
const { default: packageJson } = await import('../../package.json', {
18+
assert: { type: 'json' },
19+
});
1720
await writeFile(
1821
join(tmp, 'package.json'),
1922
JSON.stringify({
2023
name: 'test-app',
2124
type: 'module',
22-
dependencies: { lit: '*' },
25+
dependencies: { lit: packageJson.dependencies.lit },
2326
}),
2427
);
2528
await mkdir(join(tmp, 'dist'));
@@ -28,7 +31,7 @@ beforeEach(async () => {
2831
`
2932
import { html, LitElement } from "lit";
3033
export default class Element extends LitElement {
31-
render() {
34+
render() {
3235
return html\`<div>hello world</div>\`;
3336
}
3437
}

0 commit comments

Comments
 (0)