promidas 2.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 (295) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +179 -0
  3. package/dist/builder.d.ts +158 -0
  4. package/dist/builder.d.ts.map +1 -0
  5. package/dist/builder.js +255 -0
  6. package/dist/builder.js.map +1 -0
  7. package/dist/factory.d.ts +154 -0
  8. package/dist/factory.d.ts.map +1 -0
  9. package/dist/factory.js +243 -0
  10. package/dist/factory.js.map +1 -0
  11. package/dist/fetcher/client/config.d.ts +140 -0
  12. package/dist/fetcher/client/config.d.ts.map +1 -0
  13. package/dist/fetcher/client/config.js +2 -0
  14. package/dist/fetcher/client/config.js.map +1 -0
  15. package/dist/fetcher/client/fetch-with-progress.d.ts +156 -0
  16. package/dist/fetcher/client/fetch-with-progress.d.ts.map +1 -0
  17. package/dist/fetcher/client/fetch-with-progress.js +313 -0
  18. package/dist/fetcher/client/fetch-with-progress.js.map +1 -0
  19. package/dist/fetcher/client/fetch-with-timeout.d.ts +6 -0
  20. package/dist/fetcher/client/fetch-with-timeout.d.ts.map +1 -0
  21. package/dist/fetcher/client/fetch-with-timeout.js +48 -0
  22. package/dist/fetcher/client/fetch-with-timeout.js.map +1 -0
  23. package/dist/fetcher/client/protopedia-api-custom-client.d.ts +141 -0
  24. package/dist/fetcher/client/protopedia-api-custom-client.d.ts.map +1 -0
  25. package/dist/fetcher/client/protopedia-api-custom-client.js +268 -0
  26. package/dist/fetcher/client/protopedia-api-custom-client.js.map +1 -0
  27. package/dist/fetcher/client/select-custom-fetch.d.ts +58 -0
  28. package/dist/fetcher/client/select-custom-fetch.d.ts.map +1 -0
  29. package/dist/fetcher/client/select-custom-fetch.js +58 -0
  30. package/dist/fetcher/client/select-custom-fetch.js.map +1 -0
  31. package/dist/fetcher/errors/fetcher-error.d.ts +10 -0
  32. package/dist/fetcher/errors/fetcher-error.d.ts.map +1 -0
  33. package/dist/fetcher/errors/fetcher-error.js +15 -0
  34. package/dist/fetcher/errors/fetcher-error.js.map +1 -0
  35. package/dist/fetcher/index.d.ts +73 -0
  36. package/dist/fetcher/index.d.ts.map +1 -0
  37. package/dist/fetcher/index.js +70 -0
  38. package/dist/fetcher/index.js.map +1 -0
  39. package/dist/fetcher/types/index.d.ts +9 -0
  40. package/dist/fetcher/types/index.d.ts.map +1 -0
  41. package/dist/fetcher/types/index.js +7 -0
  42. package/dist/fetcher/types/index.js.map +1 -0
  43. package/dist/fetcher/types/progress-event.types.d.ts +221 -0
  44. package/dist/fetcher/types/progress-event.types.d.ts.map +1 -0
  45. package/dist/fetcher/types/progress-event.types.js +10 -0
  46. package/dist/fetcher/types/progress-event.types.js.map +1 -0
  47. package/dist/fetcher/types/prototype-api.types.d.ts +106 -0
  48. package/dist/fetcher/types/prototype-api.types.d.ts.map +1 -0
  49. package/dist/fetcher/types/prototype-api.types.js +2 -0
  50. package/dist/fetcher/types/prototype-api.types.js.map +1 -0
  51. package/dist/fetcher/types/result.types.d.ts +75 -0
  52. package/dist/fetcher/types/result.types.d.ts.map +1 -0
  53. package/dist/fetcher/types/result.types.js +2 -0
  54. package/dist/fetcher/types/result.types.js.map +1 -0
  55. package/dist/fetcher/utils/create-client-fetch.d.ts +63 -0
  56. package/dist/fetcher/utils/create-client-fetch.d.ts.map +1 -0
  57. package/dist/fetcher/utils/create-client-fetch.js +89 -0
  58. package/dist/fetcher/utils/create-client-fetch.js.map +1 -0
  59. package/dist/fetcher/utils/create-fetch-with-stripped-headers.d.ts +6 -0
  60. package/dist/fetcher/utils/create-fetch-with-stripped-headers.d.ts.map +1 -0
  61. package/dist/fetcher/utils/create-fetch-with-stripped-headers.js +40 -0
  62. package/dist/fetcher/utils/create-fetch-with-stripped-headers.js.map +1 -0
  63. package/dist/fetcher/utils/errors/handler.d.ts +58 -0
  64. package/dist/fetcher/utils/errors/handler.d.ts.map +1 -0
  65. package/dist/fetcher/utils/errors/handler.js +243 -0
  66. package/dist/fetcher/utils/errors/handler.js.map +1 -0
  67. package/dist/fetcher/utils/errors/messages.d.ts +75 -0
  68. package/dist/fetcher/utils/errors/messages.d.ts.map +1 -0
  69. package/dist/fetcher/utils/errors/messages.js +88 -0
  70. package/dist/fetcher/utils/errors/messages.js.map +1 -0
  71. package/dist/fetcher/utils/index.d.ts +13 -0
  72. package/dist/fetcher/utils/index.d.ts.map +1 -0
  73. package/dist/fetcher/utils/index.js +12 -0
  74. package/dist/fetcher/utils/index.js.map +1 -0
  75. package/dist/fetcher/utils/log-timestamp-normalization-warnings.d.ts +10 -0
  76. package/dist/fetcher/utils/log-timestamp-normalization-warnings.d.ts.map +1 -0
  77. package/dist/fetcher/utils/log-timestamp-normalization-warnings.js +32 -0
  78. package/dist/fetcher/utils/log-timestamp-normalization-warnings.js.map +1 -0
  79. package/dist/fetcher/utils/normalize-protopedia-timestamp.d.ts +59 -0
  80. package/dist/fetcher/utils/normalize-protopedia-timestamp.d.ts.map +1 -0
  81. package/dist/fetcher/utils/normalize-protopedia-timestamp.js +81 -0
  82. package/dist/fetcher/utils/normalize-protopedia-timestamp.js.map +1 -0
  83. package/dist/fetcher/utils/normalize-prototype.d.ts +56 -0
  84. package/dist/fetcher/utils/normalize-prototype.d.ts.map +1 -0
  85. package/dist/fetcher/utils/normalize-prototype.js +113 -0
  86. package/dist/fetcher/utils/normalize-prototype.js.map +1 -0
  87. package/dist/fetcher/utils/sanitize-options.d.ts +14 -0
  88. package/dist/fetcher/utils/sanitize-options.d.ts.map +1 -0
  89. package/dist/fetcher/utils/sanitize-options.js +16 -0
  90. package/dist/fetcher/utils/sanitize-options.js.map +1 -0
  91. package/dist/fetcher/utils/string-parsers.d.ts +45 -0
  92. package/dist/fetcher/utils/string-parsers.d.ts.map +1 -0
  93. package/dist/fetcher/utils/string-parsers.js +53 -0
  94. package/dist/fetcher/utils/string-parsers.js.map +1 -0
  95. package/dist/index.d.ts +66 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +70 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/logger/console-logger.d.ts +74 -0
  100. package/dist/logger/console-logger.d.ts.map +1 -0
  101. package/dist/logger/console-logger.js +113 -0
  102. package/dist/logger/console-logger.js.map +1 -0
  103. package/dist/logger/factory.d.ts +88 -0
  104. package/dist/logger/factory.d.ts.map +1 -0
  105. package/dist/logger/factory.js +94 -0
  106. package/dist/logger/factory.js.map +1 -0
  107. package/dist/logger/index.d.ts +42 -0
  108. package/dist/logger/index.d.ts.map +1 -0
  109. package/dist/logger/index.js +41 -0
  110. package/dist/logger/index.js.map +1 -0
  111. package/dist/logger/logger.types.d.ts +49 -0
  112. package/dist/logger/logger.types.d.ts.map +1 -0
  113. package/dist/logger/logger.types.js +2 -0
  114. package/dist/logger/logger.types.js.map +1 -0
  115. package/dist/repository/errors/validation-error.d.ts +24 -0
  116. package/dist/repository/errors/validation-error.d.ts.map +1 -0
  117. package/dist/repository/errors/validation-error.js +26 -0
  118. package/dist/repository/errors/validation-error.js.map +1 -0
  119. package/dist/repository/index.d.ts +122 -0
  120. package/dist/repository/index.d.ts.map +1 -0
  121. package/dist/repository/index.js +44 -0
  122. package/dist/repository/index.js.map +1 -0
  123. package/dist/repository/protopedia-in-memory-repository.d.ts +560 -0
  124. package/dist/repository/protopedia-in-memory-repository.d.ts.map +1 -0
  125. package/dist/repository/protopedia-in-memory-repository.js +929 -0
  126. package/dist/repository/protopedia-in-memory-repository.js.map +1 -0
  127. package/dist/repository/schemas/index.d.ts +9 -0
  128. package/dist/repository/schemas/index.d.ts.map +1 -0
  129. package/dist/repository/schemas/index.js +11 -0
  130. package/dist/repository/schemas/index.js.map +1 -0
  131. package/dist/repository/schemas/params.d.ts +44 -0
  132. package/dist/repository/schemas/params.d.ts.map +1 -0
  133. package/dist/repository/schemas/params.js +44 -0
  134. package/dist/repository/schemas/params.js.map +1 -0
  135. package/dist/repository/schemas/serializable-snapshot.d.ts +33 -0
  136. package/dist/repository/schemas/serializable-snapshot.d.ts.map +1 -0
  137. package/dist/repository/schemas/serializable-snapshot.js +45 -0
  138. package/dist/repository/schemas/serializable-snapshot.js.map +1 -0
  139. package/dist/repository/types/analysis.types.d.ts +89 -0
  140. package/dist/repository/types/analysis.types.d.ts.map +1 -0
  141. package/dist/repository/types/analysis.types.js +2 -0
  142. package/dist/repository/types/analysis.types.js.map +1 -0
  143. package/dist/repository/types/index.d.ts +12 -0
  144. package/dist/repository/types/index.d.ts.map +1 -0
  145. package/dist/repository/types/index.js +7 -0
  146. package/dist/repository/types/index.js.map +1 -0
  147. package/dist/repository/types/repository-events.types.d.ts +110 -0
  148. package/dist/repository/types/repository-events.types.d.ts.map +1 -0
  149. package/dist/repository/types/repository-events.types.js +2 -0
  150. package/dist/repository/types/repository-events.types.js.map +1 -0
  151. package/dist/repository/types/repository.types.d.ts +330 -0
  152. package/dist/repository/types/repository.types.d.ts.map +1 -0
  153. package/dist/repository/types/repository.types.js +2 -0
  154. package/dist/repository/types/repository.types.js.map +1 -0
  155. package/dist/repository/types/result.types.d.ts +55 -0
  156. package/dist/repository/types/result.types.d.ts.map +1 -0
  157. package/dist/repository/types/result.types.js +2 -0
  158. package/dist/repository/types/result.types.js.map +1 -0
  159. package/dist/repository/types/serialization.types.d.ts +61 -0
  160. package/dist/repository/types/serialization.types.d.ts.map +1 -0
  161. package/dist/repository/types/serialization.types.js +2 -0
  162. package/dist/repository/types/serialization.types.js.map +1 -0
  163. package/dist/repository/types/snapshot-operation.types.d.ts +140 -0
  164. package/dist/repository/types/snapshot-operation.types.d.ts.map +1 -0
  165. package/dist/repository/types/snapshot-operation.types.js +2 -0
  166. package/dist/repository/types/snapshot-operation.types.js.map +1 -0
  167. package/dist/repository/utils/convert-fetch-result.d.ts +46 -0
  168. package/dist/repository/utils/convert-fetch-result.d.ts.map +1 -0
  169. package/dist/repository/utils/convert-fetch-result.js +59 -0
  170. package/dist/repository/utils/convert-fetch-result.js.map +1 -0
  171. package/dist/repository/utils/convert-store-result.d.ts +36 -0
  172. package/dist/repository/utils/convert-store-result.d.ts.map +1 -0
  173. package/dist/repository/utils/convert-store-result.js +36 -0
  174. package/dist/repository/utils/convert-store-result.js.map +1 -0
  175. package/dist/repository/utils/emit-repository-event-safely.d.ts +5 -0
  176. package/dist/repository/utils/emit-repository-event-safely.d.ts.map +1 -0
  177. package/dist/repository/utils/emit-repository-event-safely.js +17 -0
  178. package/dist/repository/utils/emit-repository-event-safely.js.map +1 -0
  179. package/dist/repository/utils/index.d.ts +3 -0
  180. package/dist/repository/utils/index.d.ts.map +1 -0
  181. package/dist/repository/utils/index.js +3 -0
  182. package/dist/repository/utils/index.js.map +1 -0
  183. package/dist/repository/validation/index.d.ts +9 -0
  184. package/dist/repository/validation/index.d.ts.map +1 -0
  185. package/dist/repository/validation/index.js +10 -0
  186. package/dist/repository/validation/index.js.map +1 -0
  187. package/dist/repository/validation/params-validators.d.ts +46 -0
  188. package/dist/repository/validation/params-validators.d.ts.map +1 -0
  189. package/dist/repository/validation/params-validators.js +68 -0
  190. package/dist/repository/validation/params-validators.js.map +1 -0
  191. package/dist/repository/validation/serializable-snapshot.d.ts +47 -0
  192. package/dist/repository/validation/serializable-snapshot.d.ts.map +1 -0
  193. package/dist/repository/validation/serializable-snapshot.js +104 -0
  194. package/dist/repository/validation/serializable-snapshot.js.map +1 -0
  195. package/dist/schemas/index.d.ts +8 -0
  196. package/dist/schemas/index.d.ts.map +1 -0
  197. package/dist/schemas/index.js +8 -0
  198. package/dist/schemas/index.js.map +1 -0
  199. package/dist/schemas/normalized-prototype.d.ts +56 -0
  200. package/dist/schemas/normalized-prototype.d.ts.map +1 -0
  201. package/dist/schemas/normalized-prototype.js +123 -0
  202. package/dist/schemas/normalized-prototype.js.map +1 -0
  203. package/dist/store/errors/store-error.d.ts +148 -0
  204. package/dist/store/errors/store-error.d.ts.map +1 -0
  205. package/dist/store/errors/store-error.js +156 -0
  206. package/dist/store/errors/store-error.js.map +1 -0
  207. package/dist/store/index.d.ts +84 -0
  208. package/dist/store/index.d.ts.map +1 -0
  209. package/dist/store/index.js +83 -0
  210. package/dist/store/index.js.map +1 -0
  211. package/dist/store/store.d.ts +295 -0
  212. package/dist/store/store.d.ts.map +1 -0
  213. package/dist/store/store.js +411 -0
  214. package/dist/store/store.js.map +1 -0
  215. package/dist/store/types/index.d.ts +2 -0
  216. package/dist/store/types/index.d.ts.map +1 -0
  217. package/dist/store/types/index.js +2 -0
  218. package/dist/store/types/index.js.map +1 -0
  219. package/dist/store/types/result.types.d.ts +67 -0
  220. package/dist/store/types/result.types.d.ts.map +1 -0
  221. package/dist/store/types/result.types.js +2 -0
  222. package/dist/store/types/result.types.js.map +1 -0
  223. package/dist/types/codes.d.ts +44 -0
  224. package/dist/types/codes.d.ts.map +1 -0
  225. package/dist/types/codes.js +9 -0
  226. package/dist/types/codes.js.map +1 -0
  227. package/dist/types/index.d.ts +61 -0
  228. package/dist/types/index.d.ts.map +1 -0
  229. package/dist/types/index.js +60 -0
  230. package/dist/types/index.js.map +1 -0
  231. package/dist/types/normalized-prototype.d.ts +95 -0
  232. package/dist/types/normalized-prototype.d.ts.map +1 -0
  233. package/dist/types/normalized-prototype.js +2 -0
  234. package/dist/types/normalized-prototype.js.map +1 -0
  235. package/dist/utils/converters/index.d.ts +15 -0
  236. package/dist/utils/converters/index.d.ts.map +1 -0
  237. package/dist/utils/converters/index.js +15 -0
  238. package/dist/utils/converters/index.js.map +1 -0
  239. package/dist/utils/converters/license-type.d.ts +23 -0
  240. package/dist/utils/converters/license-type.d.ts.map +1 -0
  241. package/dist/utils/converters/license-type.js +38 -0
  242. package/dist/utils/converters/license-type.js.map +1 -0
  243. package/dist/utils/converters/release-flag.d.ts +24 -0
  244. package/dist/utils/converters/release-flag.d.ts.map +1 -0
  245. package/dist/utils/converters/release-flag.js +40 -0
  246. package/dist/utils/converters/release-flag.js.map +1 -0
  247. package/dist/utils/converters/status.d.ts +23 -0
  248. package/dist/utils/converters/status.d.ts.map +1 -0
  249. package/dist/utils/converters/status.js +40 -0
  250. package/dist/utils/converters/status.js.map +1 -0
  251. package/dist/utils/converters/thanks-flag.d.ts +25 -0
  252. package/dist/utils/converters/thanks-flag.d.ts.map +1 -0
  253. package/dist/utils/converters/thanks-flag.js +41 -0
  254. package/dist/utils/converters/thanks-flag.js.map +1 -0
  255. package/dist/utils/deep-merge.d.ts +38 -0
  256. package/dist/utils/deep-merge.d.ts.map +1 -0
  257. package/dist/utils/deep-merge.js +85 -0
  258. package/dist/utils/deep-merge.js.map +1 -0
  259. package/dist/utils/index.d.ts +80 -0
  260. package/dist/utils/index.d.ts.map +1 -0
  261. package/dist/utils/index.js +85 -0
  262. package/dist/utils/index.js.map +1 -0
  263. package/dist/utils/logger-utils.d.ts +100 -0
  264. package/dist/utils/logger-utils.d.ts.map +1 -0
  265. package/dist/utils/logger-utils.js +265 -0
  266. package/dist/utils/logger-utils.js.map +1 -0
  267. package/dist/utils/time/constants.d.ts +14 -0
  268. package/dist/utils/time/constants.d.ts.map +1 -0
  269. package/dist/utils/time/constants.js +14 -0
  270. package/dist/utils/time/constants.js.map +1 -0
  271. package/dist/utils/time/index.d.ts +28 -0
  272. package/dist/utils/time/index.d.ts.map +1 -0
  273. package/dist/utils/time/index.js +28 -0
  274. package/dist/utils/time/index.js.map +1 -0
  275. package/dist/utils/time/parser.d.ts +91 -0
  276. package/dist/utils/time/parser.d.ts.map +1 -0
  277. package/dist/utils/time/parser.js +143 -0
  278. package/dist/utils/time/parser.js.map +1 -0
  279. package/dist/utils/validation/index.d.ts +8 -0
  280. package/dist/utils/validation/index.d.ts.map +1 -0
  281. package/dist/utils/validation/index.js +7 -0
  282. package/dist/utils/validation/index.js.map +1 -0
  283. package/dist/utils/validation/normalized-prototype.d.ts +64 -0
  284. package/dist/utils/validation/normalized-prototype.d.ts.map +1 -0
  285. package/dist/utils/validation/normalized-prototype.js +97 -0
  286. package/dist/utils/validation/normalized-prototype.js.map +1 -0
  287. package/dist/utils/validation/types.d.ts +62 -0
  288. package/dist/utils/validation/types.d.ts.map +1 -0
  289. package/dist/utils/validation/types.js +8 -0
  290. package/dist/utils/validation/types.js.map +1 -0
  291. package/dist/version.d.ts +6 -0
  292. package/dist/version.d.ts.map +1 -0
  293. package/dist/version.js +6 -0
  294. package/dist/version.js.map +1 -0
  295. package/package.json +138 -0
