Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(turbopack): don't parse .ts files as .tsx #61219

Merged
merged 1 commit into from Jan 29, 2024

Conversation

ForsakenHarmony
Copy link
Member

@ForsakenHarmony ForsakenHarmony commented Jan 26, 2024

What?

We currently parse JSX syntax in all typescript files which is wrong.

Closes PACK-2302

Turbo PR: vercel/turbo#7121

Turbopack Updates

@ijjk ijjk added Turbopack Related to Turbopack with Next.js. created-by: Turbopack team PRs by the turbopack team type: next labels Jan 26, 2024
@ForsakenHarmony ForsakenHarmony force-pushed the hrmny/pack-2302-dont-parse-ts-files-as-tsx branch from 4cf46f0 to 8e440a1 Compare January 26, 2024 16:22
@ijjk
Copy link
Member

ijjk commented Jan 26, 2024

Failing test suites

Commit: 61e0570

pnpm test-dev test/development/basic/next-rs-api.test.ts

  • next.rs api > should allow to write app edge page to disk
  • next.rs api > should allow to write app Node.js page to disk
  • next.rs api > should have working HMR on client-side change on a page 0
  • next.rs api > should have working HMR on client-side change on a page 1
  • next.rs api > should have working HMR on client-side change on a page 2
  • next.rs api > should have working HMR on server-side change on a page 0
  • next.rs api > should have working HMR on server-side change on a page 1
  • next.rs api > should have working HMR on server-side change on a page 2
  • next.rs api > should have working HMR on client and server-side change on a page 0
  • next.rs api > should have working HMR on client and server-side change on a page 1
  • next.rs api > should have working HMR on client and server-side change on a page 2
  • next.rs api > should have working HMR on client-side change on a app page 0
  • next.rs api > should have working HMR on client-side change on a app page 1
  • next.rs api > should have working HMR on client-side change on a app page 2
  • next.rs api > should have working HMR on server-side change on a app page 0
  • next.rs api > should have working HMR on server-side change on a app page 1
  • next.rs api > should have working HMR on server-side change on a app page 2
Expand output

● next.rs api › should allow to write app edge page to disk

expect(received).toBe(expected) // Object.is equality

