Skip to content

Commit edbbd3f

Browse files
committed
test(rsc-mf): cover import-equals and import-type callback inference
1 parent d7b4139 commit edbbd3f

4 files changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import remoteActions = require('./actions');
2+
3+
export const runImportEqualsRemoteActionEcho = async () =>
4+
remoteActions.remoteActionEcho('import-equals-action-require');
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export type IncrementActionFromImportTypeQuery = import(
2+
'./actions',
3+
).incrementRemoteCount;
4+
5+
export const IMPORT_TYPE_QUERY_ACTION_REFERENCE =
6+
'import-type-query-action-reference';

tests/integration/rsc-mf/remote/src/runtime/createRscExposeDefinitions.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,20 @@ const collectLocalModuleSpecifiers = (
218218
const moduleSpecifiers: SourceModuleSpecifier[] = [];
219219

220220
const collectNodeSpecifiers = (node: ts.Node): void => {
221+
if (ts.isImportEqualsDeclaration(node)) {
222+
if (
223+
ts.isExternalModuleReference(node.moduleReference) &&
224+
node.moduleReference.expression &&
225+
ts.isStringLiteralLike(node.moduleReference.expression)
226+
) {
227+
moduleSpecifiers.push({
228+
moduleSpecifier: node.moduleReference.expression.text,
229+
typeOnly: false,
230+
});
231+
}
232+
return;
233+
}
234+
221235
if (ts.isImportDeclaration(node)) {
222236
if (ts.isStringLiteralLike(node.moduleSpecifier)) {
223237
moduleSpecifiers.push({

tests/integration/rsc-mf/tests/createRscExposeDefinitions.test.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,25 @@ describe('createRscExposeDefinitions', () => {
415415
});
416416
});
417417

418+
it('infers callback bootstrap from import-equals commonjs require graph', () => {
419+
const { createRscExposeDefinitions, CALLBACK_BOOTSTRAP_MODULE } =
420+
loadCreateRscExposeDefinitions();
421+
expect(
422+
createRscExposeDefinitions({
423+
'./customImportEqualsActionRequire':
424+
'./src/components/importEqualsActionRequire.cts',
425+
}),
426+
).toEqual({
427+
'./customImportEqualsActionRequire': {
428+
import: [
429+
CALLBACK_BOOTSTRAP_MODULE,
430+
'./src/components/importEqualsActionRequire.cts',
431+
],
432+
layer: 'react-server-components',
433+
},
434+
});
435+
});
436+
418437
it('does not infer callback bootstrap from commonjs require graph without callback directives', () => {
419438
const { createRscExposeDefinitions } = loadCreateRscExposeDefinitions();
420439
expect(
@@ -460,6 +479,21 @@ describe('createRscExposeDefinitions', () => {
460479
});
461480
});
462481

482+
it('does not infer callback bootstrap from import-type query references', () => {
483+
const { createRscExposeDefinitions } = loadCreateRscExposeDefinitions();
484+
expect(
485+
createRscExposeDefinitions({
486+
'./customImportTypeQueryActionReference':
487+
'./src/components/importTypeQueryActionReference.ts',
488+
}),
489+
).toEqual({
490+
'./customImportTypeQueryActionReference': {
491+
import: ['./src/components/importTypeQueryActionReference.ts'],
492+
layer: 'react-server-components',
493+
},
494+
});
495+
});
496+
463497
it('does not infer callback bootstrap from type-only re-export clauses', () => {
464498
const { createRscExposeDefinitions } = loadCreateRscExposeDefinitions();
465499
expect(

0 commit comments

Comments
 (0)