glasswork 0.13.3 → 1.0.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.
Files changed (229) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +6 -2
  3. package/dist/auth/abilities.d.ts +9 -6
  4. package/dist/auth/abilities.d.ts.map +1 -1
  5. package/dist/auth/abilities.js +15 -19
  6. package/dist/auth/abilities.js.map +1 -1
  7. package/dist/auth/assert.d.ts +3 -3
  8. package/dist/auth/assert.d.ts.map +1 -1
  9. package/dist/auth/casl-bridge.d.ts +19 -0
  10. package/dist/auth/casl-bridge.d.ts.map +1 -0
  11. package/dist/auth/casl-bridge.js +29 -0
  12. package/dist/auth/casl-bridge.js.map +1 -0
  13. package/dist/auth/index.d.ts +1 -0
  14. package/dist/auth/index.d.ts.map +1 -1
  15. package/dist/auth/index.js +1 -0
  16. package/dist/auth/index.js.map +1 -1
  17. package/dist/auth/middleware.d.ts +3 -3
  18. package/dist/auth/middleware.d.ts.map +1 -1
  19. package/dist/auth/middleware.js +2 -2
  20. package/dist/auth/middleware.js.map +1 -1
  21. package/dist/auth/types.d.ts +2 -2
  22. package/dist/auth/types.d.ts.map +1 -1
  23. package/dist/config/index.d.ts +1 -1
  24. package/dist/config/index.js +1 -1
  25. package/dist/core/bootstrap.d.ts +0 -17
  26. package/dist/core/bootstrap.d.ts.map +1 -1
  27. package/dist/core/bootstrap.js +4 -240
  28. package/dist/core/bootstrap.js.map +1 -1
  29. package/dist/core/index.d.ts +19 -0
  30. package/dist/core/index.d.ts.map +1 -0
  31. package/dist/core/index.js +15 -0
  32. package/dist/core/index.js.map +1 -0
  33. package/dist/core/lifecycle.d.ts +7 -0
  34. package/dist/core/lifecycle.d.ts.map +1 -0
  35. package/dist/core/lifecycle.js +28 -0
  36. package/dist/core/lifecycle.js.map +1 -0
  37. package/dist/core/module-graph.d.ts +21 -0
  38. package/dist/core/module-graph.d.ts.map +1 -0
  39. package/dist/core/module-graph.js +169 -0
  40. package/dist/core/module-graph.js.map +1 -0
  41. package/dist/core/route-factory.d.ts +20 -0
  42. package/dist/core/route-factory.d.ts.map +1 -0
  43. package/dist/core/route-factory.js +2 -0
  44. package/dist/core/route-factory.js.map +1 -0
  45. package/dist/core/types.d.ts +4 -14
  46. package/dist/core/types.d.ts.map +1 -1
  47. package/dist/email/compiler/compile-templates.d.ts +3 -8
  48. package/dist/email/compiler/compile-templates.d.ts.map +1 -1
  49. package/dist/email/compiler/compile-templates.js +3 -3
  50. package/dist/email/compiler/compile-templates.js.map +1 -1
  51. package/dist/email/compiler/compiler.d.ts +5 -2
  52. package/dist/email/compiler/compiler.d.ts.map +1 -1
  53. package/dist/email/compiler/compiler.js +2 -21
  54. package/dist/email/compiler/compiler.js.map +1 -1
  55. package/dist/email/transports/ses-transport.d.ts.map +1 -1
  56. package/dist/email/transports/ses-transport.js +11 -18
  57. package/dist/email/transports/ses-transport.js.map +1 -1
  58. package/dist/email/webhooks/handler-factory.d.ts +1 -1
  59. package/dist/email/webhooks/handler-factory.js +1 -1
  60. package/dist/email/webhooks/notification-parser.d.ts +1 -1
  61. package/dist/email/webhooks/notification-parser.js +1 -1
  62. package/dist/email/webhooks/signature-verification.d.ts +1 -1
  63. package/dist/email/webhooks/signature-verification.js +1 -1
  64. package/dist/email/webhooks/subscription-handler.d.ts +1 -1
  65. package/dist/email/webhooks/subscription-handler.js +1 -1
  66. package/dist/hono-context.d.ts +13 -0
  67. package/dist/hono-context.d.ts.map +1 -0
  68. package/dist/hono-context.js +2 -0
  69. package/dist/hono-context.js.map +1 -0
  70. package/dist/http/index.d.ts +18 -0
  71. package/dist/http/index.d.ts.map +1 -0
  72. package/dist/http/index.js +15 -0
  73. package/dist/http/index.js.map +1 -0
  74. package/dist/http/route-authorization.d.ts +9 -0
  75. package/dist/http/route-authorization.d.ts.map +1 -0
  76. package/dist/http/route-authorization.js +19 -0
  77. package/dist/http/route-authorization.js.map +1 -0
  78. package/dist/http/route-context.d.ts +8 -0
  79. package/dist/http/route-context.d.ts.map +1 -0
  80. package/dist/http/route-context.js +26 -0
  81. package/dist/http/route-context.js.map +1 -0
  82. package/dist/http/route-helpers.d.ts +6 -419
  83. package/dist/http/route-helpers.d.ts.map +1 -1
  84. package/dist/http/route-helpers.js +7 -462
  85. package/dist/http/route-helpers.js.map +1 -1
  86. package/dist/http/route-openapi-context.d.ts +27 -0
  87. package/dist/http/route-openapi-context.d.ts.map +1 -0
  88. package/dist/http/route-openapi-context.js +16 -0
  89. package/dist/http/route-openapi-context.js.map +1 -0
  90. package/dist/http/route-openapi.d.ts +5 -0
  91. package/dist/http/route-openapi.d.ts.map +1 -0
  92. package/dist/http/route-openapi.js +112 -0
  93. package/dist/http/route-openapi.js.map +1 -0
  94. package/dist/http/route-response.d.ts +5 -0
  95. package/dist/http/route-response.d.ts.map +1 -0
  96. package/dist/http/route-response.js +78 -0
  97. package/dist/http/route-response.js.map +1 -0
  98. package/dist/http/route-types.d.ts +93 -0
  99. package/dist/http/route-types.d.ts.map +1 -0
  100. package/dist/http/route-types.js +22 -0
  101. package/dist/http/route-types.js.map +1 -0
  102. package/dist/http/route-validation.d.ts +11 -0
  103. package/dist/http/route-validation.d.ts.map +1 -0
  104. package/dist/http/route-validation.js +24 -0
  105. package/dist/http/route-validation.js.map +1 -0
  106. package/dist/index.d.ts +7 -45
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +5 -65
  109. package/dist/index.js.map +1 -1
  110. package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts.map +1 -1
  111. package/dist/jobs/drivers/eventbridge-scheduler-driver.js +1 -3
  112. package/dist/jobs/drivers/eventbridge-scheduler-driver.js.map +1 -1
  113. package/dist/jobs/drivers/sqs-driver.d.ts +1 -1
  114. package/dist/jobs/drivers/sqs-driver.d.ts.map +1 -1
  115. package/dist/jobs/drivers/sqs-driver.js +1 -3
  116. package/dist/jobs/drivers/sqs-driver.js.map +1 -1
  117. package/dist/jobs/worker.d.ts.map +1 -1
  118. package/dist/jobs/worker.js +3 -14
  119. package/dist/jobs/worker.js.map +1 -1
  120. package/dist/list-query/builder.d.ts +26 -5
  121. package/dist/list-query/builder.d.ts.map +1 -1
  122. package/dist/list-query/builder.js +18 -10
  123. package/dist/list-query/builder.js.map +1 -1
  124. package/dist/list-query/casl.d.ts +20 -4
  125. package/dist/list-query/casl.d.ts.map +1 -1
  126. package/dist/list-query/casl.js +3 -12
  127. package/dist/list-query/casl.js.map +1 -1
  128. package/dist/list-query/filter-value-schemas.d.ts +16 -0
  129. package/dist/list-query/filter-value-schemas.d.ts.map +1 -0
  130. package/dist/list-query/filter-value-schemas.js +46 -0
  131. package/dist/list-query/filter-value-schemas.js.map +1 -0
  132. package/dist/list-query/index.d.ts +7 -1
  133. package/dist/list-query/index.d.ts.map +1 -1
  134. package/dist/list-query/index.js +6 -2
  135. package/dist/list-query/index.js.map +1 -1
  136. package/dist/list-query/list-params.d.ts +17 -0
  137. package/dist/list-query/list-params.d.ts.map +1 -0
  138. package/dist/list-query/list-params.js +2 -0
  139. package/dist/list-query/list-params.js.map +1 -0
  140. package/dist/list-query/parse-filter-values.d.ts +21 -0
  141. package/dist/list-query/parse-filter-values.d.ts.map +1 -0
  142. package/dist/list-query/parse-filter-values.js +177 -0
  143. package/dist/list-query/parse-filter-values.js.map +1 -0
  144. package/dist/list-query/prisma-builder.d.ts.map +1 -1
  145. package/dist/list-query/prisma-builder.js +3 -50
  146. package/dist/list-query/prisma-builder.js.map +1 -1
  147. package/dist/list-query/prisma-executor.d.ts +63 -0
  148. package/dist/list-query/prisma-executor.d.ts.map +1 -0
  149. package/dist/list-query/prisma-executor.js +88 -0
  150. package/dist/list-query/prisma-executor.js.map +1 -0
  151. package/dist/list-query/schema-helpers.d.ts +37 -17
  152. package/dist/list-query/schema-helpers.d.ts.map +1 -1
  153. package/dist/list-query/schema-helpers.js +87 -24
  154. package/dist/list-query/schema-helpers.js.map +1 -1
  155. package/dist/list-query/sort-field-types.d.ts +21 -0
  156. package/dist/list-query/sort-field-types.d.ts.map +1 -0
  157. package/dist/list-query/sort-field-types.js +2 -0
  158. package/dist/list-query/sort-field-types.js.map +1 -0
  159. package/dist/list-query/unrestricted-schemas.d.ts +13 -0
  160. package/dist/list-query/unrestricted-schemas.d.ts.map +1 -0
  161. package/dist/list-query/unrestricted-schemas.js +9 -0
  162. package/dist/list-query/unrestricted-schemas.js.map +1 -0
  163. package/dist/list-query/validator.d.ts +2 -2
  164. package/dist/list-query/validator.d.ts.map +1 -1
  165. package/dist/observability/exception-tracking.d.ts +5 -4
  166. package/dist/observability/exception-tracking.d.ts.map +1 -1
  167. package/dist/observability/exception-tracking.js +4 -3
  168. package/dist/observability/exception-tracking.js.map +1 -1
  169. package/dist/observability/index.d.ts +8 -0
  170. package/dist/observability/index.d.ts.map +1 -0
  171. package/dist/observability/index.js +8 -0
  172. package/dist/observability/index.js.map +1 -0
  173. package/dist/observability/pino-logger.d.ts +3 -3
  174. package/dist/observability/pino-logger.js +3 -3
  175. package/dist/observability/request-context.d.ts +4 -4
  176. package/dist/observability/request-context.js +4 -4
  177. package/package.json +93 -53
  178. package/dist/authorization/ability-middleware.d.ts +0 -61
  179. package/dist/authorization/ability-middleware.d.ts.map +0 -1
  180. package/dist/authorization/ability-middleware.js +0 -74
  181. package/dist/authorization/ability-middleware.js.map +0 -1
  182. package/dist/authorization/index.d.ts +0 -46
  183. package/dist/authorization/index.d.ts.map +0 -1
  184. package/dist/authorization/index.js +0 -46
  185. package/dist/authorization/index.js.map +0 -1
  186. package/dist/authorization/route-helpers.d.ts +0 -106
  187. package/dist/authorization/route-helpers.d.ts.map +0 -1
  188. package/dist/authorization/route-helpers.js +0 -136
  189. package/dist/authorization/route-helpers.js.map +0 -1
  190. package/dist/authorization/service-proxy.d.ts +0 -59
  191. package/dist/authorization/service-proxy.d.ts.map +0 -1
  192. package/dist/authorization/service-proxy.js +0 -110
  193. package/dist/authorization/service-proxy.js.map +0 -1
  194. package/dist/authorization/types.d.ts +0 -58
  195. package/dist/authorization/types.d.ts.map +0 -1
  196. package/dist/authorization/types.js +0 -7
  197. package/dist/authorization/types.js.map +0 -1
  198. package/dist/hooks/authorization-hook.d.ts +0 -100
  199. package/dist/hooks/authorization-hook.d.ts.map +0 -1
  200. package/dist/hooks/authorization-hook.js +0 -93
  201. package/dist/hooks/authorization-hook.js.map +0 -1
  202. package/dist/hooks/index.d.ts +0 -54
  203. package/dist/hooks/index.d.ts.map +0 -1
  204. package/dist/hooks/index.js +0 -55
  205. package/dist/hooks/index.js.map +0 -1
  206. package/dist/hooks/service-hooks.d.ts +0 -82
  207. package/dist/hooks/service-hooks.d.ts.map +0 -1
  208. package/dist/hooks/service-hooks.js +0 -158
  209. package/dist/hooks/service-hooks.js.map +0 -1
  210. package/dist/hooks/types.d.ts +0 -151
  211. package/dist/hooks/types.d.ts.map +0 -1
  212. package/dist/hooks/types.js +0 -2
  213. package/dist/hooks/types.js.map +0 -1
  214. package/dist/openapi/hooks.d.ts +0 -14
  215. package/dist/openapi/hooks.d.ts.map +0 -1
  216. package/dist/openapi/hooks.js +0 -83
  217. package/dist/openapi/hooks.js.map +0 -1
  218. package/dist/openapi/openapi-transformer.d.ts +0 -13
  219. package/dist/openapi/openapi-transformer.d.ts.map +0 -1
  220. package/dist/openapi/openapi-transformer.js +0 -87
  221. package/dist/openapi/openapi-transformer.js.map +0 -1
  222. package/dist/utils/pagination.d.ts +0 -48
  223. package/dist/utils/pagination.d.ts.map +0 -1
  224. package/dist/utils/pagination.js +0 -42
  225. package/dist/utils/pagination.js.map +0 -1
  226. package/dist/utils/serialize-dates.d.ts +0 -27
  227. package/dist/utils/serialize-dates.d.ts.map +0 -1
  228. package/dist/utils/serialize-dates.js +0 -39
  229. package/dist/utils/serialize-dates.js.map +0 -1
