digitaltwin-core 0.14.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.
Files changed (123) hide show
  1. package/README.md +135 -0
  2. package/dist/auth/apisix_parser.d.ts +46 -51
  3. package/dist/auth/apisix_parser.d.ts.map +1 -1
  4. package/dist/auth/apisix_parser.js +62 -86
  5. package/dist/auth/apisix_parser.js.map +1 -1
  6. package/dist/auth/auth_provider.d.ts +118 -0
  7. package/dist/auth/auth_provider.d.ts.map +1 -0
  8. package/dist/auth/auth_provider.js +8 -0
  9. package/dist/auth/auth_provider.js.map +1 -0
  10. package/dist/auth/auth_provider_factory.d.ts +91 -0
  11. package/dist/auth/auth_provider_factory.d.ts.map +1 -0
  12. package/dist/auth/auth_provider_factory.js +146 -0
  13. package/dist/auth/auth_provider_factory.js.map +1 -0
  14. package/dist/auth/index.d.ts +3 -0
  15. package/dist/auth/index.d.ts.map +1 -1
  16. package/dist/auth/index.js +3 -0
  17. package/dist/auth/index.js.map +1 -1
  18. package/dist/auth/providers/gateway_auth_provider.d.ts +78 -0
  19. package/dist/auth/providers/gateway_auth_provider.d.ts.map +1 -0
  20. package/dist/auth/providers/gateway_auth_provider.js +109 -0
  21. package/dist/auth/providers/gateway_auth_provider.js.map +1 -0
  22. package/dist/auth/providers/index.d.ts +4 -0
  23. package/dist/auth/providers/index.d.ts.map +1 -0
  24. package/dist/auth/providers/index.js +4 -0
  25. package/dist/auth/providers/index.js.map +1 -0
  26. package/dist/auth/providers/jwt_auth_provider.d.ts +91 -0
  27. package/dist/auth/providers/jwt_auth_provider.d.ts.map +1 -0
  28. package/dist/auth/providers/jwt_auth_provider.js +204 -0
  29. package/dist/auth/providers/jwt_auth_provider.js.map +1 -0
  30. package/dist/auth/providers/no_auth_provider.d.ts +61 -0
  31. package/dist/auth/providers/no_auth_provider.d.ts.map +1 -0
  32. package/dist/auth/providers/no_auth_provider.js +76 -0
  33. package/dist/auth/providers/no_auth_provider.js.map +1 -0
  34. package/dist/components/assets_manager.d.ts +1 -1
  35. package/dist/components/assets_manager.d.ts.map +1 -1
  36. package/dist/components/assets_manager.js +52 -44
  37. package/dist/components/assets_manager.js.map +1 -1
  38. package/dist/components/collector.d.ts.map +1 -1
  39. package/dist/components/collector.js +30 -18
  40. package/dist/components/collector.js.map +1 -1
  41. package/dist/components/custom_table_manager.d.ts.map +1 -1
  42. package/dist/components/custom_table_manager.js +36 -65
  43. package/dist/components/custom_table_manager.js.map +1 -1
  44. package/dist/components/harvester.d.ts.map +1 -1
  45. package/dist/components/harvester.js +46 -33
  46. package/dist/components/harvester.js.map +1 -1
  47. package/dist/components/tileset_manager.d.ts.map +1 -1
  48. package/dist/components/tileset_manager.js +20 -15
  49. package/dist/components/tileset_manager.js.map +1 -1
  50. package/dist/database/adapters/knex_database_adapter.d.ts +5 -0
  51. package/dist/database/adapters/knex_database_adapter.d.ts.map +1 -1
  52. package/dist/database/adapters/knex_database_adapter.js +116 -34
  53. package/dist/database/adapters/knex_database_adapter.js.map +1 -1
  54. package/dist/database/database_adapter.d.ts +11 -0
  55. package/dist/database/database_adapter.d.ts.map +1 -1
  56. package/dist/database/database_adapter.js.map +1 -1
  57. package/dist/engine/digital_twin_engine.d.ts +48 -6
  58. package/dist/engine/digital_twin_engine.d.ts.map +1 -1
  59. package/dist/engine/digital_twin_engine.js +175 -48
  60. package/dist/engine/digital_twin_engine.js.map +1 -1
  61. package/dist/engine/endpoints.d.ts.map +1 -1
  62. package/dist/engine/endpoints.js +35 -3
  63. package/dist/engine/endpoints.js.map +1 -1
  64. package/dist/engine/error_handler.d.ts +20 -0
  65. package/dist/engine/error_handler.d.ts.map +1 -0
  66. package/dist/engine/error_handler.js +69 -0
  67. package/dist/engine/error_handler.js.map +1 -0
  68. package/dist/engine/health.d.ts +112 -0
  69. package/dist/engine/health.d.ts.map +1 -0
  70. package/dist/engine/health.js +190 -0
  71. package/dist/engine/health.js.map +1 -0
  72. package/dist/engine/scheduler.d.ts.map +1 -1
  73. package/dist/engine/scheduler.js +9 -1
  74. package/dist/engine/scheduler.js.map +1 -1
  75. package/dist/engine/upload_processor.d.ts.map +1 -1
  76. package/dist/engine/upload_processor.js +24 -12
  77. package/dist/engine/upload_processor.js.map +1 -1
  78. package/dist/errors/index.d.ts +94 -0
  79. package/dist/errors/index.d.ts.map +1 -0
  80. package/dist/errors/index.js +149 -0
  81. package/dist/errors/index.js.map +1 -0
  82. package/dist/index.d.ts +6 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +8 -0
  85. package/dist/index.js.map +1 -1
  86. package/dist/storage/adapters/local_storage_service.d.ts +6 -0
  87. package/dist/storage/adapters/local_storage_service.d.ts.map +1 -1
  88. package/dist/storage/adapters/local_storage_service.js +26 -4
  89. package/dist/storage/adapters/local_storage_service.js.map +1 -1
  90. package/dist/storage/adapters/ovh_storage_service.d.ts.map +1 -1
  91. package/dist/storage/adapters/ovh_storage_service.js +5 -6
  92. package/dist/storage/adapters/ovh_storage_service.js.map +1 -1
  93. package/dist/storage/storage_factory.d.ts.map +1 -1
  94. package/dist/storage/storage_factory.js +4 -1
  95. package/dist/storage/storage_factory.js.map +1 -1
  96. package/dist/storage/storage_service.d.ts.map +1 -1
  97. package/dist/storage/storage_service.js +6 -2
  98. package/dist/storage/storage_service.js.map +1 -1
  99. package/dist/utils/graceful_shutdown.d.ts +44 -0
  100. package/dist/utils/graceful_shutdown.d.ts.map +1 -0
  101. package/dist/utils/graceful_shutdown.js +79 -0
  102. package/dist/utils/graceful_shutdown.js.map +1 -0
  103. package/dist/utils/http_responses.d.ts +20 -0
  104. package/dist/utils/http_responses.d.ts.map +1 -1
  105. package/dist/utils/http_responses.js +28 -2
  106. package/dist/utils/http_responses.js.map +1 -1
  107. package/dist/utils/safe_async.d.ts +50 -0
  108. package/dist/utils/safe_async.d.ts.map +1 -0
  109. package/dist/utils/safe_async.js +90 -0
  110. package/dist/utils/safe_async.js.map +1 -0
  111. package/dist/validation/index.d.ts +3 -0
  112. package/dist/validation/index.d.ts.map +1 -0
  113. package/dist/validation/index.js +7 -0
  114. package/dist/validation/index.js.map +1 -0
  115. package/dist/validation/schemas.d.ts +273 -0
  116. package/dist/validation/schemas.d.ts.map +1 -0
  117. package/dist/validation/schemas.js +82 -0
  118. package/dist/validation/schemas.js.map +1 -0
  119. package/dist/validation/validate.d.ts +49 -0
  120. package/dist/validation/validate.d.ts.map +1 -0
  121. package/dist/validation/validate.js +110 -0
  122. package/dist/validation/validate.js.map +1 -0
  123. package/package.json +9 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graceful_shutdown.js","sourceRoot":"","sources":["../../src/utils/graceful_shutdown.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAyB,EAAE,UAA2B,EAAE;IAC1F,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;IAEtG,IAAI,cAAc,GAAG,KAAK,CAAA;IAE1B,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;QACtC,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,CAAC,8CAA8C,MAAM,EAAE,CAAC,CAAA;YAC9D,OAAM;QACV,CAAC;QAED,cAAc,GAAG,IAAI,CAAA;QACrB,MAAM,CAAC,uBAAuB,MAAM,mCAAmC,CAAC,CAAA;QAExE,oCAAoC;QACpC,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,MAAM,CAAC,2CAA2C,CAAC,CAAA;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC,EAAE,OAAO,CAAC,CAAA;QACX,cAAc,CAAC,KAAK,EAAE,CAAA;QAEtB,IAAI,CAAC;YACD,kCAAkC;YAClC,IAAI,UAAU,EAAE,CAAC;gBACb,MAAM,UAAU,EAAE,CAAA;YACtB,CAAC;YAED,kBAAkB;YAClB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAEnB,YAAY,CAAC,cAAc,CAAC,CAAA;YAC5B,MAAM,CAAC,wCAAwC,CAAC,CAAA;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;IACL,CAAC,CAAA;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAA;IAEtD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACrB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACtC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC7B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,0BAA0B;IAC1B,OAAO,GAAG,EAAE;QACR,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QACF,QAAQ,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC,CAAA;AACL,CAAC"}
