@kithinji/orca 1.0.26 → 1.0.29
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/dist/browser/index.iife.js +429 -714
- package/dist/browser/index.iife.js.map +4 -4
- package/dist/browser/index.mjs +1272 -750
- package/dist/browser/index.mjs.map +4 -4
- package/dist/node/index.cjs +563 -676
- package/dist/node/index.cjs.map +4 -4
- package/dist/node/index.mjs +543 -647
- package/dist/node/index.mjs.map +4 -4
- package/dist/types/browser/factory.d.ts +1 -1
- package/dist/types/browser/factory.d.ts.map +1 -1
- package/dist/types/browser/modules/router_module/navigate.d.ts +13 -5
- package/dist/types/browser/modules/router_module/navigate.d.ts.map +1 -1
- package/dist/types/browser/modules/router_module/outlet.d.ts +3 -2
- package/dist/types/browser/modules/router_module/outlet.d.ts.map +1 -1
- package/dist/types/index.browser.d.ts +0 -2
- package/dist/types/index.browser.d.ts.map +1 -1
- package/dist/types/index.node.d.ts +0 -2
- package/dist/types/index.node.d.ts.map +1 -1
- package/dist/types/node/factory.d.ts +1 -0
- package/dist/types/node/factory.d.ts.map +1 -1
- package/dist/types/shared/decorators.d.ts +13 -1
- package/dist/types/shared/decorators.d.ts.map +1 -1
- package/dist/types/shared/dom/osc.d.ts.map +1 -1
- package/dist/types/shared/index.d.ts +0 -2
- package/dist/types/shared/index.d.ts.map +1 -1
- package/dist/types/shared/jsx/types.d.ts +3 -0
- package/dist/types/shared/jsx/types.d.ts.map +1 -1
- package/dist/types/shared/module/compiler.d.ts +3 -0
- package/dist/types/shared/module/compiler.d.ts.map +1 -1
- package/dist/types/shared/module/injector.d.ts +8 -1
- package/dist/types/shared/module/injector.d.ts.map +1 -1
- package/dist/types/shared/module_libs/http_client/module.d.ts +1 -1
- package/dist/types/shared/module_libs/http_client/module.d.ts.map +1 -1
- package/dist/types/shared/signal/index.d.ts +1 -0
- package/dist/types/shared/signal/index.d.ts.map +1 -1
- package/dist/types/shared/signal/utils.d.ts +4 -0
- package/dist/types/shared/signal/utils.d.ts.map +1 -0
- package/dist/types/shared/symbols.d.ts +3 -0
- package/dist/types/shared/symbols.d.ts.map +1 -1
- package/dist/types/shared/types.d.ts +40 -4
- package/dist/types/shared/types.d.ts.map +1 -1
- package/package.json +3 -1
- package/dist/types/shared/macros/index.d.ts +0 -2
- package/dist/types/shared/macros/index.d.ts.map +0 -1
- package/dist/types/shared/observable/bsubject.d.ts +0 -11
- package/dist/types/shared/observable/bsubject.d.ts.map +0 -1
- package/dist/types/shared/observable/index.d.ts +0 -4
- package/dist/types/shared/observable/index.d.ts.map +0 -1
- package/dist/types/shared/observable/observable.d.ts +0 -39
- package/dist/types/shared/observable/observable.d.ts.map +0 -1
- package/dist/types/shared/observable/subject.d.ts +0 -15
- package/dist/types/shared/observable/subject.d.ts.map +0 -1
package/dist/node/index.cjs
CHANGED
|
@@ -9,11 +9,11 @@ var __export = (target, all) => {
|
|
|
9
9
|
for (var name in all)
|
|
10
10
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
11
|
};
|
|
12
|
-
var __copyProps = (to,
|
|
13
|
-
if (
|
|
14
|
-
for (let key of __getOwnPropNames(
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
15
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () =>
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
17
|
}
|
|
18
18
|
return to;
|
|
19
19
|
};
|
|
@@ -34,7 +34,6 @@ __export(index_node_exports, {
|
|
|
34
34
|
ActorModule: () => ActorModule,
|
|
35
35
|
BOOTSTRAP: () => BOOTSTRAP,
|
|
36
36
|
BOOTSTRAP_VNODE: () => BOOTSTRAP_VNODE,
|
|
37
|
-
BehaviorSubject: () => BehaviorSubject,
|
|
38
37
|
Body: () => Body,
|
|
39
38
|
COMPONENT: () => COMPONENT,
|
|
40
39
|
COMPONENT_DEPS: () => COMPONENT_DEPS,
|
|
@@ -53,6 +52,7 @@ __export(index_node_exports, {
|
|
|
53
52
|
EXPORTS_KEY: () => EXPORTS_KEY,
|
|
54
53
|
EXPRESS_ADAPTER_HOST: () => EXPRESS_ADAPTER_HOST,
|
|
55
54
|
Fragment: () => Fragment,
|
|
55
|
+
GUARDS_KEY: () => GUARDS_KEY,
|
|
56
56
|
Get: () => Get,
|
|
57
57
|
HTTP_METHOD_KEY: () => HTTP_METHOD_KEY,
|
|
58
58
|
HandlerParamType: () => HandlerParamType,
|
|
@@ -62,6 +62,7 @@ __export(index_node_exports, {
|
|
|
62
62
|
IMPORTS_KEY: () => IMPORTS_KEY,
|
|
63
63
|
INJECTABLE: () => INJECTABLE,
|
|
64
64
|
INJECT_TOKENS_KEY: () => INJECT_TOKENS_KEY,
|
|
65
|
+
INTERCEPTORS_KEY: () => INTERCEPTORS_KEY,
|
|
65
66
|
Inject: () => Inject,
|
|
66
67
|
Injectable: () => Injectable,
|
|
67
68
|
Injector: () => Injector,
|
|
@@ -74,7 +75,6 @@ __export(index_node_exports, {
|
|
|
74
75
|
ORCA_ELEMENT_TYPE: () => ORCA_ELEMENT_TYPE,
|
|
75
76
|
ORCA_FRAGMENT_TYPE: () => ORCA_FRAGMENT_TYPE,
|
|
76
77
|
OSC: () => OSC,
|
|
77
|
-
Observable: () => Observable,
|
|
78
78
|
OrcaComponent: () => OrcaComponent,
|
|
79
79
|
PARAMS_META_KEY: () => PARAMS_META_KEY,
|
|
80
80
|
PATH_KEY: () => PATH_KEY,
|
|
@@ -84,56 +84,47 @@ __export(index_node_exports, {
|
|
|
84
84
|
Post: () => Post,
|
|
85
85
|
ProviderNormalizer: () => ProviderNormalizer,
|
|
86
86
|
Query: () => Query,
|
|
87
|
+
REQUEST_CONTEXT: () => REQUEST_CONTEXT,
|
|
88
|
+
Req: () => Req,
|
|
89
|
+
Res: () => Res,
|
|
87
90
|
RouterModule: () => RouterModule,
|
|
88
91
|
SIGNATURE_METADATA_KEY: () => SIGNATURE_METADATA_KEY,
|
|
89
92
|
SSE_ROUTE: () => SSE_ROUTE,
|
|
90
93
|
ServeStaticModule: () => ServeStaticModule,
|
|
94
|
+
SetMetadata: () => SetMetadata,
|
|
95
|
+
Shared: () => Shared,
|
|
91
96
|
Signature: () => Signature,
|
|
92
97
|
Sse: () => Sse,
|
|
93
|
-
Subject: () => Subject,
|
|
94
98
|
Subscribe: () => Subscribe,
|
|
95
|
-
|
|
99
|
+
UploadedFile: () => UploadedFile,
|
|
100
|
+
UploadedFiles: () => UploadedFiles,
|
|
101
|
+
UseGuards: () => UseGuards,
|
|
102
|
+
UseInterceptors: () => UseInterceptors,
|
|
103
|
+
applyDecorators: () => applyDecorators,
|
|
96
104
|
batch: () => batch,
|
|
97
|
-
catchError: () => catchError,
|
|
98
105
|
collectAllProvidersFromNode: () => collectAllProvidersFromNode,
|
|
99
106
|
computed: () => computed,
|
|
100
|
-
concatMap: () => concatMap,
|
|
101
107
|
createRoot: () => createRoot,
|
|
102
|
-
debounceTime: () => debounceTime,
|
|
103
|
-
distinctUntilChanged: () => distinctUntilChanged,
|
|
104
108
|
effect: () => effect,
|
|
105
|
-
filter: () => filter,
|
|
106
|
-
from: () => from,
|
|
107
109
|
getCurrentInjector: () => getCurrentInjector,
|
|
110
|
+
getGuards: () => getGuards,
|
|
111
|
+
getInterceptors: () => getInterceptors,
|
|
108
112
|
getSignatureMetadata: () => getSignatureMetadata,
|
|
109
113
|
hasSignature: () => hasSignature,
|
|
110
|
-
interval: () => interval,
|
|
111
114
|
isClassComponent: () => isClassComponent,
|
|
112
115
|
isFragment: () => isFragment,
|
|
113
116
|
isIntrinsicElement: () => isIntrinsicElement,
|
|
114
|
-
isObservable: () => isObservable,
|
|
115
117
|
isSignal: () => isSignal,
|
|
116
118
|
jsx: () => jsx,
|
|
117
119
|
jsxs: () => jsxs,
|
|
118
|
-
|
|
119
|
-
mergeMap: () => mergeMap,
|
|
120
|
+
mixin: () => mixin,
|
|
120
121
|
node: () => node_exports,
|
|
121
|
-
observable: () => observable,
|
|
122
|
-
of: () => of,
|
|
123
122
|
parseSignatureSchemas: () => parseSignatureSchemas,
|
|
124
|
-
reduce: () => reduce,
|
|
125
|
-
scan: () => scan,
|
|
126
123
|
setCurrentInjector: () => setCurrentInjector,
|
|
127
124
|
shared: () => shared_exports,
|
|
128
125
|
signal: () => signal,
|
|
129
|
-
skip: () => skip,
|
|
130
|
-
startWith: () => startWith,
|
|
131
|
-
switchMap: () => switchMap,
|
|
132
126
|
symbolValueReplacer: () => symbolValueReplacer,
|
|
133
127
|
symbolValueReviver: () => symbolValueReviver,
|
|
134
|
-
take: () => take,
|
|
135
|
-
tap: () => tap,
|
|
136
|
-
throttleTime: () => throttleTime,
|
|
137
128
|
toSignal: () => toSignal,
|
|
138
129
|
untracked: () => untracked
|
|
139
130
|
});
|
|
@@ -146,7 +137,6 @@ __export(shared_exports, {
|
|
|
146
137
|
BOOTSTRAP: () => BOOTSTRAP,
|
|
147
138
|
BOOTSTRAP_VNODE: () => BOOTSTRAP_VNODE,
|
|
148
139
|
BaseActor: () => BaseActor,
|
|
149
|
-
BehaviorSubject: () => BehaviorSubject,
|
|
150
140
|
Body: () => Body,
|
|
151
141
|
COMPONENT: () => COMPONENT,
|
|
152
142
|
COMPONENT_DEPS: () => COMPONENT_DEPS,
|
|
@@ -165,6 +155,7 @@ __export(shared_exports, {
|
|
|
165
155
|
EXPORTS_KEY: () => EXPORTS_KEY,
|
|
166
156
|
EXPRESS_ADAPTER_HOST: () => EXPRESS_ADAPTER_HOST,
|
|
167
157
|
Fragment: () => Fragment,
|
|
158
|
+
GUARDS_KEY: () => GUARDS_KEY,
|
|
168
159
|
Get: () => Get,
|
|
169
160
|
HTTP_METHOD_KEY: () => HTTP_METHOD_KEY,
|
|
170
161
|
HandlerParamType: () => HandlerParamType,
|
|
@@ -174,6 +165,7 @@ __export(shared_exports, {
|
|
|
174
165
|
IMPORTS_KEY: () => IMPORTS_KEY,
|
|
175
166
|
INJECTABLE: () => INJECTABLE,
|
|
176
167
|
INJECT_TOKENS_KEY: () => INJECT_TOKENS_KEY,
|
|
168
|
+
INTERCEPTORS_KEY: () => INTERCEPTORS_KEY,
|
|
177
169
|
Inject: () => Inject,
|
|
178
170
|
Injectable: () => Injectable,
|
|
179
171
|
Injector: () => Injector,
|
|
@@ -184,7 +176,6 @@ __export(shared_exports, {
|
|
|
184
176
|
ORCA_ELEMENT_TYPE: () => ORCA_ELEMENT_TYPE,
|
|
185
177
|
ORCA_FRAGMENT_TYPE: () => ORCA_FRAGMENT_TYPE,
|
|
186
178
|
OSC: () => OSC,
|
|
187
|
-
Observable: () => Observable,
|
|
188
179
|
OrcaComponent: () => OrcaComponent,
|
|
189
180
|
PARAMS_META_KEY: () => PARAMS_META_KEY,
|
|
190
181
|
PATH_KEY: () => PATH_KEY,
|
|
@@ -194,60 +185,54 @@ __export(shared_exports, {
|
|
|
194
185
|
Post: () => Post,
|
|
195
186
|
ProviderNormalizer: () => ProviderNormalizer,
|
|
196
187
|
Query: () => Query,
|
|
188
|
+
REQUEST_CONTEXT: () => REQUEST_CONTEXT,
|
|
189
|
+
Req: () => Req,
|
|
190
|
+
Res: () => Res,
|
|
197
191
|
SIGNATURE_METADATA_KEY: () => SIGNATURE_METADATA_KEY,
|
|
198
192
|
SSE_ROUTE: () => SSE_ROUTE,
|
|
193
|
+
SetMetadata: () => SetMetadata,
|
|
194
|
+
Shared: () => Shared,
|
|
199
195
|
Signature: () => Signature,
|
|
200
196
|
Sse: () => Sse,
|
|
201
197
|
StreamRenderer: () => StreamRenderer,
|
|
202
198
|
StringRenderer: () => StringRenderer,
|
|
203
|
-
Subject: () => Subject,
|
|
204
199
|
Subscribe: () => Subscribe,
|
|
200
|
+
UploadedFile: () => UploadedFile,
|
|
201
|
+
UploadedFiles: () => UploadedFiles,
|
|
202
|
+
UseGuards: () => UseGuards,
|
|
203
|
+
UseInterceptors: () => UseInterceptors,
|
|
205
204
|
VNode: () => VNode,
|
|
206
|
-
|
|
205
|
+
applyDecorators: () => applyDecorators,
|
|
207
206
|
batch: () => batch,
|
|
208
|
-
catchError: () => catchError,
|
|
209
207
|
collectAllProvidersFromNode: () => collectAllProvidersFromNode,
|
|
210
208
|
computed: () => computed,
|
|
211
|
-
concatMap: () => concatMap,
|
|
212
209
|
createRoot: () => createRoot,
|
|
213
|
-
debounceTime: () => debounceTime,
|
|
214
|
-
distinctUntilChanged: () => distinctUntilChanged,
|
|
215
210
|
effect: () => effect,
|
|
216
|
-
filter: () => filter,
|
|
217
|
-
from: () => from,
|
|
218
211
|
getCurrentInjector: () => getCurrentInjector,
|
|
212
|
+
getGuards: () => getGuards,
|
|
213
|
+
getInterceptors: () => getInterceptors,
|
|
219
214
|
getSignatureMetadata: () => getSignatureMetadata,
|
|
220
215
|
hasSignature: () => hasSignature,
|
|
221
|
-
interval: () => interval,
|
|
222
216
|
isClassComponent: () => isClassComponent,
|
|
223
217
|
isFragment: () => isFragment,
|
|
224
218
|
isIntrinsicElement: () => isIntrinsicElement,
|
|
225
|
-
isObservable: () => isObservable,
|
|
226
219
|
isSignal: () => isSignal,
|
|
227
220
|
jsx: () => jsx,
|
|
228
221
|
jsxs: () => jsxs,
|
|
229
|
-
|
|
230
|
-
mergeMap: () => mergeMap,
|
|
231
|
-
observable: () => observable,
|
|
232
|
-
of: () => of,
|
|
222
|
+
mixin: () => mixin,
|
|
233
223
|
parseSignatureSchemas: () => parseSignatureSchemas,
|
|
234
|
-
reduce: () => reduce,
|
|
235
|
-
scan: () => scan,
|
|
236
224
|
setCurrentInjector: () => setCurrentInjector,
|
|
237
225
|
signal: () => signal,
|
|
238
|
-
skip: () => skip,
|
|
239
|
-
startWith: () => startWith,
|
|
240
226
|
store: () => store,
|
|
241
|
-
switchMap: () => switchMap,
|
|
242
227
|
symbolValueReplacer: () => symbolValueReplacer,
|
|
243
228
|
symbolValueReviver: () => symbolValueReviver,
|
|
244
|
-
take: () => take,
|
|
245
|
-
tap: () => tap,
|
|
246
|
-
throttleTime: () => throttleTime,
|
|
247
229
|
toSignal: () => toSignal,
|
|
248
230
|
untracked: () => untracked
|
|
249
231
|
});
|
|
250
232
|
|
|
233
|
+
// src/shared/decorators.ts
|
|
234
|
+
var import_uid = require("uid");
|
|
235
|
+
|
|
251
236
|
// src/shared/store.ts
|
|
252
237
|
var Store = class {
|
|
253
238
|
constructor() {
|
|
@@ -292,6 +277,9 @@ var EXPRESS_ADAPTER_HOST = /* @__PURE__ */ Symbol("orca:express");
|
|
|
292
277
|
var SIGNATURE_METADATA_KEY = /* @__PURE__ */ Symbol("orca:signature:schemas");
|
|
293
278
|
var SSE_ROUTE = /* @__PURE__ */ Symbol("orca:sse:route");
|
|
294
279
|
var EVENT_HANDLER = /* @__PURE__ */ Symbol("orca:event:handler");
|
|
280
|
+
var INTERCEPTORS_KEY = /* @__PURE__ */ Symbol("interceptors");
|
|
281
|
+
var GUARDS_KEY = /* @__PURE__ */ Symbol("guards");
|
|
282
|
+
var REQUEST_CONTEXT = /* @__PURE__ */ Symbol("orca:request");
|
|
295
283
|
var ERROR_ELEMENT = /* @__PURE__ */ Symbol.for("orca:error");
|
|
296
284
|
var ORCA_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("orca:element");
|
|
297
285
|
var ORCA_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("orca:fragment");
|
|
@@ -306,6 +294,8 @@ var HandlerParamType = /* @__PURE__ */ ((HandlerParamType2) => {
|
|
|
306
294
|
HandlerParamType2["HEADERS"] = "HEADERS";
|
|
307
295
|
HandlerParamType2["REQUEST"] = "REQUEST";
|
|
308
296
|
HandlerParamType2["RESPONSE"] = "RESPONSE";
|
|
297
|
+
HandlerParamType2["FILE"] = "FILE";
|
|
298
|
+
HandlerParamType2["FILES"] = "FILES";
|
|
309
299
|
return HandlerParamType2;
|
|
310
300
|
})(HandlerParamType || {});
|
|
311
301
|
var HttpMethod = /* @__PURE__ */ ((HttpMethod2) => {
|
|
@@ -331,6 +321,13 @@ function Injectable() {
|
|
|
331
321
|
return target;
|
|
332
322
|
};
|
|
333
323
|
}
|
|
324
|
+
function mixin(mixinClass) {
|
|
325
|
+
Object.defineProperty(mixinClass, "name", {
|
|
326
|
+
value: (0, import_uid.uid)(21)
|
|
327
|
+
});
|
|
328
|
+
Injectable()(mixinClass);
|
|
329
|
+
return mixinClass;
|
|
330
|
+
}
|
|
334
331
|
function Component(params = {}) {
|
|
335
332
|
return function(target) {
|
|
336
333
|
store.update("components", (current) => {
|
|
@@ -347,7 +344,7 @@ function Component(params = {}) {
|
|
|
347
344
|
}
|
|
348
345
|
Reflect.defineMetadata(COMPONENT, true, target);
|
|
349
346
|
Reflect.defineMetadata(COMPONENT_PROVIDERS, params.providers || [], target);
|
|
350
|
-
Reflect.defineMetadata(COMPONENT_DEPS, params.
|
|
347
|
+
Reflect.defineMetadata(COMPONENT_DEPS, params.inject || [], target);
|
|
351
348
|
return target;
|
|
352
349
|
};
|
|
353
350
|
}
|
|
@@ -391,6 +388,18 @@ function Body(key) {
|
|
|
391
388
|
function Query(key) {
|
|
392
389
|
return getHandlerParamDecorator("QUERY" /* QUERY */, key);
|
|
393
390
|
}
|
|
391
|
+
function UploadedFile() {
|
|
392
|
+
return getHandlerParamDecorator("FILE" /* FILE */);
|
|
393
|
+
}
|
|
394
|
+
function UploadedFiles() {
|
|
395
|
+
return getHandlerParamDecorator("FILES" /* FILES */);
|
|
396
|
+
}
|
|
397
|
+
function Req() {
|
|
398
|
+
return getHandlerParamDecorator("REQUEST" /* REQUEST */);
|
|
399
|
+
}
|
|
400
|
+
function Res() {
|
|
401
|
+
return getHandlerParamDecorator("RESPONSE" /* RESPONSE */);
|
|
402
|
+
}
|
|
394
403
|
function getRouteDecorator(httpMethod, path2) {
|
|
395
404
|
return function(target, key, descriptor) {
|
|
396
405
|
Reflect.defineMetadata(HTTP_METHOD_KEY, httpMethod, target, key);
|
|
@@ -410,6 +419,10 @@ function Sse(path2) {
|
|
|
410
419
|
Reflect.defineMetadata(HTTP_METHOD_KEY, "get" /* GET */, target, propertyKey);
|
|
411
420
|
};
|
|
412
421
|
}
|
|
422
|
+
function Shared() {
|
|
423
|
+
return function(target, _propertyKey, parameterIndex) {
|
|
424
|
+
};
|
|
425
|
+
}
|
|
413
426
|
function Subscribe(pattern) {
|
|
414
427
|
return function(target, propertyKey, descriptor) {
|
|
415
428
|
Reflect.defineMetadata(EVENT_HANDLER, pattern, target, propertyKey);
|
|
@@ -448,6 +461,61 @@ function parseSignatureSchemas(schemas, paramCount) {
|
|
|
448
461
|
}
|
|
449
462
|
return { paramSchemas, returnSchema };
|
|
450
463
|
}
|
|
464
|
+
function UseInterceptors(...interceptors) {
|
|
465
|
+
return function(target, propertyKey, descriptor) {
|
|
466
|
+
if (propertyKey && descriptor) {
|
|
467
|
+
const existing = Reflect.getMetadata(INTERCEPTORS_KEY, target, propertyKey) || [];
|
|
468
|
+
Reflect.defineMetadata(INTERCEPTORS_KEY, [...existing, ...interceptors], target, propertyKey);
|
|
469
|
+
} else {
|
|
470
|
+
const existing = Reflect.getMetadata(INTERCEPTORS_KEY, target) || [];
|
|
471
|
+
Reflect.defineMetadata(INTERCEPTORS_KEY, [...existing, ...interceptors], target);
|
|
472
|
+
}
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
function getInterceptors(target, propertyKey) {
|
|
476
|
+
const classInterceptors = Reflect.getMetadata(INTERCEPTORS_KEY, target.constructor) || [];
|
|
477
|
+
const methodInterceptors = Reflect.getMetadata(INTERCEPTORS_KEY, target, propertyKey) || [];
|
|
478
|
+
return [...classInterceptors, ...methodInterceptors];
|
|
479
|
+
}
|
|
480
|
+
function UseGuards(...guards) {
|
|
481
|
+
return function(target, propertyKey, descriptor) {
|
|
482
|
+
if (propertyKey && descriptor) {
|
|
483
|
+
const existing = Reflect.getMetadata(GUARDS_KEY, target, propertyKey) || [];
|
|
484
|
+
Reflect.defineMetadata(GUARDS_KEY, [...existing, ...guards], target, propertyKey);
|
|
485
|
+
} else {
|
|
486
|
+
const existing = Reflect.getMetadata(GUARDS_KEY, target) || [];
|
|
487
|
+
Reflect.defineMetadata(GUARDS_KEY, [...existing, ...guards], target);
|
|
488
|
+
}
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
function getGuards(target, propertyKey) {
|
|
492
|
+
const classGuards = Reflect.getMetadata(GUARDS_KEY, target.constructor) || [];
|
|
493
|
+
const methodGuards = Reflect.getMetadata(GUARDS_KEY, target, propertyKey) || [];
|
|
494
|
+
return [...classGuards, ...methodGuards];
|
|
495
|
+
}
|
|
496
|
+
var SetMetadata = (metadataKey, metadataValue) => {
|
|
497
|
+
const decoratorFactory = (target, key, descriptor) => {
|
|
498
|
+
if (descriptor) {
|
|
499
|
+
Reflect.defineMetadata(metadataKey, metadataValue, descriptor.value);
|
|
500
|
+
return descriptor;
|
|
501
|
+
}
|
|
502
|
+
Reflect.defineMetadata(metadataKey, metadataValue, target);
|
|
503
|
+
return target;
|
|
504
|
+
};
|
|
505
|
+
decoratorFactory.KEY = metadataKey;
|
|
506
|
+
return decoratorFactory;
|
|
507
|
+
};
|
|
508
|
+
function applyDecorators(...decorators) {
|
|
509
|
+
return (target, propertyKey, descriptor) => {
|
|
510
|
+
for (const decorator of decorators) {
|
|
511
|
+
if (target instanceof Function && !descriptor) {
|
|
512
|
+
decorator(target);
|
|
513
|
+
continue;
|
|
514
|
+
}
|
|
515
|
+
decorator(target, propertyKey, descriptor);
|
|
516
|
+
}
|
|
517
|
+
};
|
|
518
|
+
}
|
|
451
519
|
|
|
452
520
|
// src/shared/module/node.ts
|
|
453
521
|
var ProviderNormalizer = class {
|
|
@@ -509,10 +577,11 @@ var Compiler = class {
|
|
|
509
577
|
}
|
|
510
578
|
createNode(moduleOrDynamic) {
|
|
511
579
|
const target = this.isDynamicModule(moduleOrDynamic) ? moduleOrDynamic.module : moduleOrDynamic;
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
580
|
+
const nodeKey = this.getNodeKey(moduleOrDynamic, target);
|
|
581
|
+
if (this.nodes.has(nodeKey))
|
|
582
|
+
return this.nodes.get(nodeKey);
|
|
583
|
+
const node = new Node(nodeKey);
|
|
584
|
+
this.nodes.set(nodeKey, node);
|
|
516
585
|
const imports = this.getImports(moduleOrDynamic);
|
|
517
586
|
node.setChildren(imports.map((imp) => this.createNode(imp)));
|
|
518
587
|
const providers = this.getProviders(moduleOrDynamic);
|
|
@@ -551,6 +620,38 @@ var Compiler = class {
|
|
|
551
620
|
this.getExports(moduleOrDynamic).forEach((exp) => node.addExport(exp));
|
|
552
621
|
return node;
|
|
553
622
|
}
|
|
623
|
+
getNodeKey(moduleOrDynamic, target) {
|
|
624
|
+
if (this.isDynamicModule(moduleOrDynamic)) {
|
|
625
|
+
if (moduleOrDynamic.__uniqueId) {
|
|
626
|
+
return `${target.name}:${moduleOrDynamic.__uniqueId}`;
|
|
627
|
+
}
|
|
628
|
+
const autoId = this.generateAutoId(moduleOrDynamic);
|
|
629
|
+
if (autoId) {
|
|
630
|
+
return `${target.name}:${autoId}`;
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
return target.name;
|
|
634
|
+
}
|
|
635
|
+
generateAutoId(dynamicModule) {
|
|
636
|
+
const parts = [];
|
|
637
|
+
if (dynamicModule.providers && dynamicModule.providers.length > 0) {
|
|
638
|
+
const providerTokens = dynamicModule.providers.map((p) => this.getProviderToken(p)).map((t) => typeof t === "function" ? t.name : String(t)).sort().join(",");
|
|
639
|
+
parts.push(`p:${providerTokens}`);
|
|
640
|
+
}
|
|
641
|
+
if (dynamicModule.exports && dynamicModule.exports.length > 0) {
|
|
642
|
+
const exportTokens = dynamicModule.exports.map((t) => typeof t === "function" ? t.name : String(t)).sort().join(",");
|
|
643
|
+
parts.push(`e:${exportTokens}`);
|
|
644
|
+
}
|
|
645
|
+
if (dynamicModule.controllers && dynamicModule.controllers.length > 0) {
|
|
646
|
+
const controllerNames = dynamicModule.controllers.map((c) => c.name).sort().join(",");
|
|
647
|
+
parts.push(`c:${controllerNames}`);
|
|
648
|
+
}
|
|
649
|
+
if (dynamicModule.declarations && dynamicModule.declarations.length > 0) {
|
|
650
|
+
const declarationNames = dynamicModule.declarations.map((d) => d.name).sort().join(",");
|
|
651
|
+
parts.push(`d:${declarationNames}`);
|
|
652
|
+
}
|
|
653
|
+
return parts.length > 0 ? parts.join("|") : null;
|
|
654
|
+
}
|
|
554
655
|
validate(rootNode) {
|
|
555
656
|
const errors = [];
|
|
556
657
|
const allNodes = /* @__PURE__ */ new Map();
|
|
@@ -647,14 +748,23 @@ var Compiler = class {
|
|
|
647
748
|
return typeof provider === "function" ? provider : provider.provide;
|
|
648
749
|
}
|
|
649
750
|
extractDependencies(item) {
|
|
650
|
-
if (typeof item === "object" && "
|
|
651
|
-
return item.
|
|
751
|
+
if (typeof item === "object" && "inject" in item && item.inject) {
|
|
752
|
+
return item.inject.filter((dep) => {
|
|
753
|
+
if (this.isOptionalDependency(dep)) {
|
|
754
|
+
return !dep.optional;
|
|
755
|
+
}
|
|
756
|
+
return true;
|
|
757
|
+
}).map((dep) => this.isOptionalDependency(dep) ? dep.token : dep);
|
|
758
|
+
}
|
|
652
759
|
if (typeof item === "object" && item.useClass)
|
|
653
760
|
return this.getConstructorDependencies(item.useClass);
|
|
654
761
|
if (typeof item === "function")
|
|
655
762
|
return this.getConstructorDependencies(item);
|
|
656
763
|
return [];
|
|
657
764
|
}
|
|
765
|
+
isOptionalDependency(dep) {
|
|
766
|
+
return typeof dep === "object" && "token" in dep && "optional" in dep;
|
|
767
|
+
}
|
|
658
768
|
getConstructorDependencies(constructor) {
|
|
659
769
|
const injectTokens = Reflect.getOwnMetadata(INJECT_TOKENS_KEY, constructor) || /* @__PURE__ */ new Map();
|
|
660
770
|
const paramTypes = Reflect.getMetadata(DESIGN_PARAMTYPES, constructor) || [];
|
|
@@ -729,9 +839,10 @@ var Compiler = class {
|
|
|
729
839
|
};
|
|
730
840
|
|
|
731
841
|
// src/shared/module/injector.ts
|
|
732
|
-
var Injector = class {
|
|
842
|
+
var Injector = class _Injector {
|
|
733
843
|
constructor(providers, parent) {
|
|
734
844
|
this.instanceCache = /* @__PURE__ */ new Map();
|
|
845
|
+
this.promiseCache = /* @__PURE__ */ new Map();
|
|
735
846
|
this.providerMap = /* @__PURE__ */ new Map();
|
|
736
847
|
this.parent = parent;
|
|
737
848
|
providers.forEach((p) => {
|
|
@@ -739,14 +850,20 @@ var Injector = class {
|
|
|
739
850
|
this.providerMap.set(normalized.provide, normalized);
|
|
740
851
|
});
|
|
741
852
|
}
|
|
853
|
+
createChild(providers) {
|
|
854
|
+
return new _Injector(providers, this);
|
|
855
|
+
}
|
|
742
856
|
addProvider(provider) {
|
|
743
857
|
const normalized = ProviderNormalizer.normalize(provider);
|
|
744
858
|
this.providerMap.set(normalized.provide, normalized);
|
|
745
859
|
}
|
|
746
|
-
resolve(token) {
|
|
860
|
+
async resolve(token) {
|
|
747
861
|
if (this.instanceCache.has(token)) {
|
|
748
862
|
return this.instanceCache.get(token);
|
|
749
863
|
}
|
|
864
|
+
if (this.promiseCache.has(token)) {
|
|
865
|
+
return this.promiseCache.get(token);
|
|
866
|
+
}
|
|
750
867
|
const provider = this.providerMap.get(token);
|
|
751
868
|
if (!provider) {
|
|
752
869
|
if (this.parent) {
|
|
@@ -756,23 +873,101 @@ var Injector = class {
|
|
|
756
873
|
`No provider for token: ${typeof token === "function" ? token.name : String(token)}`
|
|
757
874
|
);
|
|
758
875
|
}
|
|
759
|
-
const
|
|
876
|
+
const instancePromise = this.createInstance(provider);
|
|
877
|
+
this.promiseCache.set(token, instancePromise);
|
|
878
|
+
try {
|
|
879
|
+
const instance = await instancePromise;
|
|
880
|
+
if (provider.scope !== "transient") {
|
|
881
|
+
this.instanceCache.set(token, instance);
|
|
882
|
+
}
|
|
883
|
+
return instance;
|
|
884
|
+
} finally {
|
|
885
|
+
this.promiseCache.delete(token);
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
resolveSync(token) {
|
|
889
|
+
if (this.instanceCache.has(token)) {
|
|
890
|
+
return this.instanceCache.get(token);
|
|
891
|
+
}
|
|
892
|
+
const provider = this.providerMap.get(token);
|
|
893
|
+
if (!provider) {
|
|
894
|
+
if (this.parent) {
|
|
895
|
+
return this.parent.resolveSync(token);
|
|
896
|
+
}
|
|
897
|
+
throw new Error(
|
|
898
|
+
`No provider for token: ${typeof token === "function" ? token.name : String(token)}`
|
|
899
|
+
);
|
|
900
|
+
}
|
|
901
|
+
const instance = this.createInstanceSync(provider);
|
|
760
902
|
if (provider.scope !== "transient") {
|
|
761
903
|
this.instanceCache.set(token, instance);
|
|
762
904
|
}
|
|
763
905
|
return instance;
|
|
764
906
|
}
|
|
765
|
-
createInstance(provider) {
|
|
766
|
-
if ("useValue" in provider
|
|
767
|
-
return provider.useValue;
|
|
907
|
+
async createInstance(provider) {
|
|
908
|
+
if ("useValue" in provider) return provider.useValue;
|
|
768
909
|
if (provider.useExisting) return this.resolve(provider.useExisting);
|
|
769
910
|
if (provider.useFactory) {
|
|
770
|
-
const deps2 =
|
|
911
|
+
const deps2 = await Promise.all(
|
|
912
|
+
(provider.inject || []).map((d) => this.resolveDependency(d))
|
|
913
|
+
);
|
|
771
914
|
return provider.useFactory(...deps2);
|
|
772
915
|
}
|
|
773
916
|
const Ctor = provider.useClass || provider.provide;
|
|
774
|
-
const deps = provider.
|
|
775
|
-
|
|
917
|
+
const deps = provider.inject || this.getConstructorDeps(Ctor);
|
|
918
|
+
const resolvedDeps = await Promise.all(
|
|
919
|
+
deps.map((d) => this.resolveDependency(d))
|
|
920
|
+
);
|
|
921
|
+
return new Ctor(...resolvedDeps);
|
|
922
|
+
}
|
|
923
|
+
createInstanceSync(provider) {
|
|
924
|
+
if ("useValue" in provider && provider.useValue !== void 0)
|
|
925
|
+
return provider.useValue;
|
|
926
|
+
if (provider.useExisting) return this.resolveSync(provider.useExisting);
|
|
927
|
+
if (provider.useFactory) {
|
|
928
|
+
const deps2 = (provider.inject || []).map(
|
|
929
|
+
(d) => this.resolveDependencySync(d)
|
|
930
|
+
);
|
|
931
|
+
const result = provider.useFactory(...deps2);
|
|
932
|
+
if (result instanceof Promise) {
|
|
933
|
+
throw new Error(
|
|
934
|
+
`Async factory detected but resolveSync() was called. Use resolve() instead.`
|
|
935
|
+
);
|
|
936
|
+
}
|
|
937
|
+
return result;
|
|
938
|
+
}
|
|
939
|
+
const Ctor = provider.useClass || provider.provide;
|
|
940
|
+
const deps = provider.inject || this.getConstructorDeps(Ctor);
|
|
941
|
+
return new Ctor(...deps.map((d) => this.resolveDependencySync(d)));
|
|
942
|
+
}
|
|
943
|
+
async resolveDependency(dep) {
|
|
944
|
+
if (this.isOptionalDependency(dep)) {
|
|
945
|
+
try {
|
|
946
|
+
return await this.resolve(dep.token);
|
|
947
|
+
} catch (error) {
|
|
948
|
+
if (dep.optional) {
|
|
949
|
+
return void 0;
|
|
950
|
+
}
|
|
951
|
+
throw error;
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
return this.resolve(dep);
|
|
955
|
+
}
|
|
956
|
+
resolveDependencySync(dep) {
|
|
957
|
+
if (this.isOptionalDependency(dep)) {
|
|
958
|
+
try {
|
|
959
|
+
return this.resolveSync(dep.token);
|
|
960
|
+
} catch (error) {
|
|
961
|
+
if (dep.optional) {
|
|
962
|
+
return void 0;
|
|
963
|
+
}
|
|
964
|
+
throw error;
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
return this.resolveSync(dep);
|
|
968
|
+
}
|
|
969
|
+
isOptionalDependency(dep) {
|
|
970
|
+
return typeof dep === "object" && dep !== null && "token" in dep && "optional" in dep;
|
|
776
971
|
}
|
|
777
972
|
getConstructorDeps(ctor) {
|
|
778
973
|
const injectTokens = Reflect.getOwnMetadata(INJECT_TOKENS_KEY, ctor) || /* @__PURE__ */ new Map();
|
|
@@ -944,14 +1139,14 @@ var StringRenderer = class {
|
|
|
944
1139
|
return "";
|
|
945
1140
|
}
|
|
946
1141
|
escapeHtml(text) {
|
|
947
|
-
const
|
|
1142
|
+
const map = {
|
|
948
1143
|
"&": "&",
|
|
949
1144
|
"<": "<",
|
|
950
1145
|
">": ">",
|
|
951
1146
|
'"': """,
|
|
952
1147
|
"'": "'"
|
|
953
1148
|
};
|
|
954
|
-
return text.replace(/[&<>"']/g, (m) =>
|
|
1149
|
+
return text.replace(/[&<>"']/g, (m) => map[m]);
|
|
955
1150
|
}
|
|
956
1151
|
};
|
|
957
1152
|
|
|
@@ -1065,7 +1260,7 @@ var StreamRenderer = class {
|
|
|
1065
1260
|
);
|
|
1066
1261
|
}
|
|
1067
1262
|
}
|
|
1068
|
-
const instance = componentInjector.
|
|
1263
|
+
const instance = componentInjector.resolveSync(ComponentClass);
|
|
1069
1264
|
const mergedProps = Object.create(
|
|
1070
1265
|
Object.getPrototypeOf(instance.props || {})
|
|
1071
1266
|
);
|
|
@@ -1433,86 +1628,7 @@ function untracked(fn) {
|
|
|
1433
1628
|
}
|
|
1434
1629
|
}
|
|
1435
1630
|
|
|
1436
|
-
// src/shared/
|
|
1437
|
-
var Observable = class {
|
|
1438
|
-
constructor(producer) {
|
|
1439
|
-
this.producer = producer;
|
|
1440
|
-
this.__isObservable = true;
|
|
1441
|
-
}
|
|
1442
|
-
subscribe(observerOrNext, error, complete) {
|
|
1443
|
-
const observer = typeof observerOrNext === "function" ? { next: observerOrNext, error, complete } : observerOrNext;
|
|
1444
|
-
let cleanup;
|
|
1445
|
-
let isUnsubscribed = false;
|
|
1446
|
-
if (this.producer) {
|
|
1447
|
-
try {
|
|
1448
|
-
cleanup = this.producer(observer);
|
|
1449
|
-
} catch (err) {
|
|
1450
|
-
if (observer.error) {
|
|
1451
|
-
try {
|
|
1452
|
-
observer.error(err);
|
|
1453
|
-
} catch (e) {
|
|
1454
|
-
console.error("Error in error handler during subscription:", e);
|
|
1455
|
-
}
|
|
1456
|
-
} else {
|
|
1457
|
-
throw err;
|
|
1458
|
-
}
|
|
1459
|
-
}
|
|
1460
|
-
}
|
|
1461
|
-
return {
|
|
1462
|
-
unsubscribe: () => {
|
|
1463
|
-
if (isUnsubscribed) return;
|
|
1464
|
-
isUnsubscribed = true;
|
|
1465
|
-
if (cleanup) {
|
|
1466
|
-
try {
|
|
1467
|
-
cleanup();
|
|
1468
|
-
} catch (err) {
|
|
1469
|
-
console.error("Error during cleanup:", err);
|
|
1470
|
-
}
|
|
1471
|
-
}
|
|
1472
|
-
}
|
|
1473
|
-
};
|
|
1474
|
-
}
|
|
1475
|
-
pipe(...operations) {
|
|
1476
|
-
if (operations.length === 0) {
|
|
1477
|
-
return this;
|
|
1478
|
-
}
|
|
1479
|
-
return operations.reduce((prev, fn) => fn(prev), this);
|
|
1480
|
-
}
|
|
1481
|
-
};
|
|
1482
|
-
function from(iterable) {
|
|
1483
|
-
return new Observable((observer) => {
|
|
1484
|
-
try {
|
|
1485
|
-
for (const value of iterable) {
|
|
1486
|
-
observer.next(value);
|
|
1487
|
-
}
|
|
1488
|
-
observer.complete?.();
|
|
1489
|
-
} catch (err) {
|
|
1490
|
-
observer.error?.(err);
|
|
1491
|
-
}
|
|
1492
|
-
});
|
|
1493
|
-
}
|
|
1494
|
-
function interval(ms) {
|
|
1495
|
-
return new Observable((observer) => {
|
|
1496
|
-
let count = 0;
|
|
1497
|
-
const id = setInterval(() => {
|
|
1498
|
-
observer.next(count++);
|
|
1499
|
-
}, ms);
|
|
1500
|
-
return () => clearInterval(id);
|
|
1501
|
-
});
|
|
1502
|
-
}
|
|
1503
|
-
function of(...values) {
|
|
1504
|
-
return new Observable((observer) => {
|
|
1505
|
-
try {
|
|
1506
|
-
values.forEach((value) => observer.next(value));
|
|
1507
|
-
observer.complete?.();
|
|
1508
|
-
} catch (err) {
|
|
1509
|
-
observer.error?.(err);
|
|
1510
|
-
}
|
|
1511
|
-
});
|
|
1512
|
-
}
|
|
1513
|
-
function observable(producer) {
|
|
1514
|
-
return new Observable(producer);
|
|
1515
|
-
}
|
|
1631
|
+
// src/shared/signal/utils.ts
|
|
1516
1632
|
function toSignal(obs, instance) {
|
|
1517
1633
|
const sig = signal(void 0);
|
|
1518
1634
|
const subst = obs.subscribe((val) => {
|
|
@@ -1524,480 +1640,6 @@ function toSignal(obs, instance) {
|
|
|
1524
1640
|
];
|
|
1525
1641
|
return sig;
|
|
1526
1642
|
}
|
|
1527
|
-
function isObservable(value) {
|
|
1528
|
-
return value && value.__isObservable === true;
|
|
1529
|
-
}
|
|
1530
|
-
function map(fn) {
|
|
1531
|
-
return (source) => {
|
|
1532
|
-
return new Observable((observer) => {
|
|
1533
|
-
const subscription = source.subscribe(
|
|
1534
|
-
(value) => {
|
|
1535
|
-
try {
|
|
1536
|
-
observer.next(fn(value));
|
|
1537
|
-
} catch (err) {
|
|
1538
|
-
observer.error?.(err);
|
|
1539
|
-
}
|
|
1540
|
-
},
|
|
1541
|
-
(err) => observer.error?.(err),
|
|
1542
|
-
() => observer.complete?.()
|
|
1543
|
-
);
|
|
1544
|
-
return () => subscription.unsubscribe();
|
|
1545
|
-
});
|
|
1546
|
-
};
|
|
1547
|
-
}
|
|
1548
|
-
function filter(predicate) {
|
|
1549
|
-
return (source) => {
|
|
1550
|
-
return new Observable((observer) => {
|
|
1551
|
-
const subscription = source.subscribe(
|
|
1552
|
-
(value) => {
|
|
1553
|
-
try {
|
|
1554
|
-
if (predicate(value)) {
|
|
1555
|
-
observer.next(value);
|
|
1556
|
-
}
|
|
1557
|
-
} catch (err) {
|
|
1558
|
-
observer.error?.(err);
|
|
1559
|
-
}
|
|
1560
|
-
},
|
|
1561
|
-
(err) => observer.error?.(err),
|
|
1562
|
-
() => observer.complete?.()
|
|
1563
|
-
);
|
|
1564
|
-
return () => subscription.unsubscribe();
|
|
1565
|
-
});
|
|
1566
|
-
};
|
|
1567
|
-
}
|
|
1568
|
-
function tap(fn) {
|
|
1569
|
-
return (source) => {
|
|
1570
|
-
return new Observable((observer) => {
|
|
1571
|
-
const subscription = source.subscribe(
|
|
1572
|
-
(value) => {
|
|
1573
|
-
try {
|
|
1574
|
-
fn(value);
|
|
1575
|
-
observer.next(value);
|
|
1576
|
-
} catch (err) {
|
|
1577
|
-
observer.error?.(err);
|
|
1578
|
-
}
|
|
1579
|
-
},
|
|
1580
|
-
(err) => observer.error?.(err),
|
|
1581
|
-
() => observer.complete?.()
|
|
1582
|
-
);
|
|
1583
|
-
return () => subscription.unsubscribe();
|
|
1584
|
-
});
|
|
1585
|
-
};
|
|
1586
|
-
}
|
|
1587
|
-
function take(count) {
|
|
1588
|
-
return (source) => {
|
|
1589
|
-
return new Observable((observer) => {
|
|
1590
|
-
let taken = 0;
|
|
1591
|
-
const subscription = source.subscribe(
|
|
1592
|
-
(value) => {
|
|
1593
|
-
if (taken < count) {
|
|
1594
|
-
observer.next(value);
|
|
1595
|
-
taken++;
|
|
1596
|
-
if (taken === count) {
|
|
1597
|
-
observer.complete?.();
|
|
1598
|
-
subscription.unsubscribe();
|
|
1599
|
-
}
|
|
1600
|
-
}
|
|
1601
|
-
},
|
|
1602
|
-
(err) => observer.error?.(err),
|
|
1603
|
-
() => observer.complete?.()
|
|
1604
|
-
);
|
|
1605
|
-
return () => subscription.unsubscribe();
|
|
1606
|
-
});
|
|
1607
|
-
};
|
|
1608
|
-
}
|
|
1609
|
-
function skip(count) {
|
|
1610
|
-
return (source) => {
|
|
1611
|
-
return new Observable((observer) => {
|
|
1612
|
-
let skipped = 0;
|
|
1613
|
-
const subscription = source.subscribe(
|
|
1614
|
-
(value) => {
|
|
1615
|
-
if (skipped < count) {
|
|
1616
|
-
skipped++;
|
|
1617
|
-
} else {
|
|
1618
|
-
observer.next(value);
|
|
1619
|
-
}
|
|
1620
|
-
},
|
|
1621
|
-
(err) => observer.error?.(err),
|
|
1622
|
-
() => observer.complete?.()
|
|
1623
|
-
);
|
|
1624
|
-
return () => subscription.unsubscribe();
|
|
1625
|
-
});
|
|
1626
|
-
};
|
|
1627
|
-
}
|
|
1628
|
-
function debounceTime(ms) {
|
|
1629
|
-
return (source) => {
|
|
1630
|
-
return new Observable((observer) => {
|
|
1631
|
-
let timeoutId;
|
|
1632
|
-
const subscription = source.subscribe(
|
|
1633
|
-
(value) => {
|
|
1634
|
-
clearTimeout(timeoutId);
|
|
1635
|
-
timeoutId = setTimeout(() => {
|
|
1636
|
-
observer.next(value);
|
|
1637
|
-
}, ms);
|
|
1638
|
-
},
|
|
1639
|
-
(err) => observer.error?.(err),
|
|
1640
|
-
() => observer.complete?.()
|
|
1641
|
-
);
|
|
1642
|
-
return () => {
|
|
1643
|
-
clearTimeout(timeoutId);
|
|
1644
|
-
subscription.unsubscribe();
|
|
1645
|
-
};
|
|
1646
|
-
});
|
|
1647
|
-
};
|
|
1648
|
-
}
|
|
1649
|
-
function throttleTime(ms) {
|
|
1650
|
-
return (source) => {
|
|
1651
|
-
return new Observable((observer) => {
|
|
1652
|
-
let lastEmit = 0;
|
|
1653
|
-
const subscription = source.subscribe(
|
|
1654
|
-
(value) => {
|
|
1655
|
-
const now = Date.now();
|
|
1656
|
-
if (now - lastEmit >= ms) {
|
|
1657
|
-
lastEmit = now;
|
|
1658
|
-
observer.next(value);
|
|
1659
|
-
}
|
|
1660
|
-
},
|
|
1661
|
-
(err) => observer.error?.(err),
|
|
1662
|
-
() => observer.complete?.()
|
|
1663
|
-
);
|
|
1664
|
-
return () => subscription.unsubscribe();
|
|
1665
|
-
});
|
|
1666
|
-
};
|
|
1667
|
-
}
|
|
1668
|
-
function distinctUntilChanged(compare) {
|
|
1669
|
-
return (source) => {
|
|
1670
|
-
return new Observable((observer) => {
|
|
1671
|
-
let hasLast = false;
|
|
1672
|
-
let last;
|
|
1673
|
-
const subscription = source.subscribe(
|
|
1674
|
-
(value) => {
|
|
1675
|
-
const isDistinct = !hasLast || (compare ? !compare(last, value) : last !== value);
|
|
1676
|
-
if (isDistinct) {
|
|
1677
|
-
hasLast = true;
|
|
1678
|
-
last = value;
|
|
1679
|
-
observer.next(value);
|
|
1680
|
-
}
|
|
1681
|
-
},
|
|
1682
|
-
(err) => observer.error?.(err),
|
|
1683
|
-
() => observer.complete?.()
|
|
1684
|
-
);
|
|
1685
|
-
return () => subscription.unsubscribe();
|
|
1686
|
-
});
|
|
1687
|
-
};
|
|
1688
|
-
}
|
|
1689
|
-
function switchMap(fn) {
|
|
1690
|
-
return (source) => {
|
|
1691
|
-
return new Observable((observer) => {
|
|
1692
|
-
let innerSubscription = null;
|
|
1693
|
-
const outerSubscription = source.subscribe(
|
|
1694
|
-
(value) => {
|
|
1695
|
-
if (innerSubscription) {
|
|
1696
|
-
innerSubscription.unsubscribe();
|
|
1697
|
-
}
|
|
1698
|
-
try {
|
|
1699
|
-
const innerObservable = fn(value);
|
|
1700
|
-
innerSubscription = innerObservable.subscribe(
|
|
1701
|
-
(innerValue) => observer.next(innerValue),
|
|
1702
|
-
(err) => observer.error?.(err)
|
|
1703
|
-
);
|
|
1704
|
-
} catch (err) {
|
|
1705
|
-
observer.error?.(err);
|
|
1706
|
-
}
|
|
1707
|
-
},
|
|
1708
|
-
(err) => observer.error?.(err),
|
|
1709
|
-
() => observer.complete?.()
|
|
1710
|
-
);
|
|
1711
|
-
return () => {
|
|
1712
|
-
if (innerSubscription) {
|
|
1713
|
-
innerSubscription.unsubscribe();
|
|
1714
|
-
}
|
|
1715
|
-
outerSubscription.unsubscribe();
|
|
1716
|
-
};
|
|
1717
|
-
});
|
|
1718
|
-
};
|
|
1719
|
-
}
|
|
1720
|
-
function mergeMap(fn) {
|
|
1721
|
-
return (source) => {
|
|
1722
|
-
return new Observable((observer) => {
|
|
1723
|
-
const innerSubscriptions = [];
|
|
1724
|
-
let outerComplete = false;
|
|
1725
|
-
let activeCount = 0;
|
|
1726
|
-
const checkComplete = () => {
|
|
1727
|
-
if (outerComplete && activeCount === 0) {
|
|
1728
|
-
observer.complete?.();
|
|
1729
|
-
}
|
|
1730
|
-
};
|
|
1731
|
-
const outerSubscription = source.subscribe(
|
|
1732
|
-
(value) => {
|
|
1733
|
-
try {
|
|
1734
|
-
const innerObservable = fn(value);
|
|
1735
|
-
activeCount++;
|
|
1736
|
-
const innerSub = innerObservable.subscribe(
|
|
1737
|
-
(innerValue) => observer.next(innerValue),
|
|
1738
|
-
(err) => observer.error?.(err),
|
|
1739
|
-
() => {
|
|
1740
|
-
activeCount--;
|
|
1741
|
-
checkComplete();
|
|
1742
|
-
}
|
|
1743
|
-
);
|
|
1744
|
-
innerSubscriptions.push(innerSub);
|
|
1745
|
-
} catch (err) {
|
|
1746
|
-
observer.error?.(err);
|
|
1747
|
-
}
|
|
1748
|
-
},
|
|
1749
|
-
(err) => observer.error?.(err),
|
|
1750
|
-
() => {
|
|
1751
|
-
outerComplete = true;
|
|
1752
|
-
checkComplete();
|
|
1753
|
-
}
|
|
1754
|
-
);
|
|
1755
|
-
return () => {
|
|
1756
|
-
innerSubscriptions.forEach((sub) => sub.unsubscribe());
|
|
1757
|
-
outerSubscription.unsubscribe();
|
|
1758
|
-
};
|
|
1759
|
-
});
|
|
1760
|
-
};
|
|
1761
|
-
}
|
|
1762
|
-
function concatMap(fn) {
|
|
1763
|
-
return (source) => {
|
|
1764
|
-
return new Observable((observer) => {
|
|
1765
|
-
const queue = [];
|
|
1766
|
-
let innerSubscription = null;
|
|
1767
|
-
let outerComplete = false;
|
|
1768
|
-
let isProcessing = false;
|
|
1769
|
-
const processNext = () => {
|
|
1770
|
-
if (isProcessing || queue.length === 0) {
|
|
1771
|
-
if (outerComplete && queue.length === 0) {
|
|
1772
|
-
observer.complete?.();
|
|
1773
|
-
}
|
|
1774
|
-
return;
|
|
1775
|
-
}
|
|
1776
|
-
isProcessing = true;
|
|
1777
|
-
const value = queue.shift();
|
|
1778
|
-
try {
|
|
1779
|
-
const innerObservable = fn(value);
|
|
1780
|
-
innerSubscription = innerObservable.subscribe(
|
|
1781
|
-
(innerValue) => observer.next(innerValue),
|
|
1782
|
-
(err) => observer.error?.(err),
|
|
1783
|
-
() => {
|
|
1784
|
-
isProcessing = false;
|
|
1785
|
-
processNext();
|
|
1786
|
-
}
|
|
1787
|
-
);
|
|
1788
|
-
} catch (err) {
|
|
1789
|
-
observer.error?.(err);
|
|
1790
|
-
}
|
|
1791
|
-
};
|
|
1792
|
-
const outerSubscription = source.subscribe(
|
|
1793
|
-
(value) => {
|
|
1794
|
-
queue.push(value);
|
|
1795
|
-
processNext();
|
|
1796
|
-
},
|
|
1797
|
-
(err) => observer.error?.(err),
|
|
1798
|
-
() => {
|
|
1799
|
-
outerComplete = true;
|
|
1800
|
-
if (queue.length === 0 && !isProcessing) {
|
|
1801
|
-
observer.complete?.();
|
|
1802
|
-
}
|
|
1803
|
-
}
|
|
1804
|
-
);
|
|
1805
|
-
return () => {
|
|
1806
|
-
if (innerSubscription) {
|
|
1807
|
-
innerSubscription.unsubscribe();
|
|
1808
|
-
}
|
|
1809
|
-
outerSubscription.unsubscribe();
|
|
1810
|
-
};
|
|
1811
|
-
});
|
|
1812
|
-
};
|
|
1813
|
-
}
|
|
1814
|
-
function catchError(handler) {
|
|
1815
|
-
return (source) => {
|
|
1816
|
-
return new Observable((observer) => {
|
|
1817
|
-
const subscription = source.subscribe(
|
|
1818
|
-
(value) => observer.next(value),
|
|
1819
|
-
(err) => {
|
|
1820
|
-
try {
|
|
1821
|
-
const fallback = handler(err);
|
|
1822
|
-
const fallbackSub = fallback.subscribe(
|
|
1823
|
-
(value) => observer.next(value),
|
|
1824
|
-
(e) => observer.error?.(e),
|
|
1825
|
-
() => observer.complete?.()
|
|
1826
|
-
);
|
|
1827
|
-
subscription.__fallback = fallbackSub;
|
|
1828
|
-
} catch (e) {
|
|
1829
|
-
observer.error?.(e);
|
|
1830
|
-
}
|
|
1831
|
-
},
|
|
1832
|
-
() => observer.complete?.()
|
|
1833
|
-
);
|
|
1834
|
-
return () => {
|
|
1835
|
-
if (subscription.__fallback) {
|
|
1836
|
-
subscription.__fallback.unsubscribe();
|
|
1837
|
-
}
|
|
1838
|
-
subscription.unsubscribe();
|
|
1839
|
-
};
|
|
1840
|
-
});
|
|
1841
|
-
};
|
|
1842
|
-
}
|
|
1843
|
-
function startWith(...values) {
|
|
1844
|
-
return (source) => {
|
|
1845
|
-
return new Observable((observer) => {
|
|
1846
|
-
values.forEach((value) => observer.next(value));
|
|
1847
|
-
const subscription = source.subscribe(
|
|
1848
|
-
(value) => observer.next(value),
|
|
1849
|
-
(err) => observer.error?.(err),
|
|
1850
|
-
() => observer.complete?.()
|
|
1851
|
-
);
|
|
1852
|
-
return () => subscription.unsubscribe();
|
|
1853
|
-
});
|
|
1854
|
-
};
|
|
1855
|
-
}
|
|
1856
|
-
function scan(accumulator, seed) {
|
|
1857
|
-
return (source) => {
|
|
1858
|
-
return new Observable((observer) => {
|
|
1859
|
-
let acc = seed;
|
|
1860
|
-
const subscription = source.subscribe(
|
|
1861
|
-
(value) => {
|
|
1862
|
-
try {
|
|
1863
|
-
acc = accumulator(acc, value);
|
|
1864
|
-
observer.next(acc);
|
|
1865
|
-
} catch (err) {
|
|
1866
|
-
observer.error?.(err);
|
|
1867
|
-
}
|
|
1868
|
-
},
|
|
1869
|
-
(err) => observer.error?.(err),
|
|
1870
|
-
() => observer.complete?.()
|
|
1871
|
-
);
|
|
1872
|
-
return () => subscription.unsubscribe();
|
|
1873
|
-
});
|
|
1874
|
-
};
|
|
1875
|
-
}
|
|
1876
|
-
function reduce(accumulator, seed) {
|
|
1877
|
-
return (source) => {
|
|
1878
|
-
return new Observable((observer) => {
|
|
1879
|
-
let acc = seed;
|
|
1880
|
-
const subscription = source.subscribe(
|
|
1881
|
-
(value) => {
|
|
1882
|
-
try {
|
|
1883
|
-
acc = accumulator(acc, value);
|
|
1884
|
-
} catch (err) {
|
|
1885
|
-
observer.error?.(err);
|
|
1886
|
-
}
|
|
1887
|
-
},
|
|
1888
|
-
(err) => observer.error?.(err),
|
|
1889
|
-
() => {
|
|
1890
|
-
observer.next(acc);
|
|
1891
|
-
observer.complete?.();
|
|
1892
|
-
}
|
|
1893
|
-
);
|
|
1894
|
-
return () => subscription.unsubscribe();
|
|
1895
|
-
});
|
|
1896
|
-
};
|
|
1897
|
-
}
|
|
1898
|
-
|
|
1899
|
-
// src/shared/observable/subject.ts
|
|
1900
|
-
var Subject = class extends Observable {
|
|
1901
|
-
constructor() {
|
|
1902
|
-
super();
|
|
1903
|
-
this.subscribers = /* @__PURE__ */ new Set();
|
|
1904
|
-
this._isCompleted = false;
|
|
1905
|
-
this._hasError = false;
|
|
1906
|
-
this._thrownError = null;
|
|
1907
|
-
}
|
|
1908
|
-
asObservable() {
|
|
1909
|
-
return new Observable((observer) => {
|
|
1910
|
-
const subscription = this.subscribe(observer);
|
|
1911
|
-
return () => subscription.unsubscribe();
|
|
1912
|
-
});
|
|
1913
|
-
}
|
|
1914
|
-
subscribe(observerOrNext, error, complete) {
|
|
1915
|
-
if (this._isCompleted) {
|
|
1916
|
-
const obs = typeof observerOrNext === "function" ? { complete } : observerOrNext;
|
|
1917
|
-
obs.complete?.();
|
|
1918
|
-
return { unsubscribe: () => {
|
|
1919
|
-
} };
|
|
1920
|
-
}
|
|
1921
|
-
if (this._hasError) {
|
|
1922
|
-
return { unsubscribe: () => {
|
|
1923
|
-
} };
|
|
1924
|
-
}
|
|
1925
|
-
const observer = typeof observerOrNext === "function" ? { next: observerOrNext, error, complete } : observerOrNext;
|
|
1926
|
-
this.subscribers.add(observer);
|
|
1927
|
-
return {
|
|
1928
|
-
unsubscribe: () => {
|
|
1929
|
-
this.subscribers.delete(observer);
|
|
1930
|
-
}
|
|
1931
|
-
};
|
|
1932
|
-
}
|
|
1933
|
-
next(value) {
|
|
1934
|
-
if (this._isCompleted || this._hasError) return;
|
|
1935
|
-
const currentSubscribers = Array.from(this.subscribers);
|
|
1936
|
-
currentSubscribers.forEach((observer) => {
|
|
1937
|
-
if (this.subscribers.has(observer)) {
|
|
1938
|
-
try {
|
|
1939
|
-
observer.next(value);
|
|
1940
|
-
} catch (err) {
|
|
1941
|
-
console.error("Error in observer:", err);
|
|
1942
|
-
}
|
|
1943
|
-
}
|
|
1944
|
-
});
|
|
1945
|
-
}
|
|
1946
|
-
error(err) {
|
|
1947
|
-
if (this._isCompleted || this._hasError) return;
|
|
1948
|
-
this._hasError = true;
|
|
1949
|
-
this._thrownError = err;
|
|
1950
|
-
for (const observer of this.subscribers) {
|
|
1951
|
-
observer.error?.(err);
|
|
1952
|
-
}
|
|
1953
|
-
this.subscribers.clear();
|
|
1954
|
-
}
|
|
1955
|
-
complete() {
|
|
1956
|
-
if (this._isCompleted || this._hasError) return;
|
|
1957
|
-
this._isCompleted = true;
|
|
1958
|
-
const currentSubscribers = Array.from(this.subscribers);
|
|
1959
|
-
currentSubscribers.forEach((observer) => {
|
|
1960
|
-
if (observer.complete) {
|
|
1961
|
-
try {
|
|
1962
|
-
observer.complete();
|
|
1963
|
-
} catch (err) {
|
|
1964
|
-
console.error("Error in complete handler:", err);
|
|
1965
|
-
}
|
|
1966
|
-
}
|
|
1967
|
-
});
|
|
1968
|
-
this.subscribers.clear();
|
|
1969
|
-
}
|
|
1970
|
-
};
|
|
1971
|
-
|
|
1972
|
-
// src/shared/observable/bsubject.ts
|
|
1973
|
-
var BehaviorSubject = class extends Subject {
|
|
1974
|
-
constructor(initialValue) {
|
|
1975
|
-
super();
|
|
1976
|
-
this._value = initialValue;
|
|
1977
|
-
}
|
|
1978
|
-
get $value() {
|
|
1979
|
-
return this._value;
|
|
1980
|
-
}
|
|
1981
|
-
next(value) {
|
|
1982
|
-
this._value = value;
|
|
1983
|
-
super.next(value);
|
|
1984
|
-
}
|
|
1985
|
-
subscribe(observerOrNext, error, complete) {
|
|
1986
|
-
const observer = typeof observerOrNext === "function" ? { next: observerOrNext, error, complete } : observerOrNext;
|
|
1987
|
-
if (this._hasError) {
|
|
1988
|
-
observer.error?.(this._thrownError);
|
|
1989
|
-
return { unsubscribe: () => {
|
|
1990
|
-
} };
|
|
1991
|
-
}
|
|
1992
|
-
if (this._isCompleted) {
|
|
1993
|
-
observer.complete?.();
|
|
1994
|
-
return { unsubscribe: () => {
|
|
1995
|
-
} };
|
|
1996
|
-
}
|
|
1997
|
-
observer.next(this._value);
|
|
1998
|
-
return super.subscribe(observer);
|
|
1999
|
-
}
|
|
2000
|
-
};
|
|
2001
1643
|
|
|
2002
1644
|
// src/shared/component.ts
|
|
2003
1645
|
var OrcaComponent = class {
|
|
@@ -2015,6 +1657,7 @@ var OrcaComponent = class {
|
|
|
2015
1657
|
};
|
|
2016
1658
|
|
|
2017
1659
|
// src/shared/module_libs/http_client/module.ts
|
|
1660
|
+
var import_rxjs = require("rxjs");
|
|
2018
1661
|
var __decorate = function(decorators, target, key, desc) {
|
|
2019
1662
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
2020
1663
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -2023,7 +1666,7 @@ var __decorate = function(decorators, target, key, desc) {
|
|
|
2023
1666
|
};
|
|
2024
1667
|
var HttpClient = class HttpClient2 {
|
|
2025
1668
|
get(url, { stream = "json", reviver, init } = {}) {
|
|
2026
|
-
return new Observable((subscriber) => {
|
|
1669
|
+
return new import_rxjs.Observable((subscriber) => {
|
|
2027
1670
|
const controller = new AbortController();
|
|
2028
1671
|
fetch(url, {
|
|
2029
1672
|
method: "GET",
|
|
@@ -2462,9 +2105,21 @@ var OSC = class _OSC {
|
|
|
2462
2105
|
register2(ComponentClass, injector);
|
|
2463
2106
|
const cleanProps = { ...props };
|
|
2464
2107
|
delete cleanProps.__clientComponent;
|
|
2465
|
-
const instance = injector.resolve(ComponentClass);
|
|
2108
|
+
const instance = await injector.resolve(ComponentClass);
|
|
2466
2109
|
instance.__injector = injector;
|
|
2467
|
-
|
|
2110
|
+
const mergedProps = Object.create(
|
|
2111
|
+
Object.getPrototypeOf(instance.props || {})
|
|
2112
|
+
);
|
|
2113
|
+
Object.defineProperties(
|
|
2114
|
+
mergedProps,
|
|
2115
|
+
Object.getOwnPropertyDescriptors(instance.props || {})
|
|
2116
|
+
);
|
|
2117
|
+
Object.defineProperties(
|
|
2118
|
+
mergedProps,
|
|
2119
|
+
Object.getOwnPropertyDescriptors(cleanProps || {})
|
|
2120
|
+
);
|
|
2121
|
+
instance.props = mergedProps;
|
|
2122
|
+
instance.onInit?.();
|
|
2468
2123
|
if (typeof instance.build !== "function") {
|
|
2469
2124
|
throw new Error(`Component ${name} does not implement build()`);
|
|
2470
2125
|
}
|
|
@@ -2478,11 +2133,6 @@ var OSC = class _OSC {
|
|
|
2478
2133
|
}
|
|
2479
2134
|
};
|
|
2480
2135
|
|
|
2481
|
-
// src/shared/macros/index.ts
|
|
2482
|
-
function assert$(context) {
|
|
2483
|
-
return context?.factory.createStringLiteral("assert");
|
|
2484
|
-
}
|
|
2485
|
-
|
|
2486
2136
|
// src/shared/providers/actor.ts
|
|
2487
2137
|
var BaseActor = class {
|
|
2488
2138
|
constructor() {
|
|
@@ -2569,7 +2219,7 @@ var ServeStaticModule = class _ServeStaticModule {
|
|
|
2569
2219
|
const resolvedPath = path.resolve(options.rootPath);
|
|
2570
2220
|
const indexPath = path.join(resolvedPath, "index.html");
|
|
2571
2221
|
this.app.use(import_express.default.static(resolvedPath));
|
|
2572
|
-
this.app.get(
|
|
2222
|
+
this.app.get(/^\/(?!api).*/, (req, res) => {
|
|
2573
2223
|
res.sendFile(indexPath);
|
|
2574
2224
|
});
|
|
2575
2225
|
}
|
|
@@ -2668,6 +2318,7 @@ var RouterModule = class _RouterModule {
|
|
|
2668
2318
|
};
|
|
2669
2319
|
|
|
2670
2320
|
// src/node/factory.ts
|
|
2321
|
+
var import_rxjs2 = require("rxjs");
|
|
2671
2322
|
function createErrorElement(message) {
|
|
2672
2323
|
return {
|
|
2673
2324
|
$$typeof: ORCA_ELEMENT_TYPE,
|
|
@@ -2754,6 +2405,174 @@ var RouteMatcherService = class {
|
|
|
2754
2405
|
return null;
|
|
2755
2406
|
}
|
|
2756
2407
|
};
|
|
2408
|
+
var ExecutionContextImpl = class {
|
|
2409
|
+
constructor(classRef, handler, request, response) {
|
|
2410
|
+
this.classRef = classRef;
|
|
2411
|
+
this.handler = handler;
|
|
2412
|
+
this.request = request;
|
|
2413
|
+
this.response = response;
|
|
2414
|
+
}
|
|
2415
|
+
getClass() {
|
|
2416
|
+
return this.classRef;
|
|
2417
|
+
}
|
|
2418
|
+
getHandler() {
|
|
2419
|
+
return this.handler;
|
|
2420
|
+
}
|
|
2421
|
+
switchToHttp() {
|
|
2422
|
+
return {
|
|
2423
|
+
getRequest: () => this.request,
|
|
2424
|
+
getResponse: () => this.response
|
|
2425
|
+
};
|
|
2426
|
+
}
|
|
2427
|
+
};
|
|
2428
|
+
var GuardPipeline = class {
|
|
2429
|
+
static async execute(guards, context, injector) {
|
|
2430
|
+
if (guards.length === 0) {
|
|
2431
|
+
return true;
|
|
2432
|
+
}
|
|
2433
|
+
for (const guardOrClass of guards) {
|
|
2434
|
+
let guardInstance;
|
|
2435
|
+
if (typeof guardOrClass === "function") {
|
|
2436
|
+
guardInstance = await injector.resolve(guardOrClass);
|
|
2437
|
+
} else {
|
|
2438
|
+
guardInstance = guardOrClass;
|
|
2439
|
+
}
|
|
2440
|
+
const result = guardInstance.canActivate(context);
|
|
2441
|
+
if (result && typeof result.subscribe === "function") {
|
|
2442
|
+
const canActivate = await new Promise((resolve2, reject) => {
|
|
2443
|
+
result.subscribe({
|
|
2444
|
+
next: (value) => resolve2(value),
|
|
2445
|
+
error: (err) => reject(err),
|
|
2446
|
+
complete: () => {
|
|
2447
|
+
}
|
|
2448
|
+
});
|
|
2449
|
+
});
|
|
2450
|
+
if (!canActivate) {
|
|
2451
|
+
return false;
|
|
2452
|
+
}
|
|
2453
|
+
} else if (result instanceof Promise) {
|
|
2454
|
+
const canActivate = await result;
|
|
2455
|
+
if (!canActivate) {
|
|
2456
|
+
return false;
|
|
2457
|
+
}
|
|
2458
|
+
} else {
|
|
2459
|
+
if (!result) {
|
|
2460
|
+
return false;
|
|
2461
|
+
}
|
|
2462
|
+
}
|
|
2463
|
+
}
|
|
2464
|
+
return true;
|
|
2465
|
+
}
|
|
2466
|
+
};
|
|
2467
|
+
var InterceptorPipeline = class {
|
|
2468
|
+
static async execute(interceptors, context, handler, injector) {
|
|
2469
|
+
if (interceptors.length === 0) {
|
|
2470
|
+
return handler();
|
|
2471
|
+
}
|
|
2472
|
+
let index = 0;
|
|
2473
|
+
const createCallHandler = () => {
|
|
2474
|
+
const currentIndex = index++;
|
|
2475
|
+
return {
|
|
2476
|
+
handle: async () => {
|
|
2477
|
+
if (currentIndex >= interceptors.length) {
|
|
2478
|
+
return new import_rxjs2.Observable((observer) => {
|
|
2479
|
+
handler().then((result2) => {
|
|
2480
|
+
observer.next(result2);
|
|
2481
|
+
observer.complete?.();
|
|
2482
|
+
}).catch((error) => {
|
|
2483
|
+
observer.error?.(error);
|
|
2484
|
+
});
|
|
2485
|
+
});
|
|
2486
|
+
}
|
|
2487
|
+
const interceptorOrClass = interceptors[currentIndex];
|
|
2488
|
+
let interceptorInstance;
|
|
2489
|
+
if (typeof interceptorOrClass === "function") {
|
|
2490
|
+
interceptorInstance = await injector.resolve(interceptorOrClass);
|
|
2491
|
+
} else {
|
|
2492
|
+
interceptorInstance = interceptorOrClass;
|
|
2493
|
+
}
|
|
2494
|
+
const result = interceptorInstance.intercept(
|
|
2495
|
+
context,
|
|
2496
|
+
createCallHandler()
|
|
2497
|
+
);
|
|
2498
|
+
if (result instanceof Promise) {
|
|
2499
|
+
return new import_rxjs2.Observable((observer) => {
|
|
2500
|
+
result.then((observable) => {
|
|
2501
|
+
observable.subscribe({
|
|
2502
|
+
next: (value) => observer.next(value),
|
|
2503
|
+
error: (err) => observer.error?.(err),
|
|
2504
|
+
complete: () => observer.complete?.()
|
|
2505
|
+
});
|
|
2506
|
+
}).catch((error) => observer.error?.(error));
|
|
2507
|
+
});
|
|
2508
|
+
}
|
|
2509
|
+
return result;
|
|
2510
|
+
}
|
|
2511
|
+
};
|
|
2512
|
+
};
|
|
2513
|
+
return new Promise(async (resolve2, reject) => {
|
|
2514
|
+
const observable = createCallHandler().handle();
|
|
2515
|
+
let result;
|
|
2516
|
+
(await observable).subscribe({
|
|
2517
|
+
next: (value) => {
|
|
2518
|
+
result = value;
|
|
2519
|
+
},
|
|
2520
|
+
error: (error) => {
|
|
2521
|
+
reject(error);
|
|
2522
|
+
},
|
|
2523
|
+
complete: () => {
|
|
2524
|
+
resolve2(result);
|
|
2525
|
+
}
|
|
2526
|
+
});
|
|
2527
|
+
});
|
|
2528
|
+
}
|
|
2529
|
+
};
|
|
2530
|
+
var DependenciesScanner = class {
|
|
2531
|
+
constructor() {
|
|
2532
|
+
this.scannedGuards = /* @__PURE__ */ new Set();
|
|
2533
|
+
this.scannedInterceptors = /* @__PURE__ */ new Set();
|
|
2534
|
+
}
|
|
2535
|
+
scanController(controller) {
|
|
2536
|
+
this.scanGuardsFromMetadata(controller);
|
|
2537
|
+
this.scanInterceptorsFromMetadata(controller);
|
|
2538
|
+
const methodKeys = Reflect.ownKeys(controller.prototype);
|
|
2539
|
+
for (const methodKey of methodKeys) {
|
|
2540
|
+
this.scanGuardsFromMetadata(controller.prototype, methodKey);
|
|
2541
|
+
this.scanInterceptorsFromMetadata(controller.prototype, methodKey);
|
|
2542
|
+
}
|
|
2543
|
+
}
|
|
2544
|
+
scanGuardsFromMetadata(target, propertyKey) {
|
|
2545
|
+
const guards = propertyKey ? Reflect.getMetadata(GUARDS_KEY, target, propertyKey) : Reflect.getMetadata(GUARDS_KEY, target);
|
|
2546
|
+
if (!guards) return;
|
|
2547
|
+
for (const guard of guards) {
|
|
2548
|
+
if (typeof guard === "function") {
|
|
2549
|
+
this.scannedGuards.add(guard);
|
|
2550
|
+
}
|
|
2551
|
+
}
|
|
2552
|
+
}
|
|
2553
|
+
scanInterceptorsFromMetadata(target, propertyKey) {
|
|
2554
|
+
const interceptors = propertyKey ? Reflect.getMetadata(INTERCEPTORS_KEY, target, propertyKey) : Reflect.getMetadata(INTERCEPTORS_KEY, target);
|
|
2555
|
+
if (!interceptors) return;
|
|
2556
|
+
for (const interceptor of interceptors) {
|
|
2557
|
+
if (typeof interceptor === "function") {
|
|
2558
|
+
this.scannedInterceptors.add(interceptor);
|
|
2559
|
+
}
|
|
2560
|
+
}
|
|
2561
|
+
}
|
|
2562
|
+
getGuards() {
|
|
2563
|
+
return Array.from(this.scannedGuards);
|
|
2564
|
+
}
|
|
2565
|
+
getInterceptors() {
|
|
2566
|
+
return Array.from(this.scannedInterceptors);
|
|
2567
|
+
}
|
|
2568
|
+
getProviders() {
|
|
2569
|
+
const guards = this.getGuards().map((g) => ProviderNormalizer.normalize(g));
|
|
2570
|
+
const interceptors = this.getInterceptors().map(
|
|
2571
|
+
(i) => ProviderNormalizer.normalize(i)
|
|
2572
|
+
);
|
|
2573
|
+
return [...guards, ...interceptors];
|
|
2574
|
+
}
|
|
2575
|
+
};
|
|
2757
2576
|
var ControllerRegistrationService = class {
|
|
2758
2577
|
constructor(injector, app) {
|
|
2759
2578
|
this.injector = injector;
|
|
@@ -2773,17 +2592,17 @@ var ControllerRegistrationService = class {
|
|
|
2773
2592
|
actor.subscribe(eventName, (data) => handler.call(instance, data));
|
|
2774
2593
|
}
|
|
2775
2594
|
}
|
|
2776
|
-
buildMethodArgs(req, paramsMeta, designParams) {
|
|
2595
|
+
buildMethodArgs(req, res, paramsMeta, designParams) {
|
|
2777
2596
|
const args = Array(designParams.length).fill(void 0);
|
|
2778
2597
|
for (let i = 0; i < designParams.length; i++) {
|
|
2779
2598
|
const meta = paramsMeta[i];
|
|
2780
2599
|
if (!meta) continue;
|
|
2781
|
-
const source = this.getParamSource(req, meta.type);
|
|
2600
|
+
const source = this.getParamSource(req, res, meta.type);
|
|
2782
2601
|
args[i] = meta.key ? source?.[meta.key] : source;
|
|
2783
2602
|
}
|
|
2784
2603
|
return args;
|
|
2785
2604
|
}
|
|
2786
|
-
getParamSource(req, type) {
|
|
2605
|
+
getParamSource(req, res, type) {
|
|
2787
2606
|
switch (type) {
|
|
2788
2607
|
case "BODY" /* BODY */:
|
|
2789
2608
|
return req.body;
|
|
@@ -2791,13 +2610,21 @@ var ControllerRegistrationService = class {
|
|
|
2791
2610
|
return req.params;
|
|
2792
2611
|
case "QUERY" /* QUERY */:
|
|
2793
2612
|
return req.query;
|
|
2613
|
+
case "FILE" /* FILE */:
|
|
2614
|
+
return req.file;
|
|
2615
|
+
case "FILES" /* FILES */:
|
|
2616
|
+
return req.files;
|
|
2617
|
+
case "REQUEST" /* REQUEST */:
|
|
2618
|
+
return req;
|
|
2619
|
+
case "RESPONSE" /* RESPONSE */:
|
|
2620
|
+
return res;
|
|
2794
2621
|
default:
|
|
2795
2622
|
return void 0;
|
|
2796
2623
|
}
|
|
2797
2624
|
}
|
|
2798
2625
|
async handleMethodResult(result, res, isSSE) {
|
|
2799
2626
|
if (res.headersSent) return;
|
|
2800
|
-
if (isSSE &&
|
|
2627
|
+
if (isSSE && (0, import_rxjs2.isObservable)(result)) {
|
|
2801
2628
|
result.subscribe({
|
|
2802
2629
|
next: (data) => {
|
|
2803
2630
|
res.write(`data: ${JSON.stringify(data)}
|
|
@@ -2840,6 +2667,8 @@ var ControllerRegistrationService = class {
|
|
|
2840
2667
|
methodKey
|
|
2841
2668
|
);
|
|
2842
2669
|
const paramsMeta = Reflect.getMetadata(PARAMS_META_KEY, CtrlCls.prototype, methodKey) ?? {};
|
|
2670
|
+
const guards = getGuards(CtrlCls.prototype, methodKey);
|
|
2671
|
+
const interceptors = getInterceptors(CtrlCls.prototype, methodKey);
|
|
2843
2672
|
this.app[httpMethod](fullPath, async (req, res) => {
|
|
2844
2673
|
try {
|
|
2845
2674
|
if (isSSE) {
|
|
@@ -2847,16 +2676,52 @@ var ControllerRegistrationService = class {
|
|
|
2847
2676
|
res.setHeader("Cache-Control", "no-cache");
|
|
2848
2677
|
res.setHeader("Connection", "keep-alive");
|
|
2849
2678
|
}
|
|
2679
|
+
const requestContext = {
|
|
2680
|
+
request: req,
|
|
2681
|
+
response: res,
|
|
2682
|
+
metadata: {}
|
|
2683
|
+
};
|
|
2850
2684
|
const designParams = Reflect.getMetadata(
|
|
2851
2685
|
DESIGN_PARAMTYPES,
|
|
2852
2686
|
CtrlCls.prototype,
|
|
2853
2687
|
methodKey
|
|
2854
2688
|
) ?? [];
|
|
2855
|
-
const
|
|
2856
|
-
|
|
2689
|
+
const context = new ExecutionContextImpl(
|
|
2690
|
+
CtrlCls,
|
|
2691
|
+
instance[methodKey],
|
|
2692
|
+
req,
|
|
2693
|
+
res
|
|
2694
|
+
);
|
|
2695
|
+
const canActivate = await GuardPipeline.execute(
|
|
2696
|
+
guards,
|
|
2697
|
+
context,
|
|
2698
|
+
this.injector
|
|
2699
|
+
);
|
|
2700
|
+
if (!canActivate) {
|
|
2701
|
+
res.status(403).json({
|
|
2702
|
+
statusCode: 403,
|
|
2703
|
+
message: "Forbidden",
|
|
2704
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
2705
|
+
});
|
|
2706
|
+
return;
|
|
2707
|
+
}
|
|
2708
|
+
const result = await InterceptorPipeline.execute(
|
|
2709
|
+
interceptors,
|
|
2710
|
+
context,
|
|
2711
|
+
async () => {
|
|
2712
|
+
const args = this.buildMethodArgs(
|
|
2713
|
+
req,
|
|
2714
|
+
res,
|
|
2715
|
+
paramsMeta,
|
|
2716
|
+
designParams
|
|
2717
|
+
);
|
|
2718
|
+
return instance[methodKey](...args);
|
|
2719
|
+
},
|
|
2720
|
+
this.injector
|
|
2721
|
+
);
|
|
2857
2722
|
await this.handleMethodResult(result, res, isSSE);
|
|
2858
2723
|
} catch (err) {
|
|
2859
|
-
res.send(err.message);
|
|
2724
|
+
res.status(500).send(err.message);
|
|
2860
2725
|
}
|
|
2861
2726
|
});
|
|
2862
2727
|
}
|
|
@@ -2864,10 +2729,10 @@ var ControllerRegistrationService = class {
|
|
|
2864
2729
|
const normalizedPrefix = prefix === "/" ? "" : `/${prefix.replace(/^\/+|\/+$/g, "")}`;
|
|
2865
2730
|
return `${normalizedPrefix}/${routePath}`.replace(/\/+/g, "/").replace(/\/$/, "") || "/";
|
|
2866
2731
|
}
|
|
2867
|
-
register(CtrlCls) {
|
|
2868
|
-
const instance = this.injector.resolve(CtrlCls);
|
|
2732
|
+
async register(CtrlCls) {
|
|
2733
|
+
const instance = await this.injector.resolve(CtrlCls);
|
|
2869
2734
|
const prefix = Reflect.getMetadata(CONTROLLER_PREFIX_KEY, CtrlCls) ?? "/";
|
|
2870
|
-
const actor = this.injector.resolve(Actor);
|
|
2735
|
+
const actor = await this.injector.resolve(Actor);
|
|
2871
2736
|
this.registerEventHandlers(CtrlCls, instance, actor);
|
|
2872
2737
|
this.registerHttpMethods(CtrlCls, instance, prefix);
|
|
2873
2738
|
}
|
|
@@ -2991,8 +2856,8 @@ var OscRouteHandler = class {
|
|
|
2991
2856
|
var SocketService = class {
|
|
2992
2857
|
static setup(server, injector) {
|
|
2993
2858
|
const io = new import_socket.Server(server);
|
|
2994
|
-
io.on("connection", (socket) => {
|
|
2995
|
-
const actor = injector.resolve(Actor);
|
|
2859
|
+
io.on("connection", async (socket) => {
|
|
2860
|
+
const actor = await injector.resolve(Actor);
|
|
2996
2861
|
actor.register(socket.id, {
|
|
2997
2862
|
send: (message) => {
|
|
2998
2863
|
io.to(socket.id).emit("message", message);
|
|
@@ -3020,15 +2885,37 @@ var NodeFactory = class {
|
|
|
3020
2885
|
}
|
|
3021
2886
|
return appNode;
|
|
3022
2887
|
}
|
|
3023
|
-
static
|
|
2888
|
+
static scanDependencies(appNode) {
|
|
2889
|
+
const scanner = new DependenciesScanner();
|
|
2890
|
+
const rootControllers = [
|
|
2891
|
+
...store.get("root_controllers")
|
|
2892
|
+
];
|
|
2893
|
+
rootControllers.forEach((ctrl) => scanner.scanController(ctrl));
|
|
2894
|
+
appNode.traverse((node) => {
|
|
2895
|
+
const providers = [...node.getProviders().values()];
|
|
2896
|
+
const controllers = providers.filter((provider) => {
|
|
2897
|
+
const token = provider.provide;
|
|
2898
|
+
return typeof token === "function" && Reflect.getMetadata(CONTROLLER, token);
|
|
2899
|
+
});
|
|
2900
|
+
controllers.forEach((c) => {
|
|
2901
|
+
if (c.useClass) {
|
|
2902
|
+
scanner.scanController(c.useClass);
|
|
2903
|
+
}
|
|
2904
|
+
});
|
|
2905
|
+
});
|
|
2906
|
+
return scanner;
|
|
2907
|
+
}
|
|
2908
|
+
static createRootInjector(appNode, app, rootModule, scanner) {
|
|
3024
2909
|
const allProviders = collectAllProvidersFromNode(appNode);
|
|
3025
2910
|
const rootControllers = [
|
|
3026
2911
|
...store.get("root_controllers")
|
|
3027
2912
|
].map((p) => ProviderNormalizer.normalize(p));
|
|
3028
2913
|
const bootstrap = Reflect.getMetadata(BOOTSTRAP, rootModule);
|
|
2914
|
+
const guardAndInterceptorProviders = scanner.getProviders();
|
|
3029
2915
|
return new Injector([
|
|
3030
2916
|
...allProviders,
|
|
3031
2917
|
...rootControllers,
|
|
2918
|
+
...guardAndInterceptorProviders,
|
|
3032
2919
|
{ provide: "OSC_URL", useValue: "/osc" },
|
|
3033
2920
|
{ provide: EXPRESS_ADAPTER_HOST, useValue: app },
|
|
3034
2921
|
{
|
|
@@ -3049,11 +2936,14 @@ var NodeFactory = class {
|
|
|
3049
2936
|
rootControllers.forEach((ctrl) => registrationService.register(ctrl));
|
|
3050
2937
|
appNode.traverse((node) => {
|
|
3051
2938
|
const providers = [...node.getProviders().values()];
|
|
3052
|
-
const controllers = providers.filter(
|
|
3053
|
-
|
|
3054
|
-
|
|
2939
|
+
const controllers = providers.filter((provider) => {
|
|
2940
|
+
const token = provider.provide;
|
|
2941
|
+
return typeof token === "function" && Reflect.getMetadata(CONTROLLER, token);
|
|
2942
|
+
});
|
|
3055
2943
|
controllers.forEach((c) => registrationService.register(c.useClass));
|
|
3056
|
-
providers.filter((provider) => provider.eager).forEach((p) =>
|
|
2944
|
+
providers.filter((provider) => provider.eager).forEach(async (p) => {
|
|
2945
|
+
await injector.resolve(p.provide);
|
|
2946
|
+
});
|
|
3057
2947
|
});
|
|
3058
2948
|
}
|
|
3059
2949
|
static setupOscRoute(app, injector, rootModule) {
|
|
@@ -3066,7 +2956,13 @@ var NodeFactory = class {
|
|
|
3066
2956
|
app.use(import_express2.default.json());
|
|
3067
2957
|
const server = import_http.default.createServer(app);
|
|
3068
2958
|
const appNode = this.compileAndValidate(rootModule);
|
|
3069
|
-
const
|
|
2959
|
+
const scanner = this.scanDependencies(appNode);
|
|
2960
|
+
const rootInjector = this.createRootInjector(
|
|
2961
|
+
appNode,
|
|
2962
|
+
app,
|
|
2963
|
+
rootModule,
|
|
2964
|
+
scanner
|
|
2965
|
+
);
|
|
3070
2966
|
setCurrentInjector(rootInjector);
|
|
3071
2967
|
this.registerControllers(appNode, rootInjector, app);
|
|
3072
2968
|
this.setupOscRoute(app, rootInjector, rootModule);
|
|
@@ -3080,7 +2976,6 @@ var NodeFactory = class {
|
|
|
3080
2976
|
ActorModule,
|
|
3081
2977
|
BOOTSTRAP,
|
|
3082
2978
|
BOOTSTRAP_VNODE,
|
|
3083
|
-
BehaviorSubject,
|
|
3084
2979
|
Body,
|
|
3085
2980
|
COMPONENT,
|
|
3086
2981
|
COMPONENT_DEPS,
|
|
@@ -3099,6 +2994,7 @@ var NodeFactory = class {
|
|
|
3099
2994
|
EXPORTS_KEY,
|
|
3100
2995
|
EXPRESS_ADAPTER_HOST,
|
|
3101
2996
|
Fragment,
|
|
2997
|
+
GUARDS_KEY,
|
|
3102
2998
|
Get,
|
|
3103
2999
|
HTTP_METHOD_KEY,
|
|
3104
3000
|
HandlerParamType,
|
|
@@ -3108,6 +3004,7 @@ var NodeFactory = class {
|
|
|
3108
3004
|
IMPORTS_KEY,
|
|
3109
3005
|
INJECTABLE,
|
|
3110
3006
|
INJECT_TOKENS_KEY,
|
|
3007
|
+
INTERCEPTORS_KEY,
|
|
3111
3008
|
Inject,
|
|
3112
3009
|
Injectable,
|
|
3113
3010
|
Injector,
|
|
@@ -3120,7 +3017,6 @@ var NodeFactory = class {
|
|
|
3120
3017
|
ORCA_ELEMENT_TYPE,
|
|
3121
3018
|
ORCA_FRAGMENT_TYPE,
|
|
3122
3019
|
OSC,
|
|
3123
|
-
Observable,
|
|
3124
3020
|
OrcaComponent,
|
|
3125
3021
|
PARAMS_META_KEY,
|
|
3126
3022
|
PATH_KEY,
|
|
@@ -3130,56 +3026,47 @@ var NodeFactory = class {
|
|
|
3130
3026
|
Post,
|
|
3131
3027
|
ProviderNormalizer,
|
|
3132
3028
|
Query,
|
|
3029
|
+
REQUEST_CONTEXT,
|
|
3030
|
+
Req,
|
|
3031
|
+
Res,
|
|
3133
3032
|
RouterModule,
|
|
3134
3033
|
SIGNATURE_METADATA_KEY,
|
|
3135
3034
|
SSE_ROUTE,
|
|
3136
3035
|
ServeStaticModule,
|
|
3036
|
+
SetMetadata,
|
|
3037
|
+
Shared,
|
|
3137
3038
|
Signature,
|
|
3138
3039
|
Sse,
|
|
3139
|
-
Subject,
|
|
3140
3040
|
Subscribe,
|
|
3141
|
-
|
|
3041
|
+
UploadedFile,
|
|
3042
|
+
UploadedFiles,
|
|
3043
|
+
UseGuards,
|
|
3044
|
+
UseInterceptors,
|
|
3045
|
+
applyDecorators,
|
|
3142
3046
|
batch,
|
|
3143
|
-
catchError,
|
|
3144
3047
|
collectAllProvidersFromNode,
|
|
3145
3048
|
computed,
|
|
3146
|
-
concatMap,
|
|
3147
3049
|
createRoot,
|
|
3148
|
-
debounceTime,
|
|
3149
|
-
distinctUntilChanged,
|
|
3150
3050
|
effect,
|
|
3151
|
-
filter,
|
|
3152
|
-
from,
|
|
3153
3051
|
getCurrentInjector,
|
|
3052
|
+
getGuards,
|
|
3053
|
+
getInterceptors,
|
|
3154
3054
|
getSignatureMetadata,
|
|
3155
3055
|
hasSignature,
|
|
3156
|
-
interval,
|
|
3157
3056
|
isClassComponent,
|
|
3158
3057
|
isFragment,
|
|
3159
3058
|
isIntrinsicElement,
|
|
3160
|
-
isObservable,
|
|
3161
3059
|
isSignal,
|
|
3162
3060
|
jsx,
|
|
3163
3061
|
jsxs,
|
|
3164
|
-
|
|
3165
|
-
mergeMap,
|
|
3062
|
+
mixin,
|
|
3166
3063
|
node,
|
|
3167
|
-
observable,
|
|
3168
|
-
of,
|
|
3169
3064
|
parseSignatureSchemas,
|
|
3170
|
-
reduce,
|
|
3171
|
-
scan,
|
|
3172
3065
|
setCurrentInjector,
|
|
3173
3066
|
shared,
|
|
3174
3067
|
signal,
|
|
3175
|
-
skip,
|
|
3176
|
-
startWith,
|
|
3177
|
-
switchMap,
|
|
3178
3068
|
symbolValueReplacer,
|
|
3179
3069
|
symbolValueReviver,
|
|
3180
|
-
take,
|
|
3181
|
-
tap,
|
|
3182
|
-
throttleTime,
|
|
3183
3070
|
toSignal,
|
|
3184
3071
|
untracked
|
|
3185
3072
|
});
|