@@ -0,0 +1,112 @@
1
+ import { describeRoute as honoDescribeRoute, resolver, } from 'hono-openapi';
2
+ import { applyProcessors } from '../openapi/openapi-processors.js';
3
+ import { STATUS_DESCRIPTIONS, } from './route-types.js';
4
+ function buildDefaultErrorResponses(config) {
5
+ const hasValidation = !!(config.body || config.query || config.params);
6
+ if (config.public) {
7
+ return {
8
+ 400: undefined,
9
+ ...(hasValidation && { 422: undefined }),
10
+ 429: undefined,
11
+ 500: undefined,
12
+ };
13
+ }
14
+ return {
15
+ 400: undefined,
16
+ 401: undefined,
17
+ ...(hasValidation && { 422: undefined }),
18
+ 429: undefined,
19
+ 500: undefined,
20
+ };
21
+ }
22
+ function buildResponseContent(schema, isErrorResponse) {
23
+ if (schema) {
24
+ return {
25
+ content: {
26
+ 'application/json': {
27
+ schema: resolver(schema, {
28
+ errorMode: 'ignore',
29
+ }),
30
+ },
31
+ },
32
+ };
33
+ }
34
+ if (isErrorResponse) {
35
+ return {
36
+ content: {
37
+ 'application/json': {
38
+ schema: { $ref: '#/components/schemas/ErrorResponse' },
39
+ },
40
+ },
41
+ };
42
+ }
43
+ return {};
44
+ }
45
+ function buildBinaryResponse(binaryConfig) {
46
+ const description = binaryConfig.description ??
47
+ STATUS_DESCRIPTIONS[(binaryConfig.statusCode ?? 200)] ??
48
+ 'File download';
49
+ return {
50
+ description,
51
+ content: {
52
+ [binaryConfig.contentType]: {
53
+ schema: { type: 'string', format: 'binary' },
54
+ },
55
+ },
56
+ };
57
+ }
58
+ function buildOpenAPIResponses(config, openAPIContext, hasPagination) {
59
+ const responses = {};
60
+ const defaultResponses = buildDefaultErrorResponses(config);
61
+ const allResponses = { ...defaultResponses, ...(config.responses || {}) };
62
+ const binaryResponse = config.openapi?.binaryResponse;
63
+ const binaryStatusCode = String(binaryResponse?.statusCode ?? 200);
64
+ if (binaryResponse) {
65
+ responses[binaryStatusCode] = buildBinaryResponse(binaryResponse);
66
+ }
67
+ for (const [statusCode, schema] of Object.entries(allResponses)) {
68
+ if (binaryResponse && statusCode === binaryStatusCode) {
69
+ continue;
70
+ }
71
+ const code = Number(statusCode);
72
+ const description = STATUS_DESCRIPTIONS[code] || 'Response';
73
+ const isErrorResponse = code >= 400;
74
+ let response = {
75
+ description,
76
+ ...buildResponseContent(schema, isErrorResponse && !schema),
77
+ };
78
+ const processorContext = {
79
+ statusCode,
80
+ hasPagination,
81
+ routeConfig: {
82
+ ...config,
83
+ public: config.public,
84
+ tags: config.tags,
85
+ summary: config.summary,
86
+ openapi: config.openapi,
87
+ },
88
+ };
89
+ response = applyProcessors(response, processorContext, openAPIContext.processors);
90
+ responses[statusCode] = response;
91
+ }
92
+ return responses;
93
+ }
94
+ export function buildOpenAPIMiddleware(config, openAPIContext, hasPagination) {
95
+ const responses = buildOpenAPIResponses(config, openAPIContext, hasPagination);
96
+ const security = config.public
97
+ ? []
98
+ : openAPIContext.securitySchemes.map((scheme) => ({ [scheme]: [] }));
99
+ const { responseHeaders: _responseHeaders, exclude: _exclude, docs, ...restOpenapi } = config.openapi ?? {};
100
+ const openApiConfig = {
101
+ operationId: config.operationId || config.summary,
102
+ tags: config.tags,
103
+ summary: config.summary,
104
+ description: config.description,
105
+ externalDocs: docs,
106
+ responses: responses,
107
+ security,
108
+ ...restOpenapi,
109
+ };
110
+ return honoDescribeRoute(openApiConfig);
111
+ }
112
+ //# sourceMappingURL=route-openapi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-openapi.js","sourceRoot":"","sources":["../../src/http/route-openapi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Context } from 'hono';
2
+ import { type SerializationConfig } from '../utils/serialize-prisma-types.js';
3
+ import type { STATUS_DESCRIPTIONS, ValibotSchema } from './route-types.js';
4
+ export declare function handleResponse<TResponses extends Partial<Record<keyof typeof STATUS_DESCRIPTIONS, ValibotSchema | undefined>>>(result: unknown, responses: TResponses | undefined, serializationConfig: Partial<SerializationConfig> | undefined, strictTypes: boolean | undefined, routeSummary: string | undefined, context: Context): Promise<Response | undefined>;
5
+ //# sourceMappingURL=route-response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-response.d.ts","sourceRoot":"","sources":["../../src/http/route-response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA8D3E,wBAAsB,cAAc,CAClC,UAAU,SAAS,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,mBAAmB,EAAE,aAAa,GAAG,SAAS,CAAC,CAAC,EAE/F,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,SAAS,EAC7D,WAAW,EAAE,OAAO,GAAG,SAAS,EAChC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAwC/B"}
@@ -0,0 +1,78 @@
1
+ import { safeParseAsync } from 'valibot';
2
+ import { createLogger } from '../utils/logger.js';
3
+ import { defaultConfig as defaultSerializationConfig, serializePrismaTypes, } from '../utils/serialize-prisma-types.js';
4
+ const logger = createLogger('Routes');
5
+ function serializeResponseData(data, serializationConfig) {
6
+ const config = serializationConfig
7
+ ? {
8
+ transformers: [
9
+ ...(serializationConfig.transformers || []),
10
+ ...defaultSerializationConfig.transformers,
11
+ ],
12
+ }
13
+ : defaultSerializationConfig;
14
+ return serializePrismaTypes(data, config);
15
+ }
16
+ async function parseResponse(data, responses) {
17
+ if (!responses) {
18
+ return { data };
19
+ }
20
+ const successCodes = [
21
+ 200, 201, 202, 204, 301, 302, 307, 308,
22
+ ];
23
+ for (const statusCode of successCodes) {
24
+ const schema = responses[statusCode];
25
+ if (!schema)
26
+ continue;
27
+ const result = await safeParseAsync(schema, data);
28
+ if (result.success) {
29
+ return { data: result.output, statusCode };
30
+ }
31
+ }
32
+ if (process.env.NODE_ENV === 'production') {
33
+ logger.error('Response data does not match any defined success/redirect schema. ' +
34
+ 'Refusing to return unvalidated data in production.');
35
+ throw new Error('Response validation failed: Data does not match any defined response schema. ' +
36
+ 'This prevents potentially sensitive data from being leaked.');
37
+ }
38
+ logger.warn('Response data does not match any defined success/redirect schema. ' +
39
+ 'Data will be returned as-is without validation or key stripping. ' +
40
+ 'This would throw an error in production.');
41
+ return { data };
42
+ }
43
+ export async function handleResponse(result, responses, serializationConfig, strictTypes, routeSummary, context) {
44
+ if (result instanceof Response) {
45
+ return result;
46
+ }
47
+ if (result === null || result === undefined) {
48
+ context.status(204);
49
+ return context.body(null);
50
+ }
51
+ let serializedResult;
52
+ try {
53
+ if (!strictTypes) {
54
+ serializedResult = serializeResponseData(result, serializationConfig);
55
+ }
56
+ else {
57
+ serializedResult = result;
58
+ }
59
+ }
60
+ catch (error) {
61
+ logger.error('Failed to serialize response data', {
62
+ error: error instanceof Error ? error.message : String(error),
63
+ route: routeSummary || 'unknown',
64
+ });
65
+ const errorMessage = process.env.NODE_ENV === 'production'
66
+ ? 'Failed to serialize response data'
67
+ : error instanceof Error
68
+ ? error.message
69
+ : String(error);
70
+ return context.json({ error: 'Internal Server Error', message: errorMessage }, 500);
71
+ }
72
+ const { data: parsedResult, statusCode } = await parseResponse(serializedResult, responses);
73
+ if (statusCode) {
74
+ context.status(statusCode);
75
+ }
76
+ return context.json(parsedResult);
77
+ }
78
+ //# sourceMappingURL=route-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-response.js","sourceRoot":"","sources":["../../src/http/route-response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import type { Context, MiddlewareHandler } from 'hono';
2
+ import type { DescribeRouteOptions } from 'hono-openapi';
3
+ import type { BaseIssue, BaseSchema, BaseSchemaAsync, InferOutput } from 'valibot';
4
+ import type { RouteConfigExtensions, RouteFactory, RouteHandlers } from '../core/types.js';
5
+ import type { AcceptPrismaTypes, SerializationConfig } from '../utils/serialize-prisma-types.js';
6
+ /**
7
+ * OpenAPI extensions for route configuration
8
+ */
9
+ export interface RouteOpenAPIOptions extends Partial<Omit<DescribeRouteOptions, 'responses' | 'operationId' | 'tags' | 'summary' | 'description'>> {
10
+ responseHeaders?: string[] | Record<string, string[]>;
11
+ exclude?: boolean;
12
+ deprecated?: boolean;
13
+ docs?: {
14
+ description?: string;
15
+ url: string;
16
+ };
17
+ binaryResponse?: {
18
+ contentType: string;
19
+ description?: string;
20
+ statusCode?: number;
21
+ };
22
+ }
23
+ /**
24
+ * Valibot schema type (compatible with both sync and async schemas)
25
+ */
26
+ export type ValibotSchema = BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>;
27
+ type InferSchemaType<T> = T extends ValibotSchema ? InferOutput<T> : never;
28
+ type InferResponseUnion<TResponses> = {
29
+ [K in keyof TResponses]: K extends 200 | 201 | 202 | 204 | 301 | 302 | 307 | 308 ? TResponses[K] extends ValibotSchema ? InferOutput<TResponses[K]> : never : never;
30
+ }[keyof TResponses];
31
+ type InferResponseType<TResponses> = InferResponseUnion<TResponses> extends never ? unknown : InferResponseUnion<TResponses>;
32
+ /**
33
+ * HTTP status codes with descriptions
34
+ */
35
+ export declare const STATUS_DESCRIPTIONS: {
36
+ readonly 200: "Success";
37
+ readonly 201: "Created";
38
+ readonly 202: "Accepted";
39
+ readonly 204: "No Content";
40
+ readonly 301: "Moved Permanently";
41
+ readonly 302: "Found";
42
+ readonly 307: "Temporary Redirect";
43
+ readonly 308: "Permanent Redirect";
44
+ readonly 400: "Bad Request";
45
+ readonly 401: "Unauthorized";
46
+ readonly 403: "Forbidden";
47
+ readonly 404: "Not Found";
48
+ readonly 409: "Conflict";
49
+ readonly 422: "Unprocessable Entity";
50
+ readonly 429: "Too Many Requests";
51
+ readonly 500: "Internal Server Error";
52
+ };
53
+ export type { RouteFactory };
54
+ /**
55
+ * Bound route function type - route() pre-bound to a router's OpenAPI context.
56
+ */
57
+ export type BoundRouteFunction = <TBody extends ValibotSchema | undefined = undefined, TQuery extends ValibotSchema | undefined = undefined, TParams extends ValibotSchema | undefined = undefined, TResponses extends Partial<Record<keyof typeof STATUS_DESCRIPTIONS, ValibotSchema | undefined>> = Record<never, never>, TPublic extends boolean = false, TStrictTypes extends boolean = false>(config: RouteConfig<TBody, TQuery, TParams, TResponses, TPublic, TStrictTypes>) => RouteHandlers;
58
+ export interface RouteConfig<TBody extends ValibotSchema | undefined = undefined, TQuery extends ValibotSchema | undefined = undefined, TParams extends ValibotSchema | undefined = undefined, TResponses extends Partial<Record<keyof typeof STATUS_DESCRIPTIONS, ValibotSchema | undefined>> = Record<never, never>, TPublic extends boolean = false, TStrictTypes extends boolean = false> extends RouteConfigExtensions {
59
+ tags?: string[];
60
+ summary?: string;
61
+ description?: string;
62
+ operationId?: string;
63
+ public?: TPublic;
64
+ body?: TBody;
65
+ bodyType?: 'json' | 'form';
66
+ query?: TQuery;
67
+ params?: TParams;
68
+ responses?: TResponses;
69
+ openapi?: RouteOpenAPIOptions;
70
+ middleware?: MiddlewareHandler[];
71
+ strictTypes?: TStrictTypes;
72
+ serialization?: Partial<SerializationConfig>;
73
+ authorize?: {
74
+ action: string;
75
+ subject: string | {
76
+ __caslSubjectType__?: string;
77
+ };
78
+ allowGuest?: boolean;
79
+ };
80
+ handler: (context: RouteContext<TBody extends ValibotSchema ? InferSchemaType<TBody> : never, TQuery extends ValibotSchema ? InferSchemaType<TQuery> : Record<string, string>, TParams extends ValibotSchema ? InferSchemaType<TParams> : Record<string, string>, TPublic extends true ? false : true>) => TStrictTypes extends true ? Promise<InferResponseType<TResponses>> | InferResponseType<TResponses> : Promise<AcceptPrismaTypes<InferResponseType<TResponses>>> | AcceptPrismaTypes<InferResponseType<TResponses>>;
81
+ }
82
+ export interface RouteContext<TBody = never, TQuery = Record<string, string>, TParams = Record<string, string>, TSessionRequired extends boolean = true> extends Omit<Context['var'], 'session'> {
83
+ body: TBody;
84
+ query: TQuery;
85
+ params: TParams;
86
+ services: Record<string, unknown>;
87
+ session: TSessionRequired extends true ? NonNullable<Context['var']['session']> : Context['var']['session'];
88
+ ip: string;
89
+ userAgent: string | undefined;
90
+ logger: import('../utils/logger.js').Logger;
91
+ context: Context;
92
+ }
93
+ //# sourceMappingURL=route-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-types.d.ts","sourceRoot":"","sources":["../../src/http/route-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * HTTP status codes with descriptions
3
+ */
4
+ export const STATUS_DESCRIPTIONS = {
5
+ 200: 'Success',
6
+ 201: 'Created',
7
+ 202: 'Accepted',
8
+ 204: 'No Content',
9
+ 301: 'Moved Permanently',
10
+ 302: 'Found',
11
+ 307: 'Temporary Redirect',
12
+ 308: 'Permanent Redirect',
13
+ 400: 'Bad Request',
14
+ 401: 'Unauthorized',
15
+ 403: 'Forbidden',
16
+ 404: 'Not Found',
17
+ 409: 'Conflict',
18
+ 422: 'Unprocessable Entity',
19
+ 429: 'Too Many Requests',
20
+ 500: 'Internal Server Error',
21
+ };
22
+ //# sourceMappingURL=route-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-types.js","sourceRoot":"","sources":["../../src/http/route-types.ts"],"names":[],"mappings":"AA+CA;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,uBAAuB;CACpB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { MiddlewareHandler } from 'hono';
2
+ import type { ValibotSchema } from './route-types.js';
3
+ /**
4
+ * Detect if a query schema includes pagination fields (page, pageSize).
5
+ */
6
+ export declare function hasPaginationFields(schema: ValibotSchema | undefined): boolean;
7
+ /**
8
+ * Create a validation middleware for request validation (422 on failure).
9
+ */
10
+ export declare function createValidationMiddleware(type: 'json' | 'form' | 'query' | 'param', schema: ValibotSchema): MiddlewareHandler;
11
+ //# sourceMappingURL=route-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-validation.d.ts","sourceRoot":"","sources":["../../src/http/route-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAS9E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EACzC,MAAM,EAAE,aAAa,GACpB,iBAAiB,CAMnB"}
@@ -0,0 +1,24 @@
1
+ import { validator } from 'hono-openapi';
2
+ /**
3
+ * Detect if a query schema includes pagination fields (page, pageSize).
4
+ */
5
+ export function hasPaginationFields(schema) {
6
+ if (!schema)
7
+ return false;
8
+ const schemaAny = schema;
9
+ if (schemaAny.entries) {
10
+ return 'page' in schemaAny.entries || 'pageSize' in schemaAny.entries;
11
+ }
12
+ return false;
13
+ }
14
+ /**
15
+ * Create a validation middleware for request validation (422 on failure).
16
+ */
17
+ export function createValidationMiddleware(type, schema) {
18
+ return validator(type, schema, (result, c) => {
19
+ if (!result.success) {
20
+ return c.json({ error: 'Validation failed', issues: result.error }, 422);
21
+ }
22
+ });
23
+ }
24
+ //# sourceMappingURL=route-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-validation.js","sourceRoot":"","sources":["../../src/http/route-validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAiC;IACnE,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,MAAM,SAAS,GAAG,MAA+C,CAAC;IAClE,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,MAAM,IAAI,SAAS,CAAC,OAAO,IAAI,UAAU,IAAI,SAAS,CAAC,OAAO,CAAC;IACxE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAyC,EACzC,MAAqB;IAErB,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,MAA6C,EAAE,CAAU,EAAE,EAAE;QAC3F,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,54 +2,16 @@
2
2
  * Glasswork - A transparent, serverless-optimized web framework for building
