@deepkit/angular-ssr 1.0.1-alpha.160 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +19 -16
- package/dist/cjs/src/angular.d.ts +10 -3
- package/dist/cjs/src/angular.js +29 -19
- package/dist/cjs/src/angular.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/src/angular.d.ts +10 -3
- package/dist/esm/src/angular.js +29 -19
- package/dist/esm/src/angular.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/angular.ts +23 -10
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.0.2](https://github.com/deepkit/deepkit-framework/compare/v1.0.1...v1.0.2) (2025-02-24)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **angular-ssr:** support server:start serving of angular routes ([ee3972c](https://github.com/deepkit/deepkit-framework/commit/ee3972cb07766299e315d885a1ee82ca6a49dda9))
|
|
11
|
+
|
|
12
|
+
## [1.0.1](https://github.com/deepkit/deepkit-framework/compare/v1.0.1-alpha.160...v1.0.1) (2025-02-24)
|
|
13
|
+
|
|
14
|
+
**Note:** Version bump only for package @deepkit/angular-ssr
|
|
15
|
+
|
|
6
16
|
## [1.0.1-alpha.160](https://github.com/deepkit/deepkit-framework/compare/v1.0.1-alpha.159...v1.0.1-alpha.160) (2025-02-18)
|
|
7
17
|
|
|
8
18
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## Configure Deepkit App
|
|
4
4
|
|
|
5
|
-
- Make sure to put your main application inside `app.ts` and
|
|
5
|
+
- Make sure to put your main application inside `app.ts` and configure it in your `angular.json`:
|
|
6
6
|
|
|
7
7
|
In `src/server/app.ts`:
|
|
8
8
|
|
|
9
9
|
```typescript
|
|
10
10
|
import { App } from '@deepkit/app';
|
|
11
11
|
import { FrameworkModule } from '@deepkit/framework';
|
|
12
|
-
import { AngularModule } from '@deepkit/angular-ssr';
|
|
12
|
+
import { AngularModule, RequestHandler } from '@deepkit/angular-ssr';
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
const app = new App({
|
|
15
15
|
controllers: [
|
|
16
16
|
// your controllers
|
|
17
17
|
],
|
|
@@ -20,12 +20,23 @@ export const app = new App({
|
|
|
20
20
|
],
|
|
21
21
|
imports: [
|
|
22
22
|
new FrameworkModule({}),
|
|
23
|
-
new AngularModule(
|
|
23
|
+
new AngularModule({
|
|
24
|
+
moduleUrl: import.meta.url,
|
|
25
|
+
})
|
|
24
26
|
]
|
|
25
27
|
});
|
|
26
|
-
```
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
const main = isMainModule(import.meta.url);
|
|
30
|
+
|
|
31
|
+
if (main) {
|
|
32
|
+
void app.run(); //allows to call all CLI commands, including server:start
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const reqHandler = main
|
|
36
|
+
//when in main, we don't want to create a new request handler
|
|
37
|
+
? () => undefined
|
|
38
|
+
: app.get(RequestHandler).create();
|
|
39
|
+
```
|
|
29
40
|
|
|
30
41
|
```json
|
|
31
42
|
{
|
|
@@ -36,22 +47,14 @@ Create a `src/server/server.ts` and configure it in your `angular.json`:
|
|
|
36
47
|
"server": "src/main.server.ts",
|
|
37
48
|
"outputMode": "server",
|
|
38
49
|
"ssr": {
|
|
39
|
-
"entry": "src/server/
|
|
50
|
+
"entry": "src/server/app.ts"
|
|
40
51
|
},
|
|
41
52
|
"browser": "src/main.ts"
|
|
42
53
|
}
|
|
43
54
|
}
|
|
44
55
|
```
|
|
45
56
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
```typescript
|
|
49
|
-
import { app } from './app';
|
|
50
|
-
import { RequestHandler } from '@deepkit/angular-ssr';
|
|
51
|
-
import { AngularNodeAppEngine } from '@angular/ssr/node';
|
|
52
|
-
|
|
53
|
-
export const reqHandler = app.get(RequestHandler).create(import.meta.url, new AngularNodeAppEngine());
|
|
54
|
-
````
|
|
57
|
+
Make sure to have `src/server/app.ts` also in your tsconfig.
|
|
55
58
|
|
|
56
59
|
## Configure Angular App
|
|
57
60
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NodeRequestHandlerFunction } from '@angular/ssr/node';
|
|
2
2
|
import { HttpKernel, httpWorkflow } from '@deepkit/http';
|
|
3
3
|
import { ApplicationServer } from '@deepkit/framework';
|
|
4
4
|
import { Logger } from '@deepkit/logger';
|
|
@@ -17,6 +17,10 @@ declare class AngularConfig {
|
|
|
17
17
|
* @see REQUEST_CONTEXT
|
|
18
18
|
*/
|
|
19
19
|
serverBaseUrl: string;
|
|
20
|
+
/**
|
|
21
|
+
* Value of `import.meta.url` in the main entry point module (usually app.ts/server.ts).
|
|
22
|
+
*/
|
|
23
|
+
moduleUrl: string;
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
22
26
|
* This object is available angular providers as DI token `REQUEST_CONTEXT`.
|
|
@@ -27,8 +31,10 @@ declare class AngularRequestContext {
|
|
|
27
31
|
constructor(config: AngularConfig);
|
|
28
32
|
}
|
|
29
33
|
declare class AngularStaticListener {
|
|
34
|
+
protected config: AngularConfig;
|
|
30
35
|
localPath: string;
|
|
31
36
|
path: string;
|
|
37
|
+
constructor(config: AngularConfig);
|
|
32
38
|
onRoute(event: typeof httpWorkflow.onRoute.event): Promise<unknown> | undefined;
|
|
33
39
|
}
|
|
34
40
|
/**
|
|
@@ -43,14 +49,15 @@ declare class AngularStaticListener {
|
|
|
43
49
|
* ```
|
|
44
50
|
*/
|
|
45
51
|
export declare class RequestHandler {
|
|
52
|
+
protected config: AngularConfig;
|
|
46
53
|
protected logger: Logger;
|
|
47
54
|
protected requestContext: AngularRequestContext;
|
|
48
55
|
protected http: HttpKernel;
|
|
49
56
|
protected server: ApplicationServer;
|
|
50
57
|
protected staticListener: AngularStaticListener;
|
|
51
58
|
protected started: boolean;
|
|
52
|
-
constructor(logger: Logger, requestContext: AngularRequestContext, http: HttpKernel, server: ApplicationServer, staticListener: AngularStaticListener);
|
|
53
|
-
create(
|
|
59
|
+
constructor(config: AngularConfig, logger: Logger, requestContext: AngularRequestContext, http: HttpKernel, server: ApplicationServer, staticListener: AngularStaticListener);
|
|
60
|
+
create(): NodeRequestHandlerFunction;
|
|
54
61
|
}
|
|
55
62
|
declare const AngularModule_base: import("@deepkit/app").AppModuleClass<AngularConfig>;
|
|
56
63
|
export declare class AngularModule extends AngularModule_base {
|
package/dist/cjs/src/angular.js
CHANGED
|
@@ -47,9 +47,13 @@ class AngularConfig {
|
|
|
47
47
|
* @see REQUEST_CONTEXT
|
|
48
48
|
*/
|
|
49
49
|
this.serverBaseUrl = '';
|
|
50
|
+
/**
|
|
51
|
+
* Value of `import.meta.url` in the main entry point module (usually app.ts/server.ts).
|
|
52
|
+
*/
|
|
53
|
+
this.moduleUrl = '';
|
|
50
54
|
}
|
|
51
55
|
}
|
|
52
|
-
AngularConfig.__type = ['publicBaseUrl', function () { return ''; }, 'serverBaseUrl', function () { return ''; }, 'AngularConfig', '&3!>"&3
|
|
56
|
+
AngularConfig.__type = ['publicBaseUrl', function () { return ''; }, 'serverBaseUrl', function () { return ''; }, 'moduleUrl', function () { return ''; }, 'AngularConfig', '&3!>"&3#>$&3%>&5w\''];
|
|
53
57
|
/**
|
|
54
58
|
* This object is available angular providers as DI token `REQUEST_CONTEXT`.
|
|
55
59
|
*/
|
|
@@ -62,24 +66,26 @@ class AngularRequestContext {
|
|
|
62
66
|
}
|
|
63
67
|
}
|
|
64
68
|
AngularRequestContext.__type = ['serverBaseUrl', function () { return ''; }, 'publicBaseUrl', function () { return ''; }, () => AngularConfig, 'config', 'constructor', 'AngularRequestContext', '&3!>"&3#>$PP7%2&"0\'5w('];
|
|
65
|
-
|
|
69
|
+
class AngularState {
|
|
70
|
+
constructor() {
|
|
71
|
+
this.ngApp = new node_1.AngularNodeAppEngine();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
AngularState.__type = [() => node_1.AngularNodeAppEngine, 'ngApp', function () { return new node_1.AngularNodeAppEngine(); }, 'AngularState', 'P7!3">#5w$'];
|
|
66
75
|
class AngularListener {
|
|
67
|
-
constructor(requestContext) {
|
|
76
|
+
constructor(requestContext, state) {
|
|
68
77
|
this.requestContext = requestContext;
|
|
78
|
+
this.state = state;
|
|
69
79
|
}
|
|
70
80
|
async onRoute(event) {
|
|
71
81
|
if (event.route)
|
|
72
82
|
return; //already found
|
|
73
|
-
|
|
74
|
-
return;
|
|
75
|
-
const promise = _ngApp.handle(event.request, this.requestContext);
|
|
83
|
+
const promise = this.state.ngApp.handle(event.request, this.requestContext);
|
|
76
84
|
if (!promise)
|
|
77
85
|
return;
|
|
78
86
|
event.routeFound(new http_1.RouteConfig('angular', ['GET'], event.request.url || '', {
|
|
79
87
|
type: 'function',
|
|
80
88
|
fn: __assignType(async (req, res) => {
|
|
81
|
-
if (!_ngApp)
|
|
82
|
-
return;
|
|
83
89
|
const response = await promise;
|
|
84
90
|
if (!response) {
|
|
85
91
|
throw new http_1.HttpNotFoundError();
|
|
@@ -92,7 +98,7 @@ class AngularListener {
|
|
|
92
98
|
}));
|
|
93
99
|
}
|
|
94
100
|
}
|
|
95
|
-
AngularListener.__type = [() => AngularRequestContext, 'requestContext', 'constructor', () => http_1.httpWorkflow.onRoute.event, 'event', 'onRoute', 'AngularListener', 'PP7!2":"0
|
|
101
|
+
AngularListener.__type = [() => AngularRequestContext, 'requestContext', () => AngularState, 'state', 'constructor', () => http_1.httpWorkflow.onRoute.event, 'event', 'onRoute', 'AngularListener', 'PP7!2":P7#2$:"0%Pi&2\'"0(5w)'];
|
|
96
102
|
__decorate([
|
|
97
103
|
event_1.eventDispatcher.listen(http_1.httpWorkflow.onRoute, 102) //102 after 101=static listener, 100=default listener
|
|
98
104
|
,
|
|
@@ -101,9 +107,11 @@ __decorate([
|
|
|
101
107
|
__metadata("design:returntype", Promise)
|
|
102
108
|
], AngularListener.prototype, "onRoute", null);
|
|
103
109
|
class AngularStaticListener {
|
|
104
|
-
constructor() {
|
|
110
|
+
constructor(config) {
|
|
111
|
+
this.config = config;
|
|
105
112
|
this.localPath = '';
|
|
106
113
|
this.path = '/'; //public path
|
|
114
|
+
this.localPath = (0, node_path_1.resolve)((0, node_path_1.dirname)((0, node_url_1.fileURLToPath)(this.config.moduleUrl)), '../browser');
|
|
107
115
|
}
|
|
108
116
|
onRoute(event) {
|
|
109
117
|
if (event.sent)
|
|
@@ -115,7 +123,7 @@ class AngularStaticListener {
|
|
|
115
123
|
return (0, http_1.staticOnRoute)(event, this.path, this.localPath);
|
|
116
124
|
}
|
|
117
125
|
}
|
|
118
|
-
AngularStaticListener.__type = ['localPath', function () { return ''; }, 'path', function () { return '/'; }, () => http_1.httpWorkflow.onRoute.event, 'event', 'onRoute', 'AngularStaticListener', '&3!>"&3#>$
|
|
126
|
+
AngularStaticListener.__type = ['localPath', function () { return ''; }, 'path', function () { return '/'; }, () => AngularConfig, 'config', 'constructor', () => http_1.httpWorkflow.onRoute.event, 'event', 'onRoute', 'AngularStaticListener', '&3!>"&3#>$PP7%2&<"0\'Pi(2)"0*5w+'];
|
|
119
127
|
__decorate([
|
|
120
128
|
event_1.eventDispatcher.listen(http_1.httpWorkflow.onRoute, 101) //after default route listener at 100
|
|
121
129
|
,
|
|
@@ -135,7 +143,8 @@ __decorate([
|
|
|
135
143
|
* ```
|
|
136
144
|
*/
|
|
137
145
|
class RequestHandler {
|
|
138
|
-
constructor(logger, requestContext, http, server, staticListener) {
|
|
146
|
+
constructor(config, logger, requestContext, http, server, staticListener) {
|
|
147
|
+
this.config = config;
|
|
139
148
|
this.logger = logger;
|
|
140
149
|
this.requestContext = requestContext;
|
|
141
150
|
this.http = http;
|
|
@@ -143,14 +152,13 @@ class RequestHandler {
|
|
|
143
152
|
this.staticListener = staticListener;
|
|
144
153
|
this.started = false;
|
|
145
154
|
}
|
|
146
|
-
create(
|
|
155
|
+
create() {
|
|
147
156
|
var _a;
|
|
148
|
-
this.staticListener.localPath = (0, node_path_1.resolve)((0, node_path_1.dirname)((0, node_url_1.fileURLToPath)(url)), '../browser');
|
|
149
157
|
const global = ((_a = globalThis).deepkitAngular || (_a.deepkitAngular = {}));
|
|
150
158
|
const waitForClose = global.server ? global.server.close() : Promise.resolve();
|
|
151
|
-
|
|
159
|
+
const mainModule = (0, node_1.isMainModule)(this.config.moduleUrl);
|
|
152
160
|
// We only listen for process signals in the main module.
|
|
153
|
-
const listenOnSignals =
|
|
161
|
+
const listenOnSignals = mainModule;
|
|
154
162
|
global.server = this.server;
|
|
155
163
|
const waitBootstrap = waitForClose.then(() => this.server.start({
|
|
156
164
|
listenOnSignals,
|
|
@@ -162,7 +170,7 @@ class RequestHandler {
|
|
|
162
170
|
}
|
|
163
171
|
this.requestContext.serverBaseUrl = `http://${host}`;
|
|
164
172
|
if (!this.requestContext.serverBaseUrl) {
|
|
165
|
-
if (
|
|
173
|
+
if (mainModule) {
|
|
166
174
|
this.requestContext.serverBaseUrl = 'http://localhost:8080';
|
|
167
175
|
}
|
|
168
176
|
else {
|
|
@@ -195,7 +203,7 @@ class RequestHandler {
|
|
|
195
203
|
}
|
|
196
204
|
}
|
|
197
205
|
exports.RequestHandler = RequestHandler;
|
|
198
|
-
RequestHandler.__type = ['started', function () { return false; }, () => logger_1.Logger, 'logger', () => AngularRequestContext, 'requestContext', () => http_1.HttpKernel, 'http', () => framework_1.ApplicationServer, 'server', () => AngularStaticListener, 'staticListener', 'constructor', '
|
|
206
|
+
RequestHandler.__type = ['started', function () { return false; }, () => AngularConfig, 'config', () => logger_1.Logger, 'logger', () => AngularRequestContext, 'requestContext', () => http_1.HttpKernel, 'http', () => framework_1.ApplicationServer, 'server', () => AngularStaticListener, 'staticListener', 'constructor', 'NodeRequestHandlerFunction', 'create', 'RequestHandler', ')3!<>"PP7#2$<P7%2&<P7\'2(<P7)2*<P7+2,<P7-2.<"0/P"w0015w2'];
|
|
199
207
|
class AngularModule extends (0, app_1.createModuleClass)({
|
|
200
208
|
name: 'angular',
|
|
201
209
|
config: AngularConfig,
|
|
@@ -203,11 +211,13 @@ class AngularModule extends (0, app_1.createModuleClass)({
|
|
|
203
211
|
RequestHandler,
|
|
204
212
|
AngularRequestContext,
|
|
205
213
|
AngularStaticListener,
|
|
214
|
+
AngularState,
|
|
206
215
|
],
|
|
207
216
|
exports: [
|
|
208
217
|
RequestHandler,
|
|
209
218
|
AngularRequestContext,
|
|
210
219
|
AngularStaticListener,
|
|
220
|
+
AngularState,
|
|
211
221
|
],
|
|
212
222
|
listeners: [
|
|
213
223
|
AngularListener,
|
|
@@ -216,5 +226,5 @@ class AngularModule extends (0, app_1.createModuleClass)({
|
|
|
216
226
|
}) {
|
|
217
227
|
}
|
|
218
228
|
exports.AngularModule = AngularModule;
|
|
219
|
-
AngularModule.__type = [() => (0, app_1.createModuleClass)({ name: "angular", config: AngularConfig, providers: [RequestHandler, AngularRequestContext, AngularStaticListener], exports: [RequestHandler, AngularRequestContext, AngularStaticListener], listeners: [AngularListener, AngularStaticListener] }), 'AngularModule', 'P7!5w"'];
|
|
229
|
+
AngularModule.__type = [() => (0, app_1.createModuleClass)({ name: "angular", config: AngularConfig, providers: [RequestHandler, AngularRequestContext, AngularStaticListener, AngularState], exports: [RequestHandler, AngularRequestContext, AngularStaticListener, AngularState], listeners: [AngularListener, AngularStaticListener] }), 'AngularModule', 'P7!5w"'];
|
|
220
230
|
//# sourceMappingURL=angular.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular.js","sourceRoot":"","sources":["../../../src/angular.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;GAQG;AAEH,4CAM2B;AAC3B,wCAQuB;AACvB,0CAAiD;AACjD,sCAAiD;AACjD,kDAAuD;AACvD,4CAAyC;AACzC,yCAA6C;AAC7C,uCAAyC;AAEzC,MAAM,aAAa;IAAnB;QACI;;;;;WAKG;QACH,kBAAa,GAAW,EAAE,CAAC;QAE3B;;;;;WAKG;QACH,kBAAa,GAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"angular.js","sourceRoot":"","sources":["../../../src/angular.ts"],"names":[],"mappings":"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"}
|