Expected: "edge"
Received: "nodejs"

  362 |         case 'app-page': {
  363 |           const result = await route.htmlEndpoint.writeToDisk()
> 364 |           expect(result.type).toBe(runtime)
      |                               ^
  365 |           expect(result.config).toEqual(config)
  366 |           expect(normalizeIssues(result.issues)).toMatchSnapshot('issues')
  367 |           expect(normalizeDiagnostics(result.diagnostics)).toMatchSnapshot(

  at Object.toBe (development/basic/next-rs-api.test.ts:364:31)

● next.rs api › should allow to write app Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js page to disk: issues 1`

- Snapshot  -   1
+ Received  + 147

- []
+ [
+   {
+     "category": "parse",
+     "description": {
+       "type": "text",
+       "value": "Expected ';', got 'world'",
+     },
+     "detail": undefined,
+     "documentationLink": "",
+     "filePath": "[project]/app/app-nodejs/page.ts",
+     "severity": "error",
+     "source": {
+       "range": {
+         "end": {
+           "column": 37,
+           "line": 0,
+         },
+         "start": {
+           "column": 32,
+           "line": 0,
+         },
+       },
+       "source": "[project]/app/app-nodejs/page.ts",
+     },
+     "subIssues": [],
+     "title": {
+       "type": "text",
+       "value": "Parsing ecmascript source code failed",
+     },
+   },
+   {
+     "category": "parse",
+     "description": {
+       "type": "text",
+       "value": "Expected ';', got 'world'",
+     },
+     "detail": undefined,
+     "documentationLink": "",
+     "filePath": "[project]/app/app-nodejs/page.ts",
+     "severity": "error",
+     "source": {
+       "range": {
+         "end": {
+           "column": 37,
+           "line": 0,
+         },
+         "start": {
+           "column": 32,
+           "line": 0,
+         },
+       },
+       "source": "[project]/app/app-nodejs/page.ts",
+     },
+     "subIssues": [],
+     "title": {
+       "type": "text",
+       "value": "Parsing ecmascript source code failed",
+     },
+   },
+   {
+     "category": "parse",
+     "description": {
+       "type": "text",
+       "value": "Expression expected",
+     },
+     "detail": undefined,
+     "documentationLink": "",
+     "filePath": "[project]/app/layout.ts",
+     "severity": "error",
+     "source": {
+       "range": {
+         "end": {
+           "column": 115,
+           "line": 0,
+         },
+         "start": {
+           "column": 114,
+           "line": 0,
+         },
+       },
+       "source": "[project]/app/layout.ts",
+     },
+     "subIssues": [],
+     "title": {
+       "type": "text",
+       "value": "Parsing ecmascript source code failed",
+     },
+   },
+   {
+     "category": "parse",
+     "description": {
+       "type": "text",
+       "value": "Expression expected",
+     },
+     "detail": undefined,
+     "documentationLink": "",
+     "filePath": "[project]/app/layout.ts",
+     "severity": "error",
+     "source": {
+       "range": {
+         "end": {
+           "column": 115,
+           "line": 0,
+         },
+         "start": {
+           "column": 114,
+           "line": 0,
+         },
+       },
+       "source": "[project]/app/layout.ts",
+     },
+     "subIssues": [],
+     "title": {
+       "type": "text",
+       "value": "Parsing ecmascript source code failed",
+     },
+   },
+   {
+     "category": "parse",
+     "description": {
+       "type": "text",
+       "value": "Unterminated regexp literal",
+     },
+     "detail": undefined,
+     "documentationLink": "",
+     "filePath": "[project]/app/loading.ts",
+     "severity": "error",
+     "source": {
+       "range": {
+         "end": {
+           "column": 57,
+           "line": 0,
+         },
+         "start": {
+           "column": 53,
+           "line": 0,
+         },
+       },
+       "source": "[project]/app/loading.ts",
+     },
+     "subIssues": [],
+     "title": {
+       "type": "text",
+       "value": "Parsing ecmascript source code failed",
+     },
+   },
+ ]

  364 |           expect(result.type).toBe(runtime)
  365 |           expect(result.config).toEqual(config)
> 366 |           expect(normalizeIssues(result.issues)).toMatchSnapshot('issues')
      |                                                  ^
  367 |           expect(normalizeDiagnostics(result.diagnostics)).toMatchSnapshot(
  368 |             'diagnostics'
  369 |           )

  at Object.toMatchSnapshot (development/basic/next-rs-api.test.ts:366:50)

● next.rs api › should allow to write app Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js page to disk: rsc issues 1`

- Snapshot  -   1
+ Received  + 147

- []
+ [
+   {
+     "category": "parse",
+     "description": {
+       "type": "text",
+       "value": "Expected ';', got 'world'",
+     },
+     "detail": undefined,
+     "documentationLink": "",
+     "filePath": "[project]/app/app-nodejs/page.ts",
+     "severity": "error",
+     "source": {
+       "range": {
+         "end": {
+           "column": 37,
+           "line": 0,
+         },
+         "start": {
+           "column": 32,
+           "line": 0,
+         },
+       },
+       "source": "[project]/app/app-nodejs/page.ts",
+     },
+     "subIssues": [],
+     "title": {
+       "type": "text",
+       "value": "Parsing ecmascript source code failed",
+     },
+   },
+   {
+     "category": "parse",
+     "description": {
+       "type": "text",
+       "value": "Expected ';', got 'world'",
+     },
+     "detail": undefined,
+     "documentationLink": "",
+     "filePath": "[project]/app/app-nodejs/page.ts",
+     "severity": "error",
+     "source": {
+       "range": {
+         "end": {
+           "column": 37,
+           "line": 0,
+         },
+         "start": {
+           "column": 32,
+           "line": 0,
+         },
+       },
+       "source": "[project]/app/app-nodejs/page.ts",
+     },
+     "subIssues": [],
+     "title": {
+       "type": "text",
+       "value": "Parsing ecmascript source code failed",
+     },
+   },
+   {
+     "category": "parse",
+     "description": {
+       "type": "text",
+       "value": "Expression expected",
+     },
+     "detail": undefined,
+     "documentationLink": "",
+     "filePath": "[project]/app/layout.ts",
+     "severity": "error",
+     "source": {
+       "range": {
+         "end": {
+           "column": 115,
+           "line": 0,
+         },
+         "start": {
+           "column": 114,
+           "line": 0,
+         },
+       },
+       "source": "[project]/app/layout.ts",
+     },
+     "subIssues": [],
+     "title": {
+       "type": "text",
+       "value": "Parsing ecmascript source code failed",
+     },
+   },
+   {
+     "category": "parse",
+     "description": {
+       "type": "text",
+       "value": "Expression expected",
+     },
+     "detail": undefined,
+     "documentationLink": "",
+     "filePath": "[project]/app/layout.ts",
+     "severity": "error",
+     "source": {
+       "range": {
+         "end": {
+           "column": 115,
+           "line": 0,
+         },
+         "start": {
+           "column": 114,
+           "line": 0,
+         },
+       },
+       "source": "[project]/app/layout.ts",
+     },
+     "subIssues": [],
+     "title": {
+       "type": "text",
+       "value": "Parsing ecmascript source code failed",
+     },
+   },
+   {
+     "category": "parse",
+     "description": {
+       "type": "text",
+       "value": "Unterminated regexp literal",
+     },
+     "detail": undefined,
+     "documentationLink": "",
+     "filePath": "[project]/app/loading.ts",
+     "severity": "error",
+     "source": {
+       "range": {
+         "end": {
+           "column": 57,
+           "line": 0,
+         },
+         "start": {
+           "column": 53,
+           "line": 0,
+         },
+       },
+       "source": "[project]/app/loading.ts",
+     },
+     "subIssues": [],
+     "title": {
+       "type": "text",
+       "value": "Parsing ecmascript source code failed",
+     },
+   },
+ ]

  372 |           expect(result2.type).toBe(runtime)
  373 |           expect(result2.config).toEqual(config)
> 374 |           expect(normalizeIssues(result2.issues)).toMatchSnapshot('rsc issues')
      |                                                   ^
  375 |           expect(normalizeDiagnostics(result2.diagnostics)).toMatchSnapshot(
  376 |             'rsc diagnostics'
  377 |           )

  at Object.toMatchSnapshot (development/basic/next-rs-api.test.ts:374:51)

● next.rs api › should have working HMR on client-side change on a page 0

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 10)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on client-side change on a page 1

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 4)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on client-side change on a page 2

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 4)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on server-side change on a page 0

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 4)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on server-side change on a page 1

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 4)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on server-side change on a page 2

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 4)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on client and server-side change on a page 0

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-nodejs/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>", "ident": "[project]/app/app-nodejs/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 8)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on client and server-side change on a page 1

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-edge/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>
export const runtime = \"edge\"", "ident": "[project]/app/app-edge/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-edge/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>
export const runtime = \"edge\"", "ident": "[project]/app/app-edge/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 84)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on client and server-side change on a page 2

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-edge/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>
export const runtime = \"edge\"", "ident": "[project]/app/app-edge/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app-edge/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 0}, "start": {"column": 32, "line": 0}}, "source": {"content": "export default () => <div>hello world</div>
export const runtime = \"edge\"", "ident": "[project]/app/app-edge/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 84)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on client-side change on a app page 0

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 7)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on client-side change on a app page 1

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 27)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on client-side change on a app page 2

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 10)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on server-side change on a app page 0

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 7)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on server-side change on a app page 1

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 4)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