3
3
  * OpenAPI-compliant REST APIs.
4
4
  *
5
- * Built on Hono, Awilix, and Valibot.
5
+ * The root entry re-exports core and HTTP primitives. Optional subsystems
6
+ * (auth, email, jobs, uploads, list-query, observability) are available
7
+ * via subpath imports: `glasswork/auth`, `glasswork/email`, etc.
6
8
  *
7
9
  * @packageDocumentation
8
10
  */
9
11
  export type { AwilixContainer } from 'awilix';
10
- export { type ErrorHandler, Hono, type MiddlewareHandler } from 'hono';
12
+ export type { ErrorHandler, MiddlewareHandler } from 'hono';
13
+ export { Hono } from 'hono';
11
14
  export type { OpenAPIV3 } from 'openapi-types';
12
- export type { AuthContext, AuthProvider, AuthSession, AuthUser, BetterAuthClient, BetterAuthProviderConfig, InferAbility, } from './auth/index.js';
13
- export { assertCan, can, createAbilityFactory, createAuthMiddleware, createBetterAuthProvider, defineRoleAbilities, subject, } from './auth/index.js';
14
- export { type Config, type ConfigOptions, type ConfigProvider, ConfigValidationException, createConfig, type DotenvProviderOptions, dotenvProvider, type EnvProviderOptions, envProvider, objectProvider, parseArray, parseBoolean, parseJson, type SsmProviderOptions, ssmProvider, toCamelCase, toSnakeCase, validateConfig, } from './config/index.js';
15
- export { bootstrap } from './core/bootstrap.js';
16
- export { defineModule } from './core/module.js';
17
- export type { BootstrapOptions, BootstrapResult, Constructor, Environment, ExceptionTrackingOptions, LoggerOptions, MiddlewareOptions, ModuleConfig, OnModuleDestroy, OnModuleInit, OpenAPIDocumentation, OpenAPIOptions, OpenAPIProcessorContext, OpenAPIResponseObject, OpenAPIResponseProcessor, ProviderConfig, RateLimitOptions, RateLimitStorage, RouteConfigExtensions, RouteHandlers, ServiceScope, } from './core/types.js';
18
- export { createErrorHandler, defaultErrorHandler } from './http/error-handler.js';
19
- export { type ErrorResponse, ErrorResponseDto, type ValidationErrorResponse, ValidationErrorResponseDto, type ValidationIssue, ValidationIssueDto, } from './http/error-response.dto.js';
20
- export { BadGatewayException, BadRequestException, ConflictException, DomainException, type DomainExceptionOptions, ForbiddenException, GatewayTimeoutException, GoneException, InternalServerErrorException, LockedException, MethodNotAllowedException, NotFoundException, NotImplementedException, PayloadTooLargeException, PreconditionFailedException, RequestTimeoutException, ServiceUnavailableException, TooManyRequestsException, UnauthorizedException, UnprocessableEntityException, UnsupportedMediaTypeException, ValidationException, } from './http/errors.js';
21
- export type { BoundRouteFunction, RouteConfig, RouteContext, RouteFactory, RouteOpenAPIOptions, ValibotSchema, } from './http/route-helpers.js';
22
- export { createRoutes, route } from './http/route-helpers.js';
23
- export type { AnyJobDefinition, Duration, EnqueueResult, EventBridgeSchedulerConfig, JobContext, JobDefinition, JobHandler, JobMessage, JobServiceConfig, JobServiceHooks, MockEnqueuedJob, QueueDriver, RetryConfig, SchedulerConfig, SQSDriverConfig, } from './jobs/index.js';
24
- export { bootstrapWorker, createJobRegistry, createSchedulerHandler, defineJob, definePeriodicJob, InvalidJobPayloadError, JobRegistry, JobService, MockQueueDriver, PayloadTooLargeError, PermanentJobError, RetryExhaustedError, SQSQueueDriver, TransientJobError, } from './jobs/index.js';
25
- export { type CaslAccessibleBy, registerCasl, withCaslScope } from './list-query/casl.js';
26
- export type { AggregationConfig, AggregationResult, AggregationType, FieldPath, FilterOperator, ParsedFilter, ParsedQueryParams, ParsedSort, PrismaAggregationParams, PrismaListParams, RawQueryParams, SchemaValidationConfig, SearchFieldInput, SortDirection, ValidatedListParams, } from './list-query/index.js';
27
- export { booleanFilterSchema, createFilterSchema, createListQuery, createSortSchema, dateFilterSchema, enumFilterSchema, type ListQueryBuilder, type ListQueryConfig, ListQuerySchema, numberFilterSchema, type PaginatedResult, relationFilterSchema, sortDirectionSchema, stringFilterSchema, } from './list-query/index.js';
28
- export { createRateLimitMiddleware } from './middleware/rate-limit.js';
29
- export { defaultOpenAPIComponents } from './openapi/defaults.js';
30
- export { configureOpenAPI } from './openapi/openapi.js';
31
- export { applyProcessors, createBuiltinProcessors, createCorsHeadersProcessor, createRateLimitHeadersProcessor, paginationHeadersProcessor, responseHeadersProcessor, } from './openapi/openapi-processors.js';
32
- export { deepMerge } from './utils/deep-merge.js';
33
- export { isDevelopment, isLambda, isProduction, isTest } from './utils/environment.js';
34
- export { getClientIp } from './utils/get-client-ip.js';
35
- export type { Logger } from './utils/logger.js';
36
- export { createLogger, createPlainLogger, defaultLogger } from './utils/logger.js';
37
- export { omit } from './utils/omit.js';
38
- export { pick } from './utils/pick.js';
39
- export type { AcceptPrismaTypes, PrismaDecimalLike, SerializationConfig, SerializedTypes, TypeTransformer, } from './utils/serialize-prisma-types.js';
40
- export { defaultConfig, serializePrismaTypes } from './utils/serialize-prisma-types.js';
41
- export { type CloudWatchClientLike, type CloudWatchTrackerOptions, createCloudWatchTracker, createConsoleTracker, createExceptionTrackingMiddleware, defaultTrackStatusCodes, type ExceptionTracker, type ExceptionTrackingConfig, shouldTrackException, } from './observability/exception-tracking.js';
42
- export { type ContextAwarePinoOptions, createContextAwarePinoLogger, createPinoHttpMiddleware, lambdaPinoConfig, type PinoLogger, } from './observability/pino-logger.js';
43
- export { getRequestContext, getRequestId, type RequestContext, setRequestContextValue, setRequestUser, } from './observability/request-context.js';
44
- export { type CompiledTemplate, type CompileOptions, type CompileResult, type CompilerOptions, compile as compileEmailTemplate, compileTemplates, extractTypes as extractTemplateTypes, generateInterface as generateTemplateInterface, type InferredType as TemplateInferredType, type Token as TemplateToken, tokenize as tokenizeTemplate, } from './email/compiler/index.js';
45
- export { type EmailConfigInput, EmailConfigSchema, type MockTransportConfigInput, MockTransportConfigSchema, type SESTransportConfigInput, SESTransportConfigSchema, type SMTPTransportConfigInput, SMTPTransportConfigSchema, type TransportConfigInput, TransportConfigSchema, validateEmailConfig, } from './email/config.js';
46
- export { EmailService, type SendOptions } from './email/email-service.js';
47
- export { createTemplateRegistry, type TemplateDefinition, TemplateRegistry, type TemplateRenderFn, } from './email/template-registry.js';
48
- export { type SendTemplateOptions, TemplatedEmailService, } from './email/templated-email-service.js';
49
- export { MockTransport, type StoredEmail } from './email/transports/mock-transport.js';
50
- export { SESTransport } from './email/transports/ses-transport.js';
51
- export type { EmailAttachment, EmailConfig, EmailMessage, EmailModuleOptions, EmailResult, EmailTransport, OnSentHook, SESTransportConfig, SMTPTransportConfig, } from './email/types.js';
52
- export { type BouncedEvent, type ComplaintEvent, type CreateWebhookHandlerOptions, clearCertCache, createSESWebhookHandler, type DeliveredEvent, type HandleSubscriptionOptions, handleSNSSubscription, parseSESNotification, parseSNSMessage, type SESBounceNotification, type SESComplaintNotification, type SESDeliveryNotification, type SESEvent, type SESNotification, type SESWebhookHandlers, type SNSMessage, type VerifySignatureOptions, verifySNSSignature, } from './email/webhooks/index.js';
53
- export type { SignedDownloadUrlResponse, SignedUrlResponse, StreamFileResult, UploadFileConfig, UploadPathConfig, UploadsServiceConfig, } from './uploads/index.js';
54
- export { assertUploadPathOwnership, createUploadConfig, fileNameWithExtension, sanitizedFileName, UploadsService, } from './uploads/index.js';
15
+ export * from './core/index.js';
16
+ export { applyProcessors, BadGatewayException, BadRequestException, type BoundRouteFunction, ConflictException, configureOpenAPI, createBuiltinProcessors, createCorsHeadersProcessor, createErrorHandler, createRateLimitHeadersProcessor, createRateLimitMiddleware, createRoutes, DomainException, type DomainExceptionOptions, defaultErrorHandler, defaultOpenAPIComponents, type ErrorResponse, ErrorResponseDto, ForbiddenException, GatewayTimeoutException, GoneException, InternalServerErrorException, LockedException, MethodNotAllowedException, NotFoundException, NotImplementedException, PayloadTooLargeException, PreconditionFailedException, paginationHeadersProcessor, RequestTimeoutException, type RouteConfig, type RouteContext, type RouteFactory, type RouteOpenAPIOptions, responseHeadersProcessor, route, ServiceUnavailableException, TooManyRequestsException, UnauthorizedException, UnprocessableEntityException, UnsupportedMediaTypeException, type ValibotSchema, type ValidationErrorResponse, ValidationErrorResponseDto, ValidationException, type ValidationIssue, ValidationIssueDto, } from './http/index.js';
55
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,EAClB,+BAA+B,EAC/B,yBAAyB,EACzB,YAAY,EACZ,eAAe,EACf,KAAK,sBAAsB,EAC3B,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,aAAa,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,EACb,4BAA4B,EAC5B,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,wBAAwB,EACxB,KAAK,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,EAC7B,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,0BAA0B,EAC1B,mBAAmB,EACnB,KAAK,eAAe,EACpB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -2,73 +2,13 @@
2
2
  * Glasswork - A transparent, serverless-optimized web framework for building
