glasswork 0.13.3 → 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/CHANGELOG.md +69 -0
- package/README.md +6 -2
- package/dist/auth/abilities.d.ts +9 -6
- package/dist/auth/abilities.d.ts.map +1 -1
- package/dist/auth/abilities.js +15 -19
- package/dist/auth/abilities.js.map +1 -1
- package/dist/auth/assert.d.ts +3 -3
- package/dist/auth/assert.d.ts.map +1 -1
- package/dist/auth/casl-bridge.d.ts +19 -0
- package/dist/auth/casl-bridge.d.ts.map +1 -0
- package/dist/auth/casl-bridge.js +29 -0
- package/dist/auth/casl-bridge.js.map +1 -0
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/middleware.d.ts +3 -3
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +2 -2
- package/dist/auth/middleware.js.map +1 -1
- package/dist/auth/types.d.ts +2 -2
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +1 -1
- package/dist/core/bootstrap.d.ts +0 -17
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/bootstrap.js +4 -240
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/index.d.ts +19 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +15 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lifecycle.d.ts +7 -0
- package/dist/core/lifecycle.d.ts.map +1 -0
- package/dist/core/lifecycle.js +28 -0
- package/dist/core/lifecycle.js.map +1 -0
- package/dist/core/module-graph.d.ts +21 -0
- package/dist/core/module-graph.d.ts.map +1 -0
- package/dist/core/module-graph.js +169 -0
- package/dist/core/module-graph.js.map +1 -0
- package/dist/core/route-factory.d.ts +20 -0
- package/dist/core/route-factory.d.ts.map +1 -0
- package/dist/core/route-factory.js +2 -0
- package/dist/core/route-factory.js.map +1 -0
- package/dist/core/types.d.ts +4 -14
- package/dist/core/types.d.ts.map +1 -1
- package/dist/email/compiler/compile-templates.d.ts +3 -8
- package/dist/email/compiler/compile-templates.d.ts.map +1 -1
- package/dist/email/compiler/compile-templates.js +3 -3
- package/dist/email/compiler/compile-templates.js.map +1 -1
- package/dist/email/compiler/compiler.d.ts +5 -2
- package/dist/email/compiler/compiler.d.ts.map +1 -1
- package/dist/email/compiler/compiler.js +2 -21
- package/dist/email/compiler/compiler.js.map +1 -1
- package/dist/email/transports/ses-transport.d.ts.map +1 -1
- package/dist/email/transports/ses-transport.js +11 -18
- package/dist/email/transports/ses-transport.js.map +1 -1
- package/dist/email/webhooks/handler-factory.d.ts +1 -1
- package/dist/email/webhooks/handler-factory.js +1 -1
- package/dist/email/webhooks/notification-parser.d.ts +1 -1
- package/dist/email/webhooks/notification-parser.js +1 -1
- package/dist/email/webhooks/signature-verification.d.ts +1 -1
- package/dist/email/webhooks/signature-verification.js +1 -1
- package/dist/email/webhooks/subscription-handler.d.ts +1 -1
- package/dist/email/webhooks/subscription-handler.js +1 -1
- package/dist/hono-context.d.ts +13 -0
- package/dist/hono-context.d.ts.map +1 -0
- package/dist/hono-context.js +2 -0
- package/dist/hono-context.js.map +1 -0
- package/dist/http/index.d.ts +18 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +15 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/route-authorization.d.ts +9 -0
- package/dist/http/route-authorization.d.ts.map +1 -0
- package/dist/http/route-authorization.js +19 -0
- package/dist/http/route-authorization.js.map +1 -0
- package/dist/http/route-context.d.ts +8 -0
- package/dist/http/route-context.d.ts.map +1 -0
- package/dist/http/route-context.js +26 -0
- package/dist/http/route-context.js.map +1 -0
- package/dist/http/route-helpers.d.ts +6 -419
- package/dist/http/route-helpers.d.ts.map +1 -1
- package/dist/http/route-helpers.js +7 -462
- package/dist/http/route-helpers.js.map +1 -1
- package/dist/http/route-openapi-context.d.ts +27 -0
- package/dist/http/route-openapi-context.d.ts.map +1 -0
- package/dist/http/route-openapi-context.js +16 -0
- package/dist/http/route-openapi-context.js.map +1 -0
- package/dist/http/route-openapi.d.ts +5 -0
- package/dist/http/route-openapi.d.ts.map +1 -0
- package/dist/http/route-openapi.js +112 -0
- package/dist/http/route-openapi.js.map +1 -0
- package/dist/http/route-response.d.ts +5 -0
- package/dist/http/route-response.d.ts.map +1 -0
- package/dist/http/route-response.js +78 -0
- package/dist/http/route-response.js.map +1 -0
- package/dist/http/route-types.d.ts +93 -0
- package/dist/http/route-types.d.ts.map +1 -0
- package/dist/http/route-types.js +22 -0
- package/dist/http/route-types.js.map +1 -0
- package/dist/http/route-validation.d.ts +11 -0
- package/dist/http/route-validation.d.ts.map +1 -0
- package/dist/http/route-validation.js +24 -0
- package/dist/http/route-validation.js.map +1 -0
- package/dist/index.d.ts +7 -45
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -65
- package/dist/index.js.map +1 -1
- package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/eventbridge-scheduler-driver.js +1 -3
- package/dist/jobs/drivers/eventbridge-scheduler-driver.js.map +1 -1
- package/dist/jobs/drivers/sqs-driver.d.ts +1 -1
- package/dist/jobs/drivers/sqs-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/sqs-driver.js +1 -3
- package/dist/jobs/drivers/sqs-driver.js.map +1 -1
- package/dist/jobs/worker.d.ts.map +1 -1
- package/dist/jobs/worker.js +3 -14
- package/dist/jobs/worker.js.map +1 -1
- package/dist/list-query/builder.d.ts +26 -5
- package/dist/list-query/builder.d.ts.map +1 -1
- package/dist/list-query/builder.js +13 -9
- package/dist/list-query/builder.js.map +1 -1
- package/dist/list-query/casl.d.ts +20 -4
- package/dist/list-query/casl.d.ts.map +1 -1
- package/dist/list-query/casl.js +3 -12
- package/dist/list-query/casl.js.map +1 -1
- package/dist/list-query/index.d.ts +6 -1
- package/dist/list-query/index.d.ts.map +1 -1
- package/dist/list-query/index.js +4 -1
- package/dist/list-query/index.js.map +1 -1
- package/dist/list-query/list-params.d.ts +17 -0
- package/dist/list-query/list-params.d.ts.map +1 -0
- package/dist/list-query/list-params.js +2 -0
- package/dist/list-query/list-params.js.map +1 -0
- package/dist/list-query/prisma-executor.d.ts +63 -0
- package/dist/list-query/prisma-executor.d.ts.map +1 -0
- package/dist/list-query/prisma-executor.js +88 -0
- package/dist/list-query/prisma-executor.js.map +1 -0
- package/dist/list-query/schema-helpers.d.ts +20 -3
- package/dist/list-query/schema-helpers.d.ts.map +1 -1
- package/dist/list-query/schema-helpers.js +57 -4
- package/dist/list-query/schema-helpers.js.map +1 -1
- package/dist/list-query/sort-field-types.d.ts +21 -0
- package/dist/list-query/sort-field-types.d.ts.map +1 -0
- package/dist/list-query/sort-field-types.js +2 -0
- package/dist/list-query/sort-field-types.js.map +1 -0
- package/dist/list-query/unrestricted-schemas.d.ts +13 -0
- package/dist/list-query/unrestricted-schemas.d.ts.map +1 -0
- package/dist/list-query/unrestricted-schemas.js +9 -0
- package/dist/list-query/unrestricted-schemas.js.map +1 -0
- package/dist/list-query/validator.d.ts +2 -2
- package/dist/list-query/validator.d.ts.map +1 -1
- package/dist/observability/exception-tracking.d.ts +5 -4
- package/dist/observability/exception-tracking.d.ts.map +1 -1
- package/dist/observability/exception-tracking.js +4 -3
- package/dist/observability/exception-tracking.js.map +1 -1
- package/dist/observability/index.d.ts +8 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +8 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/pino-logger.d.ts +3 -3
- package/dist/observability/pino-logger.js +3 -3
- package/dist/observability/request-context.d.ts +4 -4
- package/dist/observability/request-context.js +4 -4
- package/package.json +93 -53
- package/dist/authorization/ability-middleware.d.ts +0 -61
- package/dist/authorization/ability-middleware.d.ts.map +0 -1
- package/dist/authorization/ability-middleware.js +0 -74
- package/dist/authorization/ability-middleware.js.map +0 -1
- package/dist/authorization/index.d.ts +0 -46
- package/dist/authorization/index.d.ts.map +0 -1
- package/dist/authorization/index.js +0 -46
- package/dist/authorization/index.js.map +0 -1
- package/dist/authorization/route-helpers.d.ts +0 -106
- package/dist/authorization/route-helpers.d.ts.map +0 -1
- package/dist/authorization/route-helpers.js +0 -136
- package/dist/authorization/route-helpers.js.map +0 -1
- package/dist/authorization/service-proxy.d.ts +0 -59
- package/dist/authorization/service-proxy.d.ts.map +0 -1
- package/dist/authorization/service-proxy.js +0 -110
- package/dist/authorization/service-proxy.js.map +0 -1
- package/dist/authorization/types.d.ts +0 -58
- package/dist/authorization/types.d.ts.map +0 -1
- package/dist/authorization/types.js +0 -7
- package/dist/authorization/types.js.map +0 -1
- package/dist/hooks/authorization-hook.d.ts +0 -100
- package/dist/hooks/authorization-hook.d.ts.map +0 -1
- package/dist/hooks/authorization-hook.js +0 -93
- package/dist/hooks/authorization-hook.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -54
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -55
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/service-hooks.d.ts +0 -82
- package/dist/hooks/service-hooks.d.ts.map +0 -1
- package/dist/hooks/service-hooks.js +0 -158
- package/dist/hooks/service-hooks.js.map +0 -1
- package/dist/hooks/types.d.ts +0 -151
- package/dist/hooks/types.d.ts.map +0 -1
- package/dist/hooks/types.js +0 -2
- package/dist/hooks/types.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 -83
- package/dist/openapi/hooks.js.map +0 -1
- package/dist/openapi/openapi-transformer.d.ts +0 -13
- package/dist/openapi/openapi-transformer.d.ts.map +0 -1
- package/dist/openapi/openapi-transformer.js +0 -87
- package/dist/openapi/openapi-transformer.js.map +0 -1
- package/dist/utils/pagination.d.ts +0 -48
- package/dist/utils/pagination.d.ts.map +0 -1
- package/dist/utils/pagination.js +0 -42
- package/dist/utils/pagination.js.map +0 -1
- package/dist/utils/serialize-dates.d.ts +0 -27
- package/dist/utils/serialize-dates.d.ts.map +0 -1
- package/dist/utils/serialize-dates.js +0 -39
- package/dist/utils/serialize-dates.js.map +0 -1
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checks if an array of anyOf/oneOf items contains a schema with nullable: true
|
|
3
|
-
*/
|
|
4
|
-
function hasNullableSchema(items) {
|
|
5
|
-
return items.some((item) => typeof item === 'object' && item !== null && 'nullable' in item && item.nullable === true);
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Removes the nullable property from a schema object
|
|
9
|
-
*/
|
|
10
|
-
function removeNullableProperty(item) {
|
|
11
|
-
if (typeof item !== 'object' || item === null) {
|
|
12
|
-
return item;
|
|
13
|
-
}
|
|
14
|
-
const { ...rest } = item;
|
|
15
|
-
delete rest.nullable;
|
|
16
|
-
return rest;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Transforms an anyOf array that contains nullable schemas to include explicit null type
|
|
20
|
-
*/
|
|
21
|
-
function transformAnyOfWithNullable(items) {
|
|
22
|
-
const transformed = items.map(removeNullableProperty).filter((item) => {
|
|
23
|
-
if (typeof item !== 'object' || item === null) {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
return Object.keys(item).length > 0;
|
|
27
|
-
});
|
|
28
|
-
transformed.push({ type: 'null' });
|
|
29
|
-
return transformed;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Transforms a single key-value pair in a schema object
|
|
33
|
-
*/
|
|
34
|
-
function transformSchemaProperty(key, value) {
|
|
35
|
-
if (key === 'anyOf' && Array.isArray(value)) {
|
|
36
|
-
if (hasNullableSchema(value)) {
|
|
37
|
-
return transformAnyOfWithNullable(value).map(transformNullable);
|
|
38
|
-
}
|
|
39
|
-
return transformNullable(value);
|
|
40
|
-
}
|
|
41
|
-
if (key === 'allOf' || key === 'oneOf' || key === 'properties' || key === 'items') {
|
|
42
|
-
return transformNullable(value);
|
|
43
|
-
}
|
|
44
|
-
return transformNullable(value);
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Transforms OpenAPI 3.0-style nullable syntax to OpenAPI 3.1.0-compatible format
|
|
48
|
-
*
|
|
49
|
-
* Converts patterns like:
|
|
50
|
-
* {"anyOf": [{"type": "string", "nullable": true}]}
|
|
51
|
-
* To:
|
|
52
|
-
* {"anyOf": [{"type": "string"}, {"type": "null"}]}
|
|
53
|
-
*
|
|
54
|
-
* @param schema - OpenAPI schema to transform
|
|
55
|
-
* @returns Transformed schema with OpenAPI 3.1.0-compatible nullable syntax
|
|
56
|
-
*/
|
|
57
|
-
function transformNullable(schema) {
|
|
58
|
-
if (schema === null || schema === undefined || typeof schema !== 'object') {
|
|
59
|
-
return schema;
|
|
60
|
-
}
|
|
61
|
-
if (Array.isArray(schema)) {
|
|
62
|
-
return schema.map(transformNullable);
|
|
63
|
-
}
|
|
64
|
-
const obj = schema;
|
|
65
|
-
const result = {};
|
|
66
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
67
|
-
if (key === 'nullable' && value === true) {
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
result[key] = transformSchemaProperty(key, value);
|
|
71
|
-
}
|
|
72
|
-
return result;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Transforms an OpenAPI document to ensure OpenAPI 3.1.0 compatibility
|
|
76
|
-
*
|
|
77
|
-
* This function:
|
|
78
|
-
* - Converts OpenAPI 3.0-style nullable syntax to OpenAPI 3.1.0 format
|
|
79
|
-
* - Recursively processes all schemas in components, paths, and responses
|
|
80
|
-
*
|
|
81
|
-
* @param doc - OpenAPI document to transform
|
|
82
|
-
* @returns Transformed OpenAPI document
|
|
83
|
-
*/
|
|
84
|
-
export function transformOpenAPIDocument(doc) {
|
|
85
|
-
return transformNullable(doc);
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=openapi-transformer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openapi-transformer.js","sourceRoot":"","sources":["../../src/openapi/openapi-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import type { Context } from 'hono';
|
|
2
|
-
/**
|
|
3
|
-
* Pagination input parameters
|
|
4
|
-
*/
|
|
5
|
-
export interface PaginationInput {
|
|
6
|
-
page: number;
|
|
7
|
-
limit: number;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Paginated output structure
|
|
11
|
-
*/
|
|
12
|
-
export interface PaginatedOutput<T> {
|
|
13
|
-
data: T[];
|
|
14
|
-
total: number;
|
|
15
|
-
page: number;
|
|
16
|
-
limit: number;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Execute a paginated query and set response headers.
|
|
20
|
-
*
|
|
21
|
-
* This helper extracts pagination parameters from the query string,
|
|
22
|
-
* executes the provided function, and sets the appropriate response headers.
|
|
23
|
-
*
|
|
24
|
-
* @template T - The type of items in the result
|
|
25
|
-
* @param c - Hono context
|
|
26
|
-
* @param fn - Function that executes the paginated query
|
|
27
|
-
* @returns Array of items (headers are set as side effect)
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* ```typescript
|
|
31
|
-
* router.get('/users', route({
|
|
32
|
-
* paginate: true,
|
|
33
|
-
* handler: async ({ context }) => {
|
|
34
|
-
* return await paginate(context, (p) => userService.getUsers(p));
|
|
35
|
-
* }
|
|
36
|
-
* }));
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
export declare function paginate<T>(c: Context, fn: (p: PaginationInput) => Promise<PaginatedOutput<T>>): Promise<T[]>;
|
|
40
|
-
/**
|
|
41
|
-
* Extract pagination parameters from Hono context.
|
|
42
|
-
*
|
|
43
|
-
* @param c - Hono context
|
|
44
|
-
* @param defaultLimit - Default limit if not provided (default: 100)
|
|
45
|
-
* @returns Pagination input with page and limit
|
|
46
|
-
*/
|
|
47
|
-
export declare function paginationInput(c: Context, defaultLimit?: number): PaginationInput;
|
|
48
|
-
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/utils/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,CAAC,EAAE,OAAO,EACV,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GACtD,OAAO,CAAC,CAAC,EAAE,CAAC,CASd;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,SAAM,GAAG,eAAe,CAI/E"}
|
package/dist/utils/pagination.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Execute a paginated query and set response headers.
|
|
3
|
-
*
|
|
4
|
-
* This helper extracts pagination parameters from the query string,
|
|
5
|
-
* executes the provided function, and sets the appropriate response headers.
|
|
6
|
-
*
|
|
7
|
-
* @template T - The type of items in the result
|
|
8
|
-
* @param c - Hono context
|
|
9
|
-
* @param fn - Function that executes the paginated query
|
|
10
|
-
* @returns Array of items (headers are set as side effect)
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* router.get('/users', route({
|
|
15
|
-
* paginate: true,
|
|
16
|
-
* handler: async ({ context }) => {
|
|
17
|
-
* return await paginate(context, (p) => userService.getUsers(p));
|
|
18
|
-
* }
|
|
19
|
-
* }));
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export async function paginate(c, fn) {
|
|
23
|
-
const pagination = paginationInput(c);
|
|
24
|
-
const result = await fn(pagination);
|
|
25
|
-
c.header('X-Total-Count', result.total.toString());
|
|
26
|
-
c.header('X-Page', result.page.toString());
|
|
27
|
-
c.header('X-Limit', result.limit.toString());
|
|
28
|
-
return result.data;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Extract pagination parameters from Hono context.
|
|
32
|
-
*
|
|
33
|
-
* @param c - Hono context
|
|
34
|
-
* @param defaultLimit - Default limit if not provided (default: 100)
|
|
35
|
-
* @returns Pagination input with page and limit
|
|
36
|
-
*/
|
|
37
|
-
export function paginationInput(c, defaultLimit = 100) {
|
|
38
|
-
const page = Number.parseInt(c.req.query('page') ?? '1', 10);
|
|
39
|
-
const limit = Number.parseInt(c.req.query('limit') ?? defaultLimit.toString(), 10);
|
|
40
|
-
return { page, limit };
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=pagination.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/utils/pagination.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,CAAU,EACV,EAAuD;IAEvD,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC;IAEpC,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,CAAU,EAAE,YAAY,GAAG,GAAG;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACnF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type helper to recursively convert Date fields to string in an object type
|
|
3
|
-
*/
|
|
4
|
-
export type SerializedDates<T> = T extends Date ? string : T extends Array<infer U> ? Array<SerializedDates<U>> : T extends object ? {
|
|
5
|
-
[K in keyof T]: SerializedDates<T[K]>;
|
|
6
|
-
} : T;
|
|
7
|
-
/**
|
|
8
|
-
* Recursively converts all Date objects to ISO 8601 strings in an entity or array of entities.
|
|
9
|
-
*
|
|
10
|
-
* This utility handles the mismatch between Prisma's Date types and API response DTOs
|
|
11
|
-
* that expect string timestamps. It preserves null values and handles nested objects and arrays.
|
|
12
|
-
*
|
|
13
|
-
* @template T - The type of data to transform
|
|
14
|
-
* @param data - The data to transform (object, array, or primitive)
|
|
15
|
-
* @returns The same structure with all Date objects converted to ISO strings
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const ranger = await prisma.ranger.findUnique({
|
|
20
|
-
* where: { id },
|
|
21
|
-
* include: { category: true }
|
|
22
|
-
* });
|
|
23
|
-
* return serializeDates(ranger); // All Date fields → ISO strings
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export declare function serializeDates<T>(data: T): SerializedDates<T>;
|
|
27
|
-
//# sourceMappingURL=serialize-dates.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serialize-dates.d.ts","sourceRoot":"","sources":["../../src/utils/serialize-dates.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAC3C,MAAM,GACN,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACtB,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GACzB,CAAC,SAAS,MAAM,GACd;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACzC,CAAC,CAAC;AAEV;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAsB7D"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recursively converts all Date objects to ISO 8601 strings in an entity or array of entities.
|
|
3
|
-
*
|
|
4
|
-
* This utility handles the mismatch between Prisma's Date types and API response DTOs
|
|
5
|
-
* that expect string timestamps. It preserves null values and handles nested objects and arrays.
|
|
6
|
-
*
|
|
7
|
-
* @template T - The type of data to transform
|
|
8
|
-
* @param data - The data to transform (object, array, or primitive)
|
|
9
|
-
* @returns The same structure with all Date objects converted to ISO strings
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* const ranger = await prisma.ranger.findUnique({
|
|
14
|
-
* where: { id },
|
|
15
|
-
* include: { category: true }
|
|
16
|
-
* });
|
|
17
|
-
* return serializeDates(ranger); // All Date fields → ISO strings
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export function serializeDates(data) {
|
|
21
|
-
if (data === null || data === undefined) {
|
|
22
|
-
return data;
|
|
23
|
-
}
|
|
24
|
-
if (data instanceof Date) {
|
|
25
|
-
return data.toISOString();
|
|
26
|
-
}
|
|
27
|
-
if (Array.isArray(data)) {
|
|
28
|
-
return data.map((item) => serializeDates(item));
|
|
29
|
-
}
|
|
30
|
-
if (typeof data === 'object') {
|
|
31
|
-
const result = {};
|
|
32
|
-
for (const [key, value] of Object.entries(data)) {
|
|
33
|
-
result[key] = serializeDates(value);
|
|
34
|
-
}
|
|
35
|
-
return result;
|
|
36
|
-
}
|
|
37
|
-
return data;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=serialize-dates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serialize-dates.js","sourceRoot":"","sources":["../../src/utils/serialize-dates.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,cAAc,CAAI,IAAO;IACvC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,IAA0B,CAAC;IACpC,CAAC;IAED,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,WAAW,EAAwB,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAuB,CAAC;IACxE,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,MAA4B,CAAC;IACtC,CAAC;IAED,OAAO,IAA0B,CAAC;AACpC,CAAC"}
|