● next.rs api › should have working HMR on server-side change on a app page 2

expect(received).toHaveProperty(path, value)

Expected path: "issues"

Expected value: toBeEmpty<>
Received value: [{"category": "parse", "description": {"type": "text", "value": "Unterminated regexp literal"}, "documentationLink": "", "filePath": "[project]/app/loading.ts", "severity": "error", "source": {"range": {"end": {"column": 57, "line": 0}, "start": {"column": 53, "line": 0}}, "source": {"content": "export default function Loading() { return <>Loading</> }", "ident": "[project]/app/loading.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expression expected"}, "documentationLink": "", "filePath": "[project]/app/layout.ts", "severity": "error", "source": {"range": {"end": {"column": 115, "line": 0}, "start": {"column": 114, "line": 0}}, "source": {"content": "export default function RootLayout({ children }: { children: any }) { return (<html><body>{children}</body></html>)}", "ident": "[project]/app/layout.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}, {"category": "parse", "description": {"type": "text", "value": "Expected ';', got 'world'"}, "documentationLink": "", "filePath": "[project]/app/app/page.ts", "severity": "error", "source": {"range": {"end": {"column": 37, "line": 1}, "start": {"column": 32, "line": 1}}, "source": {"content": "import Client from \"./client.ts\";
export default () => <div>hello world<Client /></div>;", "ident": "[project]/app/app/page.ts"}}, "subIssues": [], "title": {"type": "text", "value": "Parsing ecmascript source code failed"}}]

  502 |             expect(result.value).toHaveProperty('resource', expect.toBeObject())
  503 |             expect(result.value).toHaveProperty('type', 'issues')
> 504 |             expect(result.value).toHaveProperty('issues', expect.toBeEmpty())
      |                                  ^
  505 |             expect(result.value).toHaveProperty(
  506 |               'diagnostics',
  507 |               expect.toBeEmpty()

  at toHaveProperty (development/basic/next-rs-api.test.ts:504:34)
      at async Promise.all (index 25)
  at Object.<anonymous> (development/basic/next-rs-api.test.ts:498:9)

Read more about building and testing Next.js in contributing.md.

@ijjk
Copy link
Member

ijjk commented Jan 26, 2024

Stats from current PR

Default Build
General
vercel/next.js canary vercel/next.js hrmny/pack-2302-dont-parse-ts-files-as-tsx Change
buildDuration 11.8s 11.9s N/A
buildDurationCached 6.3s 5s N/A
nodeModulesSize 200 MB 200 MB
nextStartRea..uration (ms) 431ms 433ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js hrmny/pack-2302-dont-parse-ts-files-as-tsx Change
3f784ff6-HASH.js gzip 53.4 kB 53.4 kB
423.HASH.js gzip 185 B 181 B N/A
68-HASH.js gzip 29.9 kB 29.9 kB N/A
framework-HASH.js gzip 45.2 kB 45.2 kB
main-app-HASH.js gzip 238 B 240 B N/A
main-HASH.js gzip 31.8 kB 31.8 kB N/A
webpack-HASH.js gzip 1.7 kB 1.7 kB
Overall change 100 kB 100 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js hrmny/pack-2302-dont-parse-ts-files-as-tsx Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary vercel/next.js hrmny/pack-2302-dont-parse-ts-files-as-tsx Change
_app-HASH.js gzip 194 B 195 B N/A
_error-HASH.js gzip 182 B 181 B N/A
amp-HASH.js gzip 502 B 502 B
css-HASH.js gzip 320 B 322 B N/A
dynamic-HASH.js gzip 2.5 kB 2.5 kB N/A
edge-ssr-HASH.js gzip 255 B 256 B N/A
head-HASH.js gzip 350 B 349 B N/A
hooks-HASH.js gzip 368 B 369 B N/A
image-HASH.js gzip 4.18 kB 4.18 kB N/A
index-HASH.js gzip 257 B 256 B N/A
link-HASH.js gzip 2.61 kB 2.61 kB N/A
routerDirect..HASH.js gzip 310 B 311 B N/A
script-HASH.js gzip 384 B 383 B N/A
withRouter-HASH.js gzip 306 B 308 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 608 B 608 B
Client Build Manifests
vercel/next.js canary vercel/next.js hrmny/pack-2302-dont-parse-ts-files-as-tsx Change
_buildManifest.js gzip 484 B 484 B
Overall change 484 B 484 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js hrmny/pack-2302-dont-parse-ts-files-as-tsx Change
index.html gzip 529 B 527 B N/A
link.html gzip 541 B 540 B N/A
withRouter.html gzip 523 B 522 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js hrmny/pack-2302-dont-parse-ts-files-as-tsx Change
edge-ssr.js gzip 94 kB 94 kB N/A
page.js gzip 150 kB 150 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js hrmny/pack-2302-dont-parse-ts-files-as-tsx Change
middleware-b..fest.js gzip 625 B 621 B N/A
middleware-r..fest.js gzip 151 B 149 B N/A
middleware.js gzip 37.6 kB 37.6 kB N/A
edge-runtime..pack.js gzip 1.92 kB 1.92 kB
Overall change 1.92 kB 1.92 kB
Next Runtimes
vercel/next.js canary vercel/next.js hrmny/pack-2302-dont-parse-ts-files-as-tsx Change
app-page-exp...dev.js gzip 170 kB 170 kB
app-page-exp..prod.js gzip 95.8 kB 95.8 kB
app-page-tur..prod.js gzip 96.4 kB 96.4 kB
app-page-tur..prod.js gzip 91 kB 91 kB
app-page.run...dev.js gzip 142 kB 142 kB
app-page.run..prod.js gzip 90.3 kB 90.3 kB
app-route-ex...dev.js gzip 22.2 kB 22.2 kB
app-route-ex..prod.js gzip 14.9 kB 14.9 kB
app-route-tu..prod.js gzip 14.9 kB 14.9 kB
app-route-tu..prod.js gzip 14.5 kB 14.5 kB
app-route.ru...dev.js gzip 21.7 kB 21.7 kB
app-route.ru..prod.js gzip 14.5 kB 14.5 kB
pages-api-tu..prod.js gzip 9.43 kB 9.43 kB
pages-api.ru...dev.js gzip 9.7 kB 9.7 kB
pages-api.ru..prod.js gzip 9.43 kB 9.43 kB
pages-turbo...prod.js gzip 22 kB 22 kB
pages.runtim...dev.js gzip 22.7 kB 22.7 kB
pages.runtim..prod.js gzip 22 kB 22 kB
server.runti..prod.js gzip 49.7 kB 49.7 kB
Overall change 933 kB 933 kB
Commit: a161c2c

@ForsakenHarmony ForsakenHarmony force-pushed the hrmny/pack-2302-dont-parse-ts-files-as-tsx branch from 8e440a1 to 0b97987 Compare January 29, 2024 17:21
ForsakenHarmony added a commit to vercel/turbo that referenced this pull request Jan 29, 2024
### Description

We currently parse JSX syntax in all typescript files which is wrong.

Closes PACK-2302

Next.js PR: vercel/next.js#61219
@ForsakenHarmony ForsakenHarmony force-pushed the hrmny/pack-2302-dont-parse-ts-files-as-tsx branch from 0b97987 to 61e0570 Compare January 29, 2024 20:35
@ForsakenHarmony ForsakenHarmony marked this pull request as ready for review January 29, 2024 20:35
@ForsakenHarmony ForsakenHarmony force-pushed the hrmny/pack-2302-dont-parse-ts-files-as-tsx branch from 61e0570 to a161c2c Compare January 29, 2024 20:56
@ForsakenHarmony ForsakenHarmony enabled auto-merge (squash) January 29, 2024 21:12
@ForsakenHarmony ForsakenHarmony merged commit e4b3531 into canary Jan 29, 2024
63 of 68 checks passed
@ForsakenHarmony ForsakenHarmony deleted the hrmny/pack-2302-dont-parse-ts-files-as-tsx branch January 29, 2024 21:13
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 13, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
created-by: Turbopack team PRs by the turbopack team locked Turbopack Related to Turbopack with Next.js. type: next
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants