glasswork 0.1.1 → 0.2.1
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/authorization/ability-middleware.d.ts +61 -0
- package/dist/authorization/ability-middleware.d.ts.map +1 -0
- package/dist/authorization/ability-middleware.js +74 -0
- package/dist/authorization/ability-middleware.js.map +1 -0
- package/dist/authorization/index.d.ts +46 -0
- package/dist/authorization/index.d.ts.map +1 -0
- package/dist/authorization/index.js +46 -0
- package/dist/authorization/index.js.map +1 -0
- package/dist/authorization/route-helpers.d.ts +106 -0
- package/dist/authorization/route-helpers.d.ts.map +1 -0
- package/dist/authorization/route-helpers.js +136 -0
- package/dist/authorization/route-helpers.js.map +1 -0
- package/dist/authorization/service-proxy.d.ts +59 -0
- package/dist/authorization/service-proxy.d.ts.map +1 -0
- package/dist/authorization/service-proxy.js +110 -0
- package/dist/authorization/service-proxy.js.map +1 -0
- package/dist/authorization/types.d.ts +58 -0
- package/dist/authorization/types.d.ts.map +1 -0
- package/dist/authorization/types.js +7 -0
- package/dist/authorization/types.js.map +1 -0
- package/dist/config/config-service.d.ts +101 -0
- package/dist/config/config-service.d.ts.map +1 -0
- package/dist/config/config-service.js +164 -0
- package/dist/config/config-service.js.map +1 -0
- package/dist/config/helpers.d.ts +101 -0
- package/dist/config/helpers.d.ts.map +1 -0
- package/dist/config/helpers.js +122 -0
- package/dist/config/helpers.js.map +1 -0
- package/dist/config/index.d.ts +39 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +41 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/providers.d.ts +163 -0
- package/dist/config/providers.d.ts.map +1 -0
- package/dist/config/providers.js +188 -0
- package/dist/config/providers.js.map +1 -0
- package/dist/config/types.d.ts +98 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +7 -0
- package/dist/config/types.js.map +1 -0
- package/dist/core/bootstrap.js +9 -3
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/types.d.ts +2 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/hooks/authorization-hook.d.ts +100 -0
- package/dist/hooks/authorization-hook.d.ts.map +1 -0
- package/dist/hooks/authorization-hook.js +93 -0
- package/dist/hooks/authorization-hook.js.map +1 -0
- package/dist/hooks/index.d.ts +54 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +55 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/service-hooks.d.ts +82 -0
- package/dist/hooks/service-hooks.d.ts.map +1 -0
- package/dist/hooks/service-hooks.js +158 -0
- package/dist/hooks/service-hooks.js.map +1 -0
- package/dist/hooks/types.d.ts +151 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/http/errors.d.ts +39 -0
- package/dist/http/errors.d.ts.map +1 -1
- package/dist/http/errors.js +78 -0
- package/dist/http/errors.js.map +1 -1
- package/dist/http/route-helpers.d.ts +39 -13
- package/dist/http/route-helpers.d.ts.map +1 -1
- package/dist/http/route-helpers.js +45 -2
- package/dist/http/route-helpers.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +2 -16
- package/dist/middleware/rate-limit.js.map +1 -1
- package/dist/openapi/openapi.d.ts +1 -1
- package/dist/openapi/openapi.d.ts.map +1 -1
- package/dist/openapi/openapi.js +21 -3
- package/dist/openapi/openapi.js.map +1 -1
- package/package.json +22 -1
- package/dist/bootstrap.d.ts +0 -55
- package/dist/bootstrap.d.ts.map +0 -1
- package/dist/bootstrap.js +0 -359
- package/dist/bootstrap.js.map +0 -1
- package/dist/environment.d.ts +0 -21
- package/dist/environment.d.ts.map +0 -1
- package/dist/environment.js +0 -29
- package/dist/environment.js.map +0 -1
- package/dist/error-handler.d.ts +0 -33
- package/dist/error-handler.d.ts.map +0 -1
- package/dist/error-handler.js +0 -53
- package/dist/error-handler.js.map +0 -1
- package/dist/errors.d.ts +0 -36
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -65
- package/dist/errors.js.map +0 -1
- package/dist/get-client-ip.d.ts +0 -24
- package/dist/get-client-ip.d.ts.map +0 -1
- package/dist/get-client-ip.js +0 -49
- package/dist/get-client-ip.js.map +0 -1
- package/dist/logger.d.ts +0 -37
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -52
- package/dist/logger.js.map +0 -1
- package/dist/module.d.ts +0 -21
- package/dist/module.d.ts.map +0 -1
- package/dist/module.js +0 -85
- package/dist/module.js.map +0 -1
- package/dist/omit.d.ts +0 -20
- package/dist/omit.d.ts.map +0 -1
- package/dist/omit.js +0 -28
- package/dist/omit.js.map +0 -1
- package/dist/openapi-defaults.d.ts +0 -11
- package/dist/openapi-defaults.d.ts.map +0 -1
- package/dist/openapi-defaults.js +0 -127
- package/dist/openapi-defaults.js.map +0 -1
- package/dist/openapi-hooks.d.ts +0 -14
- package/dist/openapi-hooks.d.ts.map +0 -1
- package/dist/openapi-hooks.js +0 -80
- package/dist/openapi-hooks.js.map +0 -1
- package/dist/openapi.d.ts +0 -24
- package/dist/openapi.d.ts.map +0 -1
- package/dist/openapi.js +0 -106
- package/dist/openapi.js.map +0 -1
- package/dist/pagination.d.ts +0 -48
- package/dist/pagination.d.ts.map +0 -1
- package/dist/pagination.js +0 -43
- package/dist/pagination.js.map +0 -1
- package/dist/pick.d.ts +0 -20
- package/dist/pick.d.ts.map +0 -1
- package/dist/pick.js +0 -28
- package/dist/pick.js.map +0 -1
- package/dist/rate-limit.d.ts +0 -7
- package/dist/rate-limit.d.ts.map +0 -1
- package/dist/rate-limit.js +0 -180
- package/dist/rate-limit.js.map +0 -1
- package/dist/route-helpers.d.ts +0 -172
- package/dist/route-helpers.d.ts.map +0 -1
- package/dist/route-helpers.js +0 -249
- package/dist/route-helpers.js.map +0 -1
- package/dist/serialize-dates.d.ts +0 -27
- package/dist/serialize-dates.d.ts.map +0 -1
- package/dist/serialize-dates.js +0 -39
- package/dist/serialize-dates.js.map +0 -1
- package/dist/testing.d.ts +0 -87
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -94
- package/dist/testing.js.map +0 -1
- package/dist/types.d.ts +0 -273
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -9
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -31
- package/dist/utils.js.map +0 -1
- /package/dist/{types.js → hooks/types.js} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getClientIp } from '../utils/get-client-ip.js';
|
|
1
2
|
import { createLogger } from '../utils/logger.js';
|
|
2
3
|
const logger = createLogger('Glasswork:RateLimit', true);
|
|
3
4
|
/**
|
|
@@ -113,21 +114,6 @@ class DynamoDBStore {
|
|
|
113
114
|
}
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
|
-
/**
|
|
117
|
-
* Extract client IP from request context
|
|
118
|
-
*/
|
|
119
|
-
function getClientIdentifier(context) {
|
|
120
|
-
// Check various headers for client IP
|
|
121
|
-
const forwarded = context.req.header('x-forwarded-for');
|
|
122
|
-
if (forwarded) {
|
|
123
|
-
return forwarded.split(',')[0].trim();
|
|
124
|
-
}
|
|
125
|
-
const realIp = context.req.header('x-real-ip');
|
|
126
|
-
if (realIp) {
|
|
127
|
-
return realIp;
|
|
128
|
-
}
|
|
129
|
-
return 'unknown';
|
|
130
|
-
}
|
|
131
117
|
/**
|
|
132
118
|
* Create rate limiting middleware
|
|
133
119
|
*/
|
|
@@ -142,7 +128,7 @@ export function createRateLimitMiddleware(options) {
|
|
|
142
128
|
store.startCleanup();
|
|
143
129
|
}
|
|
144
130
|
return async (context, next) => {
|
|
145
|
-
const clientId =
|
|
131
|
+
const clientId = getClientIp(context);
|
|
146
132
|
const now = Date.now();
|
|
147
133
|
const windowEnd = now + windowMs;
|
|
148
134
|
const setHeaders = (remaining, resetMs) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/middleware/rate-limit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/middleware/rate-limit.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export interface ConfigureOpenAPIOptions {
|
|
|
12
12
|
*
|
|
13
13
|
* Behavior by environment:
|
|
14
14
|
* - development: Serve specs and UI at /api and /api/openapi.json
|
|
15
|
-
* - production:
|
|
15
|
+
* - production: No serving by default
|
|
16
16
|
* - test: Disabled by default
|
|
17
17
|
*
|
|
18
18
|
* This function automatically sets up response hooks based on enabled features
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAW1B,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,IAAI,CAAC;IACV,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAW1B,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,IAAI,CAAC;IACV,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CA2EvE"}
|
package/dist/openapi/openapi.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { writeFile } from 'node:fs/promises';
|
|
2
2
|
import { swaggerUI } from '@hono/swagger-ui';
|
|
3
3
|
import { openAPISpecs } from 'hono-openapi';
|
|
4
|
-
import { setGlobalResponseHooks } from '../http/route-helpers.js';
|
|
4
|
+
import { setGlobalResponseHooks, setGlobalSecuritySchemes } from '../http/route-helpers.js';
|
|
5
5
|
import { deepMerge } from '../utils/deep-merge.js';
|
|
6
6
|
import { createLogger } from '../utils/logger.js';
|
|
7
7
|
import { defaultOpenAPIComponents } from './defaults.js';
|
|
@@ -11,7 +11,7 @@ import { createCorsHeadersHook, createPaginationHeadersHook, createRateLimitHead
|
|
|
11
11
|
*
|
|
12
12
|
* Behavior by environment:
|
|
13
13
|
* - development: Serve specs and UI at /api and /api/openapi.json
|
|
14
|
-
* - production:
|
|
14
|
+
* - production: No serving by default
|
|
15
15
|
* - test: Disabled by default
|
|
16
16
|
*
|
|
17
17
|
* This function automatically sets up response hooks based on enabled features
|
|
@@ -45,6 +45,13 @@ export function configureOpenAPI(options) {
|
|
|
45
45
|
});
|
|
46
46
|
// Merge application documentation with filtered Glasswork defaults
|
|
47
47
|
const mergedDocumentation = deepMerge({ components: filteredComponents }, openapi.documentation || {});
|
|
48
|
+
// Extract security scheme names from the merged documentation and make them available globally
|
|
49
|
+
// This allows route definitions to reference the actual security schemes defined in the app
|
|
50
|
+
const securitySchemes = extractSecuritySchemeNames(mergedDocumentation);
|
|
51
|
+
setGlobalSecuritySchemes(securitySchemes);
|
|
52
|
+
if (securitySchemes.length > 0) {
|
|
53
|
+
logger.info(`Security schemes: ${securitySchemes.join(', ')}`);
|
|
54
|
+
}
|
|
48
55
|
// Serve OpenAPI spec endpoint (development only by default)
|
|
49
56
|
if (shouldServeSpecs) {
|
|
50
57
|
app.get('/api/openapi.json', openAPISpecs(app, { documentation: mergedDocumentation }));
|
|
@@ -53,7 +60,7 @@ export function configureOpenAPI(options) {
|
|
|
53
60
|
if (shouldServeUI) {
|
|
54
61
|
app.get('/api', swaggerUI({ url: '/api/openapi.json' }));
|
|
55
62
|
}
|
|
56
|
-
// Write OpenAPI spec to file (
|
|
63
|
+
// Write OpenAPI spec to file (optional)
|
|
57
64
|
if (openapi.writeToFile) {
|
|
58
65
|
const filePath = openapi.writeToFile;
|
|
59
66
|
// Generate spec and write to file
|
|
@@ -72,6 +79,17 @@ export function configureOpenAPI(options) {
|
|
|
72
79
|
}, 1000); // Wait for routes to be registered
|
|
73
80
|
}
|
|
74
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Extract security scheme names from OpenAPI documentation.
|
|
84
|
+
* Returns an array of scheme names that can be used in route security definitions.
|
|
85
|
+
*/
|
|
86
|
+
function extractSecuritySchemeNames(documentation) {
|
|
87
|
+
const securitySchemes = documentation.components?.securitySchemes;
|
|
88
|
+
if (!securitySchemes || typeof securitySchemes !== 'object') {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
return Object.keys(securitySchemes);
|
|
92
|
+
}
|
|
75
93
|
/**
|
|
76
94
|
* Filter component headers based on enabled features.
|
|
77
95
|
* This removes header definitions from the components schema that won't be used.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/openapi/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQ5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/openapi/openapi.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "glasswork",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "A transparent, Lambda-optimized web framework for building OpenAPI-compliant REST APIs.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -58,17 +58,38 @@
|
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"@aws-sdk/client-dynamodb": "^3.902.0",
|
|
61
|
+
"@aws-sdk/client-ssm": "^3.902.0",
|
|
61
62
|
"@aws-sdk/lib-dynamodb": "^3.902.0",
|
|
62
63
|
"@hono/swagger-ui": "^0.5.0",
|
|
63
64
|
"awilix": "^12.0.0",
|
|
65
|
+
"dotenv": "^16.0.0",
|
|
64
66
|
"hono": "^4.9.0",
|
|
65
67
|
"hono-openapi": "^0.4.0",
|
|
66
68
|
"valibot": "^1.0.0"
|
|
67
69
|
},
|
|
70
|
+
"peerDependenciesMeta": {
|
|
71
|
+
"@aws-sdk/client-dynamodb": {
|
|
72
|
+
"optional": true
|
|
73
|
+
},
|
|
74
|
+
"@aws-sdk/client-ssm": {
|
|
75
|
+
"optional": true
|
|
76
|
+
},
|
|
77
|
+
"@aws-sdk/lib-dynamodb": {
|
|
78
|
+
"optional": true
|
|
79
|
+
},
|
|
80
|
+
"@hono/swagger-ui": {
|
|
81
|
+
"optional": true
|
|
82
|
+
},
|
|
83
|
+
"dotenv": {
|
|
84
|
+
"optional": true
|
|
85
|
+
}
|
|
86
|
+
},
|
|
68
87
|
"devDependencies": {
|
|
88
|
+
"@aws-sdk/client-ssm": "^3.901.0",
|
|
69
89
|
"@biomejs/biome": "^2.2.5",
|
|
70
90
|
"@types/node": "^22.18.8",
|
|
71
91
|
"@vitest/coverage-v8": "^3.2.4",
|
|
92
|
+
"dotenv": "^17.2.3",
|
|
72
93
|
"typescript": "^5.9.3",
|
|
73
94
|
"vitest": "^3.2.4"
|
|
74
95
|
},
|
package/dist/bootstrap.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { AwilixContainer } from 'awilix';
|
|
2
|
-
import type { BootstrapOptions, BootstrapResult, ModuleConfig } from './types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Bootstrap the application with modules.
|
|
5
|
-
*
|
|
6
|
-
* This function:
|
|
7
|
-
* 1. Creates an Awilix container (PROXY mode for Lambda compatibility)
|
|
8
|
-
* 2. Registers all module providers
|
|
9
|
-
* 3. Creates a Hono app
|
|
10
|
-
* 4. Applies rate limiting middleware (if configured)
|
|
11
|
-
* 5. Configures OpenAPI (environment-aware)
|
|
12
|
-
* 6. Mounts module routes
|
|
13
|
-
* 7. Returns both app and container (container remains accessible!)
|
|
14
|
-
*
|
|
15
|
-
* Features:
|
|
16
|
-
* - Automatic environment detection (development/production/test)
|
|
17
|
-
* - OpenAPI generation and serving (environment-aware)
|
|
18
|
-
* - Rate limiting with pluggable storage (memory/DynamoDB)
|
|
19
|
-
* - Module system with dependency injection
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```typescript
|
|
23
|
-
* const { app, container } = bootstrap(AppModule, {
|
|
24
|
-
* openapi: {
|
|
25
|
-
* enabled: true,
|
|
26
|
-
* documentation: { ... }
|
|
27
|
-
* },
|
|
28
|
-
* rateLimit: {
|
|
29
|
-
* enabled: true,
|
|
30
|
-
* storage: 'memory'
|
|
31
|
-
* }
|
|
32
|
-
* });
|
|
33
|
-
*
|
|
34
|
-
* // Container is still accessible for advanced use
|
|
35
|
-
* console.log(container.cradle.authService);
|
|
36
|
-
* container.register({ customService: asClass(CustomService) });
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
export declare function bootstrap(rootModule: ModuleConfig, options?: BootstrapOptions): BootstrapResult;
|
|
40
|
-
/**
|
|
41
|
-
* Collect all modules (flatten imports recursively)
|
|
42
|
-
* @internal - exported for testing utilities
|
|
43
|
-
*/
|
|
44
|
-
export declare function collectModules(rootModule: ModuleConfig): ModuleConfig[];
|
|
45
|
-
/**
|
|
46
|
-
* Validate no circular dependencies between modules
|
|
47
|
-
* @internal - exported for testing utilities
|
|
48
|
-
*/
|
|
49
|
-
export declare function validateNoCycles(modules: ModuleConfig[]): void;
|
|
50
|
-
/**
|
|
51
|
-
* Register module providers with Awilix container
|
|
52
|
-
* @internal - exported for testing utilities
|
|
53
|
-
*/
|
|
54
|
-
export declare function registerModuleProviders(module: ModuleConfig, container: AwilixContainer, debug?: boolean): void;
|
|
55
|
-
//# sourceMappingURL=bootstrap.d.ts.map
|
package/dist/bootstrap.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAY9C,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAKf,YAAY,EAKb,MAAM,YAAY,CAAC;AAwBpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,SAAS,CACvB,UAAU,EAAE,YAAY,EACxB,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAgEjB;AAsKD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,YAAY,GAAG,YAAY,EAAE,CAuBvE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CA2C9D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,eAAe,EAC1B,KAAK,UAAQ,GACZ,IAAI,CAQN"}
|
package/dist/bootstrap.js
DELETED
|
@@ -1,359 +0,0 @@
|
|
|
1
|
-
import { asClass, asValue, createContainer, InjectionMode } from 'awilix';
|
|
2
|
-
import { Hono } from 'hono';
|
|
3
|
-
import { cors } from 'hono/cors';
|
|
4
|
-
import { logger as honoLogger } from 'hono/logger';
|
|
5
|
-
import { requestId } from 'hono/request-id';
|
|
6
|
-
import { secureHeaders } from 'hono/secure-headers';
|
|
7
|
-
import { isLambda } from './environment.js';
|
|
8
|
-
import { defaultErrorHandler } from './error-handler.js';
|
|
9
|
-
import { createPlainLogger } from './logger.js';
|
|
10
|
-
import { configureOpenAPI } from './openapi.js';
|
|
11
|
-
import { createRateLimitMiddleware } from './rate-limit.js';
|
|
12
|
-
/**
|
|
13
|
-
* Detect environment from NODE_ENV or AWS Lambda context
|
|
14
|
-
*/
|
|
15
|
-
function detectEnvironment() {
|
|
16
|
-
const nodeEnv = process.env.NODE_ENV;
|
|
17
|
-
if (nodeEnv === 'production') {
|
|
18
|
-
return 'production';
|
|
19
|
-
}
|
|
20
|
-
if (nodeEnv === 'test') {
|
|
21
|
-
return 'test';
|
|
22
|
-
}
|
|
23
|
-
// Check if running in AWS Lambda
|
|
24
|
-
if (process.env.AWS_LAMBDA_FUNCTION_NAME || process.env.LAMBDA_TASK_ROOT) {
|
|
25
|
-
return 'production';
|
|
26
|
-
}
|
|
27
|
-
return 'development';
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Bootstrap the application with modules.
|
|
31
|
-
*
|
|
32
|
-
* This function:
|
|
33
|
-
* 1. Creates an Awilix container (PROXY mode for Lambda compatibility)
|
|
34
|
-
* 2. Registers all module providers
|
|
35
|
-
* 3. Creates a Hono app
|
|
36
|
-
* 4. Applies rate limiting middleware (if configured)
|
|
37
|
-
* 5. Configures OpenAPI (environment-aware)
|
|
38
|
-
* 6. Mounts module routes
|
|
39
|
-
* 7. Returns both app and container (container remains accessible!)
|
|
40
|
-
*
|
|
41
|
-
* Features:
|
|
42
|
-
* - Automatic environment detection (development/production/test)
|
|
43
|
-
* - OpenAPI generation and serving (environment-aware)
|
|
44
|
-
* - Rate limiting with pluggable storage (memory/DynamoDB)
|
|
45
|
-
* - Module system with dependency injection
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* ```typescript
|
|
49
|
-
* const { app, container } = bootstrap(AppModule, {
|
|
50
|
-
* openapi: {
|
|
51
|
-
* enabled: true,
|
|
52
|
-
* documentation: { ... }
|
|
53
|
-
* },
|
|
54
|
-
* rateLimit: {
|
|
55
|
-
* enabled: true,
|
|
56
|
-
* storage: 'memory'
|
|
57
|
-
* }
|
|
58
|
-
* });
|
|
59
|
-
*
|
|
60
|
-
* // Container is still accessible for advanced use
|
|
61
|
-
* console.log(container.cradle.authService);
|
|
62
|
-
* container.register({ customService: asClass(CustomService) });
|
|
63
|
-
* ```
|
|
64
|
-
*/
|
|
65
|
-
export function bootstrap(rootModule, options = {}) {
|
|
66
|
-
const { apiBasePath = '/api', debug = false, environment = detectEnvironment(), errorHandler = defaultErrorHandler, openapi, rateLimit, middleware, logger, } = options;
|
|
67
|
-
// Create Awilix container with PROXY mode (Lambda-compatible)
|
|
68
|
-
const container = createContainer({
|
|
69
|
-
injectionMode: InjectionMode.PROXY,
|
|
70
|
-
strict: true,
|
|
71
|
-
});
|
|
72
|
-
if (debug) {
|
|
73
|
-
console.log('[Glasswork] Bootstrapping application...');
|
|
74
|
-
}
|
|
75
|
-
// Collect all modules (flatten imports)
|
|
76
|
-
const allModules = collectModules(rootModule);
|
|
77
|
-
if (debug) {
|
|
78
|
-
console.log(`[Glasswork] Found ${allModules.length} modules:`, allModules.map((m) => m.name).join(', '));
|
|
79
|
-
}
|
|
80
|
-
// Validate no circular dependencies
|
|
81
|
-
validateNoCycles(allModules);
|
|
82
|
-
// Register all providers
|
|
83
|
-
for (const module of allModules) {
|
|
84
|
-
if (debug) {
|
|
85
|
-
console.log(`[Glasswork] Registering module: ${module.name}`);
|
|
86
|
-
}
|
|
87
|
-
registerModuleProviders(module, container, debug);
|
|
88
|
-
}
|
|
89
|
-
// Create Hono app and apply middleware
|
|
90
|
-
const app = createApp({
|
|
91
|
-
environment,
|
|
92
|
-
errorHandler,
|
|
93
|
-
openapi,
|
|
94
|
-
rateLimit,
|
|
95
|
-
middleware,
|
|
96
|
-
logger,
|
|
97
|
-
debug,
|
|
98
|
-
});
|
|
99
|
-
// Mount module routes
|
|
100
|
-
mountModuleRoutes({ app, modules: allModules, container, apiBasePath, debug });
|
|
101
|
-
if (debug) {
|
|
102
|
-
console.log('[Glasswork] Bootstrap complete');
|
|
103
|
-
console.log(`[Glasswork] Environment: ${environment}`);
|
|
104
|
-
console.log(`[Glasswork] Registered ${Object.keys(container.cradle).length} services`);
|
|
105
|
-
}
|
|
106
|
-
return { app, container };
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Create Hono app and apply middleware
|
|
110
|
-
*/
|
|
111
|
-
function createApp(options) {
|
|
112
|
-
const app = new Hono();
|
|
113
|
-
applyErrorHandler(app, options);
|
|
114
|
-
applySecurityMiddleware(app, options);
|
|
115
|
-
applyLoggingMiddleware(app, options);
|
|
116
|
-
applyRateLimiting(app, options);
|
|
117
|
-
applyOpenAPIDocumentation(app, options);
|
|
118
|
-
return app;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Apply error handler to the app
|
|
122
|
-
*/
|
|
123
|
-
function applyErrorHandler(app, { errorHandler, debug }) {
|
|
124
|
-
if (errorHandler === false)
|
|
125
|
-
return;
|
|
126
|
-
if (debug) {
|
|
127
|
-
console.log('[Glasswork] Applying error handler');
|
|
128
|
-
}
|
|
129
|
-
app.onError(errorHandler);
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Apply security-related middleware (secure headers, request ID, CORS)
|
|
133
|
-
*/
|
|
134
|
-
function applySecurityMiddleware(app, { environment, middleware, debug, }) {
|
|
135
|
-
// Secure headers (default: true in production)
|
|
136
|
-
if (middleware?.secureHeaders !== false && environment === 'production') {
|
|
137
|
-
if (debug) {
|
|
138
|
-
console.log('[Glasswork] Applying secure headers');
|
|
139
|
-
}
|
|
140
|
-
app.use(secureHeaders());
|
|
141
|
-
}
|
|
142
|
-
// Request ID (default: true)
|
|
143
|
-
if (middleware?.requestId !== false) {
|
|
144
|
-
if (debug) {
|
|
145
|
-
console.log('[Glasswork] Applying request ID middleware');
|
|
146
|
-
}
|
|
147
|
-
app.use(requestId());
|
|
148
|
-
}
|
|
149
|
-
// CORS
|
|
150
|
-
if (middleware?.cors) {
|
|
151
|
-
if (debug) {
|
|
152
|
-
console.log('[Glasswork] Applying CORS middleware');
|
|
153
|
-
}
|
|
154
|
-
app.use(cors(middleware.cors));
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Apply logging middleware
|
|
159
|
-
*/
|
|
160
|
-
function applyLoggingMiddleware(app, { logger, debug }) {
|
|
161
|
-
if (logger?.enabled === false)
|
|
162
|
-
return;
|
|
163
|
-
// Auto-detect plain mode based on environment if not specified
|
|
164
|
-
const usePlainLogger = logger?.plain ?? isLambda();
|
|
165
|
-
if (debug) {
|
|
166
|
-
console.log(`[Glasswork] Applying logger (plain: ${usePlainLogger})`);
|
|
167
|
-
}
|
|
168
|
-
app.use(usePlainLogger ? createPlainLogger() : honoLogger());
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Apply rate limiting middleware
|
|
172
|
-
*/
|
|
173
|
-
function applyRateLimiting(app, { rateLimit, debug }) {
|
|
174
|
-
if (!rateLimit?.enabled)
|
|
175
|
-
return;
|
|
176
|
-
if (debug) {
|
|
177
|
-
console.log(`[Glasswork] Rate limiting enabled (${rateLimit.storage} storage, ${rateLimit.maxRequests || 100} req/${rateLimit.windowMs || 60000}ms)`);
|
|
178
|
-
}
|
|
179
|
-
app.use(createRateLimitMiddleware(rateLimit));
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Apply OpenAPI documentation
|
|
183
|
-
*/
|
|
184
|
-
function applyOpenAPIDocumentation(app, options) {
|
|
185
|
-
const { environment, openapi, rateLimit, middleware, debug } = options;
|
|
186
|
-
if (!openapi?.enabled)
|
|
187
|
-
return;
|
|
188
|
-
if (debug) {
|
|
189
|
-
console.log('[Glasswork] Configuring OpenAPI');
|
|
190
|
-
}
|
|
191
|
-
configureOpenAPI({ app, environment, openapi, rateLimit, middleware });
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Mount module routes to the app
|
|
195
|
-
*/
|
|
196
|
-
function mountModuleRoutes(options) {
|
|
197
|
-
const { app, modules, container, apiBasePath, debug } = options;
|
|
198
|
-
for (const module of modules) {
|
|
199
|
-
if (!module.routes || !module.basePath) {
|
|
200
|
-
continue;
|
|
201
|
-
}
|
|
202
|
-
if (debug) {
|
|
203
|
-
console.log(`[Glasswork] Mounting routes: ${apiBasePath}/${module.basePath}`);
|
|
204
|
-
}
|
|
205
|
-
const router = new Hono();
|
|
206
|
-
// Call route factory with router and services
|
|
207
|
-
module.routes(router, container.cradle);
|
|
208
|
-
// Mount at base path
|
|
209
|
-
app.route(`${apiBasePath}/${module.basePath}`, router);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Collect all modules (flatten imports recursively)
|
|
214
|
-
* @internal - exported for testing utilities
|
|
215
|
-
*/
|
|
216
|
-
export function collectModules(rootModule) {
|
|
217
|
-
const modules = new Map();
|
|
218
|
-
const visited = new Set();
|
|
219
|
-
function collect(module) {
|
|
220
|
-
if (visited.has(module.name)) {
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
visited.add(module.name);
|
|
224
|
-
modules.set(module.name, module);
|
|
225
|
-
// Recursively collect imports
|
|
226
|
-
if (module.imports) {
|
|
227
|
-
for (const importedModule of module.imports) {
|
|
228
|
-
collect(importedModule);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
collect(rootModule);
|
|
233
|
-
return Array.from(modules.values());
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Validate no circular dependencies between modules
|
|
237
|
-
* @internal - exported for testing utilities
|
|
238
|
-
*/
|
|
239
|
-
export function validateNoCycles(modules) {
|
|
240
|
-
const graph = new Map();
|
|
241
|
-
// Build dependency graph
|
|
242
|
-
for (const module of modules) {
|
|
243
|
-
if (!graph.has(module.name)) {
|
|
244
|
-
graph.set(module.name, new Set());
|
|
245
|
-
}
|
|
246
|
-
if (module.imports) {
|
|
247
|
-
for (const importedModule of module.imports) {
|
|
248
|
-
graph.get(module.name)?.add(importedModule.name);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
// Detect cycles using DFS
|
|
253
|
-
const visiting = new Set();
|
|
254
|
-
const visited = new Set();
|
|
255
|
-
function visit(name, path) {
|
|
256
|
-
if (visiting.has(name)) {
|
|
257
|
-
throw new Error(`Circular dependency detected: ${[...path, name].join(' -> ')}`);
|
|
258
|
-
}
|
|
259
|
-
if (visited.has(name)) {
|
|
260
|
-
return;
|
|
261
|
-
}
|
|
262
|
-
visiting.add(name);
|
|
263
|
-
const dependencies = graph.get(name) || new Set();
|
|
264
|
-
for (const dep of dependencies) {
|
|
265
|
-
visit(dep, [...path, name]);
|
|
266
|
-
}
|
|
267
|
-
visiting.delete(name);
|
|
268
|
-
visited.add(name);
|
|
269
|
-
}
|
|
270
|
-
for (const module of modules) {
|
|
271
|
-
visit(module.name, []);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Register module providers with Awilix container
|
|
276
|
-
* @internal - exported for testing utilities
|
|
277
|
-
*/
|
|
278
|
-
export function registerModuleProviders(module, container, debug = false) {
|
|
279
|
-
if (!module.providers) {
|
|
280
|
-
return;
|
|
281
|
-
}
|
|
282
|
-
for (const provider of module.providers) {
|
|
283
|
-
registerProvider(provider, container, module.name, debug);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Register a single provider with Awilix
|
|
288
|
-
*/
|
|
289
|
-
function registerProvider(provider, container, moduleName, debug) {
|
|
290
|
-
if (typeof provider === 'function') {
|
|
291
|
-
registerClassProvider(provider, container, debug);
|
|
292
|
-
return;
|
|
293
|
-
}
|
|
294
|
-
if ('useClass' in provider) {
|
|
295
|
-
registerExplicitClassProvider(provider, container, debug);
|
|
296
|
-
return;
|
|
297
|
-
}
|
|
298
|
-
if ('useValue' in provider) {
|
|
299
|
-
registerValueProvider(provider, container, debug);
|
|
300
|
-
return;
|
|
301
|
-
}
|
|
302
|
-
if ('useFactory' in provider) {
|
|
303
|
-
registerFactoryProvider(provider, container, debug);
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
throw new Error(`Invalid provider configuration in module "${moduleName}"`);
|
|
307
|
-
}
|
|
308
|
-
function registerClassProvider(provider, container, debug) {
|
|
309
|
-
const name = camelCase(provider.name);
|
|
310
|
-
if (debug) {
|
|
311
|
-
console.log(` - Registering ${name} (${provider.name})`);
|
|
312
|
-
}
|
|
313
|
-
container.register({
|
|
314
|
-
[name]: asClass(provider).singleton(),
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
function registerExplicitClassProvider(provider, container, debug) {
|
|
318
|
-
const name = typeof provider.provide === 'string' ? provider.provide : camelCase(provider.provide.name);
|
|
319
|
-
const scope = provider.scope || 'SINGLETON';
|
|
320
|
-
if (debug) {
|
|
321
|
-
console.log(` - Registering ${name} (scope: ${scope})`);
|
|
322
|
-
}
|
|
323
|
-
const registration = asClass(provider.useClass);
|
|
324
|
-
container.register({
|
|
325
|
-
[name]: applyScopeToRegistration(registration, scope),
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
function registerValueProvider(provider, container, debug) {
|
|
329
|
-
if (debug) {
|
|
330
|
-
console.log(` - Registering ${provider.provide} (value)`);
|
|
331
|
-
}
|
|
332
|
-
container.register({
|
|
333
|
-
[provider.provide]: asValue(provider.useValue),
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
function registerFactoryProvider(provider, container, debug) {
|
|
337
|
-
if (debug) {
|
|
338
|
-
console.log(` - Registering ${provider.provide} (factory)`);
|
|
339
|
-
}
|
|
340
|
-
container.register({
|
|
341
|
-
[provider.provide]: asValue(provider.useFactory(container)),
|
|
342
|
-
});
|
|
343
|
-
}
|
|
344
|
-
function applyScopeToRegistration(registration, scope) {
|
|
345
|
-
if (scope === 'SCOPED') {
|
|
346
|
-
return registration.scoped();
|
|
347
|
-
}
|
|
348
|
-
if (scope === 'TRANSIENT') {
|
|
349
|
-
return registration.transient();
|
|
350
|
-
}
|
|
351
|
-
return registration.singleton();
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Convert PascalCase to camelCase
|
|
355
|
-
*/
|
|
356
|
-
function camelCase(str) {
|
|
357
|
-
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
358
|
-
}
|
|
359
|
-
//# sourceMappingURL=bootstrap.js.map
|
package/dist/bootstrap.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/environment.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Environment detection utilities for serverless and local development.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Check if running in AWS Lambda environment
|
|
6
|
-
*/
|
|
7
|
-
export declare function isLambda(): boolean;
|
|
8
|
-
/**
|
|
9
|
-
* Check if running in production environment
|
|
10
|
-
* (either NODE_ENV=production or in Lambda)
|
|
11
|
-
*/
|
|
12
|
-
export declare function isProduction(): boolean;
|
|
13
|
-
/**
|
|
14
|
-
* Check if running in test environment
|
|
15
|
-
*/
|
|
16
|
-
export declare function isTest(): boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Check if running in development environment
|
|
19
|
-
*/
|
|
20
|
-
export declare function isDevelopment(): boolean;
|
|
21
|
-
//# sourceMappingURL=environment.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC"}
|