Skip to content

Commit

Permalink
chore(core): remove unused qrl refSymbol
Browse files Browse the repository at this point in the history
  • Loading branch information
wmertens committed Jan 20, 2025
1 parent eb3f70f commit e4b83ac
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 64 deletions.
11 changes: 3 additions & 8 deletions packages/qwik/src/core/shared/qrl/qrl-class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ export const isSyncQrl = (value: any): value is SyncQRLInternal => {
export type QRLInternalMethods<TYPE> = {
readonly $chunk$: string | null;
readonly $symbol$: string;
readonly $refSymbol$: string | null;
readonly $hash$: string;

$capture$: string[] | null;
Expand All @@ -68,15 +67,13 @@ export type QRLInternalMethods<TYPE> = {

export type QRLInternal<TYPE = unknown> = QRL<TYPE> & QRLInternalMethods<TYPE>;

// TODO remove refSymbol, it's not used
export const createQRL = <TYPE>(
chunk: string | null,
symbol: string,
symbolRef: null | ValueOrPromise<TYPE>,
symbolFn: null | (() => Promise<Record<string, TYPE>>),
capture: null | Readonly<number[]>,
captureRef: Readonly<unknown[]> | null,
refSymbol: string | null
captureRef: Readonly<unknown[]> | null
): QRLInternal<TYPE> => {
if (qDev && qSerialize) {
if (captureRef) {
Expand Down Expand Up @@ -202,19 +199,17 @@ export const createQRL = <TYPE>(
}
};

const resolvedSymbol = refSymbol ?? symbol;
const hash = getSymbolHash(resolvedSymbol);
const hash = getSymbolHash(symbol);

Object.assign(qrl, {
getSymbol: () => resolvedSymbol,
getSymbol: () => symbol,
getHash: () => hash,
getCaptured: () => captureRef,
resolve,
$resolveLazy$: resolveLazy,
$setContainer$: setContainer,
$chunk$: chunk,
$symbol$: symbol,
$refSymbol$: refSymbol,
$hash$: hash,
getFn: bindFnToContext,

Expand Down
6 changes: 3 additions & 3 deletions packages/qwik/src/core/shared/qrl/qrl.public.ts
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ export const $ = <T>(expression: T): QRL<T> => {
);
}

return createQRL<T>(null, 's' + runtimeSymbolId++, expression, null, null, null, null);
return createQRL<T>(null, 's' + runtimeSymbolId++, expression, null, null, null);
};
/** @private Use To avoid optimizer replacement */
export const dollar = $;
Expand Down Expand Up @@ -302,7 +302,7 @@ export const sync$ = <T extends Function>(fn: T): SyncQRL<T> => {
fn = new Function('return ' + fn.toString())() as any;
}

return createQRL<T>('', SYNC_QRL, fn, null, null, null, null) as any;
return createQRL<T>('', SYNC_QRL, fn, null, null, null) as any;
};

/**
Expand All @@ -323,5 +323,5 @@ export const _qrlSync = function <TYPE extends Function>(
serializedFn = fn.toString();
}
(fn as any).serialized = serializedFn;
return createQRL<TYPE>('', SYNC_QRL, fn, null, null, null, null) as any;
return createQRL<TYPE>('', SYNC_QRL, fn, null, null, null) as any;
};
6 changes: 3 additions & 3 deletions packages/qwik/src/core/shared/qrl/qrl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ export const qrl = <T = any>(
}

// Unwrap subscribers
return createQRL<T>(chunk, symbol, null, symbolFn, null, lexicalScopeCapture, null);
return createQRL<T>(chunk, symbol, null, symbolFn, null, lexicalScopeCapture);
};

/** @internal */
Expand All @@ -95,15 +95,15 @@ export const inlinedQrl = <T>(
lexicalScopeCapture: any[] = EMPTY_ARRAY
): QRL<T> => {
// Unwrap subscribers
return createQRL<T>(null, symbolName, symbol, null, null, lexicalScopeCapture, null);
return createQRL<T>(null, symbolName, symbol, null, null, lexicalScopeCapture);
};

/** @internal */
export const _noopQrl = <T>(
symbolName: string,
lexicalScopeCapture: any[] = EMPTY_ARRAY
): QRL<T> => {
return createQRL<T>(null, symbolName, null, null, null, lexicalScopeCapture, null);
return createQRL<T>(null, symbolName, null, null, null, lexicalScopeCapture);
};

/** @internal */
Expand Down
46 changes: 15 additions & 31 deletions packages/qwik/src/core/shared/qrl/qrl.unit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,35 +108,29 @@ describe('serialization', () => {
new WeakMap<any, any>()
);
assert.equal(
qrlToString(serializationContext, createQRL('./chunk', '', null, null, null, null, null)),
qrlToString(serializationContext, createQRL('./chunk', '', null, null, null, null)),
'chunk#'
);
assert.equal(
qrlToString(serializationContext, createQRL('./c', 's1', null, null, null, null, null)),
qrlToString(serializationContext, createQRL('./c', 's1', null, null, null, null)),
'c#s1'
);
assert.equal(
qrlToString(serializationContext, createQRL('./c', 's1', null, null, [], null, null)),
qrlToString(serializationContext, createQRL('./c', 's1', null, null, [], null)),
'c#s1'
);
assert.equal(
qrlToString(
serializationContext,
createQRL('./c', 's1', null, null, [1, '2'] as any, null, null)
),
qrlToString(serializationContext, createQRL('./c', 's1', null, null, [1, '2'] as any, null)),
'c#s1[1 2]'
);
assert.equal(
qrlToString(
serializationContext,
createQRL('c', 's1', null, null, [1 as any, '2'], null, null)
),
qrlToString(serializationContext, createQRL('c', 's1', null, null, [1 as any, '2'], null)),
'c#s1[1 2]'
);
assert.equal(
qrlToString(
serializationContext,
createQRL('src/routes/[...index]/a+b/c?foo', 's1', null, null, [1 as any, '2'], null, null)
createQRL('src/routes/[...index]/a+b/c?foo', 's1', null, null, [1 as any, '2'], null)
),
'src/routes/[...index]/a+b/c?foo#s1[1 2]'
);
Expand Down Expand Up @@ -174,19 +168,19 @@ describe('serialization', () => {

describe('createQRL', () => {
test('should create QRL', () => {
const q = createQRL('chunk', 'symbol', 'resolved', null, null, null, null);
const q = createQRL('chunk', 'symbol', 'resolved', null, null, null);
matchProps(q, {
$chunk$: 'chunk',
$symbol$: 'symbol',
resolved: 'resolved',
});
});
test('should have .resolved: given scalar', async () => {
const q = createQRL('chunk', 'symbol', 'resolved', null, null, null, null);
const q = createQRL('chunk', 'symbol', 'resolved', null, null, null);
assert.equal(q.resolved, 'resolved');
});
test('should have .resolved: given promise for scalar', async () => {
const q = createQRL('chunk', 'symbol', Promise.resolve('resolved'), null, null, null, null);
const q = createQRL('chunk', 'symbol', Promise.resolve('resolved'), null, null, null);
assert.equal(q.resolved, undefined);
assert.equal(await q.resolve(), 'resolved');
assert.equal(q.resolved, 'resolved');
Expand All @@ -198,7 +192,6 @@ describe('createQRL', () => {
null,
() => Promise.resolve({ symbol: 'resolved' }),
null,
null,
null
);
assert.equal(q.resolved, undefined);
Expand All @@ -208,39 +201,31 @@ describe('createQRL', () => {

const fn = () => 'hi';
test('should have .resolved: given function without captures', async () => {
const q = createQRL('chunk', 'symbol', fn, null, null, null, null);
const q = createQRL('chunk', 'symbol', fn, null, null, null);
assert.equal(q.resolved, fn);
});
test('should have .resolved: given promise for function without captures', async () => {
const q = createQRL('chunk', 'symbol', Promise.resolve(fn), null, null, null, null);
const q = createQRL('chunk', 'symbol', Promise.resolve(fn), null, null, null);
assert.equal(q.resolved, undefined);
assert.equal(await q.resolve(), fn);
assert.equal(q.resolved, fn);
});
test('should have .resolved: promise for function without captures', async () => {
const q = createQRL(
'chunk',
'symbol',
null,
() => Promise.resolve({ symbol: fn }),
null,
null,
null
);
const q = createQRL('chunk', 'symbol', null, () => Promise.resolve({ symbol: fn }), null, null);
assert.equal(q.resolved, undefined);
assert.equal(await q.resolve(), fn);
assert.equal(q.resolved, fn);
});

const capFn = () => useLexicalScope();
test('should have .resolved: given function with captures', async () => {
const q = createQRL('chunk', 'symbol', capFn, null, null, ['hi'], null);
const q = createQRL('chunk', 'symbol', capFn, null, null, ['hi']);
assert.isDefined(q.resolved);
assert.notEqual(q.resolved, capFn);
assert.deepEqual(q.resolved!(), ['hi']);
});
test('should have .resolved: given promise for function with captures', async () => {
const q = createQRL('chunk', 'symbol', Promise.resolve(capFn), null, null, ['hi'], null);
const q = createQRL('chunk', 'symbol', Promise.resolve(capFn), null, null, ['hi']);
assert.equal(q.resolved, undefined);
assert.deepEqual(await q(), ['hi']);
assert.notEqual(q.resolved, capFn);
Expand All @@ -253,8 +238,7 @@ describe('createQRL', () => {
null,
() => Promise.resolve({ symbol: capFn }),
null,
['hi'],
null
['hi']
);
assert.equal(q.resolved, undefined);
assert.deepEqual(await q(), ['hi']);
Expand Down
9 changes: 3 additions & 6 deletions packages/qwik/src/core/shared/shared-serialization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -566,7 +566,7 @@ export function parseQRL(qrl: string): QRLInternal<any> {
assertDefined(backChannel, 'Missing QRL_RUNTIME_CHUNK');
qrlRef = backChannel.get(symbol);
}
return createQRL(chunk, symbol, qrlRef, null, captureIds, null, null);
return createQRL(chunk, symbol, qrlRef, null, captureIds, null);
}

export function inflateQRL(container: DeserializeContainer, qrl: QRLInternal<any>) {
Expand Down Expand Up @@ -1311,15 +1311,12 @@ export function qrlToString(
let symbol = value.$symbol$;
let chunk = value.$chunk$;

const refSymbol = value.$refSymbol$ ?? symbol;
const platform = getPlatform();
if (platform) {
const result = platform.chunkForSymbol(refSymbol, chunk, value.dev?.file);
const result = platform.chunkForSymbol(symbol, chunk, value.dev?.file);
if (result) {
chunk = result[1];
if (!value.$refSymbol$) {
symbol = result[0];
}
symbol = result[0];
}
}

Expand Down
5 changes: 1 addition & 4 deletions packages/qwik/src/core/shared/shared-serialization.unit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -732,10 +732,7 @@ describe('shared-serialization', () => {
`);
});
it('should dedupe function sub-data', async () => {
const objs = await serialize(
[shared1],
createQRL(null, 'foo', 123, null, null, [shared1], null)
);
const objs = await serialize([shared1], createQRL(null, 'foo', 123, null, null, [shared1]));
expect(dumpState(objs)).toMatchInlineSnapshot(`
"
0 Array [
Expand Down
12 changes: 3 additions & 9 deletions packages/qwik/src/core/use/use-task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -275,15 +275,9 @@ export const useRunTask = (
};

const getTaskHandlerQrl = (task: Task): QRL<(ev: Event) => void> => {
const taskHandler = createQRL<(ev: Event) => void>(
null,
'_task',
scheduleTask,
null,
null,
[task],
null
);
const taskHandler = createQRL<(ev: Event) => void>(null, '_task', scheduleTask, null, null, [
task,
]);
return taskHandler;
};

Expand Down

0 comments on commit e4b83ac

Please sign in to comment.