@@ -16,6 +16,7 @@ export declare const HttpStatus: {
16
16
  readonly UNAUTHORIZED: 401;
17
17
  readonly FORBIDDEN: 403;
18
18
  readonly NOT_FOUND: 404;
19
+ readonly UNPROCESSABLE_ENTITY: 422;
19
20
  readonly INTERNAL_SERVER_ERROR: 500;
20
21
  };
21
22
  export type HttpStatusCode = (typeof HttpStatus)[keyof typeof HttpStatus];
@@ -108,6 +109,25 @@ export declare function forbiddenResponse(message: string): DataResponse;
108
109
  * ```
109
110
  */
110
111
  export declare function notFoundResponse(message?: string): DataResponse;
112
+ /**
113
+ * Creates a validation error response (HTTP 422 Unprocessable Entity).
114
+ *
115
+ * Used when request data fails schema validation.
116
+ *
117
+ * @param message - Validation error message
118
+ * @param errors - Optional array of field-level validation errors
119
+ * @returns DataResponse with status 422
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * return validationErrorResponse('id: must be a positive number')
124
+ * return validationErrorResponse('Validation failed', [{ field: 'id', message: 'must be positive' }])
125
+ * ```
126
+ */
127
+ export declare function validationErrorResponse(message: string, errors?: Array<{
128
+ field: string;
129
+ message: string;
130
+ }>): DataResponse;
111
131
  /**
112
132
  * Creates a plain text response.
113
133
  *
@@ -1 +1 @@
1
- {"version":3,"file":"http_responses.d.ts","sourceRoot":"","sources":["../../src/utils/http_responses.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAE1D;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA;AAEzE;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAMvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAE1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,MAAyC,GAAG,YAAY,CAG7G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAEhE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,MAAkC,GAAG,YAAY,CAE9F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAE/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,MAA6B,GAAG,YAAY,CAErF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAM1E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAYlG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,CAErF"}
1
+ {"version":3,"file":"http_responses.d.ts","sourceRoot":"","sources":["../../src/utils/http_responses.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAG1D;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA;AAEzE;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAMvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAE1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAM3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAEhE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,MAAkC,GAAG,YAAY,CAE9F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAE/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,MAA6B,GAAG,YAAY,CAErF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,YAAY,CAMd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAM1E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAYlG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,CAErF"}
@@ -4,6 +4,7 @@
4
4
  * This module provides helper functions to create standardized DataResponse objects,
5
5
  * reducing boilerplate code in component handlers and ensuring consistent API responses.
6
6
  */