3
3
  * OpenAPI-compliant REST APIs.
4
4
  *
5
- * Built on Hono, Awilix, and Valibot.
5
+ * The root entry re-exports core and HTTP primitives. Optional subsystems
6
+ * (auth, email, jobs, uploads, list-query, observability) are available
7
+ * via subpath imports: `glasswork/auth`, `glasswork/email`, etc.
6
8
  *
7
9
  * @packageDocumentation
8
10
  */
9
11
  export { Hono } from 'hono';
10
- // Auth
11
- export { assertCan, can, createAbilityFactory, createAuthMiddleware, createBetterAuthProvider, defineRoleAbilities, subject, } from './auth/index.js';
12
- // Configuration
13
- export { ConfigValidationException, createConfig, dotenvProvider, envProvider, objectProvider, parseArray, parseBoolean, parseJson, ssmProvider, toCamelCase, toSnakeCase, validateConfig, } from './config/index.js';
14
- // Core framework
15
- export { bootstrap } from './core/bootstrap.js';
16
- export { defineModule } from './core/module.js';
17
- // HTTP/Routing
18
- export { createErrorHandler, defaultErrorHandler } from './http/error-handler.js';
19
- export { ErrorResponseDto, ValidationErrorResponseDto, ValidationIssueDto, } from './http/error-response.dto.js';
20
- export { BadGatewayException, BadRequestException, ConflictException, DomainException, ForbiddenException, GatewayTimeoutException, GoneException, InternalServerErrorException, LockedException, MethodNotAllowedException, NotFoundException, NotImplementedException, PayloadTooLargeException, PreconditionFailedException, RequestTimeoutException, ServiceUnavailableException, TooManyRequestsException, UnauthorizedException, UnprocessableEntityException, UnsupportedMediaTypeException, ValidationException, } from './http/errors.js';
21
- export { createRoutes, route } from './http/route-helpers.js';
22
- // Jobs
23
- export { bootstrapWorker, createJobRegistry, createSchedulerHandler, defineJob, definePeriodicJob, InvalidJobPayloadError, JobRegistry, JobService, MockQueueDriver, PayloadTooLargeError, PermanentJobError, RetryExhaustedError, SQSQueueDriver, TransientJobError, } from './jobs/index.js';
24
- // Optional CASL integration
25
- export { registerCasl, withCaslScope } from './list-query/casl.js';
26
- // List Query (Prisma filtering/sorting/pagination)
27
- export { booleanFilterSchema, createFilterSchema, createListQuery, createSortSchema, dateFilterSchema, enumFilterSchema, ListQuerySchema, numberFilterSchema, relationFilterSchema, sortDirectionSchema, stringFilterSchema, } from './list-query/index.js';
28
- // Middleware
29
- export { createRateLimitMiddleware } from './middleware/rate-limit.js';
30
- // OpenAPI
31
- export { defaultOpenAPIComponents } from './openapi/defaults.js';
32
- export { configureOpenAPI } from './openapi/openapi.js';
33
- export { applyProcessors, createBuiltinProcessors, createCorsHeadersProcessor, createRateLimitHeadersProcessor, paginationHeadersProcessor, responseHeadersProcessor, } from './openapi/openapi-processors.js';
34
- // Utilities
35
- export { deepMerge } from './utils/deep-merge.js';
36
- export { isDevelopment, isLambda, isProduction, isTest } from './utils/environment.js';
37
- export { getClientIp } from './utils/get-client-ip.js';
38
- export { createLogger, createPlainLogger, defaultLogger } from './utils/logger.js';
39
- export { omit } from './utils/omit.js';
40
- export { pick } from './utils/pick.js';
41
- export { defaultConfig, serializePrismaTypes } from './utils/serialize-prisma-types.js';
42
- // ============================================================================
43
- // Observability
44
- // ============================================================================
45
- // Exception Tracking
46
- export { createCloudWatchTracker, createConsoleTracker, createExceptionTrackingMiddleware, defaultTrackStatusCodes, shouldTrackException, } from './observability/exception-tracking.js';
47
- // Pino Logger Integration
48
- export { createContextAwarePinoLogger, createPinoHttpMiddleware, lambdaPinoConfig, } from './observability/pino-logger.js';
49
- // Request Context (AsyncLocalStorage-based)
50
- export { getRequestContext, getRequestId, setRequestContextValue, setRequestUser, } from './observability/request-context.js';
51
- // ============================================================================
52
- // Email
53
- // ============================================================================
54
- // Template compiler (for build-time usage)
55
- export { compile as compileEmailTemplate, compileTemplates, extractTypes as extractTemplateTypes, generateInterface as generateTemplateInterface, tokenize as tokenizeTemplate, } from './email/compiler/index.js';
56
- // Configuration schemas
57
- export { EmailConfigSchema, MockTransportConfigSchema, SESTransportConfigSchema, SMTPTransportConfigSchema, TransportConfigSchema, validateEmailConfig, } from './email/config.js';
58
- export { EmailService } from './email/email-service.js';
59
- // Template registry
60
- export { createTemplateRegistry, TemplateRegistry, } from './email/template-registry.js';
61
- export { TemplatedEmailService, } from './email/templated-email-service.js';
62
- export { MockTransport } from './email/transports/mock-transport.js';
63
- // Transports
64
- export { SESTransport } from './email/transports/ses-transport.js';
65
- // Webhook handlers for SES delivery tracking
66
- export { clearCertCache,
67
- // Handler factory
68
- createSESWebhookHandler, handleSNSSubscription,
69
- // Parsers
70
- parseSESNotification, parseSNSMessage,
71
- // Middleware
72
- verifySNSSignature, } from './email/webhooks/index.js';
73
- export { assertUploadPathOwnership, createUploadConfig, fileNameWithExtension, sanitizedFileName, UploadsService, } from './uploads/index.js';
12
+ export * from './core/index.js';
13
+ export { applyProcessors, BadGatewayException, BadRequestException, ConflictException, configureOpenAPI, createBuiltinProcessors, createCorsHeadersProcessor, createErrorHandler, createRateLimitHeadersProcessor, createRateLimitMiddleware, createRoutes, DomainException, defaultErrorHandler, defaultOpenAPIComponents, ErrorResponseDto, ForbiddenException, GatewayTimeoutException, GoneException, InternalServerErrorException, LockedException, MethodNotAllowedException, NotFoundException, NotImplementedException, PayloadTooLargeException, PreconditionFailedException, paginationHeadersProcessor, RequestTimeoutException, responseHeadersProcessor, route, ServiceUnavailableException, TooManyRequestsException, UnauthorizedException, UnprocessableEntityException, UnsupportedMediaTypeException, ValidationErrorResponseDto, ValidationException, ValidationIssueDto, } from './http/index.js';
74
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EAEnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,EAClB,+BAA+B,EAC/B,yBAAyB,EACzB,YAAY,EACZ,eAAe,EAEf,mBAAmB,EACnB,wBAAwB,EAExB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,EACb,4BAA4B,EAC5B,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EAKvB,wBAAwB,EACxB,KAAK,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,EAG7B,0BAA0B,EAC1B,mBAAmB,EAEnB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"eventbridge-scheduler-driver.d.ts","sourceRoot":"","sources":["../../../src/jobs/drivers/eventbridge-scheduler-driver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO7D,MAAM,WAAW,0BAA0B;IACzC,iBAAiB;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,0BAA0B;IAC1B,WAAW,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,0BAA0B;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAgC;gBAEjB,MAAM,EAAE,0BAA0B;IAE/D;;OAEG;YACW,SAAS;IAWvB;;;;;;;;OAQG;IACG,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAsDrE;;;;OAIG;IACG,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjD;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAwBtB"}
1
+ {"version":3,"file":"eventbridge-scheduler-driver.d.ts","sourceRoot":"","sources":["../../../src/jobs/drivers/eventbridge-scheduler-driver.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG7D,MAAM,WAAW,0BAA0B;IACzC,iBAAiB;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,0BAA0B;IAC1B,WAAW,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,0BAA0B;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAoC;gBAErB,MAAM,EAAE,0BAA0B;IAE/D;;OAEG;YACW,SAAS;IAUvB;;;;;;;;OAQG;IACG,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAoDrE;;;;OAIG;IACG,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAwBtB"}
@@ -1,3 +1,4 @@
1
+ import { CreateScheduleCommand, DeleteScheduleCommand, SchedulerClient, } from '@aws-sdk/client-scheduler';
1
2
  import { generateJobId } from '../utils.js';
2
3
  /**
3
4
  * EventBridge Scheduler driver for scheduling jobs with delays longer than 15 minutes.
@@ -16,7 +17,6 @@ export class EventBridgeSchedulerDriver {
16
17
  */
17
18
  async getClient() {
18
19
  if (!this.client) {
19
- const { SchedulerClient } = await import('@aws-sdk/client-scheduler');
20
20
  this.client = new SchedulerClient({
21
21
  region: this.config.region,
22
22
  ...(this.config.endpoint && { endpoint: this.config.endpoint }),
@@ -35,7 +35,6 @@ export class EventBridgeSchedulerDriver {
35
35
  */
36
36
  async scheduleAt(config) {
37
37
  const client = await this.getClient();
38
- const { CreateScheduleCommand } = await import('@aws-sdk/client-scheduler');
39
38
  const jobId = config.message.jobId ?? generateJobId();
40
39
  const scheduleName = `glasswork-${jobId}`;
41
40
  // Format: at(yyyy-mm-ddThh:mm:ss)
@@ -86,7 +85,6 @@ export class EventBridgeSchedulerDriver {
86
85
  */
87
86
  async cancel(scheduleName) {
88
87
  const client = await this.getClient();
89
- const { DeleteScheduleCommand } = await import('@aws-sdk/client-scheduler');
90
88
  const command = new DeleteScheduleCommand({
91
89
  Name: scheduleName,
92
90
  GroupName: this.config.scheduleGroupName ?? 'default',