@cepseudo/engine 1.0.0
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/LICENSE +21 -0
- package/README.md +209 -0
- package/dist/component_types.d.ts +92 -0
- package/dist/component_types.d.ts.map +1 -0
- package/dist/component_types.js +93 -0
- package/dist/component_types.js.map +1 -0
- package/dist/digital_twin_engine.d.ts +390 -0
- package/dist/digital_twin_engine.d.ts.map +1 -0
- package/dist/digital_twin_engine.js +1200 -0
- package/dist/digital_twin_engine.js.map +1 -0
- package/dist/endpoints.d.ts +45 -0
- package/dist/endpoints.d.ts.map +1 -0
- package/dist/endpoints.js +87 -0
- package/dist/endpoints.js.map +1 -0
- package/dist/error_handler.d.ts +20 -0
- package/dist/error_handler.d.ts.map +1 -0
- package/dist/error_handler.js +68 -0
- package/dist/error_handler.js.map +1 -0
- package/dist/global_assets_handler.d.ts +63 -0
- package/dist/global_assets_handler.d.ts.map +1 -0
- package/dist/global_assets_handler.js +127 -0
- package/dist/global_assets_handler.js.map +1 -0
- package/dist/graceful_shutdown.d.ts +44 -0
- package/dist/graceful_shutdown.d.ts.map +1 -0
- package/dist/graceful_shutdown.js +79 -0
- package/dist/graceful_shutdown.js.map +1 -0
- package/dist/health.d.ts +112 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +190 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/initializer.d.ts +62 -0
- package/dist/initializer.d.ts.map +1 -0
- package/dist/initializer.js +110 -0
- package/dist/initializer.js.map +1 -0
- package/dist/loader/component_loader.d.ts +133 -0
- package/dist/loader/component_loader.d.ts.map +1 -0
- package/dist/loader/component_loader.js +340 -0
- package/dist/loader/component_loader.js.map +1 -0
- package/dist/openapi/generator.d.ts +93 -0
- package/dist/openapi/generator.d.ts.map +1 -0
- package/dist/openapi/generator.js +293 -0
- package/dist/openapi/generator.js.map +1 -0
- package/dist/queue_manager.d.ts +87 -0
- package/dist/queue_manager.d.ts.map +1 -0
- package/dist/queue_manager.js +196 -0
- package/dist/queue_manager.js.map +1 -0
- package/dist/scheduler.d.ts +29 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +375 -0
- package/dist/scheduler.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digital_twin_engine.js","sourceRoot":"","sources":["../src/digital_twin_engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview HTTP endpoint exposure utilities for digital twin components
|
|
3
|
+
*
|
|
4
|
+
* This module handles the automatic registration of HTTP endpoints from servable
|
|
5
|
+
* components to the Express router, enabling RESTful API access to digital twin data.
|
|
6
|
+
*/
|
|
7
|
+
import type { Router } from 'ultimate-express';
|
|
8
|
+
import type { Collector, Harvester, Handler, CustomTableManager } from '@cepseudo/components';
|
|
9
|
+
import type { AssetsManager } from '@cepseudo/assets';
|
|
10
|
+
/**
|
|
11
|
+
* Supported HTTP methods for component endpoints.
|
|
12
|
+
*
|
|
13
|
+
* These methods correspond to standard REST operations:
|
|
14
|
+
* - get: Retrieve data
|
|
15
|
+
* - post: Create new resources
|
|
16
|
+
* - put: Update existing resources (full update)
|
|
17
|
+
* - patch: Update existing resources (partial update)
|
|
18
|
+
* - delete: Remove resources
|
|
19
|
+
*/
|
|
20
|
+
export type { HttpMethod } from '@cepseudo/shared';
|
|
21
|
+
/**
|
|
22
|
+
* Automatically registers HTTP endpoints from servable components to an Express router.
|
|
23
|
+
*
|
|
24
|
+
* This function iterates through all provided components, extracts their endpoints,
|
|
25
|
+
* and registers them with the Express router. Each endpoint is wrapped with error
|
|
26
|
+
* handling to ensure robust API behavior.
|
|
27
|
+
*
|
|
28
|
+
* @param router - Express router instance to register endpoints with
|
|
29
|
+
* @param servables - Array of components that expose HTTP endpoints
|
|
30
|
+
*
|
|
31
|
+
* @throws {Error} When an unsupported HTTP method is encountered
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const router = express.Router();
|
|
36
|
+
* const components = [collector1, harvester1, assetsManager1];
|
|
37
|
+
*
|
|
38
|
+
* await exposeEndpoints(router, components);
|
|
39
|
+
*
|
|
40
|
+
* // Now the router has all endpoints from the components registered
|
|
41
|
+
* app.use('/api', router);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function exposeEndpoints(router: Router, servables: Array<Collector | Harvester | Handler | AssetsManager | CustomTableManager>): Promise<void>;
|
|
45
|
+
//# sourceMappingURL=endpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,kBAAkB,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAMrD;;;;;;;;;GASG;AAEH,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAsBlD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,eAAe,CACjC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,kBAAkB,CAAC,GACvF,OAAO,CAAC,IAAI,CAAC,CA4Df"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview HTTP endpoint exposure utilities for digital twin components
|
|
3
|
+
*
|
|
4
|
+
* This module handles the automatic registration of HTTP endpoints from servable
|
|
5
|
+
* components to the Express router, enabling RESTful API access to digital twin data.
|
|
6
|
+
*/
|
|
7
|
+
import { DigitalTwinError, Logger } from '@cepseudo/shared';
|
|
8
|
+
const logger = new Logger('Endpoints');
|
|
9
|
+
/**
|
|
10
|
+
* Automatically registers HTTP endpoints from servable components to an Express router.
|
|
11
|
+
*
|
|
12
|
+
* This function iterates through all provided components, extracts their endpoints,
|
|
13
|
+
* and registers them with the Express router. Each endpoint is wrapped with error
|
|
14
|
+
* handling to ensure robust API behavior.
|
|
15
|
+
*
|
|
16
|
+
* @param router - Express router instance to register endpoints with
|
|
17
|
+
* @param servables - Array of components that expose HTTP endpoints
|
|
18
|
+
*
|
|
19
|
+
* @throws {Error} When an unsupported HTTP method is encountered
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const router = express.Router();
|
|
24
|
+
* const components = [collector1, harvester1, assetsManager1];
|
|
25
|
+
*
|
|
26
|
+
* await exposeEndpoints(router, components);
|
|
27
|
+
*
|
|
28
|
+
* // Now the router has all endpoints from the components registered
|
|
29
|
+
* app.use('/api', router);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export async function exposeEndpoints(router, servables) {
|
|
33
|
+
for (const servable of servables) {
|
|
34
|
+
const endpoints = servable.getEndpoints();
|
|
35
|
+
for (const ep of endpoints) {
|
|
36
|
+
const method = ep.method.toLowerCase();
|
|
37
|
+
if (typeof router[method] === 'function') {
|
|
38
|
+
// Register endpoint with error handling wrapper
|
|
39
|
+
router[method](ep.path, async (req, res) => {
|
|
40
|
+
try {
|
|
41
|
+
const result = await ep.handler(req);
|
|
42
|
+
res.status(result.status)
|
|
43
|
+
.header(result.headers || {})
|
|
44
|
+
.send(result.content);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
const requestId = req.headers['x-request-id'] || crypto.randomUUID();
|
|
48
|
+
// Log the error with context
|
|
49
|
+
logger.error(`[${requestId}] ${req.method} ${ep.path} - ${error instanceof Error ? error.message : String(error)}`, {
|
|
50
|
+
requestId,
|
|
51
|
+
method: req.method,
|
|
52
|
+
path: ep.path,
|
|
53
|
+
userId: req.headers['x-user-id'],
|
|
54
|
+
stack: error instanceof Error ? error.stack : undefined
|
|
55
|
+
});
|
|
56
|
+
// Handle DigitalTwinError with proper status code
|
|
57
|
+
if (error instanceof DigitalTwinError) {
|
|
58
|
+
res.status(error.statusCode).send({
|
|
59
|
+
...error.toJSON(),
|
|
60
|
+
requestId
|
|
61
|
+
});
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Generic error response
|
|
65
|
+
const isProduction = process.env.NODE_ENV === 'production';
|
|
66
|
+
res.status(500).send({
|
|
67
|
+
error: {
|
|
68
|
+
code: 'INTERNAL_ERROR',
|
|
69
|
+
message: isProduction
|
|
70
|
+
? 'Internal server error'
|
|
71
|
+
: error instanceof Error
|
|
72
|
+
? error.message
|
|
73
|
+
: String(error),
|
|
74
|
+
requestId,
|
|
75
|
+
timestamp: new Date().toISOString()
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
throw new Error(`Unsupported HTTP method: ${ep.method}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Express error handling middleware
|
|
3
|
+
* Provides centralized error handling with logging and structured responses
|
|
4
|
+
*/
|
|
5
|
+
import type { Request, Response, NextFunction } from 'ultimate-express';
|
|
6
|
+
/**
|
|
7
|
+
* Express error handler middleware
|
|
8
|
+
* Must be registered after all routes
|
|
9
|
+
*/
|
|
10
|
+
export declare function errorHandler(error: Error, req: Request, res: Response, _next: NextFunction): void;
|
|
11
|
+
/**
|
|
12
|
+
* Wraps an async route handler to automatically catch errors
|
|
13
|
+
* and pass them to the error handling middleware
|
|
14
|
+
*/
|
|
15
|
+
export declare function asyncHandler<T>(handler: (req: Request, res: Response, next: NextFunction) => Promise<T>): (req: Request, res: Response, next: NextFunction) => void;
|
|
16
|
+
/**
|
|
17
|
+
* 404 handler for routes that don't exist
|
|
18
|
+
*/
|
|
19
|
+
export declare function notFoundHandler(req: Request, res: Response): void;
|
|
20
|
+
//# sourceMappingURL=error_handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error_handler.d.ts","sourceRoot":"","sources":["../src/error_handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAMvE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAoCjG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,IAC5F,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAGjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAWjE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Express error handling middleware
|
|
3
|
+
* Provides centralized error handling with logging and structured responses
|
|
4
|
+
*/
|
|
5
|
+
import { randomUUID } from 'crypto';
|
|
6
|
+
import { DigitalTwinError, Logger } from '@cepseudo/shared';
|
|
7
|
+
const logger = new Logger('ErrorHandler');
|
|
8
|
+
/**
|
|
9
|
+
* Express error handler middleware
|
|
10
|
+
* Must be registered after all routes
|
|
11
|
+
*/
|
|
12
|
+
export function errorHandler(error, req, res, _next) {
|
|
13
|
+
const requestId = req.headers['x-request-id'] || randomUUID();
|
|
14
|
+
// Log the error with context
|
|
15
|
+
logger.error(`[${requestId}] ${req.method} ${req.path} - ${error.message}`, {
|
|
16
|
+
requestId,
|
|
17
|
+
method: req.method,
|
|
18
|
+
path: req.path,
|
|
19
|
+
userId: req.headers['x-user-id'],
|
|
20
|
+
stack: error.stack
|
|
21
|
+
});
|
|
22
|
+
// Don't send response if headers already sent
|
|
23
|
+
if (res.headersSent) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (error instanceof DigitalTwinError) {
|
|
27
|
+
res.status(error.statusCode).json({
|
|
28
|
+
...error.toJSON(),
|
|
29
|
+
requestId
|
|
30
|
+
});
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Unknown error - return generic response
|
|
34
|
+
const isProduction = process.env.NODE_ENV === 'production';
|
|
35
|
+
res.status(500).json({
|
|
36
|
+
error: {
|
|
37
|
+
code: 'INTERNAL_ERROR',
|
|
38
|
+
message: isProduction ? 'Internal server error' : error.message,
|
|
39
|
+
requestId,
|
|
40
|
+
timestamp: new Date().toISOString(),
|
|
41
|
+
...(!isProduction && { stack: error.stack })
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Wraps an async route handler to automatically catch errors
|
|
47
|
+
* and pass them to the error handling middleware
|
|
48
|
+
*/
|
|
49
|
+
export function asyncHandler(handler) {
|
|
50
|
+
return (req, res, next) => {
|
|
51
|
+
Promise.resolve(handler(req, res, next)).catch(next);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 404 handler for routes that don't exist
|
|
56
|
+
*/
|
|
57
|
+
export function notFoundHandler(req, res) {
|
|
58
|
+
const requestId = req.headers['x-request-id'] || randomUUID();
|
|
59
|
+
res.status(404).json({
|
|
60
|
+
error: {
|
|
61
|
+
code: 'NOT_FOUND',
|
|
62
|
+
message: `Route ${req.method} ${req.path} not found`,
|
|
63
|
+
requestId,
|
|
64
|
+
timestamp: new Date().toISOString()
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=error_handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error_handler.js","sourceRoot":"","sources":["../src/error_handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE3D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,CAAA;AAEzC;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,GAAY,EAAE,GAAa,EAAE,KAAmB;IACvF,MAAM,SAAS,GAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAY,IAAI,UAAU,EAAE,CAAA;IAEzE,6BAA6B;IAC7B,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE;QACxE,SAAS;QACT,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK;KACrB,CAAC,CAAA;IAEF,8CAA8C;IAC9C,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QAClB,OAAM;IACV,CAAC;IAED,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;QACpC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;YAC9B,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,SAAS;SACZ,CAAC,CAAA;QACF,OAAM;IACV,CAAC;IAED,0CAA0C;IAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAA;IAC1D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,KAAK,EAAE;YACH,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;YAC/D,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;SAC/C;KACJ,CAAC,CAAA;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAI,OAAwE;IACpG,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAC7D,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxD,CAAC,CAAA;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY,EAAE,GAAa;IACvD,MAAM,SAAS,GAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAY,IAAI,UAAU,EAAE,CAAA;IAEzE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,KAAK,EAAE;YACH,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,SAAS,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,YAAY;YACpD,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC;KACJ,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Handler } from '@cepseudo/components';
|
|
2
|
+
import type { ComponentConfiguration, DataResponse, HttpMethod, TypedRequest } from '@cepseudo/shared';
|
|
3
|
+
import type { AssetsManager } from '@cepseudo/assets';
|
|
4
|
+
/**
|
|
5
|
+
* Global assets handler that provides access to ALL assets across ALL asset managers.
|
|
6
|
+
*
|
|
7
|
+
* This handler aggregates assets from all registered AssetsManager instances
|
|
8
|
+
* without duplicating their logic or hardcoding component names.
|
|
9
|
+
*
|
|
10
|
+
* @class GlobalAssetsHandler
|
|
11
|
+
* @extends {Handler}
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const globalHandler = new GlobalAssetsHandler()
|
|
16
|
+
* globalHandler.setAssetsManagers([gltfManager, pointcloudManager])
|
|
17
|
+
*
|
|
18
|
+
* // Usage:
|
|
19
|
+
* // GET /assets/all - Returns all assets from all managers
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare class GlobalAssetsHandler extends Handler {
|
|
23
|
+
private assetsManagers;
|
|
24
|
+
/**
|
|
25
|
+
* Inject AssetsManager dependencies (called by engine)
|
|
26
|
+
*/
|
|
27
|
+
setAssetsManagers(assetsManagers: AssetsManager[]): void;
|
|
28
|
+
/**
|
|
29
|
+
* Component configuration for the global assets handler
|
|
30
|
+
*/
|
|
31
|
+
getConfiguration(): ComponentConfiguration;
|
|
32
|
+
/**
|
|
33
|
+
* Get all assets from all registered asset managers.
|
|
34
|
+
*
|
|
35
|
+
* This method delegates to each AssetsManager's getAllAssets() method
|
|
36
|
+
* and aggregates the results with proper endpoint URLs.
|
|
37
|
+
*
|
|
38
|
+
* @returns {Promise<DataResponse>} JSON response with all assets
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* // GET /assets/all
|
|
43
|
+
* // Returns: {
|
|
44
|
+
* // total: 5,
|
|
45
|
+
* // assets: [
|
|
46
|
+
* // { id: 1, component: "gltf", url: "/gltf/1", ... },
|
|
47
|
+
* // { id: 2, component: "pointcloud", url: "/pointcloud/2", ... }
|
|
48
|
+
* // ]
|
|
49
|
+
* // }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
getAllAssets(): Promise<DataResponse>;
|
|
53
|
+
/**
|
|
54
|
+
* HTTP endpoints for global assets
|
|
55
|
+
*/
|
|
56
|
+
getEndpoints(): Array<{
|
|
57
|
+
method: HttpMethod;
|
|
58
|
+
path: string;
|
|
59
|
+
handler: (req: TypedRequest) => Promise<DataResponse>;
|
|
60
|
+
responseType?: string;
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=global_assets_handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global_assets_handler.d.ts","sourceRoot":"","sources":["../src/global_assets_handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,mBAAoB,SAAQ,OAAO;IAC5C,OAAO,CAAC,cAAc,CAAsB;IAE5C;;OAEG;IACH,iBAAiB,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI;IAIxD;;OAEG;IACH,gBAAgB,IAAI,sBAAsB;IAS1C;;;;;;;;;;;;;;;;;;;OAmBG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;IAuD3C;;OAEG;IACM,YAAY,IAAI,KAAK,CAAC;QAC3B,MAAM,EAAE,UAAU,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;QACrD,YAAY,CAAC,EAAE,MAAM,CAAA;KACxB,CAAC;CAUL"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { Handler } from '@cepseudo/components';
|
|
2
|
+
/**
|
|
3
|
+
* Global assets handler that provides access to ALL assets across ALL asset managers.
|
|
4
|
+
*
|
|
5
|
+
* This handler aggregates assets from all registered AssetsManager instances
|
|
6
|
+
* without duplicating their logic or hardcoding component names.
|
|
7
|
+
*
|
|
8
|
+
* @class GlobalAssetsHandler
|
|
9
|
+
* @extends {Handler}
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const globalHandler = new GlobalAssetsHandler()
|
|
14
|
+
* globalHandler.setAssetsManagers([gltfManager, pointcloudManager])
|
|
15
|
+
*
|
|
16
|
+
* // Usage:
|
|
17
|
+
* // GET /assets/all - Returns all assets from all managers
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export class GlobalAssetsHandler extends Handler {
|
|
21
|
+
constructor() {
|
|
22
|
+
super(...arguments);
|
|
23
|
+
this.assetsManagers = [];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Inject AssetsManager dependencies (called by engine)
|
|
27
|
+
*/
|
|
28
|
+
setAssetsManagers(assetsManagers) {
|
|
29
|
+
this.assetsManagers = assetsManagers;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Component configuration for the global assets handler
|
|
33
|
+
*/
|
|
34
|
+
getConfiguration() {
|
|
35
|
+
return {
|
|
36
|
+
name: 'global_assets',
|
|
37
|
+
description: 'Global handler for all assets across all managers',
|
|
38
|
+
contentType: 'application/json',
|
|
39
|
+
tags: ['assets', 'global', 'all']
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get all assets from all registered asset managers.
|
|
44
|
+
*
|
|
45
|
+
* This method delegates to each AssetsManager's getAllAssets() method
|
|
46
|
+
* and aggregates the results with proper endpoint URLs.
|
|
47
|
+
*
|
|
48
|
+
* @returns {Promise<DataResponse>} JSON response with all assets
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* // GET /assets/all
|
|
53
|
+
* // Returns: {
|
|
54
|
+
* // total: 5,
|
|
55
|
+
* // assets: [
|
|
56
|
+
* // { id: 1, component: "gltf", url: "/gltf/1", ... },
|
|
57
|
+
* // { id: 2, component: "pointcloud", url: "/pointcloud/2", ... }
|
|
58
|
+
* // ]
|
|
59
|
+
* // }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
async getAllAssets() {
|
|
63
|
+
try {
|
|
64
|
+
const allAssets = [];
|
|
65
|
+
// Iterate through all registered AssetsManager instances
|
|
66
|
+
for (const manager of this.assetsManagers) {
|
|
67
|
+
try {
|
|
68
|
+
const assets = await manager.getAllAssets();
|
|
69
|
+
const config = manager.getConfiguration();
|
|
70
|
+
// Transform assets to include component info and URLs
|
|
71
|
+
const transformedAssets = assets.map(asset => ({
|
|
72
|
+
id: asset.id,
|
|
73
|
+
component: config.name,
|
|
74
|
+
date: asset.date,
|
|
75
|
+
contentType: asset.contentType,
|
|
76
|
+
description: asset.description,
|
|
77
|
+
source: asset.source,
|
|
78
|
+
owner_id: asset.owner_id,
|
|
79
|
+
filename: asset.filename,
|
|
80
|
+
// Generate URLs using the manager's configuration
|
|
81
|
+
url: `/${config.endpoint}/${asset.id}`,
|
|
82
|
+
download_url: `/${config.endpoint}/${asset.id}/download`
|
|
83
|
+
}));
|
|
84
|
+
allAssets.push(...transformedAssets);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
// Skip this manager if it fails, don't break the whole operation
|
|
88
|
+
console.warn(`Failed to get assets from manager ${manager.getConfiguration().name}:`, error);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Sort by date (newest first)
|
|
93
|
+
allAssets.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
|
|
94
|
+
return {
|
|
95
|
+
status: 200,
|
|
96
|
+
content: JSON.stringify({
|
|
97
|
+
total: allAssets.length,
|
|
98
|
+
assets: allAssets
|
|
99
|
+
}),
|
|
100
|
+
headers: { 'Content-Type': 'application/json' }
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
return {
|
|
105
|
+
status: 500,
|
|
106
|
+
content: JSON.stringify({
|
|
107
|
+
error: error instanceof Error ? error.message : 'Unknown error'
|
|
108
|
+
}),
|
|
109
|
+
headers: { 'Content-Type': 'application/json' }
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* HTTP endpoints for global assets
|
|
115
|
+
*/
|
|
116
|
+
getEndpoints() {
|
|
117
|
+
return [
|
|
118
|
+
{
|
|
119
|
+
method: 'get',
|
|
120
|
+
path: '/assets/all',
|
|
121
|
+
handler: this.getAllAssets.bind(this),
|
|
122
|
+
responseType: 'application/json'
|
|
123
|
+
}
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=global_assets_handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global_assets_handler.js","sourceRoot":"","sources":["../src/global_assets_handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { DigitalTwinEngine } from './digital_twin_engine.js';
|
|
2
|
+
export interface ShutdownOptions {
|
|
3
|
+
/** Timeout before forcing exit (default: 30000ms) */
|
|
4
|
+
timeout?: number;
|
|
5
|
+
/** Signals to handle (default: ['SIGTERM', 'SIGINT']) */
|
|
6
|
+
signals?: NodeJS.Signals[];
|
|
7
|
+
/** Custom cleanup function to run before stopping engine */
|
|
8
|
+
onShutdown?: () => Promise<void>;
|
|
9
|
+
/** Custom logger function (default: console.log) */
|
|
10
|
+
logger?: (msg: string) => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Setup graceful shutdown handlers for a DigitalTwinEngine
|
|
14
|
+
*
|
|
15
|
+
* This helper registers signal handlers for graceful shutdown in production.
|
|
16
|
+
* It handles SIGTERM (from Kubernetes/Docker) and SIGINT (Ctrl+C) by default.
|
|
17
|
+
*
|
|
18
|
+
* @param engine The DigitalTwinEngine instance to shut down
|
|
19
|
+
* @param options Configuration options
|
|
20
|
+
* @returns Cleanup function to remove signal handlers
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* import { DigitalTwinEngine, setupGracefulShutdown } from 'digitaltwin-core'
|
|
25
|
+
*
|
|
26
|
+
* const engine = new DigitalTwinEngine({ ... })
|
|
27
|
+
*
|
|
28
|
+
* // Setup graceful shutdown before starting
|
|
29
|
+
* const cleanup = setupGracefulShutdown(engine, {
|
|
30
|
+
* timeout: 30000,
|
|
31
|
+
* signals: ['SIGTERM', 'SIGINT', 'SIGQUIT'],
|
|
32
|
+
* onShutdown: async () => {
|
|
33
|
+
* console.log('Performing custom cleanup...')
|
|
34
|
+
* }
|
|
35
|
+
* })
|
|
36
|
+
*
|
|
37
|
+
* await engine.start()
|
|
38
|
+
*
|
|
39
|
+
* // Later, if you need to remove handlers:
|
|
40
|
+
* // cleanup()
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function setupGracefulShutdown(engine: DigitalTwinEngine, options?: ShutdownOptions): () => void;
|
|
44
|
+
//# sourceMappingURL=graceful_shutdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graceful_shutdown.d.ts","sourceRoot":"","sources":["../src/graceful_shutdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,WAAW,eAAe;IAC5B,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;IAC1B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,oDAAoD;IACpD,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,IAAI,CAuD1G"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup graceful shutdown handlers for a DigitalTwinEngine
|
|
3
|
+
*
|
|
4
|
+
* This helper registers signal handlers for graceful shutdown in production.
|
|
5
|
+
* It handles SIGTERM (from Kubernetes/Docker) and SIGINT (Ctrl+C) by default.
|
|
6
|
+
*
|
|
7
|
+
* @param engine The DigitalTwinEngine instance to shut down
|
|
8
|
+
* @param options Configuration options
|
|
9
|
+
* @returns Cleanup function to remove signal handlers
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { DigitalTwinEngine, setupGracefulShutdown } from 'digitaltwin-core'
|
|
14
|
+
*
|
|
15
|
+
* const engine = new DigitalTwinEngine({ ... })
|
|
16
|
+
*
|
|
17
|
+
* // Setup graceful shutdown before starting
|
|
18
|
+
* const cleanup = setupGracefulShutdown(engine, {
|
|
19
|
+
* timeout: 30000,
|
|
20
|
+
* signals: ['SIGTERM', 'SIGINT', 'SIGQUIT'],
|
|
21
|
+
* onShutdown: async () => {
|
|
22
|
+
* console.log('Performing custom cleanup...')
|
|
23
|
+
* }
|
|
24
|
+
* })
|
|
25
|
+
*
|
|
26
|
+
* await engine.start()
|
|
27
|
+
*
|
|
28
|
+
* // Later, if you need to remove handlers:
|
|
29
|
+
* // cleanup()
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function setupGracefulShutdown(engine, options = {}) {
|
|
33
|
+
const { timeout = 30000, signals = ['SIGTERM', 'SIGINT'], onShutdown, logger = console.log } = options;
|
|
34
|
+
let isShuttingDown = false;
|
|
35
|
+
const shutdown = async (signal) => {
|
|
36
|
+
if (isShuttingDown) {
|
|
37
|
+
logger(`[Shutdown] Already shutting down, ignoring ${signal}`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
isShuttingDown = true;
|
|
41
|
+
logger(`[Shutdown] Received ${signal}, initiating graceful shutdown...`);
|
|
42
|
+
// Set global timeout for force exit
|
|
43
|
+
const forceExitTimer = setTimeout(() => {
|
|
44
|
+
logger('[Shutdown] Timeout exceeded, forcing exit');
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}, timeout);
|
|
47
|
+
forceExitTimer.unref();
|
|
48
|
+
try {
|
|
49
|
+
// Run custom shutdown logic first
|
|
50
|
+
if (onShutdown) {
|
|
51
|
+
await onShutdown();
|
|
52
|
+
}
|
|
53
|
+
// Stop the engine
|
|
54
|
+
await engine.stop();
|
|
55
|
+
clearTimeout(forceExitTimer);
|
|
56
|
+
logger('[Shutdown] Graceful shutdown completed');
|
|
57
|
+
process.exit(0);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
logger(`[Shutdown] Error during shutdown: ${error instanceof Error ? error.message : String(error)}`);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
// Register signal handlers
|
|
65
|
+
const handlers = new Map();
|
|
66
|
+
signals.forEach(signal => {
|
|
67
|
+
const handler = () => shutdown(signal);
|
|
68
|
+
handlers.set(signal, handler);
|
|
69
|
+
process.on(signal, handler);
|
|
70
|
+
});
|
|
71
|
+
// Return cleanup function
|
|
72
|
+
return () => {
|
|
73
|
+
handlers.forEach((handler, signal) => {
|
|
74
|
+
process.removeListener(signal, handler);
|
|
75
|
+
});
|
|
76
|
+
handlers.clear();
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=graceful_shutdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graceful_shutdown.js","sourceRoot":"","sources":["../src/graceful_shutdown.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAyB,EAAE,UAA2B,EAAE;IAC1F,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;IAEtG,IAAI,cAAc,GAAG,KAAK,CAAA;IAE1B,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;QACtC,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,CAAC,8CAA8C,MAAM,EAAE,CAAC,CAAA;YAC9D,OAAM;QACV,CAAC;QAED,cAAc,GAAG,IAAI,CAAA;QACrB,MAAM,CAAC,uBAAuB,MAAM,mCAAmC,CAAC,CAAA;QAExE,oCAAoC;QACpC,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,MAAM,CAAC,2CAA2C,CAAC,CAAA;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC,EAAE,OAAO,CAAC,CAAA;QACX,cAAc,CAAC,KAAK,EAAE,CAAA;QAEtB,IAAI,CAAC;YACD,kCAAkC;YAClC,IAAI,UAAU,EAAE,CAAC;gBACb,MAAM,UAAU,EAAE,CAAA;YACtB,CAAC;YAED,kBAAkB;YAClB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAEnB,YAAY,CAAC,cAAc,CAAC,CAAA;YAC5B,MAAM,CAAC,wCAAwC,CAAC,CAAA;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;IACL,CAAC,CAAA;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAA;IAEtD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACrB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACtC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC7B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,0BAA0B;IAC1B,OAAO,GAAG,EAAE;QACR,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QACF,QAAQ,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC,CAAA;AACL,CAAC"}
|