7
+ import { DigitalTwinError } from '../errors/index.js';
7
8
  /**
8
9
  * HTTP status codes commonly used in the Digital Twin framework.
9
10
  */
@@ -15,6 +16,7 @@ export const HttpStatus = {
15
16
  UNAUTHORIZED: 401,
16
17
  FORBIDDEN: 403,
17
18
  NOT_FOUND: 404,
19
+ UNPROCESSABLE_ENTITY: 422,
18
20
  INTERNAL_SERVER_ERROR: 500
19
21
  };
20
22
  /**
@@ -64,9 +66,11 @@ export function successResponse(data) {
64
66
  * return errorResponse('Invalid input', 400)
65
67
  * ```
66
68
  */
67
- export function errorResponse(error, status = HttpStatus.INTERNAL_SERVER_ERROR) {
69
+ export function errorResponse(error, status) {
70
+ // Use statusCode from DigitalTwinError if available
71
+ const statusCode = error instanceof DigitalTwinError ? error.statusCode : (status ?? HttpStatus.INTERNAL_SERVER_ERROR);
68
72
  const message = error instanceof Error ? error.message : String(error);
69
- return jsonResponse(status, { error: message });
73
+ return jsonResponse(statusCode, { error: message });
70
74
  }
71
75
  /**
72
76
  * Creates a 400 Bad Request response.
@@ -125,6 +129,28 @@ export function forbiddenResponse(message) {
125
129
  export function notFoundResponse(message = 'Resource not found') {
126
130
  return jsonResponse(HttpStatus.NOT_FOUND, { error: message });
127
131
  }
132
+ /**
133
+ * Creates a validation error response (HTTP 422 Unprocessable Entity).
134
+ *
135
+ * Used when request data fails schema validation.
136
+ *
137
+ * @param message - Validation error message
138
+ * @param errors - Optional array of field-level validation errors
139
+ * @returns DataResponse with status 422
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * return validationErrorResponse('id: must be a positive number')
144
+ * return validationErrorResponse('Validation failed', [{ field: 'id', message: 'must be positive' }])
145
+ * ```
146
+ */
147
+ export function validationErrorResponse(message, errors) {
148
+ const body = { error: message };
149
+ if (errors) {
150
+ body.errors = errors;
151
+ }
152
+ return jsonResponse(HttpStatus.UNPROCESSABLE_ENTITY, body);
153
+ }
128
154
  /**
129
155
  * Creates a plain text response.
130
156
  *
@@ -1 +1 @@
1
- {"version":3,"file":"http_responses.js","sourceRoot":"","sources":["../../src/utils/http_responses.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,EAAE,EAAE,GAAG;IACP,OAAO,EAAE,GAAG;IACZ,YAAY,EAAE,GAAG;IACjB,WAAW,EAAE,GAAG;IAChB,YAAY,EAAE,GAAG;IACjB,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,GAAG;IACd,qBAAqB,EAAE,GAAG;CACpB,CAAA;AAIV;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAY;IACrD,OAAO;QACH,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC7B,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAClD,CAAA;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IACxC,OAAO,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;AAC5C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,SAAiB,UAAU,CAAC,qBAAqB;IAC3F,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtE,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;AACnD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAC9C,OAAO,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;AACnE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB,yBAAyB;IAC5E,OAAO,YAAY,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;AACpE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC7C,OAAO,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;AACjE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB,oBAAoB;IACnE,OAAO,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;AACjE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAe;IACxD,OAAO;QACH,MAAM;QACN,OAAO;QACP,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;KAC5C,CAAA;AACL,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,WAAmB,EAAE,QAAiB;IAChF,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,WAAW,EAAE,CAAA;IAEvE,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,qBAAqB,CAAC,GAAG,yBAAyB,QAAQ,GAAG,CAAA;IACzE,CAAC;IAED,OAAO;QACH,MAAM,EAAE,UAAU,CAAC,EAAE;QACrB,OAAO;QACP,OAAO;KACV,CAAA;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,OAAkB;IACnE,OAAO,YAAY,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;AACtE,CAAC"}
1
+ {"version":3,"file":"http_responses.js","sourceRoot":"","sources":["../../src/utils/http_responses.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Utilities for safe async operations
3
+ * Provides error handling for non-critical operations like cleanup
4
+ */
5
+ import { Logger } from './logger.js';
6
+ /**
7
+ * Executes an async operation with error logging
8
+ * For cleanup operations where errors should not block execution
9
+ *
10
+ * @param operation - The async function to execute
11
+ * @param context - Description of the operation for logging
12
+ * @param logger - Optional logger instance
13
+ * @returns The result of the operation, or undefined if it failed
14
+ */
15
+ export declare function safeAsync<T>(operation: () => Promise<T>, context: string, logger?: Logger): Promise<T | undefined>;
16
+ /**
17
+ * Executes an async operation and returns a Result tuple
18
+ * Useful when you need to know if the operation failed but continue execution
19
+ *
20
+ * @param operation - The async function to execute
21
+ * @returns [result, undefined] on success, [undefined, error] on failure
22
+ */
23
+ export declare function tryAsync<T>(operation: () => Promise<T>): Promise<[T, undefined] | [undefined, Error]>;
24
+ /**
25
+ * Executes multiple cleanup operations in parallel, logging any failures
26
+ * All operations will be attempted even if some fail
27
+ *
28
+ * @param operations - Array of cleanup operations with context
29
+ * @param logger - Optional logger instance
30
+ */
31
+ export declare function safeCleanup(operations: Array<{
32
+ operation: () => Promise<unknown>;
33
+ context: string;
34
+ }>, logger?: Logger): Promise<void>;
35
+ /**
36
+ * Retries an async operation with exponential backoff
37
+ *
38
+ * @param operation - The async function to execute
39
+ * @param options - Retry options
40
+ * @returns The result of the operation
41
+ * @throws The last error if all retries fail
42
+ */
43
+ export declare function retryAsync<T>(operation: () => Promise<T>, options?: {
44
+ maxRetries?: number;
45
+ initialDelayMs?: number;
46
+ maxDelayMs?: number;
47
+ context?: string;
48
+ logger?: Logger;
49
+ }): Promise<T>;
50
+ //# sourceMappingURL=safe_async.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe_async.d.ts","sourceRoot":"","sources":["../../src/utils/safe_async.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIpC;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC7B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CASxB;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAQ3G;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC7B,UAAU,EAAE,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAC9B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE;IACL,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CACb,GACP,OAAO,CAAC,CAAC,CAAC,CAuBZ"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Utilities for safe async operations
3
+ * Provides error handling for non-critical operations like cleanup
4
+ */
5
+ import { Logger } from './logger.js';
6
+ const defaultLogger = new Logger('SafeAsync');
7
+ /**
8
+ * Executes an async operation with error logging
9
+ * For cleanup operations where errors should not block execution
10
+ *
11
+ * @param operation - The async function to execute
12
+ * @param context - Description of the operation for logging
13
+ * @param logger - Optional logger instance
14
+ * @returns The result of the operation, or undefined if it failed
15
+ */
16
+ export async function safeAsync(operation, context, logger) {
17
+ try {
18
+ return await operation();
19
+ }
20
+ catch (error) {
21
+ const log = logger ?? defaultLogger;
22
+ const message = error instanceof Error ? error.message : String(error);
23
+ log.warn(`Non-critical error in ${context}: ${message}`);
24
+ return undefined;
25
+ }
26
+ }
27
+ /**
28
+ * Executes an async operation and returns a Result tuple
29
+ * Useful when you need to know if the operation failed but continue execution
30
+ *
31
+ * @param operation - The async function to execute
32
+ * @returns [result, undefined] on success, [undefined, error] on failure
33
+ */
34
+ export async function tryAsync(operation) {
35
+ try {
36
+ const result = await operation();
37
+ return [result, undefined];
38
+ }
39
+ catch (error) {
40
+ const err = error instanceof Error ? error : new Error(String(error));
41
+ return [undefined, err];
42
+ }
43
+ }
44
+ /**
45
+ * Executes multiple cleanup operations in parallel, logging any failures
46
+ * All operations will be attempted even if some fail
47
+ *
48
+ * @param operations - Array of cleanup operations with context
49
+ * @param logger - Optional logger instance
50
+ */
51
+ export async function safeCleanup(operations, logger) {
52
+ const log = logger ?? defaultLogger;
53
+ const results = await Promise.allSettled(operations.map(({ operation, context }) => operation().catch(error => {
54
+ const message = error instanceof Error ? error.message : String(error);
55
+ log.warn(`Cleanup failed for ${context}: ${message}`);
56
+ throw error;
57
+ })));
58
+ const failures = results.filter(r => r.status === 'rejected').length;
59
+ if (failures > 0) {
60
+ log.warn(`${failures}/${operations.length} cleanup operations failed`);
61
+ }
62
+ }
63
+ /**
64
+ * Retries an async operation with exponential backoff
65
+ *
66
+ * @param operation - The async function to execute
67
+ * @param options - Retry options
68
+ * @returns The result of the operation
69
+ * @throws The last error if all retries fail
70
+ */
71
+ export async function retryAsync(operation, options = {}) {
72
+ const { maxRetries = 3, initialDelayMs = 100, maxDelayMs = 5000, context = 'operation', logger } = options;
73
+ const log = logger ?? defaultLogger;
74
+ let lastError;
75
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
76
+ try {
77
+ return await operation();
78
+ }
79
+ catch (error) {
80
+ lastError = error instanceof Error ? error : new Error(String(error));
81
+ if (attempt < maxRetries) {
82
+ const delay = Math.min(initialDelayMs * Math.pow(2, attempt), maxDelayMs);
83
+ log.warn(`${context} failed (attempt ${attempt + 1}/${maxRetries + 1}), retrying in ${delay}ms: ${lastError.message}`);
84
+ await new Promise(resolve => setTimeout(resolve, delay));
85
+ }
86
+ }
87
+ }
88
+ throw lastError;
89
+ }
90
+ //# sourceMappingURL=safe_async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe_async.js","sourceRoot":"","sources":["../../src/utils/safe_async.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { paginationSchema, idParamSchema, assetUploadSchema, assetUpdateSchema, assetBatchUploadSchema, customRecordCreateSchema, customRecordUpdateSchema, dateRangeQuerySchema, validatePagination, validateIdParam, validateAssetUpload, validateAssetUpdate, validateAssetBatchUpload, validateCustomRecordCreate, validateCustomRecordUpdate, validateDateRangeQuery } from './schemas.js';
2
+ export { validateData, safeValidate, validateQuery, validateParams, vine } from './validate.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EAEpB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACzB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,7 @@
1
+ // Validation schemas
2
+ export { paginationSchema, idParamSchema, assetUploadSchema, assetUpdateSchema, assetBatchUploadSchema, customRecordCreateSchema, customRecordUpdateSchema, dateRangeQuerySchema,
3
+ // Pre-compiled validators
4
+ validatePagination, validateIdParam, validateAssetUpload, validateAssetUpdate, validateAssetBatchUpload, validateCustomRecordCreate, validateCustomRecordUpdate, validateDateRangeQuery } from './schemas.js';
5
+ // Validation helpers
6
+ export { validateData, safeValidate, validateQuery, validateParams, vine } from './validate.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EACH,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB;AACpB,0BAA0B;AAC1B,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACzB,MAAM,cAAc,CAAA;AAErB,qBAAqB;AACrB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,273 @@
1
+ /**
2
+ * Pagination query parameters schema
3
+ */
4
+ export declare const paginationSchema: import("@vinejs/vine").VineObject<{
5
+ limit: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
6
+ offset: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
7
+ }, {
8
+ limit?: string | number | null | undefined;
9
+ offset?: string | number | null | undefined;
10
+ }, {
11
+ limit?: number | undefined;
12
+ offset?: number | undefined;
13
+ }, {
14
+ limit?: number | undefined;
15
+ offset?: number | undefined;
16
+ }>;
17
+ /**
18
+ * ID parameter schema
19
+ */
20
+ export declare const idParamSchema: import("@vinejs/vine").VineObject<{
21
+ id: import("@vinejs/vine").VineNumber;
22
+ }, {
23
+ id: string | number;
24
+ }, {
25
+ id: number;
26
+ }, {
27
+ id: number;
28
+ }>;
29
+ /**
30
+ * Asset upload body schema
31
+ */
32
+ export declare const assetUploadSchema: import("@vinejs/vine").VineObject<{
33
+ description: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
34
+ source: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
35
+ is_public: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineBoolean>;
36
+ }, {
37
+ description?: string | null | undefined;
38
+ source?: string | null | undefined;
39
+ is_public?: string | number | boolean | null | undefined;
40
+ }, {
41
+ description?: string | undefined;
42
+ source?: string | undefined;
43
+ is_public?: boolean | undefined;
44
+ }, {
45
+ description?: string | undefined;
46
+ source?: string | undefined;
47
+ isPublic?: boolean | undefined;
48
+ }>;
49
+ /**
50
+ * Asset update body schema
51
+ */
52
+ export declare const assetUpdateSchema: import("@vinejs/vine").VineObject<{
53
+ description: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
54
+ source: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
55
+ is_public: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineBoolean>;
56
+ }, {
57
+ description?: string | null | undefined;
58
+ source?: string | null | undefined;
59
+ is_public?: string | number | boolean | null | undefined;
60
+ }, {
61
+ description?: string | undefined;
62
+ source?: string | undefined;
63
+ is_public?: boolean | undefined;
64
+ }, {
65
+ description?: string | undefined;
66
+ source?: string | undefined;
67
+ isPublic?: boolean | undefined;
68
+ }>;
69
+ /**
70
+ * Batch upload body schema
71
+ */
72
+ export declare const assetBatchUploadSchema: import("@vinejs/vine").VineObject<{
73
+ assets: import("@vinejs/vine").OptionalModifier<import("@vinejs/vine").VineArray<import("@vinejs/vine").VineObject<{
74
+ description: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
75
+ source: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
76
+ is_public: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineBoolean>;
77
+ }, {
78
+ description?: string | null | undefined;
79
+ source?: string | null | undefined;
80
+ is_public?: string | number | boolean | null | undefined;
81
+ }, {
82
+ description?: string | undefined;
83
+ source?: string | undefined;
84
+ is_public?: boolean | undefined;
85
+ }, {
86
+ description?: string | undefined;
87
+ source?: string | undefined;
88
+ isPublic?: boolean | undefined;
89
+ }>>>;
90
+ }, {
91
+ assets?: {
92
+ description?: string | null | undefined;
93
+ source?: string | null | undefined;
94
+ is_public?: string | number | boolean | null | undefined;
95
+ }[] | null | undefined;
96
+ }, {
97
+ assets?: {
98
+ description?: string | undefined;
99
+ source?: string | undefined;
100
+ is_public?: boolean | undefined;
101
+ }[] | undefined;
102
+ }, {
103
+ assets?: {
104
+ description?: string | undefined;
105
+ source?: string | undefined;
106
+ isPublic?: boolean | undefined;
107
+ }[] | undefined;
108
+ }>;
109
+ /**
110
+ * Custom record create schema (allows passthrough for dynamic fields)
111
+ */
112
+ export declare const customRecordCreateSchema: import("@vinejs/vine").VineObject<{}, {} & {
113
+ [K: string]: unknown;
114
+ }, {} & {
115
+ [K: string]: unknown;
116
+ }, {} & {
117
+ [K: string]: unknown;
118
+ }>;
119
+ /**
120
+ * Custom record update schema
121
+ */
122
+ export declare const customRecordUpdateSchema: import("@vinejs/vine").VineObject<{}, {} & {
123
+ [K: string]: unknown;
124
+ }, {} & {
125
+ [K: string]: unknown;
126
+ }, {} & {
127
+ [K: string]: unknown;
128
+ }>;
129
+ /**
130
+ * Date range query schema
131
+ */
132
+ export declare const dateRangeQuerySchema: import("@vinejs/vine").VineObject<{
133
+ startDate: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
134
+ endDate: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
135
+ limit: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
136
+ }, {
137
+ startDate?: string | null | undefined;
138
+ endDate?: string | null | undefined;
139
+ limit?: string | number | null | undefined;
140
+ }, {
141
+ startDate?: string | undefined;
142
+ endDate?: string | undefined;
143
+ limit?: number | undefined;
144
+ }, {
145
+ startDate?: string | undefined;
146
+ endDate?: string | undefined;
147
+ limit?: number | undefined;
148
+ }>;
149
+ export declare const validatePagination: import("@vinejs/vine").VineValidator<import("@vinejs/vine").VineObject<{
150
+ limit: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
151
+ offset: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
152
+ }, {
153
+ limit?: string | number | null | undefined;
154
+ offset?: string | number | null | undefined;
155
+ }, {
156
+ limit?: number | undefined;
157
+ offset?: number | undefined;
158
+ }, {
159
+ limit?: number | undefined;
160
+ offset?: number | undefined;
161
+ }>, Record<string, any> | undefined>;
162
+ export declare const validateIdParam: import("@vinejs/vine").VineValidator<import("@vinejs/vine").VineObject<{
163
+ id: import("@vinejs/vine").VineNumber;
164
+ }, {
165
+ id: string | number;
166
+ }, {
167
+ id: number;
168
+ }, {
169
+ id: number;
170
+ }>, Record<string, any> | undefined>;
171
+ export declare const validateAssetUpload: import("@vinejs/vine").VineValidator<import("@vinejs/vine").VineObject<{
172
+ description: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
173
+ source: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
174
+ is_public: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineBoolean>;
175
+ }, {
176
+ description?: string | null | undefined;
177
+ source?: string | null | undefined;
178
+ is_public?: string | number | boolean | null | undefined;
179
+ }, {
180
+ description?: string | undefined;
181
+ source?: string | undefined;
182
+ is_public?: boolean | undefined;
183
+ }, {
184
+ description?: string | undefined;
185
+ source?: string | undefined;
186
+ isPublic?: boolean | undefined;
187
+ }>, Record<string, any> | undefined>;
188
+ export declare const validateAssetUpdate: import("@vinejs/vine").VineValidator<import("@vinejs/vine").VineObject<{
189
+ description: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
190
+ source: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
191
+ is_public: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineBoolean>;
192
+ }, {
193
+ description?: string | null | undefined;
194
+ source?: string | null | undefined;
195
+ is_public?: string | number | boolean | null | undefined;
196
+ }, {
197
+ description?: string | undefined;
198
+ source?: string | undefined;
199
+ is_public?: boolean | undefined;
200
+ }, {
201
+ description?: string | undefined;
202
+ source?: string | undefined;
203
+ isPublic?: boolean | undefined;
204
+ }>, Record<string, any> | undefined>;
205
+ export declare const validateAssetBatchUpload: import("@vinejs/vine").VineValidator<import("@vinejs/vine").VineObject<{
206
+ assets: import("@vinejs/vine").OptionalModifier<import("@vinejs/vine").VineArray<import("@vinejs/vine").VineObject<{
207
+ description: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
208
+ source: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
209
+ is_public: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineBoolean>;
210
+ }, {
211
+ description?: string | null | undefined;
212
+ source?: string | null | undefined;
213
+ is_public?: string | number | boolean | null | undefined;
214
+ }, {
215
+ description?: string | undefined;
216
+ source?: string | undefined;
217
+ is_public?: boolean | undefined;
218
+ }, {
219
+ description?: string | undefined;
220
+ source?: string | undefined;
221
+ isPublic?: boolean | undefined;
222
+ }>>>;
223
+ }, {
224
+ assets?: {
225
+ description?: string | null | undefined;
226
+ source?: string | null | undefined;
227
+ is_public?: string | number | boolean | null | undefined;
228
+ }[] | null | undefined;
229
+ }, {
230
+ assets?: {
231
+ description?: string | undefined;
232
+ source?: string | undefined;
233
+ is_public?: boolean | undefined;
234
+ }[] | undefined;
235
+ }, {
236
+ assets?: {
237
+ description?: string | undefined;
238
+ source?: string | undefined;
239
+ isPublic?: boolean | undefined;
240
+ }[] | undefined;
241
+ }>, Record<string, any> | undefined>;
242
+ export declare const validateCustomRecordCreate: import("@vinejs/vine").VineValidator<import("@vinejs/vine").VineObject<{}, {} & {
243
+ [K: string]: unknown;
244
+ }, {} & {
245
+ [K: string]: unknown;
246
+ }, {} & {
247
+ [K: string]: unknown;
248
+ }>, Record<string, any> | undefined>;
249
+ export declare const validateCustomRecordUpdate: import("@vinejs/vine").VineValidator<import("@vinejs/vine").VineObject<{}, {} & {
250
+ [K: string]: unknown;
251
+ }, {} & {
252
+ [K: string]: unknown;
253
+ }, {} & {
254
+ [K: string]: unknown;
255
+ }>, Record<string, any> | undefined>;
256
+ export declare const validateDateRangeQuery: import("@vinejs/vine").VineValidator<import("@vinejs/vine").VineObject<{
257
+ startDate: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
258
+ endDate: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineString>;
259
+ limit: import("@vinejs/vine/schema/base/literal").OptionalModifier<import("@vinejs/vine").VineNumber>;
260
+ }, {
261
+ startDate?: string | null | undefined;
262
+ endDate?: string | null | undefined;
263
+ limit?: string | number | null | undefined;
264
+ }, {
265
+ startDate?: string | undefined;
266
+ endDate?: string | undefined;
267
+ limit?: number | undefined;
268
+ }, {
269
+ startDate?: string | undefined;
270
+ endDate?: string | undefined;
271
+ limit?: number | undefined;
272
+ }>, Record<string, any> | undefined>;
273
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/validation/schemas.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAG3B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;EAExB,CAAA;AAMF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAI5B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAI5B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUjC,CAAA;AAMF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;EAA2C,CAAA;AAEhF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;EAA2C,CAAA;AAMhF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;EAI/B,CAAA;AAMF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;oCAAiC,CAAA;AAChE,eAAO,MAAM,eAAe;;;;;;;;oCAA8B,CAAA;AAC1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;oCAAkC,CAAA;AAClE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;oCAAkC,CAAA;AAClE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAAuC,CAAA;AAC5E,eAAO,MAAM,0BAA0B;;;;;;oCAAyC,CAAA;AAChF,eAAO,MAAM,0BAA0B;;;;;;oCAAyC,CAAA;AAChF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;oCAAqC,CAAA"}
@@ -0,0 +1,82 @@
1
+ import vine from '@vinejs/vine';
2
+ // ============================================
3
+ // Common schemas
4
+ // ============================================
5
+ /**
6
+ * Pagination query parameters schema
7
+ */
8
+ export const paginationSchema = vine.object({
9
+ limit: vine.number().positive().max(1000).optional(),
10
+ offset: vine.number().min(0).optional()
11
+ });
12
+ /**
13
+ * ID parameter schema
14
+ */
15
+ export const idParamSchema = vine.object({
16
+ id: vine.number().positive()
17
+ });
18
+ // ============================================
19
+ // Assets Manager schemas
20
+ // ============================================
21
+ /**
22
+ * Asset upload body schema
23
+ */
24
+ export const assetUploadSchema = vine.object({
25
+ description: vine.string().maxLength(1000).optional(),
26
+ source: vine.string().url().optional(),
27
+ is_public: vine.boolean().optional()
28
+ });
29
+ /**
30
+ * Asset update body schema
31
+ */
32
+ export const assetUpdateSchema = vine.object({
33
+ description: vine.string().maxLength(1000).optional(),
34
+ source: vine.string().url().optional(),
35
+ is_public: vine.boolean().optional()
36
+ });
37
+ /**
38
+ * Batch upload body schema
39
+ */
40
+ export const assetBatchUploadSchema = vine.object({
41
+ assets: vine
42
+ .array(vine.object({
43
+ description: vine.string().maxLength(1000).optional(),
44
+ source: vine.string().url().optional(),
45
+ is_public: vine.boolean().optional()
46
+ }))
47
+ .optional()
48
+ });
49
+ // ============================================
50
+ // Custom Table Manager schemas
51
+ // ============================================
52
+ /**
53
+ * Custom record create schema (allows passthrough for dynamic fields)
54
+ */
55
+ export const customRecordCreateSchema = vine.object({}).allowUnknownProperties();
56
+ /**
57
+ * Custom record update schema
58
+ */
59
+ export const customRecordUpdateSchema = vine.object({}).allowUnknownProperties();
60
+ // ============================================
61
+ // Query parameter schemas
62
+ // ============================================
63
+ /**
64
+ * Date range query schema
65
+ */
66
+ export const dateRangeQuerySchema = vine.object({
67
+ startDate: vine.string().optional(),
68
+ endDate: vine.string().optional(),
69
+ limit: vine.number().positive().max(1000).optional()
70
+ });
71
+ // ============================================
72
+ // Compiled validators (for performance)
73
+ // ============================================
74
+ export const validatePagination = vine.compile(paginationSchema);
75
+ export const validateIdParam = vine.compile(idParamSchema);
76
+ export const validateAssetUpload = vine.compile(assetUploadSchema);
77
+ export const validateAssetUpdate = vine.compile(assetUpdateSchema);
78
+ export const validateAssetBatchUpload = vine.compile(assetBatchUploadSchema);
79
+ export const validateCustomRecordCreate = vine.compile(customRecordCreateSchema);
80
+ export const validateCustomRecordUpdate = vine.compile(customRecordUpdateSchema);
81
+ export const validateDateRangeQuery = vine.compile(dateRangeQuerySchema);
82
+ //# sourceMappingURL=schemas.js.map