Skip to content

Commit 7fbcefd

Browse files
committed
fix(ssr): throw compile-time error on @wire-decorated getter/setter/method
1 parent d4872a2 commit 7fbcefd

File tree

30 files changed

+108
-15
lines changed

30 files changed

+108
-15
lines changed

packages/@lwc/engine-server/src/__tests__/fixtures.spec.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { rollup } from 'rollup';
1111
import lwcRollupPlugin from '@lwc/rollup-plugin';
1212
import { testFixtureDir, formatHTML } from '@lwc/test-utils-lwc-internals';
1313
import { setFeatureFlagForTest } from '../index';
14+
import type { FeatureFlagName } from '@lwc/features/dist/types';
1415
import type { RollupLwcOptions } from '@lwc/rollup-plugin';
1516
import type * as lwc from '../index';
1617

@@ -128,16 +129,17 @@ function testFixtures(options?: RollupLwcOptions) {
128129
// the LightningElement. Therefor the compiled module should also be evaluated in the
129130
// same sandbox registry as the engine.
130131
const lwcEngineServer = await import('../index');
131-
const module = (await import(compiledFixturePath)) as FixtureModule;
132-
133-
const features = module!.features ?? [];
134-
features.forEach((flag) => {
135-
lwcEngineServer!.setFeatureFlagForTest(flag, true);
136-
});
137132

138133
let result;
139134
let err;
135+
let features: FeatureFlagName[] = [];
140136
try {
137+
const module = (await import(compiledFixturePath)) as FixtureModule;
138+
139+
features = module!.features ?? [];
140+
features.forEach((flag) => {
141+
lwcEngineServer!.setFeatureFlagForTest(flag, true);
142+
});
141143
result = formatHTML(
142144
lwcEngineServer!.renderComponent(
143145
module!.tagName,
@@ -146,10 +148,10 @@ function testFixtures(options?: RollupLwcOptions) {
146148
)
147149
);
148150
} catch (_err: any) {
149-
if (_err.name === 'AssertionError') {
151+
if (_err?.name === 'AssertionError') {
150152
throw _err;
151153
}
152-
err = _err.message;
154+
err = _err?.message || 'An empty error occurred?!';
153155
}
154156

155157
features.forEach((flag) => {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"ssrFiles": {
3+
"error": "error-ssr.txt",
4+
"expected": "expected-ssr.html"
5+
}
6+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@wire cannot be used on computed properties in SSR context.

packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-key/error.txt renamed to packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-getter/error.txt

File renamed without changes.

packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-key/expected.html renamed to packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-getter/expected-ssr.html

File renamed without changes.

packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-getter/expected.html

Whitespace-only changes.

packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-key/index.js renamed to packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-getter/index.js

File renamed without changes.

packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-key/modules/x/wire/adapter.js renamed to packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-getter/modules/x/wire/adapter.js

File renamed without changes.

packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-key/modules/x/wire/wire.html renamed to packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-getter/modules/x/wire/wire.html

File renamed without changes.

packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-key/modules/x/wire/wire.js renamed to packages/@lwc/engine-server/src/__tests__/fixtures/wire/errors/throws-on-computed-getter/modules/x/wire/wire.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ export default class Wire extends LightningElement {
88
throw new Error('getter should not be called');
99
}
1010

11-
@wire(adapter, { name: 'symbol' })
12-
set [sym](v) {
13-
throw new Error('setter should not be called');
14-
}
15-
1611
get exposedSymbol() {
1712
return this[sym];
1813
}

0 commit comments

Comments
 (0)