Skip to content

Commit b6fc4bd

Browse files
committed
feat(eslint): support the new serializer API
1 parent 5126138 commit b6fc4bd

File tree

4 files changed

+49
-2
lines changed

4 files changed

+49
-2
lines changed

packages/eslint-plugin-qwik/src/validLexicalScope.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,15 @@ function _isTypeCapturable(
287287
return;
288288
}
289289
seen.add(type);
290-
if (type.getProperty('__no_serialize__') || type.getProperty('__qwik_serializable__')) {
290+
if (
291+
type
292+
.getProperties()
293+
.some((p) =>
294+
/(__no_serialize__|__qwik_serializable__|NoSerializeSymbol|SerializerSymbol)/i.test(
295+
p.escapedName as string
296+
)
297+
)
298+
) {
291299
return;
292300
}
293301
const isUnknown = type.flags & ts.TypeFlags.Unknown;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import {
2+
useTask$,
3+
component$,
4+
NoSerializeSymbol,
5+
SerializerSymbol,
6+
useSerializer$,
7+
} from '@qwik.dev/core';
8+
9+
class NoSerSym {
10+
[NoSerializeSymbol] = true;
11+
}
12+
13+
class SerSym {
14+
[SerializerSymbol]() {
15+
return this.toString();
16+
}
17+
}
18+
19+
export interface Value {
20+
value: number;
21+
obj1: NoSerSym;
22+
obj2: SerSym;
23+
}
24+
25+
export const HelloWorld = component$(() => {
26+
const state: Value = { value: 12, obj1: new NoSerSym(), obj2: new SerSym() };
27+
const ser = useSerializer$({
28+
deserialize: () => new SerSym(),
29+
serialize: (obj) => obj.toString(),
30+
});
31+
32+
useTask$(() => {
33+
// eslint-disable-next-line no-console
34+
console.log(state.value, ser.value);
35+
});
36+
return <div></div>;
37+
});

packages/qwik/public.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ export {
2929
JSXOutput,
3030
noSerialize,
3131
NoSerialize,
32+
NoSerializeSymbol,
33+
SerializerSymbol,
3234
OnVisibleTaskOptions,
3335
PrefetchGraph,
3436
PrefetchServiceWorker,

packages/qwik/src/core/signal/signal.public.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export interface ComputedSignal<T> extends ReadonlySignal<T> {
5151
*/
5252
export interface SerializerSignal<T> extends ComputedSignal<T> {
5353
/** Fake property to make the serialization linter happy */
54-
__noSerialize__: true;
54+
__no_serialize__: true;
5555
}
5656

5757
/**

0 commit comments

Comments
 (0)