@deepkit/angular-ssr 1.0.1 → 1.0.3
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 +6 -6
- package/src/angular.ts +23 -10
|
@@ -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/esm/src/angular.js
CHANGED
|
@@ -44,9 +44,13 @@ class AngularConfig {
|
|
|
44
44
|
* @see REQUEST_CONTEXT
|
|
45
45
|
*/
|
|
46
46
|
this.serverBaseUrl = '';
|
|
47
|
+
/**
|
|
48
|
+
* Value of `import.meta.url` in the main entry point module (usually app.ts/server.ts).
|
|
49
|
+
*/
|
|
50
|
+
this.moduleUrl = '';
|
|
47
51
|
}
|
|
48
52
|
}
|
|
49
|
-
AngularConfig.__type = ['publicBaseUrl', function () { return ''; }, 'serverBaseUrl', function () { return ''; }, 'AngularConfig', '&3!>"&3
|
|
53
|
+
AngularConfig.__type = ['publicBaseUrl', function () { return ''; }, 'serverBaseUrl', function () { return ''; }, 'moduleUrl', function () { return ''; }, 'AngularConfig', '&3!>"&3#>$&3%>&5w\''];
|
|
50
54
|
/**
|
|
51
55
|
* This object is available angular providers as DI token `REQUEST_CONTEXT`.
|
|
52
56
|
*/
|
|
@@ -59,24 +63,26 @@ class AngularRequestContext {
|
|
|
59
63
|
}
|
|
60
64
|
}
|
|
61
65
|
AngularRequestContext.__type = ['serverBaseUrl', function () { return ''; }, 'publicBaseUrl', function () { return ''; }, () => AngularConfig, 'config', 'constructor', 'AngularRequestContext', '&3!>"&3#>$PP7%2&"0\'5w('];
|
|
62
|
-
|
|
66
|
+
class AngularState {
|
|
67
|
+
constructor() {
|
|
68
|
+
this.ngApp = new AngularNodeAppEngine();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
AngularState.__type = [() => AngularNodeAppEngine, 'ngApp', function () { return new AngularNodeAppEngine(); }, 'AngularState', 'P7!3">#5w$'];
|
|
63
72
|
class AngularListener {
|
|
64
|
-
constructor(requestContext) {
|
|
73
|
+
constructor(requestContext, state) {
|
|
65
74
|
this.requestContext = requestContext;
|
|
75
|
+
this.state = state;
|
|
66
76
|
}
|
|
67
77
|
async onRoute(event) {
|
|
68
78
|
if (event.route)
|
|
69
79
|
return; //already found
|
|
70
|
-
|
|
71
|
-
return;
|
|
72
|
-
const promise = _ngApp.handle(event.request, this.requestContext);
|
|
80
|
+
const promise = this.state.ngApp.handle(event.request, this.requestContext);
|
|
73
81
|
if (!promise)
|
|
74
82
|
return;
|
|
75
83
|
event.routeFound(new RouteConfig('angular', ['GET'], event.request.url || '', {
|
|
76
84
|
type: 'function',
|
|
77
85
|
fn: __assignType(async (req, res) => {
|
|
78
|
-
if (!_ngApp)
|
|
79
|
-
return;
|
|
80
86
|
const response = await promise;
|
|
81
87
|
if (!response) {
|
|
82
88
|
throw new HttpNotFoundError();
|
|
@@ -89,7 +95,7 @@ class AngularListener {
|
|
|
89
95
|
}));
|
|
90
96
|
}
|
|
91
97
|
}
|
|
92
|
-
AngularListener.__type = [() => AngularRequestContext, 'requestContext', 'constructor', () => httpWorkflow.onRoute.event, 'event', 'onRoute', 'AngularListener', 'PP7!2":"0
|
|
98
|
+
AngularListener.__type = [() => AngularRequestContext, 'requestContext', () => AngularState, 'state', 'constructor', () => httpWorkflow.onRoute.event, 'event', 'onRoute', 'AngularListener', 'PP7!2":P7#2$:"0%Pi&2\'"0(5w)'];
|
|
93
99
|
__decorate([
|
|
94
100
|
eventDispatcher.listen(httpWorkflow.onRoute, 102) //102 after 101=static listener, 100=default listener
|
|
95
101
|
,
|
|
@@ -98,9 +104,11 @@ __decorate([
|
|
|
98
104
|
__metadata("design:returntype", Promise)
|
|
99
105
|
], AngularListener.prototype, "onRoute", null);
|
|
100
106
|
class AngularStaticListener {
|
|
101
|
-
constructor() {
|
|
107
|
+
constructor(config) {
|
|
108
|
+
this.config = config;
|
|
102
109
|
this.localPath = '';
|
|
103
110
|
this.path = '/'; //public path
|
|
111
|
+
this.localPath = resolve(dirname(fileURLToPath(this.config.moduleUrl)), '../browser');
|
|
104
112
|
}
|
|
105
113
|
onRoute(event) {
|
|
106
114
|
if (event.sent)
|
|
@@ -112,7 +120,7 @@ class AngularStaticListener {
|
|
|
112
120
|
return staticOnRoute(event, this.path, this.localPath);
|
|
113
121
|
}
|
|
114
122
|
}
|
|
115
|
-
AngularStaticListener.__type = ['localPath', function () { return ''; }, 'path', function () { return '/'; }, () => httpWorkflow.onRoute.event, 'event', 'onRoute', 'AngularStaticListener', '&3!>"&3#>$
|
|
123
|
+
AngularStaticListener.__type = ['localPath', function () { return ''; }, 'path', function () { return '/'; }, () => AngularConfig, 'config', 'constructor', () => httpWorkflow.onRoute.event, 'event', 'onRoute', 'AngularStaticListener', '&3!>"&3#>$PP7%2&<"0\'Pi(2)"0*5w+'];
|
|
116
124
|
__decorate([
|
|
117
125
|
eventDispatcher.listen(httpWorkflow.onRoute, 101) //after default route listener at 100
|
|
118
126
|
,
|
|
@@ -132,7 +140,8 @@ __decorate([
|
|
|
132
140
|
* ```
|
|
133
141
|
*/
|
|
134
142
|
export class RequestHandler {
|
|
135
|
-
constructor(logger, requestContext, http, server, staticListener) {
|
|
143
|
+
constructor(config, logger, requestContext, http, server, staticListener) {
|
|
144
|
+
this.config = config;
|
|
136
145
|
this.logger = logger;
|
|
137
146
|
this.requestContext = requestContext;
|
|
138
147
|
this.http = http;
|
|
@@ -140,14 +149,13 @@ export class RequestHandler {
|
|
|
140
149
|
this.staticListener = staticListener;
|
|
141
150
|
this.started = false;
|
|
142
151
|
}
|
|
143
|
-
create(
|
|
152
|
+
create() {
|
|
144
153
|
var _a;
|
|
145
|
-
this.staticListener.localPath = resolve(dirname(fileURLToPath(url)), '../browser');
|
|
146
154
|
const global = ((_a = globalThis).deepkitAngular || (_a.deepkitAngular = {}));
|
|
147
155
|
const waitForClose = global.server ? global.server.close() : Promise.resolve();
|
|
148
|
-
|
|
156
|
+
const mainModule = isMainModule(this.config.moduleUrl);
|
|
149
157
|
// We only listen for process signals in the main module.
|
|
150
|
-
const listenOnSignals =
|
|
158
|
+
const listenOnSignals = mainModule;
|
|
151
159
|
global.server = this.server;
|
|
152
160
|
const waitBootstrap = waitForClose.then(() => this.server.start({
|
|
153
161
|
listenOnSignals,
|
|
@@ -159,7 +167,7 @@ export class RequestHandler {
|
|
|
159
167
|
}
|
|
160
168
|
this.requestContext.serverBaseUrl = `http://${host}`;
|
|
161
169
|
if (!this.requestContext.serverBaseUrl) {
|
|
162
|
-
if (
|
|
170
|
+
if (mainModule) {
|
|
163
171
|
this.requestContext.serverBaseUrl = 'http://localhost:8080';
|
|
164
172
|
}
|
|
165
173
|
else {
|
|
@@ -191,7 +199,7 @@ export class RequestHandler {
|
|
|
191
199
|
}, ['req', 'res', 'next', '', 'P"2!"2""2#"/$']));
|
|
192
200
|
}
|
|
193
201
|
}
|
|
194
|
-
RequestHandler.__type = ['started', function () { return false; }, () => Logger, 'logger', () => AngularRequestContext, 'requestContext', () => HttpKernel, 'http', () => ApplicationServer, 'server', () => AngularStaticListener, 'staticListener', 'constructor', '
|
|
202
|
+
RequestHandler.__type = ['started', function () { return false; }, () => AngularConfig, 'config', () => Logger, 'logger', () => AngularRequestContext, 'requestContext', () => HttpKernel, 'http', () => ApplicationServer, 'server', () => AngularStaticListener, 'staticListener', 'constructor', 'NodeRequestHandlerFunction', 'create', 'RequestHandler', ')3!<>"PP7#2$<P7%2&<P7\'2(<P7)2*<P7+2,<P7-2.<"0/P"w0015w2'];
|
|
195
203
|
export class AngularModule extends createModuleClass({
|
|
196
204
|
name: 'angular',
|
|
197
205
|
config: AngularConfig,
|
|
@@ -199,11 +207,13 @@ export class AngularModule extends createModuleClass({
|
|
|
199
207
|
RequestHandler,
|
|
200
208
|
AngularRequestContext,
|
|
201
209
|
AngularStaticListener,
|
|
210
|
+
AngularState,
|
|
202
211
|
],
|
|
203
212
|
exports: [
|
|
204
213
|
RequestHandler,
|
|
205
214
|
AngularRequestContext,
|
|
206
215
|
AngularStaticListener,
|
|
216
|
+
AngularState,
|
|
207
217
|
],
|
|
208
218
|
listeners: [
|
|
209
219
|
AngularListener,
|
|
@@ -211,5 +221,5 @@ export class AngularModule extends createModuleClass({
|
|
|
211
221
|
],
|
|
212
222
|
}) {
|
|
213
223
|
}
|
|
214
|
-
AngularModule.__type = [() => createModuleClass({ name: "angular", config: AngularConfig, providers: [RequestHandler, AngularRequestContext, AngularStaticListener], exports: [RequestHandler, AngularRequestContext, AngularStaticListener], listeners: [AngularListener, AngularStaticListener] }), 'AngularModule', 'P7!5w"'];
|
|
224
|
+
AngularModule.__type = [() => createModuleClass({ name: "angular", config: AngularConfig, providers: [RequestHandler, AngularRequestContext, AngularStaticListener, AngularState], exports: [RequestHandler, AngularRequestContext, AngularStaticListener, AngularState], listeners: [AngularListener, AngularStaticListener] }), 'AngularModule', 'P7!5w"'];
|
|
215
225
|
//# sourceMappingURL=angular.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular.js","sourceRoot":"","sources":["../../../src/angular.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;GAQG;AAEH,OAAO,EACH,oBAAoB,EACpB,wBAAwB,EACxB,YAAY,EAEZ,2BAA2B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;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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"}
|