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
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Factory functions for creating {@link ProtopediaInMemoryRepository} instances.
3
+ *
4
+ * This module provides convenience factory functions that simplify the setup
5
+ * of ProtopediaInMemoryRepository for common use cases.
6
+ *
7
+ * ## About This Implementation
8
+ *
9
+ * These factory functions serve as **sample implementations** and are intentionally
10
+ * verbose to demonstrate the pattern. Users are encouraged to create their own
11
+ * custom factory functions optimized for their specific use cases.
12
+ *
13
+ * The current implementations are simple wrappers around {@link PromidasRepositoryBuilder},
14
+ * but can be extended with environment-specific defaults (e.g., different TTL values,
15
+ * log levels, or API client configurations).
16
+ *
17
+ * @example Creating a custom factory
18
+ * ```typescript
19
+ * import { PromidasRepositoryBuilder } from 'promidas';
20
+ * import type { ProtopediaInMemoryRepository } from 'promidas';
21
+ *
22
+ * export function createMyCustomRepository(): ProtopediaInMemoryRepository {
23
+ * return new PromidasRepositoryBuilder()
24
+ * .setStoreConfig({ ttlMs: 60 * 60 * 1000, logLevel: 'warn' }) // 1 hour TTL
25
+ * .build();
26
+ * }
27
+ * ```
28
+ *
29
+ * @module
30
+ */
31
+ import type { LogLevel } from './logger/index.js';
32
+ import type { ProtopediaInMemoryRepository } from './repository/types/index.js';
33
+ /**
34
+ * Creates a PromidasRepository instance optimized for local execution environments.
35
+ *
36
+ * This factory function is designed for personal computers, local scripts,
37
+ * and development environments where the TOKEN can be safely stored.
38
+ *
39
+ * ## Pre-configured Settings
40
+ *
41
+ * This function automatically configures the following settings:
42
+ *
43
+ * **Logger:**
44
+ * - Log Level: `'info'` (records normal operations for development monitoring)
45
+ *
46
+ * **Store:**
47
+ * - TTL: 30 minutes (1,800,000 ms)
48
+ * - Max Data Size: 30 MiB (hard limit)
49
+ *
50
+ * **API Client:**
51
+ * - Timeout: 90 seconds (accommodates 1-2 Mbps connections)
52
+ * - User-Agent: `PromidasForLocal/{version}`
53
+ *
54
+ * ## Use Cases
55
+ *
56
+ * - Local development and testing
57
+ * - Command-line scripts
58
+ * - Personal automation tools
59
+ * - Data analysis scripts
60
+ *
61
+ * @param config - Configuration options
62
+ * @param config.protopediaApiToken - ProtoPedia API v2 token
63
+ * @param config.logLevel - Log level for all components (optional, default: 'info')
64
+ * @returns A configured PromidasRepository instance
65
+ *
66
+ * @example Basic usage
67
+ * ```typescript
68
+ * import { createPromidasForLocal } from "promidas";
69
+ *
70
+ * const repository = createPromidasForLocal({
71
+ * protopediaApiToken: 'your-api-token',
72
+ * });
73
+ *
74
+ * // Setup snapshot with 100 prototypes
75
+ * await repository.setupSnapshot({ limit: 100 });
76
+ *
77
+ * // Get random prototype
78
+ * const prototype = await repository.getRandomPrototypeFromSnapshot();
79
+ * console.log(prototype?.prototypeNm);
80
+ * ```
81
+ *
82
+ * @example With custom log level
83
+ * ```typescript
84
+ * const repository = createPromidasForLocal({
85
+ * protopediaApiToken: process.env.PROTOPEDIA_API_V2_TOKEN!,
86
+ * logLevel: 'warn', // Only show warnings and errors
87
+ * });
88
+ * ```
89
+ */
90
+ export declare function createPromidasForLocal(config: {
91
+ protopediaApiToken: string;
92
+ logLevel?: LogLevel;
93
+ }): ProtopediaInMemoryRepository;
94
+ /**
95
+ * Creates a PromidasRepository instance optimized for server backend environments.
96
+ *
97
+ * This factory function is designed for Node.js server applications
98
+ * where the TOKEN is managed securely via environment variables.
99
+ *
100
+ * ## Pre-configured Settings
101
+ *
102
+ * This function automatically configures the following settings:
103
+ *
104
+ * **Environment Variable:**
105
+ * - Token Source: `PROTOPEDIA_API_V2_TOKEN` (required)
106
+ *
107
+ * **Logger:**
108
+ * - Log Level: `'warn'` (production-ready, warnings and errors only)
109
+ *
110
+ * **Store:**
111
+ * - TTL: 10 minutes (600,000 ms)
112
+ * - Max Data Size: 30 MiB (hard limit)
113
+ *
114
+ * **API Client:**
115
+ * - Timeout: 30 seconds (server-grade connection)
116
+ * - User-Agent: `PromidasForServer/{version}`
117
+ *
118
+ * ## Use Cases
119
+ *
120
+ * - REST API servers
121
+ * - Background job processors
122
+ * - Serverless functions (AWS Lambda, Cloud Functions)
123
+ * - Microservices
124
+ *
125
+ * @param config - Configuration options
126
+ * @param config.logLevel - Log level for all components (optional, default: 'warn')
127
+ * @returns A configured PromidasRepository instance
128
+ * @throws {Error} If PROTOPEDIA_API_V2_TOKEN environment variable is not set
129
+ *
130
+ * @example Basic usage
131
+ * ```typescript
132
+ * import { createPromidasForServer } from "promidas";
133
+ *
134
+ * // TOKEN is read from PROTOPEDIA_API_V2_TOKEN environment variable
135
+ * const repository = createPromidasForServer();
136
+ *
137
+ * // Setup snapshot with 1000 prototypes
138
+ * await repository.setupSnapshot({ limit: 1000 });
139
+ *
140
+ * // Get prototype by ID
141
+ * const prototype = await repository.getPrototypeFromSnapshotByPrototypeId(123);
142
+ * ```
143
+ *
144
+ * @example With custom log level
145
+ * ```typescript
146
+ * const repository = createPromidasForServer({
147
+ * logLevel: 'error', // Only show errors in production
148
+ * });
149
+ * ```
150
+ */
151
+ export declare function createPromidasForServer(config?: {
152
+ logLevel?: LogLevel;
153
+ }): ProtopediaInMemoryRepository;
154
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../lib/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EACV,4BAA4B,EAE7B,MAAM,6BAA6B,CAAC;AAKrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GAAG,4BAA4B,CAqD/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE;IAC/C,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GAAG,4BAA4B,CAsD/B"}
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Factory functions for creating {@link ProtopediaInMemoryRepository} instances.
3
+ *
4
+ * This module provides convenience factory functions that simplify the setup
5
+ * of ProtopediaInMemoryRepository for common use cases.
6
+ *
7
+ * ## About This Implementation
8
+ *
9
+ * These factory functions serve as **sample implementations** and are intentionally
10
+ * verbose to demonstrate the pattern. Users are encouraged to create their own
11
+ * custom factory functions optimized for their specific use cases.
12
+ *
13
+ * The current implementations are simple wrappers around {@link PromidasRepositoryBuilder},
14
+ * but can be extended with environment-specific defaults (e.g., different TTL values,
15
+ * log levels, or API client configurations).
16
+ *
17
+ * @example Creating a custom factory
18
+ * ```typescript
19
+ * import { PromidasRepositoryBuilder } from 'promidas';
20
+ * import type { ProtopediaInMemoryRepository } from 'promidas';
21
+ *
22
+ * export function createMyCustomRepository(): ProtopediaInMemoryRepository {
23
+ * return new PromidasRepositoryBuilder()
24
+ * .setStoreConfig({ ttlMs: 60 * 60 * 1000, logLevel: 'warn' }) // 1 hour TTL
25
+ * .build();
26
+ * }
27
+ * ```
28
+ *
29
+ * @module
30
+ */
31
+ import { PromidasRepositoryBuilder } from './builder.js';
32
+ import { ConsoleLogger } from './logger/console-logger.js';
33
+ import { LIMIT_DATA_SIZE_BYTES as STORE_MAX_DATA_SIZE_BYTES_LIMIT } from './store/index.js';
34
+ import { VERSION } from './version.js';
35
+ /**
36
+ * Creates a PromidasRepository instance optimized for local execution environments.
37
+ *
38
+ * This factory function is designed for personal computers, local scripts,
39
+ * and development environments where the TOKEN can be safely stored.
40
+ *
41
+ * ## Pre-configured Settings
42
+ *
43
+ * This function automatically configures the following settings:
44
+ *
45
+ * **Logger:**
46
+ * - Log Level: `'info'` (records normal operations for development monitoring)
47
+ *
48
+ * **Store:**
49
+ * - TTL: 30 minutes (1,800,000 ms)
50
+ * - Max Data Size: 30 MiB (hard limit)
51
+ *
52
+ * **API Client:**
53
+ * - Timeout: 90 seconds (accommodates 1-2 Mbps connections)
54
+ * - User-Agent: `PromidasForLocal/{version}`
55
+ *
56
+ * ## Use Cases
57
+ *
58
+ * - Local development and testing
59
+ * - Command-line scripts
60
+ * - Personal automation tools
61
+ * - Data analysis scripts
62
+ *
63
+ * @param config - Configuration options
64
+ * @param config.protopediaApiToken - ProtoPedia API v2 token
65
+ * @param config.logLevel - Log level for all components (optional, default: 'info')
66
+ * @returns A configured PromidasRepository instance
67
+ *
68
+ * @example Basic usage
69
+ * ```typescript
70
+ * import { createPromidasForLocal } from "promidas";
71
+ *
72
+ * const repository = createPromidasForLocal({
73
+ * protopediaApiToken: 'your-api-token',
74
+ * });
75
+ *
76
+ * // Setup snapshot with 100 prototypes
77
+ * await repository.setupSnapshot({ limit: 100 });
78
+ *
79
+ * // Get random prototype
80
+ * const prototype = await repository.getRandomPrototypeFromSnapshot();
81
+ * console.log(prototype?.prototypeNm);
82
+ * ```
83
+ *
84
+ * @example With custom log level
85
+ * ```typescript
86
+ * const repository = createPromidasForLocal({
87
+ * protopediaApiToken: process.env.PROTOPEDIA_API_V2_TOKEN!,
88
+ * logLevel: 'warn', // Only show warnings and errors
89
+ * });
90
+ * ```
91
+ */
92
+ export function createPromidasForLocal(config) {
93
+ // Create a builder instance
94
+ const builder = new PromidasRepositoryBuilder();
95
+ // Determine log level
96
+ // Note: 'info' level records normal operations for development monitoring
97
+ const logLevel = config.logLevel ?? 'info';
98
+ // Create a shared logger instance for memory efficiency
99
+ //
100
+ // Design Decision: We create one ConsoleLogger and share it across all components
101
+ // instead of passing logLevel to each component's config. This reduces memory
102
+ // footprint and ensures consistent logging behavior across the repository.
103
+ const logger = new ConsoleLogger(logLevel);
104
+ // Configure store with default TTL for local development
105
+ const storeConfig = {
106
+ ttlMs: 30 * 60 * 1000, // 30 minutes
107
+ maxDataSizeBytes: STORE_MAX_DATA_SIZE_BYTES_LIMIT, // 30 MiB
108
+ logger, // Shared logger - logLevel is NOT set because logger already contains it
109
+ };
110
+ builder.setStoreConfig(storeConfig);
111
+ // Configure API client wrapper
112
+ const apiClientConfig = {
113
+ protoPediaApiClientOptions: {
114
+ token: config.protopediaApiToken,
115
+ // Timeout for API requests (SDK default: 15000ms = 15s)
116
+ // Reference: 20MB download time by connection speed:
117
+ // - 10 Mbps: ~16s
118
+ // - 5 Mbps: ~32s
119
+ // - 1 Mbps: ~160s (2m40s)
120
+ // - 0.5 Mbps: ~320s (5m20s)
121
+ timeoutMs: 90 * 1_000, // 90 seconds (accommodates 1-2 Mbps)
122
+ userAgent: `PromidasForLocal/${VERSION}`,
123
+ // Ensure SDK-level network logs are controlled consistently.
124
+ // Note: The SDK logger interface is compatible with promidas logger.
125
+ logger,
126
+ logLevel,
127
+ },
128
+ logger, // Shared logger - logLevel is NOT set because logger already contains it
129
+ progressLog: true,
130
+ };
131
+ builder.setApiClientConfig(apiClientConfig);
132
+ // Configure repository
133
+ const repositoryConfig = {
134
+ logger, // Shared logger - logLevel is NOT set because logger already contains it
135
+ };
136
+ builder.setRepositoryConfig(repositoryConfig);
137
+ // Build and return the repository instance
138
+ return builder.build();
139
+ }
140
+ /**
141
+ * Creates a PromidasRepository instance optimized for server backend environments.
142
+ *
143
+ * This factory function is designed for Node.js server applications
144
+ * where the TOKEN is managed securely via environment variables.
145
+ *
146
+ * ## Pre-configured Settings
147
+ *
148
+ * This function automatically configures the following settings:
149
+ *
150
+ * **Environment Variable:**
151
+ * - Token Source: `PROTOPEDIA_API_V2_TOKEN` (required)
152
+ *
153
+ * **Logger:**
154
+ * - Log Level: `'warn'` (production-ready, warnings and errors only)
155
+ *
156
+ * **Store:**
157
+ * - TTL: 10 minutes (600,000 ms)
158
+ * - Max Data Size: 30 MiB (hard limit)
159
+ *
160
+ * **API Client:**
161
+ * - Timeout: 30 seconds (server-grade connection)
162
+ * - User-Agent: `PromidasForServer/{version}`
163
+ *
164
+ * ## Use Cases
165
+ *
166
+ * - REST API servers
167
+ * - Background job processors
168
+ * - Serverless functions (AWS Lambda, Cloud Functions)
169
+ * - Microservices
170
+ *
171
+ * @param config - Configuration options
172
+ * @param config.logLevel - Log level for all components (optional, default: 'warn')
173
+ * @returns A configured PromidasRepository instance
174
+ * @throws {Error} If PROTOPEDIA_API_V2_TOKEN environment variable is not set
175
+ *
176
+ * @example Basic usage
177
+ * ```typescript
178
+ * import { createPromidasForServer } from "promidas";
179
+ *
180
+ * // TOKEN is read from PROTOPEDIA_API_V2_TOKEN environment variable
181
+ * const repository = createPromidasForServer();
182
+ *
183
+ * // Setup snapshot with 1000 prototypes
184
+ * await repository.setupSnapshot({ limit: 1000 });
185
+ *
186
+ * // Get prototype by ID
187
+ * const prototype = await repository.getPrototypeFromSnapshotByPrototypeId(123);
188
+ * ```
189
+ *
190
+ * @example With custom log level
191
+ * ```typescript
192
+ * const repository = createPromidasForServer({
193
+ * logLevel: 'error', // Only show errors in production
194
+ * });
195
+ * ```
196
+ */
197
+ export function createPromidasForServer(config) {
198
+ // Read TOKEN from environment variable
199
+ const protopediaApiToken = process.env.PROTOPEDIA_API_V2_TOKEN;
200
+ if (!protopediaApiToken) {
201
+ throw new Error('PROTOPEDIA_API_V2_TOKEN environment variable is required for server environments');
202
+ }
203
+ // Create a builder instance
204
+ const builder = new PromidasRepositoryBuilder();
205
+ // Determine log level for server environment
206
+ // Note: 'warn' level is recommended for server environments to reduce log volume
207
+ const logLevel = config?.logLevel ?? 'warn';
208
+ // Create a shared logger instance for memory efficiency
209
+ //
210
+ // Design Decision: We create one ConsoleLogger and share it across all components
211
+ // instead of passing logLevel to each component's config. This reduces memory
212
+ // footprint and ensures consistent logging behavior across the repository.
213
+ const logger = new ConsoleLogger(logLevel);
214
+ // Configure store for server environments (shorter TTL for memory efficiency)
215
+ const storeConfig = {
216
+ ttlMs: 10 * 60 * 1000, // 10 minutes
217
+ maxDataSizeBytes: STORE_MAX_DATA_SIZE_BYTES_LIMIT, // 30 MiB
218
+ logger, // Shared logger - logLevel is NOT set because logger already contains it
219
+ };
220
+ builder.setStoreConfig(storeConfig);
221
+ // Configure API client for server environments (stable, high-speed connections)
222
+ const apiClientConfig = {
223
+ protoPediaApiClientOptions: {
224
+ token: protopediaApiToken,
225
+ timeoutMs: 30 * 1_000, // 30 seconds
226
+ userAgent: `PromidasForServer/${VERSION}`,
227
+ // Ensure SDK-level network logs are controlled consistently.
228
+ logger,
229
+ logLevel,
230
+ },
231
+ logger, // Shared logger - logLevel is NOT set because logger already contains it
232
+ progressLog: true,
233
+ };
234
+ builder.setApiClientConfig(apiClientConfig);
235
+ // Configure repository
236
+ const repositoryConfig = {
237
+ logger, // Shared logger - logLevel is NOT set because logger already contains it
238
+ };
239
+ builder.setRepositoryConfig(repositoryConfig);
240
+ // Build and return the repository instance
241
+ return builder.build();
242
+ }
243
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../lib/factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Configuration types for ProtopediaApiCustomClient.
3
+ *
4
+ * @module
5
+ */
6
+ import type { ProtoPediaApiClientOptions } from 'protopedia-api-v2-client';
7
+ import type { Logger, LogLevel } from '../../logger/index.js';
8
+ import type { FetchProgressEvent } from '../types/progress-event.types.js';
9
+ /**
10
+ * Configuration options for ProtopediaApiCustomClient.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // Pattern 1: logLevel only (creates ConsoleLogger internally)
15
+ * const config1: ProtopediaApiCustomClientConfig = {
16
+ * protoPediaApiClientOptions: {
17
+ * token: process.env.PROTOPEDIA_API_TOKEN,
18
+ * },
19
+ * logLevel: 'debug',
20
+ * };
21
+ *
22
+ * // Pattern 2: Custom logger with logLevel
23
+ * import { createConsoleLogger } from 'promidas/logger';
24
+ * const config2: ProtopediaApiCustomClientConfig = {
25
+ * protoPediaApiClientOptions: {
26
+ * token: process.env.PROTOPEDIA_API_TOKEN,
27
+ * },
28
+ * logger: createConsoleLogger(),
29
+ * logLevel: 'warn', // Updates logger's level if mutable
30
+ * };
31
+ *
32
+ * // Pattern 3: Custom logger only
33
+ * const config3: ProtopediaApiCustomClientConfig = {
34
+ * protoPediaApiClientOptions: {
35
+ * token: process.env.PROTOPEDIA_API_TOKEN,
36
+ * },
37
+ * logger: createConsoleLogger(), // Uses logger's existing level
38
+ * };
39
+ * ```
40
+ */
41
+ export type ProtopediaApiCustomClientConfig = {
42
+ /**
43
+ * Options passed to the underlying protopedia-api-v2-client.
44
+ *
45
+ * @remarks
46
+ * This allows full control over the official client's configuration,
47
+ * including token, baseUrl, fetch implementation, and timeout settings.
48
+ */
49
+ protoPediaApiClientOptions?: ProtoPediaApiClientOptions;
50
+ /**
51
+ * Custom logger instance.
52
+ *
53
+ * @remarks
54
+ * - If provided, the logger will be used as-is
55
+ * - If provided with logLevel, the level will be updated if logger is mutable
56
+ * - If not provided, creates a ConsoleLogger with the specified logLevel
57
+ *
58
+ * @default undefined (creates ConsoleLogger with 'info' level)
59
+ */
60
+ logger?: Logger;
61
+ /**
62
+ * Log level for creating a default ConsoleLogger.
63
+ *
64
+ * @remarks
65
+ * - Only used when `logger` is NOT provided
66
+ * - Creates a new ConsoleLogger with this level
67
+ * - If logger is provided and mutable, updates its level property
68
+ *
69
+ * @default 'info'
70
+ */
71
+ logLevel?: LogLevel;
72
+ /**
73
+ * Enable download progress logging.
74
+ *
75
+ * @remarks
76
+ * - When enabled, logs download progress to logger
77
+ * - Requires logger to be configured to show info level logs
78
+ * - Useful for monitoring large data downloads on slow connections
79
+ * - Works independently of progressCallback
80
+ *
81
+ * @default true
82
+ */
83
+ progressLog?: boolean;
84
+ /**
85
+ * Download progress callback.
86
+ *
87
+ * Receives events for all phases of the fetch request lifecycle:
88
+ * - `request-start`: Fired when fetch() is called
89
+ * - `response-received`: Fired when response headers are received
90
+ * - `download-progress`: Fired periodically during body download (throttled to 500ms)
91
+ * - `complete`: Fired when download completes successfully
92
+ *
93
+ * @remarks
94
+ * - All events are fired regardless of progressLog setting
95
+ * - Use TypeScript's discriminated union for type-safe event handling
96
+ * - Events are fired in order: request-start → response-received → download-progress (0+) → complete
97
+ *
98
+ * @example Complete lifecycle handling
99
+ * ```typescript
100
+ * const client = new ProtopediaApiCustomClient({
101
+ * progressCallback: (event) => {
102
+ * switch (event.type) {
103
+ * case 'request-start':
104
+ * console.log('🚀 Request initiated...');
105
+ * break;
106
+ * case 'response-received':
107
+ * console.log(`✓ Headers received (${event.prepareTimeMs}ms)`);
108
+ * console.log(` Estimated: ${event.estimatedTotal} bytes`);
109
+ * break;
110
+ * case 'download-progress':
111
+ * console.log(`📥 ${event.percentage.toFixed(1)}%`);
112
+ * break;
113
+ * case 'complete':
114
+ * console.log(`✅ Complete (${event.totalTimeMs}ms total)`);
115
+ * break;
116
+ * }
117
+ * },
118
+ * });
119
+ * ```
120
+ *
121
+ * @example Progress bar integration
122
+ * ```typescript
123
+ * let progressBar: ProgressBar | null = null;
124
+ *
125
+ * const client = new ProtopediaApiCustomClient({
126
+ * progressCallback: (event) => {
127
+ * if (event.type === 'response-received') {
128
+ * progressBar = new ProgressBar({ total: event.estimatedTotal });
129
+ * } else if (event.type === 'download-progress' && progressBar) {
130
+ * progressBar.update(event.percentage);
131
+ * } else if (event.type === 'complete' && progressBar) {
132
+ * progressBar.finish();
133
+ * }
134
+ * },
135
+ * });
136
+ * ```
137
+ */
138
+ progressCallback?: (event: FetchProgressEvent) => void;
139
+ };
140
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../lib/fetcher/client/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C;;;;;;OAMG;IACH,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IAExD;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqDG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACxD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../lib/fetcher/client/config.ts"],"names":[],"mappings":""}