package/dist/index.js ADDED
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Public entrypoint for the promidas library.
3
+ *
4
+ * ## Quick Start
5
+ *
6
+ * For most use cases, use the Builder to create a Repository:
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { PromidasRepositoryBuilder } from 'promidas';
11
+ *
12
+ * const repo = new PromidasRepositoryBuilder()
13
+ * .setStoreConfig({ ttlMs: 30 * 60 * 1000 })
14
+ * .setApiClientConfig({
15
+ * protoPediaApiClientOptions: { token: process.env.PROTOPEDIA_API_V2_TOKEN }
16
+ * })
17
+ * .build();
18
+ *
19
+ * await repo.setupSnapshot({ limit: 100 });
20
+ * const prototype = await repo.getRandomPrototypeFromSnapshot();
21
+ * ```
22
+ *
23
+ * ## Standalone Module Usage
24
+ *
25
+ * For advanced use cases or when you need specific modules independently,
26
+ * use subpath imports:
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // Type definitions
31
+ * import type { NormalizedPrototype } from 'promidas/types';
32
+ *
33
+ * // Utility functions and converters
34
+ * import {
35
+ * parseProtoPediaTimestamp,
36
+ * getPrototypeStatusLabel
37
+ * } from 'promidas/utils';
38
+ *
39
+ * // Logger interface and implementations
40
+ * import { createConsoleLogger } from 'promidas/logger';
41
+ *
42
+ * // API client and data fetching
43
+ * import {
44
+ * ProtopediaApiCustomClient
45
+ * } from 'promidas/fetcher';
46
+ *
47
+ * // In-memory store
48
+ * import { PrototypeInMemoryStore } from 'promidas/store';
49
+ *
50
+ * // Repository builder
51
+ * import { PromidasRepositoryBuilder } from 'promidas';
52
+ * ```
53
+ *
54
+ * ## Available Subpath Exports
55
+ *
56
+ * - `promidas/types` — Type definitions (NormalizedPrototype)
57
+ * - `promidas/utils` — Utility functions and converters
58
+ * - `promidas/logger` — Logger interface and implementations
59
+ * - `promidas/fetcher` — API client and data fetching utilities
60
+ * - `promidas/store` — In-memory store implementation
61
+ *
62
+ * @packageDocumentation
63
+ */
64
+ // Builder for creating repository instances
65
+ export {
66
+ // Builder for advanced use cases
67
+ PromidasRepositoryBuilder, } from './builder.js';
68
+ // Factory functions for common use cases
69
+ export { createPromidasForLocal, createPromidasForServer } from './factory.js';
70
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAEH,4CAA4C;AAC5C,OAAO;AACL,iCAAiC;AACjC,yBAAyB,GAgB1B,MAAM,cAAc,CAAC;AAEtB,yCAAyC;AACzC,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { Logger, LogLevel } from './logger.types.js';
2
+ /**
3
+ * Universal console-based logger.
4
+ *
5
+ * Works in Browser, Node.js, and Edge environments.
6
+ * Safe for environments without `console` (silently skips logging).
7
+ *
8
+ * @remarks
9
+ * - Implements the Logger interface with mutable `level` property
10
+ * - Uses native console methods (console.error, console.warn, etc.)
11
+ * - Respects the current log level for filtering output
12
+ * - Level can be changed at runtime via the `level` property
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Create with specific level
17
+ * const debugLogger = new ConsoleLogger('debug');
18
+ * debugLogger.debug('Detailed info'); // Will be logged
19
+ * ```
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // Default level ('info')
24
+ * const logger = new ConsoleLogger();
25
+ * logger.debug('Not logged'); // debug < info
26
+ * logger.info('Logged'); // info = info
27
+ * ```
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * // Change level dynamically
32
+ * const logger = new ConsoleLogger('error');
33
+ * logger.info('Not logged'); // info < error
34
+ * logger.level = 'info';
35
+ * logger.info('Now logged'); // info = info
36
+ * ```
37
+ */
38
+ export declare class ConsoleLogger implements Logger {
39
+ level: LogLevel;
40
+ private readonly hasConsole;
41
+ /**
42
+ * Creates a new ConsoleLogger instance.
43
+ *
44
+ * @param level - Initial log level (default: 'info')
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * // Default level
49
+ * const logger = new ConsoleLogger(); // 'info'
50
+ * ```
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // Specific level
55
+ * const debugLogger = new ConsoleLogger('debug');
56
+ * const errorLogger = new ConsoleLogger('error');
57
+ * ```
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * // Level can be changed after creation
62
+ * const logger = new ConsoleLogger('info');
63
+ * logger.level = 'debug'; // Now shows debug logs
64
+ * ```
65
+ */
66
+ constructor(level?: LogLevel);
67
+ error(message: string, meta?: unknown): void;
68
+ warn(message: string, meta?: unknown): void;
69
+ info(message: string, meta?: unknown): void;
70
+ debug(message: string, meta?: unknown): void;
71
+ private log;
72
+ private shouldLog;
73
+ }
74
+ //# sourceMappingURL=console-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-logger.d.ts","sourceRoot":"","sources":["../../lib/logger/console-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAa1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,KAAK,EAAE,QAAQ,CAAC;IAEhB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IAErC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;gBACS,KAAK,GAAE,QAAiB;IAYpC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,OAAO,CAAC,GAAG;IAoBX,OAAO,CAAC,SAAS;CAIlB"}
@@ -0,0 +1,113 @@
1
+ const LEVEL_ORDER = ['debug', 'info', 'warn', 'error', 'silent'];
2
+ const getConsoleFn = (method) => {
3
+ const hasConsole = typeof console !== 'undefined';
4
+ return hasConsole && typeof console[method] === 'function'
5
+ ? console[method].bind(console)
6
+ : undefined;
7
+ };
8
+ /**
9
+ * Universal console-based logger.
10
+ *
11
+ * Works in Browser, Node.js, and Edge environments.
12
+ * Safe for environments without `console` (silently skips logging).
13
+ *
14
+ * @remarks
15
+ * - Implements the Logger interface with mutable `level` property
16
+ * - Uses native console methods (console.error, console.warn, etc.)
17
+ * - Respects the current log level for filtering output
18
+ * - Level can be changed at runtime via the `level` property
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * // Create with specific level
23
+ * const debugLogger = new ConsoleLogger('debug');
24
+ * debugLogger.debug('Detailed info'); // Will be logged
25
+ * ```
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // Default level ('info')
30
+ * const logger = new ConsoleLogger();
31
+ * logger.debug('Not logged'); // debug < info
32
+ * logger.info('Logged'); // info = info
33
+ * ```
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * // Change level dynamically
38
+ * const logger = new ConsoleLogger('error');
39
+ * logger.info('Not logged'); // info < error
40
+ * logger.level = 'info';
41
+ * logger.info('Now logged'); // info = info
42
+ * ```
43
+ */
44
+ export class ConsoleLogger {
45
+ level;
46
+ hasConsole;
47
+ /**
48
+ * Creates a new ConsoleLogger instance.
49
+ *
50
+ * @param level - Initial log level (default: 'info')
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // Default level
55
+ * const logger = new ConsoleLogger(); // 'info'
56
+ * ```
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * // Specific level
61
+ * const debugLogger = new ConsoleLogger('debug');
62
+ * const errorLogger = new ConsoleLogger('error');
63
+ * ```
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * // Level can be changed after creation
68
+ * const logger = new ConsoleLogger('info');
69
+ * logger.level = 'debug'; // Now shows debug logs
70
+ * ```
71
+ */
72
+ constructor(level = 'info') {
73
+ this.level = level;
74
+ this.hasConsole = typeof console !== 'undefined';
75
+ // Bind methods to preserve `this` when methods are passed around as callbacks.
76
+ // Some upstream libraries call logger methods without a receiver.
77
+ this.error = this.error.bind(this);
78
+ this.warn = this.warn.bind(this);
79
+ this.info = this.info.bind(this);
80
+ this.debug = this.debug.bind(this);
81
+ }
82
+ error(message, meta) {
83
+ this.log('error', message, meta, getConsoleFn('error'));
84
+ }
85
+ warn(message, meta) {
86
+ this.log('warn', message, meta, getConsoleFn('warn'));
87
+ }
88
+ info(message, meta) {
89
+ this.log('info', message, meta, getConsoleFn('info'));
90
+ }
91
+ debug(message, meta) {
92
+ this.log('debug', message, meta, getConsoleFn('debug'));
93
+ }
94
+ log(targetLevel, message, meta, consoleFn) {
95
+ if (!this.shouldLog(targetLevel) || !this.hasConsole || !consoleFn) {
96
+ return;
97
+ }
98
+ const prefix = `[${targetLevel.toUpperCase()}]`;
99
+ const formattedMessage = `${prefix} ${message}`;
100
+ if (meta === undefined) {
101
+ consoleFn(formattedMessage);
102
+ }
103
+ else {
104
+ consoleFn(formattedMessage, meta);
105
+ }
106
+ }
107
+ shouldLog(target) {
108
+ if (this.level === 'silent')
109
+ return false;
110
+ return LEVEL_ORDER.indexOf(target) >= LEVEL_ORDER.indexOf(this.level);
111
+ }
112
+ }
113
+ //# sourceMappingURL=console-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-logger.js","sourceRoot":"","sources":["../../lib/logger/console-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Logger factory functions.
3
+ *
4
+ * This module provides factory functions for creating logger instances:
5
+ * - {@link createConsoleLogger} — Creates a console-based logger with default 'info' level
6
+ * - {@link createNoopLogger} — Creates a no-op logger for testing/production
7
+ *
8
+ * @module
9
+ */
10
+ import { ConsoleLogger } from './console-logger.js';
11
+ import type { Logger } from './logger.types.js';
12
+ /**
13
+ * Create a console-based logger with default 'info' level.
14
+ *
15
+ * @returns ConsoleLogger instance with 'info' level
16
+ *
17
+ * @remarks
18
+ * **When to use each approach:**
19
+ * 1. `createConsoleLogger()` - Best for most cases, especially with Repository/Store
20
+ * 2. `new ConsoleLogger(level)` - When you need a specific level at creation
21
+ * 3. `logger.level = level` - When you need to change level dynamically
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Recommended: Use with Repository/Store
26
+ * const logger = createConsoleLogger();
27
+ * const repo = new PromidasRepositoryBuilder()
28
+ * .setStoreConfig({ logger, logLevel: 'debug' })
29
+ * .setApiClientConfig({
30
+ * logger,
31
+ * logLevel: 'debug',
32
+ * protoPediaApiClientOptions: { token: process.env.PROTOPEDIA_API_V2_TOKEN }
33
+ * })
34
+ * .build();
35
+ * ```
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * // Default level ('info')
40
+ * const logger = createConsoleLogger();
41
+ * logger.info('Application started'); // Logged
42
+ * logger.debug('Debug info'); // Not logged (debug < info)
43
+ * ```
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * // Change level dynamically
48
+ * const logger = createConsoleLogger();
49
+ * logger.level = 'debug';
50
+ * logger.debug('Now this is logged');
51
+ * ```
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * // If you need a specific level at creation time:
56
+ * const logger = new ConsoleLogger('debug');
57
+ * ```
58
+ */
59
+ export declare const createConsoleLogger: () => ConsoleLogger;
60
+ /**
61
+ * Create a no-op logger (for testing or silent mode).
62
+ *
63
+ * All logging methods do nothing and return immediately.
64
+ * This is useful for:
65
+ * - Unit tests (suppress log output)
66
+ * - Production environments (completely disable logging)
67
+ * - Performance-critical code (zero logging overhead)
68
+ *
69
+ * @returns Logger that does nothing
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * // Use in tests
74
+ * const logger = createNoopLogger();
75
+ * logger.error('This will not be logged');
76
+ * logger.info('Neither will this');
77
+ * ```
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * // Conditional logger selection
82
+ * const logger = process.env.ENABLE_LOGGING === 'true'
83
+ * ? createConsoleLogger()
84
+ * : createNoopLogger();
85
+ * ```
86
+ */
87
+ export declare const createNoopLogger: () => Logger;
88
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../lib/logger/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,eAAO,MAAM,mBAAmB,QAAO,aAEtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,gBAAgB,QAAO,MAKlC,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Logger factory functions.
3
+ *
4
+ * This module provides factory functions for creating logger instances:
5
+ * - {@link createConsoleLogger} — Creates a console-based logger with default 'info' level
6
+ * - {@link createNoopLogger} — Creates a no-op logger for testing/production
7
+ *
8
+ * @module
9
+ */
10
+ import { ConsoleLogger } from './console-logger.js';
11
+ /**
12
+ * Create a console-based logger with default 'info' level.
13
+ *
14
+ * @returns ConsoleLogger instance with 'info' level
15
+ *
16
+ * @remarks
17
+ * **When to use each approach:**
18
+ * 1. `createConsoleLogger()` - Best for most cases, especially with Repository/Store
19
+ * 2. `new ConsoleLogger(level)` - When you need a specific level at creation
20
+ * 3. `logger.level = level` - When you need to change level dynamically
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // Recommended: Use with Repository/Store
25
+ * const logger = createConsoleLogger();
26
+ * const repo = new PromidasRepositoryBuilder()
27
+ * .setStoreConfig({ logger, logLevel: 'debug' })
28
+ * .setApiClientConfig({
29
+ * logger,
30
+ * logLevel: 'debug',
31
+ * protoPediaApiClientOptions: { token: process.env.PROTOPEDIA_API_V2_TOKEN }
32
+ * })
33
+ * .build();
34
+ * ```
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // Default level ('info')
39
+ * const logger = createConsoleLogger();
40
+ * logger.info('Application started'); // Logged
41
+ * logger.debug('Debug info'); // Not logged (debug < info)
42
+ * ```
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * // Change level dynamically
47
+ * const logger = createConsoleLogger();
48
+ * logger.level = 'debug';
49
+ * logger.debug('Now this is logged');
50
+ * ```
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // If you need a specific level at creation time:
55
+ * const logger = new ConsoleLogger('debug');
56
+ * ```
57
+ */
58
+ export const createConsoleLogger = () => {
59
+ return new ConsoleLogger('info');
60
+ };
61
+ /**
62
+ * Create a no-op logger (for testing or silent mode).
63
+ *
64
+ * All logging methods do nothing and return immediately.
65
+ * This is useful for:
66
+ * - Unit tests (suppress log output)
67
+ * - Production environments (completely disable logging)
68
+ * - Performance-critical code (zero logging overhead)
69
+ *
70
+ * @returns Logger that does nothing
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * // Use in tests
75
+ * const logger = createNoopLogger();
76
+ * logger.error('This will not be logged');
77
+ * logger.info('Neither will this');
78
+ * ```
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * // Conditional logger selection
83
+ * const logger = process.env.ENABLE_LOGGING === 'true'
84
+ * ? createConsoleLogger()
85
+ * : createNoopLogger();
86
+ * ```
87
+ */
88
+ export const createNoopLogger = () => ({
89
+ error: () => { },
90
+ warn: () => { },
91
+ info: () => { },
92
+ debug: () => { },
93
+ });
94
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../lib/logger/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAkB,EAAE;IACrD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAAC,CAAC;IAC7C,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;CAChB,CAAC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Logger module for Promidas.
3
+ *
4
+ * This module provides logging utilities and types:
5
+ * - {@link Logger} — Logger interface for custom logging implementations.
6
+ * - {@link LogLevel} — Log level type for controlling verbosity.
7
+ * - {@link ConsoleLogger} — Console-based logger class with mutable level.
8
+ * - {@link createConsoleLogger} — Factory to create a console logger with default 'info' level.
9
+ * - {@link createNoopLogger} — Factory to create a no-op logger.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // Using the factory (default 'info' level)
14
+ * const logger = createConsoleLogger();
15
+ * logger.info('Application started');
16
+ * logger.level = 'debug'; // Change level dynamically
17
+ * ```
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * // Using the constructor for specific level
22
+ * const debugLogger = new ConsoleLogger('debug');
23
+ * debugLogger.debug('Detailed debug info');
24
+ * ```
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // With Repository/Store (recommended pattern)
29
+ * import { PromidasRepositoryBuilder } from 'promidas';
30
+ * const logger = createConsoleLogger();
31
+ * const repo = new PromidasRepositoryBuilder()
32
+ * .setStoreConfig({ logger, logLevel: 'debug' })
33
+ * .setRepositoryConfig({ logger })
34
+ * .build();
35
+ * ```
36
+ *
37
+ * @module
38
+ */
39
+ export type { Logger, LogLevel } from './logger.types.js';
40
+ export { ConsoleLogger } from './console-logger.js';
41
+ export { createConsoleLogger, createNoopLogger } from './factory.js';
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/logger/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Logger module for Promidas.
3
+ *
4
+ * This module provides logging utilities and types:
5
+ * - {@link Logger} — Logger interface for custom logging implementations.
6
+ * - {@link LogLevel} — Log level type for controlling verbosity.
7
+ * - {@link ConsoleLogger} — Console-based logger class with mutable level.
8
+ * - {@link createConsoleLogger} — Factory to create a console logger with default 'info' level.
9
+ * - {@link createNoopLogger} — Factory to create a no-op logger.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // Using the factory (default 'info' level)
14
+ * const logger = createConsoleLogger();
15
+ * logger.info('Application started');
16
+ * logger.level = 'debug'; // Change level dynamically
17
+ * ```
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * // Using the constructor for specific level
22
+ * const debugLogger = new ConsoleLogger('debug');
23
+ * debugLogger.debug('Detailed debug info');
24
+ * ```
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // With Repository/Store (recommended pattern)
29
+ * import { PromidasRepositoryBuilder } from 'promidas';
30
+ * const logger = createConsoleLogger();
31
+ * const repo = new PromidasRepositoryBuilder()
32
+ * .setStoreConfig({ logger, logLevel: 'debug' })
33
+ * .setRepositoryConfig({ logger })
34
+ * .build();
35
+ * ```
36
+ *
37
+ * @module
38
+ */
39
+ export { ConsoleLogger } from './console-logger.js';
40
+ export { createConsoleLogger, createNoopLogger } from './factory.js';
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/logger/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Log levels supported by PROMIDAS loggers.
3
+ *
4
+ * @remarks
5
+ * Levels are ordered from most verbose to least verbose:
6
+ * - debug: Detailed information for debugging
7
+ * - info: General informational messages
8
+ * - warn: Warning messages
9
+ * - error: Error messages
10
+ * - silent: No logging output
11
+ */
12
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
13
+ /**
14
+ * Logger interface for PROMIDAS.
15
+ *
16
+ * This interface is compatible with protopedia-api-v2-client Logger.
17
+ * Follows the Fastify/NestJS pattern where log level is managed separately.
18
+ *
19
+ * @remarks
20
+ * - Universal: works in Browser, Node.js, and Edge environments
21
+ * - Level is managed externally (not part of the interface)
22
+ * - Default implementation uses `console` (universal)
23
+ * - Compatible with protopedia-api-v2-client Logger instances
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const logger = createConsoleLogger();
28
+ * logger.debug('Debug message', { userId: 123 });
29
+ * ```
30
+ */
31
+ export interface Logger {
32
+ /**
33
+ * Log error messages (highest priority).
34
+ */
35
+ error: (message: string, meta?: unknown) => void;
36
+ /**
37
+ * Log warning messages.
38
+ */
39
+ warn: (message: string, meta?: unknown) => void;
40
+ /**
41
+ * Log informational messages.
42
+ */
43
+ info: (message: string, meta?: unknown) => void;
44
+ /**
45
+ * Log debug messages (lowest priority).
46
+ */
47
+ debug: (message: string, meta?: unknown) => void;
48
+ }
49
+ //# sourceMappingURL=logger.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.types.d.ts","sourceRoot":"","sources":["../../lib/logger/logger.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEjD;;OAEG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEhD;;OAEG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEhD;;OAEG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logger.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.types.js","sourceRoot":"","sources":["../../lib/logger/logger.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Validation error thrown when invalid arguments are provided to repository methods.
3
+ *
4
+ * This error wraps Zod validation errors to hide the Zod dependency from users.
5
+ *
6
+ * @public
7
+ */
8
+ export declare class ValidationError extends Error {
9
+ /**
10
+ * The name of the field that failed validation.
11
+ */
12
+ readonly field: string;
13
+ /**
14
+ * Creates a new ValidationError.
15
+ *
16
+ * @param message - Human-readable error message
17
+ * @param field - The name of the field that failed validation
18
+ * @param options - Error options, including the original error cause for debugging
19
+ */
20
+ constructor(message: string, field: string, options?: {
21
+ cause?: Error;
22
+ });
23
+ }
24
+ //# sourceMappingURL=validation-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error.d.ts","sourceRoot":"","sources":["../../../lib/repository/errors/validation-error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC;;OAEG;IACH,SAAgB,KAAK,EAAE,MAAM,CAAC;IAE9B;;;;;;OAMG;gBAED,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,KAAK,CAAC;KACf;CAMJ"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Validation error thrown when invalid arguments are provided to repository methods.
3
+ *
4
+ * This error wraps Zod validation errors to hide the Zod dependency from users.
5
+ *
6
+ * @public
7
+ */
8
+ export class ValidationError extends Error {
9
+ /**
10
+ * The name of the field that failed validation.
11
+ */
12
+ field;
13
+ /**
14
+ * Creates a new ValidationError.
15
+ *
16
+ * @param message - Human-readable error message
17
+ * @param field - The name of the field that failed validation
18
+ * @param options - Error options, including the original error cause for debugging
19
+ */
20
+ constructor(message, field, options) {
21
+ super(message, options);
22
+ this.name = 'ValidationError';
23
+ this.field = field;
24
+ }
25
+ }
26
+ //# sourceMappingURL=validation-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error.js","sourceRoot":"","sources":["../../../lib/repository/errors/validation-error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC;;OAEG;IACa,KAAK,CAAS;IAE9B;;;;;;OAMG;IACH,YACE,OAAe,EACf,KAAa,EACb,OAEC;QAED,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}