Skip to content

Commit ae24696

Browse files
authored
fix: add support for non-bundler module resolution (tsconfig) (#279)
* test: add fixture using non-bundler module resolution * fix: add support non-bundler module resolution (tsconfig) * fix: add some more known nx generated signatures * chore: fix list of files to package
1 parent 77ea085 commit ae24696

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+40266
-9
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ If you did not opt into the App Engine Developer Preview:
115115

116116
```ts
117117
import { CommonEngine } from '@angular/ssr/node'
118-
import { render } from '@netlify/angular-runtime/common-engine'
118+
import { render } from '@netlify/angular-runtime/common-engine.mjs'
119119

120120
const commonEngine = new CommonEngine()
121121

@@ -135,7 +135,7 @@ If you opted into the App Engine Developer Preview:
135135

136136
```ts
137137
import { AngularAppEngine, createRequestHandler } from '@angular/ssr'
138-
import { getContext } from '@netlify/angular-runtime/context'
138+
import { getContext } from '@netlify/angular-runtime/context.mjs'
139139

140140
const angularAppEngine = new AngularAppEngine()
141141

common-engine.d.mts

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// This is duplicating module resolution from package.json#exports
2+
// because some module resolution settings in tsconfig.json are not honoring export maps
3+
// https://www.typescriptlang.org/docs/handbook/modules/theory.html#module-resolution
4+
export * from './src/common-engine.mjs'

common-engine.mjs

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// This is duplicating module resolution from package.json#exports
2+
// because some module resolution settings in tsconfig.json are not honoring export maps
3+
// https://www.typescriptlang.org/docs/handbook/modules/theory.html#module-resolution
4+
export * from './src/common-engine.mjs'

context.d.mts

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// This is duplicating module resolution from package.json#exports
2+
// because some module resolution settings in tsconfig.json are not honoring export maps
3+
// https://www.typescriptlang.org/docs/handbook/modules/theory.html#module-resolution
4+
export * from './src/context.mjs'

context.mjs

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// This is duplicating module resolution from package.json#exports
2+
// because some module resolution settings in tsconfig.json are not honoring export maps
3+
// https://www.typescriptlang.org/docs/handbook/modules/theory.html#module-resolution
4+
export * from './src/context.mjs'

demo/server.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { AngularAppEngine, createRequestHandler } from '@angular/ssr'
2-
import { getContext } from '@netlify/angular-runtime/context'
2+
import { getContext } from '@netlify/angular-runtime/context.mjs'
33

44
const angularAppEngine = new AngularAppEngine()
55

package.json

+16-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@
77
"src/**/*.js",
88
"src/**/*.mjs",
99
"src/**/*.json",
10-
"src/**/*.d.ts",
10+
"src/**/*.d.mts",
11+
"context.mjs",
12+
"context.d.mts",
13+
"common-engine.mjs",
14+
"common-engine.d.mts",
1115
"manifest.yml"
1216
],
1317
"exports": {
@@ -18,11 +22,19 @@
1822
"default": "./src/index.js"
1923
},
2024
"./common-engine": {
21-
"types": "./src/common-engine.d.ts",
25+
"types": "./src/common-engine.d.mts",
26+
"default": "./src/common-engine.mjs"
27+
},
28+
"./common-engine.mjs": {
29+
"types": "./src/common-engine.d.mts",
2230
"default": "./src/common-engine.mjs"
2331
},
2432
"./context": {
25-
"types": "./src/context.d.ts",
33+
"types": "./src/context.d.mts",
34+
"default": "./src/context.mjs"
35+
},
36+
"./context.mjs": {
37+
"types": "./src/context.d.mts",
2638
"default": "./src/context.mjs"
2739
}
2840
},
@@ -46,6 +58,7 @@
4658
"pretest:fixtures:angular-17": "cd tests/fixtures/angular-17 && npm ci",
4759
"pretest:fixtures:angular-19-common-engine": "cd tests/fixtures/angular-19-common-engine && npm ci",
4860
"pretest:fixtures:angular-19-app-engine": "cd tests/fixtures/angular-19-app-engine && npm ci",
61+
"pretest:fixtures:angular-19-app-engine-node-module-resolution": "cd tests/fixtures/angular-19-app-engine-node-module-resolution && npm ci",
4962
"pretest:fixtures:angular-19-prerender-false": "cd tests/fixtures/angular-19-prerender-false && npm ci",
5063
"pretest:fixtures:nx-angular-19-common-engine": "cd tests/fixtures/nx-angular-19-common-engine && npm ci",
5164
"pretest:fixtures:nx-angular-19-app-engine": "cd tests/fixtures/nx-angular-19-app-engine && npm ci",
File renamed without changes.
File renamed without changes.

src/helpers/knownServerTsSignatures.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
"577f7bc87c16bd10bac499e228ef24d23dc4dd516e469b5db3eefae4edcf6345": "CommonEngine",
66
"5678601ed12556305074503967b44ae42c45c268579db057c25cbf4b21a7212e": "CommonEngine",
77
"33d360cdf4819d90afeecd49952241191ee490900fa919a46f990186be3e8b5f": "CommonEngine",
8+
"140c0a0b4a8b648378d53630bee6bef9c3418daf27b372f50c06ab83c9d84a39": "CommonEngine",
89
"76419eb94b4b8672ba3bd79d34c5a66c7c30ff173995ecc6e0adc5808b86822d": "AppEngine",
9-
"a5aad843a116e34ce61264117cba981cff5eea3e6672815a4db08e7b4e5599d6": "AppEngine"
10+
"a5aad843a116e34ce61264117cba981cff5eea3e6672815a4db08e7b4e5599d6": "AppEngine",
11+
"5e0de282eb33582f8ec4c3da2946762d4c95794cb749cfb589407f4d4a0115a7": "AppEngine"
1012
}

src/helpers/serverModuleHelpers.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const { getProject } = require('./setUpEdgeFunction')
1111

1212
// eslint-disable-next-line no-inline-comments
1313
const NetlifyServerTsCommonEngine = /* typescript */ `import { CommonEngine } from '@angular/ssr/node'
14-
import { render } from '@netlify/angular-runtime/common-engine'
14+
import { render } from '@netlify/angular-runtime/common-engine.mjs'
1515
1616
const commonEngine = new CommonEngine()
1717
@@ -29,7 +29,7 @@ export async function netlifyCommonEngineHandler(request: Request, context: any)
2929

3030
// eslint-disable-next-line no-inline-comments
3131
const NetlifyServerTsAppEngine = /* typescript */ `import { AngularAppEngine, createRequestHandler } from '@angular/ssr'
32-
import { getContext } from '@netlify/angular-runtime/context'
32+
import { getContext } from '@netlify/angular-runtime/context.mjs'
3333
3434
const angularAppEngine = new AngularAppEngine()
3535
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Editor configuration, see https://editorconfig.org
2+
root = true
3+
4+
[*]
5+
charset = utf-8
6+
indent_style = space
7+
indent_size = 2
8+
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[*.ts]
12+
quote_type = single
13+
ij_typescript_use_double_quotes = false
14+
15+
[*.md]
16+
max_line_length = off
17+
trim_trailing_whitespace = false
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files.
2+
3+
# Compiled output
4+
/dist
5+
/tmp
6+
/out-tsc
7+
/bazel-out
8+
9+
# Node
10+
/node_modules
11+
npm-debug.log
12+
yarn-error.log
13+
14+
# IDEs and editors
15+
.idea/
16+
.project
17+
.classpath
18+
.c9/
19+
*.launch
20+
.settings/
21+
*.sublime-workspace
22+
23+
# Visual Studio Code
24+
.vscode/*
25+
!.vscode/settings.json
26+
!.vscode/tasks.json
27+
!.vscode/launch.json
28+
!.vscode/extensions.json
29+
.history/*
30+
31+
# Miscellaneous
32+
/.angular/cache
33+
.sass-cache/
34+
/connect.lock
35+
/coverage
36+
/libpeerconnection.log
37+
testem.log
38+
/typings
39+
40+
# System files
41+
.DS_Store
42+
Thumbs.db
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3+
"recommendations": ["angular.ng-template"]
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
3+
"version": "0.2.0",
4+
"configurations": [
5+
{
6+
"name": "ng serve",
7+
"type": "chrome",
8+
"request": "launch",
9+
"preLaunchTask": "npm: start",
10+
"url": "http://localhost:4200/"
11+
},
12+
{
13+
"name": "ng test",
14+
"type": "chrome",
15+
"request": "launch",
16+
"preLaunchTask": "npm: test",
17+
"url": "http://localhost:9876/debug.html"
18+
}
19+
]
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
// For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558
3+
"version": "2.0.0",
4+
"tasks": [
5+
{
6+
"type": "npm",
7+
"script": "start",
8+
"isBackground": true,
9+
"problemMatcher": {
10+
"owner": "typescript",
11+
"pattern": "$tsc",
12+
"background": {
13+
"activeOnStart": true,
14+
"beginsPattern": {
15+
"regexp": "(.*?)"
16+
},
17+
"endsPattern": {
18+
"regexp": "bundle generation complete"
19+
}
20+
}
21+
}
22+
},
23+
{
24+
"type": "npm",
25+
"script": "test",
26+
"isBackground": true,
27+
"problemMatcher": {
28+
"owner": "typescript",
29+
"pattern": "$tsc",
30+
"background": {
31+
"activeOnStart": true,
32+
"beginsPattern": {
33+
"regexp": "(.*?)"
34+
},
35+
"endsPattern": {
36+
"regexp": "bundle generation complete"
37+
}
38+
}
39+
}
40+
}
41+
]
42+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Angular19AppEngine
2+
3+
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 19.0.0-rc.0.
4+
5+
## Development server
6+
7+
To start a local development server, run:
8+
9+
```bash
10+
ng serve
11+
```
12+
13+
Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files.
14+
15+
## Code scaffolding
16+
17+
Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
18+
19+
```bash
20+
ng generate component component-name
21+
```
22+
23+
For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
24+
25+
```bash
26+
ng generate --help
27+
```
28+
29+
## Building
30+
31+
To build the project run:
32+
33+
```bash
34+
ng build
35+
```
36+
37+
This will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed.
38+
39+
## Running unit tests
40+
41+
To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
42+
43+
```bash
44+
ng test
45+
```
46+
47+
## Running end-to-end tests
48+
49+
For end-to-end (e2e) testing, run:
50+
51+
```bash
52+
ng e2e
53+
```
54+
55+
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
56+
57+
## Additional Resources
58+
59+
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.

0 commit comments

Comments
 (0)