@static-suite/static-suite-data-server 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc.json +49 -0
  3. package/.nvmrc +1 -0
  4. package/.prettierrc +10 -0
  5. package/.vscode/launch.json +44 -0
  6. package/LICENSE.txt +339 -0
  7. package/README.md +300 -0
  8. package/__mocks__/clear-module.js +7 -0
  9. package/api-extractor.json +339 -0
  10. package/dist/bin/serve.d.ts +3 -0
  11. package/dist/bin/serve.d.ts.map +1 -0
  12. package/dist/bin/serve.js +105 -0
  13. package/dist/http/README.md +300 -0
  14. package/dist/http/httpServer.d.ts +4 -0
  15. package/dist/http/httpServer.d.ts.map +1 -0
  16. package/dist/http/httpServer.js +24 -0
  17. package/dist/http/public/assets/bulma/bulma-tooltip.min.css +2 -0
  18. package/dist/http/public/assets/bulma/bulma.min.css +1 -0
  19. package/dist/http/public/assets/clipboard/clipboard.min.js +7 -0
  20. package/dist/http/public/assets/simple-datatables/index.js +12 -0
  21. package/dist/http/public/assets/simple-datatables/style.css +173 -0
  22. package/dist/http/routes/cache.d.ts +4 -0
  23. package/dist/http/routes/cache.d.ts.map +1 -0
  24. package/dist/http/routes/cache.js +19 -0
  25. package/dist/http/routes/data.d.ts +4 -0
  26. package/dist/http/routes/data.d.ts.map +1 -0
  27. package/dist/http/routes/data.js +104 -0
  28. package/dist/http/routes/docs.d.ts +3 -0
  29. package/dist/http/routes/docs.d.ts.map +1 -0
  30. package/dist/http/routes/docs.js +14 -0
  31. package/dist/http/routes/dump.d.ts +8 -0
  32. package/dist/http/routes/dump.d.ts.map +1 -0
  33. package/dist/http/routes/dump.js +57 -0
  34. package/dist/http/routes/home.d.ts +3 -0
  35. package/dist/http/routes/home.d.ts.map +1 -0
  36. package/dist/http/routes/home.js +17 -0
  37. package/dist/http/routes/index.d.ts +3 -0
  38. package/dist/http/routes/index.d.ts.map +1 -0
  39. package/dist/http/routes/index.js +33 -0
  40. package/dist/http/routes/query.d.ts +5 -0
  41. package/dist/http/routes/query.d.ts.map +1 -0
  42. package/dist/http/routes/query.js +21 -0
  43. package/dist/http/routes/status.d.ts +9 -0
  44. package/dist/http/routes/status.d.ts.map +1 -0
  45. package/dist/http/routes/status.js +74 -0
  46. package/dist/http/routes/task.d.ts +5 -0
  47. package/dist/http/routes/task.d.ts.map +1 -0
  48. package/dist/http/routes/task.js +22 -0
  49. package/dist/http/views/cacheClear.pug +17 -0
  50. package/dist/http/views/cacheIndex.pug +19 -0
  51. package/dist/http/views/data.pug +68 -0
  52. package/dist/http/views/docs.pug +7 -0
  53. package/dist/http/views/dumpIndex.pug +14 -0
  54. package/dist/http/views/home.pug +15 -0
  55. package/dist/http/views/includes/layout.pug +23 -0
  56. package/dist/http/views/queryIndex.pug +17 -0
  57. package/dist/http/views/statusIndex.pug +14 -0
  58. package/dist/http/views/taskIndex.pug +17 -0
  59. package/dist/lib/config/config.d.ts +26 -0
  60. package/dist/lib/config/config.d.ts.map +1 -0
  61. package/dist/lib/config/config.js +122 -0
  62. package/dist/lib/config/config.types.d.ts +74 -0
  63. package/dist/lib/config/config.types.d.ts.map +1 -0
  64. package/dist/lib/config/config.types.js +2 -0
  65. package/dist/lib/config/error/InvalidRunMode.d.ts +15 -0
  66. package/dist/lib/config/error/InvalidRunMode.d.ts.map +1 -0
  67. package/dist/lib/config/error/InvalidRunMode.js +20 -0
  68. package/dist/lib/config/error/MissingDirectory.d.ts +24 -0
  69. package/dist/lib/config/error/MissingDirectory.d.ts.map +1 -0
  70. package/dist/lib/config/error/MissingDirectory.js +23 -0
  71. package/dist/lib/config/error/MissingRequiredOption.d.ts +19 -0
  72. package/dist/lib/config/error/MissingRequiredOption.d.ts.map +1 -0
  73. package/dist/lib/config/error/MissingRequiredOption.js +21 -0
  74. package/dist/lib/config/error/NonWritableDirectory.d.ts +24 -0
  75. package/dist/lib/config/error/NonWritableDirectory.d.ts.map +1 -0
  76. package/dist/lib/config/error/NonWritableDirectory.js +23 -0
  77. package/dist/lib/config/error/index.d.ts +5 -0
  78. package/dist/lib/config/error/index.d.ts.map +1 -0
  79. package/dist/lib/config/error/index.js +16 -0
  80. package/dist/lib/config/index.d.ts +2 -0
  81. package/dist/lib/config/index.d.ts.map +1 -0
  82. package/dist/lib/config/index.js +13 -0
  83. package/dist/lib/dataServer.d.ts +21 -0
  84. package/dist/lib/dataServer.d.ts.map +1 -0
  85. package/dist/lib/dataServer.js +56 -0
  86. package/dist/lib/dataServer.types.d.ts +84 -0
  87. package/dist/lib/dataServer.types.d.ts.map +1 -0
  88. package/dist/lib/dataServer.types.js +13 -0
  89. package/dist/lib/error/DomainError.d.ts +9 -0
  90. package/dist/lib/error/DomainError.d.ts.map +1 -0
  91. package/dist/lib/error/DomainError.js +20 -0
  92. package/dist/lib/index.d.ts +2 -0
  93. package/dist/lib/index.d.ts.map +1 -0
  94. package/dist/lib/index.js +15 -0
  95. package/dist/lib/query/index.d.ts +3 -0
  96. package/dist/lib/query/index.d.ts.map +1 -0
  97. package/dist/lib/query/index.js +14 -0
  98. package/dist/lib/query/query.types.d.ts +206 -0
  99. package/dist/lib/query/query.types.d.ts.map +1 -0
  100. package/dist/lib/query/query.types.js +21 -0
  101. package/dist/lib/query/queryManager.d.ts +10 -0
  102. package/dist/lib/query/queryManager.d.ts.map +1 -0
  103. package/dist/lib/query/queryManager.js +12 -0
  104. package/dist/lib/query/queryRunner copy.d.ts +3 -0
  105. package/dist/lib/query/queryRunner copy.d.ts.map +1 -0
  106. package/dist/lib/query/queryRunner copy.js +87 -0
  107. package/dist/lib/query/queryRunner.d.ts +3 -0
  108. package/dist/lib/query/queryRunner.d.ts.map +1 -0
  109. package/dist/lib/query/queryRunner.js +96 -0
  110. package/dist/lib/query/queryTagManager.d.ts +3 -0
  111. package/dist/lib/query/queryTagManager.d.ts.map +1 -0
  112. package/dist/lib/query/queryTagManager.js +47 -0
  113. package/dist/lib/store/dataDir/dataDir.types.d.ts +36 -0
  114. package/dist/lib/store/dataDir/dataDir.types.d.ts.map +1 -0
  115. package/dist/lib/store/dataDir/dataDir.types.js +2 -0
  116. package/dist/lib/store/dataDir/dataDirManager.d.ts +3 -0
  117. package/dist/lib/store/dataDir/dataDirManager.d.ts.map +1 -0
  118. package/dist/lib/store/dataDir/dataDirManager.js +97 -0
  119. package/dist/lib/store/dataDir/index.d.ts +2 -0
  120. package/dist/lib/store/dataDir/index.d.ts.map +1 -0
  121. package/dist/lib/store/dataDir/index.js +13 -0
  122. package/dist/lib/store/dependency/dependency.types.d.ts +70 -0
  123. package/dist/lib/store/dependency/dependency.types.d.ts.map +1 -0
  124. package/dist/lib/store/dependency/dependency.types.js +2 -0
  125. package/dist/lib/store/dependency/dependencyFileHelper.d.ts +6 -0
  126. package/dist/lib/store/dependency/dependencyFileHelper.d.ts.map +1 -0
  127. package/dist/lib/store/dependency/dependencyFileHelper.js +46 -0
  128. package/dist/lib/store/dependency/dependencyManager copy.d.ts +6 -0
  129. package/dist/lib/store/dependency/dependencyManager copy.d.ts.map +1 -0
  130. package/dist/lib/store/dependency/dependencyManager copy.js +91 -0
  131. package/dist/lib/store/dependency/dependencyManager.d.ts +6 -0
  132. package/dist/lib/store/dependency/dependencyManager.d.ts.map +1 -0
  133. package/dist/lib/store/dependency/dependencyManager.js +78 -0
  134. package/dist/lib/store/dependency/dependencyManager.types.d.ts +48 -0
  135. package/dist/lib/store/dependency/dependencyManager.types.d.ts.map +1 -0
  136. package/dist/lib/store/dependency/dependencyManager.types.js +2 -0
  137. package/dist/lib/store/dependency/dependencyTagManager.d.ts +6 -0
  138. package/dist/lib/store/dependency/dependencyTagManager.d.ts.map +1 -0
  139. package/dist/lib/store/dependency/dependencyTagManager.js +33 -0
  140. package/dist/lib/store/dependency/dependencyTagger.d.ts +11 -0
  141. package/dist/lib/store/dependency/dependencyTagger.d.ts.map +1 -0
  142. package/dist/lib/store/dependency/dependencyTagger.js +99 -0
  143. package/dist/lib/store/diff/diffManager.d.ts +3 -0
  144. package/dist/lib/store/diff/diffManager.d.ts.map +1 -0
  145. package/dist/lib/store/diff/diffManager.js +114 -0
  146. package/dist/lib/store/diff/diffManager.types.d.ts +50 -0
  147. package/dist/lib/store/diff/diffManager.types.d.ts.map +1 -0
  148. package/dist/lib/store/diff/diffManager.types.js +2 -0
  149. package/dist/lib/store/diff/index.d.ts +2 -0
  150. package/dist/lib/store/diff/index.d.ts.map +1 -0
  151. package/dist/lib/store/diff/index.js +13 -0
  152. package/dist/lib/store/diff/tracker.d.ts +3 -0
  153. package/dist/lib/store/diff/tracker.d.ts.map +1 -0
  154. package/dist/lib/store/diff/tracker.js +82 -0
  155. package/dist/lib/store/diff/tracker.types.d.ts +31 -0
  156. package/dist/lib/store/diff/tracker.types.d.ts.map +1 -0
  157. package/dist/lib/store/diff/tracker.types.js +2 -0
  158. package/dist/lib/store/dump/dumpManager.d.ts +3 -0
  159. package/dist/lib/store/dump/dumpManager.d.ts.map +1 -0
  160. package/dist/lib/store/dump/dumpManager.js +199 -0
  161. package/dist/lib/store/dump/dumpManager.types.d.ts +62 -0
  162. package/dist/lib/store/dump/dumpManager.types.d.ts.map +1 -0
  163. package/dist/lib/store/dump/dumpManager.types.js +2 -0
  164. package/dist/lib/store/dump/index.d.ts +2 -0
  165. package/dist/lib/store/dump/index.d.ts.map +1 -0
  166. package/dist/lib/store/dump/index.js +13 -0
  167. package/dist/lib/store/hook/hook.types.d.ts +205 -0
  168. package/dist/lib/store/hook/hook.types.d.ts.map +1 -0
  169. package/dist/lib/store/hook/hook.types.js +2 -0
  170. package/dist/lib/store/hook/hookManager.d.ts +6 -0
  171. package/dist/lib/store/hook/hookManager.d.ts.map +1 -0
  172. package/dist/lib/store/hook/hookManager.js +168 -0
  173. package/dist/lib/store/hook/index.d.ts +2 -0
  174. package/dist/lib/store/hook/index.d.ts.map +1 -0
  175. package/dist/lib/store/hook/index.js +13 -0
  176. package/dist/lib/store/include/includeIndex.d.ts +6 -0
  177. package/dist/lib/store/include/includeIndex.d.ts.map +1 -0
  178. package/dist/lib/store/include/includeIndex.js +65 -0
  179. package/dist/lib/store/include/includeIndex.types.d.ts +29 -0
  180. package/dist/lib/store/include/includeIndex.types.d.ts.map +1 -0
  181. package/dist/lib/store/include/includeIndex.types.js +2 -0
  182. package/dist/lib/store/include/includeParser.d.ts +3 -0
  183. package/dist/lib/store/include/includeParser.d.ts.map +1 -0
  184. package/dist/lib/store/include/includeParser.js +46 -0
  185. package/dist/lib/store/include/includeParser.types.d.ts +88 -0
  186. package/dist/lib/store/include/includeParser.types.d.ts.map +1 -0
  187. package/dist/lib/store/include/includeParser.types.js +2 -0
  188. package/dist/lib/store/include/index.d.ts +2 -0
  189. package/dist/lib/store/include/index.d.ts.map +1 -0
  190. package/dist/lib/store/include/index.js +13 -0
  191. package/dist/lib/store/include/parsers/configIncludeParser.d.ts +3 -0
  192. package/dist/lib/store/include/parsers/configIncludeParser.d.ts.map +1 -0
  193. package/dist/lib/store/include/parsers/configIncludeParser.js +8 -0
  194. package/dist/lib/store/include/parsers/customIncludeParser.d.ts +3 -0
  195. package/dist/lib/store/include/parsers/customIncludeParser.d.ts.map +1 -0
  196. package/dist/lib/store/include/parsers/customIncludeParser.js +8 -0
  197. package/dist/lib/store/include/parsers/entityIncludeParser.d.ts +3 -0
  198. package/dist/lib/store/include/parsers/entityIncludeParser.d.ts.map +1 -0
  199. package/dist/lib/store/include/parsers/entityIncludeParser.js +13 -0
  200. package/dist/lib/store/include/parsers/index.d.ts +6 -0
  201. package/dist/lib/store/include/parsers/index.d.ts.map +1 -0
  202. package/dist/lib/store/include/parsers/index.js +17 -0
  203. package/dist/lib/store/include/parsers/localeIncludeParser.d.ts +3 -0
  204. package/dist/lib/store/include/parsers/localeIncludeParser.d.ts.map +1 -0
  205. package/dist/lib/store/include/parsers/localeIncludeParser.js +8 -0
  206. package/dist/lib/store/include/parsers/queryIncludeParser.d.ts +11 -0
  207. package/dist/lib/store/include/parsers/queryIncludeParser.d.ts.map +1 -0
  208. package/dist/lib/store/include/parsers/queryIncludeParser.js +45 -0
  209. package/dist/lib/store/include/parsers/types/aliasIncludeParser.d.ts +3 -0
  210. package/dist/lib/store/include/parsers/types/aliasIncludeParser.d.ts.map +1 -0
  211. package/dist/lib/store/include/parsers/types/aliasIncludeParser.js +10 -0
  212. package/dist/lib/store/include/parsers/types/aliasWithoutTypeIncludeParser.d.ts +8 -0
  213. package/dist/lib/store/include/parsers/types/aliasWithoutTypeIncludeParser.d.ts.map +1 -0
  214. package/dist/lib/store/include/parsers/types/aliasWithoutTypeIncludeParser.js +18 -0
  215. package/dist/lib/store/index.d.ts +2 -0
  216. package/dist/lib/store/index.d.ts.map +1 -0
  217. package/dist/lib/store/index.js +13 -0
  218. package/dist/lib/store/store.d.ts +7 -0
  219. package/dist/lib/store/store.d.ts.map +1 -0
  220. package/dist/lib/store/store.js +89 -0
  221. package/dist/lib/store/store.types.d.ts +231 -0
  222. package/dist/lib/store/store.types.d.ts.map +1 -0
  223. package/dist/lib/store/store.types.js +2 -0
  224. package/dist/lib/store/storeManager.d.ts +3 -0
  225. package/dist/lib/store/storeManager.d.ts.map +1 -0
  226. package/dist/lib/store/storeManager.js +149 -0
  227. package/dist/lib/store/workDir/index.d.ts +2 -0
  228. package/dist/lib/store/workDir/index.d.ts.map +1 -0
  229. package/dist/lib/store/workDir/index.js +13 -0
  230. package/dist/lib/store/workDir/storage/getChangedLinesSince.d.ts +9 -0
  231. package/dist/lib/store/workDir/storage/getChangedLinesSince.d.ts.map +1 -0
  232. package/dist/lib/store/workDir/storage/getChangedLinesSince.js +47 -0
  233. package/dist/lib/store/workDir/storage/getDataFromLogLine.d.ts +10 -0
  234. package/dist/lib/store/workDir/storage/getDataFromLogLine.d.ts.map +1 -0
  235. package/dist/lib/store/workDir/storage/getDataFromLogLine.js +33 -0
  236. package/dist/lib/store/workDir/storage/getLogFile.d.ts +8 -0
  237. package/dist/lib/store/workDir/storage/getLogFile.d.ts.map +1 -0
  238. package/dist/lib/store/workDir/storage/getLogFile.js +11 -0
  239. package/dist/lib/store/workDir/storage/index.d.ts +4 -0
  240. package/dist/lib/store/workDir/storage/index.d.ts.map +1 -0
  241. package/dist/lib/store/workDir/storage/index.js +20 -0
  242. package/dist/lib/store/workDir/workDir.types.d.ts +44 -0
  243. package/dist/lib/store/workDir/workDir.types.d.ts.map +1 -0
  244. package/dist/lib/store/workDir/workDir.types.js +2 -0
  245. package/dist/lib/store/workDir/workDirHelper.d.ts +20 -0
  246. package/dist/lib/store/workDir/workDirHelper.d.ts.map +1 -0
  247. package/dist/lib/store/workDir/workDirHelper.js +52 -0
  248. package/dist/lib/task/index.d.ts +3 -0
  249. package/dist/lib/task/index.d.ts.map +1 -0
  250. package/dist/lib/task/index.js +14 -0
  251. package/dist/lib/task/task.types.d.ts +140 -0
  252. package/dist/lib/task/task.types.d.ts.map +1 -0
  253. package/dist/lib/task/task.types.js +11 -0
  254. package/dist/lib/task/taskManager.d.ts +10 -0
  255. package/dist/lib/task/taskManager.d.ts.map +1 -0
  256. package/dist/lib/task/taskManager.js +12 -0
  257. package/dist/lib/task/taskRunner.d.ts +3 -0
  258. package/dist/lib/task/taskRunner.d.ts.map +1 -0
  259. package/dist/lib/task/taskRunner.js +71 -0
  260. package/dist/lib/tsdoc-metadata.json +11 -0
  261. package/dist/lib/utils/array/arrayUtils.d.ts +2 -0
  262. package/dist/lib/utils/array/arrayUtils.d.ts.map +1 -0
  263. package/dist/lib/utils/array/arrayUtils.js +11 -0
  264. package/dist/lib/utils/cache/cacheBinManager.d.ts +37 -0
  265. package/dist/lib/utils/cache/cacheBinManager.d.ts.map +1 -0
  266. package/dist/lib/utils/cache/cacheBinManager.js +53 -0
  267. package/dist/lib/utils/cache/index.d.ts +2 -0
  268. package/dist/lib/utils/cache/index.d.ts.map +1 -0
  269. package/dist/lib/utils/cache/index.js +13 -0
  270. package/dist/lib/utils/fs/fs.types.d.ts +20 -0
  271. package/dist/lib/utils/fs/fs.types.d.ts.map +1 -0
  272. package/dist/lib/utils/fs/fs.types.js +2 -0
  273. package/dist/lib/utils/fs/fsUtils.d.ts +62 -0
  274. package/dist/lib/utils/fs/fsUtils.d.ts.map +1 -0
  275. package/dist/lib/utils/fs/fsUtils.js +137 -0
  276. package/dist/lib/utils/fs/index.d.ts +2 -0
  277. package/dist/lib/utils/fs/index.d.ts.map +1 -0
  278. package/dist/lib/utils/fs/index.js +13 -0
  279. package/dist/lib/utils/logger/index.d.ts +2 -0
  280. package/dist/lib/utils/logger/index.d.ts.map +1 -0
  281. package/dist/lib/utils/logger/index.js +13 -0
  282. package/dist/lib/utils/logger/logger.d.ts +32 -0
  283. package/dist/lib/utils/logger/logger.d.ts.map +1 -0
  284. package/dist/lib/utils/logger/logger.js +82 -0
  285. package/dist/lib/utils/logger/logger.types.d.ts +37 -0
  286. package/dist/lib/utils/logger/logger.types.d.ts.map +1 -0
  287. package/dist/lib/utils/logger/logger.types.js +15 -0
  288. package/dist/lib/utils/module/dirBasedModuleGroupManager.d.ts +30 -0
  289. package/dist/lib/utils/module/dirBasedModuleGroupManager.d.ts.map +1 -0
  290. package/dist/lib/utils/module/dirBasedModuleGroupManager.js +78 -0
  291. package/dist/lib/utils/module/index.d.ts +3 -0
  292. package/dist/lib/utils/module/index.d.ts.map +1 -0
  293. package/dist/lib/utils/module/index.js +14 -0
  294. package/dist/lib/utils/module/module.types.d.ts +53 -0
  295. package/dist/lib/utils/module/module.types.d.ts.map +1 -0
  296. package/dist/lib/utils/module/module.types.js +2 -0
  297. package/dist/lib/utils/module/moduleManager.d.ts +64 -0
  298. package/dist/lib/utils/module/moduleManager.d.ts.map +1 -0
  299. package/dist/lib/utils/module/moduleManager.js +139 -0
  300. package/dist/lib/utils/object/index.d.ts +2 -0
  301. package/dist/lib/utils/object/index.d.ts.map +1 -0
  302. package/dist/lib/utils/object/index.js +13 -0
  303. package/dist/lib/utils/object/object.types.d.ts +72 -0
  304. package/dist/lib/utils/object/object.types.d.ts.map +1 -0
  305. package/dist/lib/utils/object/object.types.js +2 -0
  306. package/dist/lib/utils/object/objectUtils.d.ts +45 -0
  307. package/dist/lib/utils/object/objectUtils.d.ts.map +1 -0
  308. package/dist/lib/utils/object/objectUtils.js +64 -0
  309. package/dist/lib/utils/string/index.d.ts +2 -0
  310. package/dist/lib/utils/string/index.d.ts.map +1 -0
  311. package/dist/lib/utils/string/index.js +13 -0
  312. package/dist/lib/utils/string/string.types.d.ts +2 -0
  313. package/dist/lib/utils/string/string.types.d.ts.map +1 -0
  314. package/dist/lib/utils/string/string.types.js +2 -0
  315. package/dist/lib/utils/string/stringUtils.d.ts +37 -0
  316. package/dist/lib/utils/string/stringUtils.d.ts.map +1 -0
  317. package/dist/lib/utils/string/stringUtils.js +62 -0
  318. package/dist/lib/watcher/index.d.ts +2 -0
  319. package/dist/lib/watcher/index.d.ts.map +1 -0
  320. package/dist/lib/watcher/index.js +13 -0
  321. package/dist/lib/watcher/watcher.d.ts +17 -0
  322. package/dist/lib/watcher/watcher.d.ts.map +1 -0
  323. package/dist/lib/watcher/watcher.js +65 -0
  324. package/dist/static-suite-data-server.d.ts +392 -0
  325. package/package.json +102 -0
  326. package/scripts/copy-http-files-to-src.js +45 -0
  327. package/src/__tests__/fixtures/data/en/en.json +3 -0
  328. package/src/__tests__/fixtures/data/en/entity/entity.json +3 -0
  329. package/src/__tests__/fixtures/data/en/entity/node/article/article1--card.json +3 -0
  330. package/src/__tests__/fixtures/data/en/entity/node/article/article1--small.json +3 -0
  331. package/src/__tests__/fixtures/data/en/entity/node/article/article1.json +40 -0
  332. package/src/__tests__/fixtures/data/en/entity/node/article/article2--card.json +3 -0
  333. package/src/__tests__/fixtures/data/en/entity/node/article/article2--small.json +3 -0
  334. package/src/__tests__/fixtures/data/en/entity/node/article/article2.json +40 -0
  335. package/src/__tests__/fixtures/data/en/entity/node/article/article3--card.json +3 -0
  336. package/src/__tests__/fixtures/data/en/entity/node/article/article3--small.json +3 -0
  337. package/src/__tests__/fixtures/data/en/entity/node/article/article3.json +7 -0
  338. package/src/__tests__/fixtures/data/en/entity/node/node.json +3 -0
  339. package/src/__tests__/fixtures/data/en/entity/node/page/page1--card.json +3 -0
  340. package/src/__tests__/fixtures/data/en/entity/node/page/page1--small.json +3 -0
  341. package/src/__tests__/fixtures/data/en/entity/node/page/page1.json +3 -0
  342. package/src/__tests__/fixtures/data/en/entity/node/page/page2--card.json +3 -0
  343. package/src/__tests__/fixtures/data/en/entity/node/page/page2--small.json +3 -0
  344. package/src/__tests__/fixtures/data/en/entity/node/page/page2.json +3 -0
  345. package/src/__tests__/fixtures/data/global--block.json +3 -0
  346. package/src/__tests__/fixtures/data/global.json +3 -0
  347. package/src/__tests__/fixtures/hook/main.hook.js +15 -0
  348. package/src/__tests__/fixtures/hook/taxonomy/main.hook.js +15 -0
  349. package/src/__tests__/fixtures/hook/taxonomy/taxo.hook.js +15 -0
  350. package/src/__tests__/fixtures/query/error.query.js +6 -0
  351. package/src/__tests__/fixtures/query/noHandler.query.js +14 -0
  352. package/src/__tests__/fixtures/query/query1.query.js +15 -0
  353. package/src/__tests__/fixtures/query/query2.query.js +14 -0
  354. package/src/__tests__/fixtures/query/wrongNamequery.js +14 -0
  355. package/src/__tests__/fixtures/task/error.task.js +6 -0
  356. package/src/__tests__/fixtures/task/noHandler.task.js +13 -0
  357. package/src/__tests__/fixtures/task/task1.task.js +14 -0
  358. package/src/__tests__/fixtures/task/task2.task.js +13 -0
  359. package/src/__tests__/fixtures/task/wrongNametask.js +13 -0
  360. package/src/bin/serve.ts +107 -0
  361. package/src/http/httpServer.ts +21 -0
  362. package/src/http/routes/cache.ts +17 -0
  363. package/src/http/routes/data.ts +114 -0
  364. package/src/http/routes/docs.ts +9 -0
  365. package/src/http/routes/dump.ts +61 -0
  366. package/src/http/routes/home.ts +16 -0
  367. package/src/http/routes/index.ts +47 -0
  368. package/src/http/routes/query.ts +27 -0
  369. package/src/http/routes/status.ts +89 -0
  370. package/src/http/routes/task.ts +29 -0
  371. package/src/http/views/cacheClear.pug +17 -0
  372. package/src/http/views/cacheIndex.pug +19 -0
  373. package/src/http/views/data.pug +68 -0
  374. package/src/http/views/docs.pug +7 -0
  375. package/src/http/views/dumpIndex.pug +14 -0
  376. package/src/http/views/home.pug +15 -0
  377. package/src/http/views/includes/layout.pug +23 -0
  378. package/src/http/views/queryIndex.pug +17 -0
  379. package/src/http/views/statusIndex.pug +14 -0
  380. package/src/http/views/taskIndex.pug +17 -0
  381. package/src/lib/config/__tests__/config.test.ts +132 -0
  382. package/src/lib/config/config.ts +143 -0
  383. package/src/lib/config/config.types.ts +87 -0
  384. package/src/lib/config/error/InvalidRunMode.ts +17 -0
  385. package/src/lib/config/error/MissingDirectory.ts +30 -0
  386. package/src/lib/config/error/MissingRequiredOption.ts +23 -0
  387. package/src/lib/config/error/NonWritableDirectory.ts +30 -0
  388. package/src/lib/config/error/index.ts +4 -0
  389. package/src/lib/config/index.ts +1 -0
  390. package/src/lib/dataServer.ts +81 -0
  391. package/src/lib/dataServer.types.ts +98 -0
  392. package/src/lib/error/DomainError.ts +18 -0
  393. package/src/lib/index.ts +4 -0
  394. package/src/lib/query/__tests__/queryRunner.test.ts +61 -0
  395. package/src/lib/query/index.ts +2 -0
  396. package/src/lib/query/query.types.ts +231 -0
  397. package/src/lib/query/queryManager.ts +11 -0
  398. package/src/lib/query/queryRunner.ts +110 -0
  399. package/src/lib/query/queryTagManager.ts +53 -0
  400. package/src/lib/store/dataDir/__tests__/dataDirManager.test.ts +15 -0
  401. package/src/lib/store/dataDir/dataDir.types.ts +38 -0
  402. package/src/lib/store/dataDir/dataDirManager.ts +121 -0
  403. package/src/lib/store/dataDir/index.ts +1 -0
  404. package/src/lib/store/dependency/dependency.types.ts +78 -0
  405. package/src/lib/store/dependency/dependencyFileHelper.ts +50 -0
  406. package/src/lib/store/dependency/dependencyManager.ts +82 -0
  407. package/src/lib/store/dependency/dependencyTagger.ts +105 -0
  408. package/src/lib/store/diff/diffManager.ts +122 -0
  409. package/src/lib/store/diff/diffManager.types.ts +51 -0
  410. package/src/lib/store/diff/index.ts +1 -0
  411. package/src/lib/store/dump/dumpManager.ts +235 -0
  412. package/src/lib/store/dump/dumpManager.types.ts +61 -0
  413. package/src/lib/store/dump/index.ts +1 -0
  414. package/src/lib/store/hook/hook.types.ts +232 -0
  415. package/src/lib/store/hook/hookManager.ts +180 -0
  416. package/src/lib/store/hook/index.ts +1 -0
  417. package/src/lib/store/include/__tests__/includeParser.test.ts +80 -0
  418. package/src/lib/store/include/includeParser.ts +54 -0
  419. package/src/lib/store/include/includeParser.types.ts +99 -0
  420. package/src/lib/store/include/index.ts +1 -0
  421. package/src/lib/store/include/parsers/__tests__/entityIncludeParser.test.ts +43 -0
  422. package/src/lib/store/include/parsers/configIncludeParser.ts +8 -0
  423. package/src/lib/store/include/parsers/customIncludeParser.ts +8 -0
  424. package/src/lib/store/include/parsers/entityIncludeParser.ts +15 -0
  425. package/src/lib/store/include/parsers/index.ts +5 -0
  426. package/src/lib/store/include/parsers/localeIncludeParser.ts +8 -0
  427. package/src/lib/store/include/parsers/queryIncludeParser.ts +51 -0
  428. package/src/lib/store/include/parsers/types/__tests__/aliasIncludeParser.test.ts +37 -0
  429. package/src/lib/store/include/parsers/types/__tests__/aliasWithoutTypeIncludeParser.test.ts +43 -0
  430. package/src/lib/store/include/parsers/types/aliasIncludeParser.ts +13 -0
  431. package/src/lib/store/include/parsers/types/aliasWithoutTypeIncludeParser.ts +22 -0
  432. package/src/lib/store/index.ts +1 -0
  433. package/src/lib/store/store.ts +105 -0
  434. package/src/lib/store/store.types.ts +251 -0
  435. package/src/lib/store/storeManager.ts +187 -0
  436. package/src/lib/store/workDir/__tests__/workDirHelper.test.ts +25 -0
  437. package/src/lib/store/workDir/index.ts +1 -0
  438. package/src/lib/store/workDir/storage/__tests__/getChangedLinesSince.test.ts +23 -0
  439. package/src/lib/store/workDir/storage/__tests__/getDataFromLogLine.test.ts +21 -0
  440. package/src/lib/store/workDir/storage/getChangedLinesSince.ts +47 -0
  441. package/src/lib/store/workDir/storage/getDataFromLogLine.ts +31 -0
  442. package/src/lib/store/workDir/storage/getLogFile.ts +11 -0
  443. package/src/lib/store/workDir/storage/index.ts +8 -0
  444. package/src/lib/store/workDir/workDir.types.ts +48 -0
  445. package/src/lib/store/workDir/workDirHelper.ts +59 -0
  446. package/src/lib/task/__tests__/taskRunner.test.ts +47 -0
  447. package/src/lib/task/index.ts +2 -0
  448. package/src/lib/task/task.types.ts +151 -0
  449. package/src/lib/task/taskManager.ts +11 -0
  450. package/src/lib/task/taskRunner.ts +79 -0
  451. package/src/lib/utils/array/__tests__/arrayUtils.test.ts +16 -0
  452. package/src/lib/utils/array/arrayUtils.ts +7 -0
  453. package/src/lib/utils/cache/__tests__/cache.test.ts +24 -0
  454. package/src/lib/utils/cache/cacheBinManager.ts +88 -0
  455. package/src/lib/utils/cache/index.ts +1 -0
  456. package/src/lib/utils/fs/__tests__/fixtures/file.json +3 -0
  457. package/src/lib/utils/fs/__tests__/fixtures/file.txt +3 -0
  458. package/src/lib/utils/fs/__tests__/fsUtils.test.ts +93 -0
  459. package/src/lib/utils/fs/fs.types.ts +21 -0
  460. package/src/lib/utils/fs/fsUtils.ts +141 -0
  461. package/src/lib/utils/fs/index.ts +1 -0
  462. package/src/lib/utils/logger/__tests__/logger.test.ts +12 -0
  463. package/src/lib/utils/logger/index.ts +1 -0
  464. package/src/lib/utils/logger/logger.ts +87 -0
  465. package/src/lib/utils/logger/logger.types.ts +41 -0
  466. package/src/lib/utils/module/__mocks__/dummyModule.query.js +4 -0
  467. package/src/lib/utils/module/__mocks__/dummyModule2.query.js +4 -0
  468. package/src/lib/utils/module/__tests__/dirBasedModuleGroupManager.test.ts +34 -0
  469. package/src/lib/utils/module/__tests__/moduleHandler.test.ts +100 -0
  470. package/src/lib/utils/module/dirBasedModuleGroupManager.ts +78 -0
  471. package/src/lib/utils/module/index.ts +2 -0
  472. package/src/lib/utils/module/module.types.ts +57 -0
  473. package/src/lib/utils/module/moduleManager.ts +144 -0
  474. package/src/lib/utils/object/__tests__/objectUtils.test.ts +62 -0
  475. package/src/lib/utils/object/index.ts +1 -0
  476. package/src/lib/utils/object/object.types.ts +74 -0
  477. package/src/lib/utils/object/objectUtils.ts +71 -0
  478. package/src/lib/utils/string/__tests__/stringUtils.test.ts +30 -0
  479. package/src/lib/utils/string/index.ts +1 -0
  480. package/src/lib/utils/string/string.types.ts +1 -0
  481. package/src/lib/utils/string/stringUtils.ts +61 -0
  482. package/src/lib/watcher/index.ts +1 -0
  483. package/src/lib/watcher/watcher.ts +66 -0
  484. package/tsconfig.json +83 -0
@@ -0,0 +1,143 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { RunMode } from '@lib/dataServer.types';
4
+ import { hasKey } from '@lib/utils/object';
5
+ import { ConfigOptions, NonSanitizedConfigOptions } from './config.types';
6
+ import {
7
+ InvalidRunMode,
8
+ MissingDirectory,
9
+ NonWritableDirectory,
10
+ MissingRequiredOption,
11
+ } from './error';
12
+
13
+ const config: ConfigOptions = Object.create(null); // no inherited properties
14
+
15
+ /**
16
+ * Configures the data server.
17
+ *
18
+ * @remarks
19
+ * It validates provided configuration and returns a sanitized and immutable
20
+ * configuration object. It throws several errors if validation is not passing.
21
+ *
22
+ * @param options - Configuration options, @see {@link ConfigOptions}
23
+ *
24
+ * @returns - The sanitized and immutable configuration object.
25
+ *
26
+ * @throws {@link MissingRequiredOption}
27
+ * Exception thrown if the dataDir or runMode are not provided.
28
+ *
29
+ * @throws {@link MissingDirectory}
30
+ * Exception thrown if any of the provided paths (dataDir, workDir,
31
+ * queryDir, hookDir or taskDir) is not found.
32
+ *
33
+ * @throws {@link InvalidRunMode}
34
+ * Exception thrown if runMode is not valid.
35
+ */
36
+ const setConfig = (options: NonSanitizedConfigOptions): ConfigOptions => {
37
+ const localOptions = options;
38
+ // Check that required options are provided.
39
+ // Since this method is publicly accessible at runtime, it is not
40
+ // possible to rely on TypeScript type safety.
41
+ if (!localOptions.dataDir) {
42
+ throw new MissingRequiredOption('dataDir');
43
+ }
44
+ localOptions.dataDir = path.resolve(localOptions.dataDir);
45
+ if (
46
+ !fs.existsSync(localOptions.dataDir) ||
47
+ !fs.lstatSync(localOptions.dataDir).isDirectory()
48
+ ) {
49
+ throw new MissingDirectory('dataDir', localOptions.dataDir);
50
+ }
51
+ // fs.realpathSync() throws an error if path does not exist.
52
+ localOptions.dataDir = fs.realpathSync(localOptions.dataDir);
53
+
54
+ if (localOptions.workDir) {
55
+ localOptions.workDir = path.resolve(localOptions.workDir);
56
+ if (
57
+ !fs.existsSync(localOptions.workDir) ||
58
+ !fs.lstatSync(localOptions.workDir).isDirectory()
59
+ ) {
60
+ throw new MissingDirectory('workDir', localOptions.workDir);
61
+ }
62
+ // fs.realpathSync() throws an error if path does not exist.
63
+ localOptions.workDir = fs.realpathSync(localOptions.workDir);
64
+ }
65
+
66
+ if (localOptions.queryDir) {
67
+ localOptions.queryDir = path.resolve(localOptions.queryDir);
68
+ if (
69
+ !fs.existsSync(localOptions.queryDir) ||
70
+ !fs.lstatSync(localOptions.queryDir).isDirectory()
71
+ ) {
72
+ throw new MissingDirectory('queryDir', localOptions.queryDir);
73
+ }
74
+ // fs.realpathSync() throws an error if path does not exist.
75
+ localOptions.queryDir = fs.realpathSync(localOptions.queryDir);
76
+ }
77
+
78
+ if (localOptions.hookDir) {
79
+ localOptions.hookDir = path.resolve(localOptions.hookDir);
80
+ if (
81
+ !fs.existsSync(localOptions.hookDir) ||
82
+ !fs.lstatSync(localOptions.hookDir).isDirectory()
83
+ ) {
84
+ throw new MissingDirectory('hookDir', localOptions.hookDir);
85
+ }
86
+ // fs.realpathSync() throws an error if path does not exist.
87
+ localOptions.hookDir = fs.realpathSync(localOptions.hookDir);
88
+ }
89
+
90
+ if (localOptions.taskDir) {
91
+ localOptions.taskDir = path.resolve(localOptions.taskDir);
92
+ if (
93
+ !fs.existsSync(localOptions.taskDir) ||
94
+ !fs.lstatSync(localOptions.taskDir).isDirectory()
95
+ ) {
96
+ throw new MissingDirectory('taskDir', localOptions.taskDir);
97
+ }
98
+ // fs.realpathSync() throws an error if path does not exist.
99
+ localOptions.taskDir = fs.realpathSync(localOptions.taskDir);
100
+ }
101
+
102
+ if (localOptions.dumpDir) {
103
+ localOptions.dumpDir = path.resolve(localOptions.dumpDir);
104
+ if (
105
+ !fs.existsSync(localOptions.dumpDir) ||
106
+ !fs.lstatSync(localOptions.dumpDir).isDirectory()
107
+ ) {
108
+ throw new MissingDirectory('dumpDir', localOptions.dumpDir);
109
+ }
110
+ try {
111
+ fs.accessSync(localOptions.dumpDir, fs.constants.W_OK);
112
+ } catch (e) {
113
+ throw new NonWritableDirectory('dumpDir', localOptions.dumpDir);
114
+ }
115
+ // fs.realpathSync() throws an error if path does not exist.
116
+ localOptions.dumpDir = fs.realpathSync(localOptions.dumpDir);
117
+ }
118
+
119
+ if (!localOptions.runMode) {
120
+ localOptions.runMode = RunMode.PROD;
121
+ }
122
+ if (!Object.values(RunMode).includes(localOptions.runMode)) {
123
+ throw new InvalidRunMode(localOptions.runMode);
124
+ }
125
+
126
+ Object.keys(localOptions).forEach(key => {
127
+ if (hasKey(localOptions, key)) {
128
+ Object.defineProperty(config, key, {
129
+ enumerable: true,
130
+ configurable: false,
131
+ writable: false,
132
+ // Remove leading slash from all directories.
133
+ value:
134
+ key === 'runMode'
135
+ ? localOptions[key]
136
+ : localOptions[key]?.replace(/\/$/, ''),
137
+ });
138
+ }
139
+ });
140
+ return Object.freeze(config);
141
+ };
142
+
143
+ export { config, setConfig };
@@ -0,0 +1,87 @@
1
+ import { RunMode } from '@lib/dataServer.types';
2
+
3
+ /**
4
+ * Configuration options.
5
+ */
6
+ export type ConfigOptions = {
7
+ /**
8
+ * Path to the directory where data is stored.
9
+ */
10
+ dataDir: string;
11
+
12
+ /**
13
+ * Path to the directory where work data is stored. Optional.
14
+ */
15
+ workDir?: string;
16
+
17
+ /**
18
+ * Path to the directory where queries are stored. Optional.
19
+ */
20
+ queryDir?: string;
21
+
22
+ /**
23
+ * Path to the directory where hooks are stored. Optional.
24
+ */
25
+ hookDir?: string;
26
+
27
+ /**
28
+ * Path to the directory where tasks are stored. Optional.
29
+ */
30
+ taskDir?: string;
31
+
32
+ /**
33
+ * Path to the directory where dumps are stored. Optional.
34
+ */
35
+ dumpDir?: string;
36
+
37
+ /**
38
+ * Run mode (dev or prod).
39
+ */
40
+ runMode: RunMode;
41
+ };
42
+
43
+ /**
44
+ * Non-sanitized configuration options.
45
+ *
46
+ * @remarks
47
+ * Options received by Data Server before validating them. They are the same as
48
+ * {@link ConfigOptions} but with an optional runMode.
49
+ *
50
+ * @see {@link ConfigOptions}
51
+ */
52
+ export type NonSanitizedConfigOptions = {
53
+ /**
54
+ * Path to the directory where data is stored.
55
+ */
56
+ dataDir: string;
57
+
58
+ /**
59
+ * Path to the directory where work data is stored. Optional.
60
+ */
61
+ workDir?: string;
62
+
63
+ /**
64
+ * Path to the directory where queries are stored. Optional.
65
+ */
66
+ queryDir?: string;
67
+
68
+ /**
69
+ * Path to the directory where hooks are stored. Optional.
70
+ */
71
+ hookDir?: string;
72
+
73
+ /**
74
+ * Path to the directory where tasks are stored. Optional.
75
+ */
76
+ taskDir?: string;
77
+
78
+ /**
79
+ * Path to the directory where dumps are stored. Optional.
80
+ */
81
+ dumpDir?: string;
82
+
83
+ /**
84
+ * Run mode (dev or prod).
85
+ */
86
+ runMode?: RunMode;
87
+ };
@@ -0,0 +1,17 @@
1
+ import { DomainError } from '@lib/error/DomainError';
2
+
3
+ /**
4
+ * Defines a custom error for invalid run modes.
5
+ *
6
+ * @internal
7
+ */
8
+ export class InvalidRunMode extends DomainError {
9
+ /**
10
+ * Constructs a new error for invalid run modes.
11
+ *
12
+ * @param runMode - the value of the invalid runMode.
13
+ */
14
+ constructor(runMode: string) {
15
+ super(`Invalid value provided for "runMode": "${runMode}"`);
16
+ }
17
+ }
@@ -0,0 +1,30 @@
1
+ import { DomainError } from '@lib/error/DomainError';
2
+
3
+ /**
4
+ * Defines a custom error for missing directories.
5
+ *
6
+ * @internal
7
+ */
8
+ export class MissingDirectory extends DomainError {
9
+ /**
10
+ * The configuration id of the missing directory (dataDir, queryDir, etc).
11
+ */
12
+ directoryId: string;
13
+
14
+ /**
15
+ * Path of the missing directory.
16
+ */
17
+ path: string;
18
+
19
+ /**
20
+ * Constructs a new error for missing directories.
21
+ *
22
+ * @param directoryId - the configuration id of the missing directory (dataDir, queryDir, etc).
23
+ * @param path - the path of the missing directory.
24
+ */
25
+ constructor(directoryId: string, path: string) {
26
+ super(`Cannot find "${directoryId}" directory: "${path}"`);
27
+ this.directoryId = directoryId;
28
+ this.path = path;
29
+ }
30
+ }
@@ -0,0 +1,23 @@
1
+ import { DomainError } from '@lib/error/DomainError';
2
+
3
+ /**
4
+ * Defines a custom error for missing required options.
5
+ *
6
+ * @internal
7
+ */
8
+ export class MissingRequiredOption extends DomainError {
9
+ /**
10
+ * The name of the missing required option.
11
+ */
12
+ requiredOption: string;
13
+
14
+ /**
15
+ * Constructs a new error for missing required options.
16
+ *
17
+ * @param requiredOption - the name of the missing required option.
18
+ */
19
+ constructor(requiredOption: string) {
20
+ super(`Required option not provided: "${requiredOption}".`);
21
+ this.requiredOption = requiredOption;
22
+ }
23
+ }
@@ -0,0 +1,30 @@
1
+ import { DomainError } from '@lib/error/DomainError';
2
+
3
+ /**
4
+ * Defines a custom error for non-writable directories.
5
+ *
6
+ * @internal
7
+ */
8
+ export class NonWritableDirectory extends DomainError {
9
+ /**
10
+ * The configuration id of the non-writable directory (dataDir, queryDir, etc).
11
+ */
12
+ directoryId: string;
13
+
14
+ /**
15
+ * Path of the non-writable directory.
16
+ */
17
+ path: string;
18
+
19
+ /**
20
+ * Constructs a new error for non-writable directories.
21
+ *
22
+ * @param directoryId - the configuration id of the non-writable directory (dataDir, queryDir, etc).
23
+ * @param path - the path of the non-writable directory.
24
+ */
25
+ constructor(directoryId: string, path: string) {
26
+ super(`Directory "${directoryId}" is not writable: "${path}"`);
27
+ this.directoryId = directoryId;
28
+ this.path = path;
29
+ }
30
+ }
@@ -0,0 +1,4 @@
1
+ export * from './InvalidRunMode';
2
+ export * from './MissingDirectory';
3
+ export * from './NonWritableDirectory';
4
+ export * from './MissingRequiredOption';
@@ -0,0 +1 @@
1
+ export * from './config';
@@ -0,0 +1,81 @@
1
+ import { configureLogger } from '@lib/utils/logger';
2
+ import { LogLevel, LogFile } from '@lib/utils/logger/logger.types';
3
+ import { initWatcher } from '@lib/watcher';
4
+ import { setConfig } from '@lib/config';
5
+ import { dataDirManager } from '@lib/store/dataDir';
6
+ import { store } from '@lib/store';
7
+ import { Store } from '@lib/store/store.types';
8
+ import { queryRunner } from '@lib/query';
9
+ import { taskRunner } from '@lib/task/taskRunner';
10
+ import {
11
+ QueryRunner,
12
+ QuerySuccessfulResponse,
13
+ QueryErrorResponse,
14
+ QueryArgs,
15
+ QueryModule,
16
+ CacheStatus,
17
+ } from '@lib/query/query.types';
18
+ import {
19
+ RunMode,
20
+ DataServerReturn,
21
+ DataServerInitOptions,
22
+ } from './dataServer.types';
23
+
24
+ /**
25
+ * The Data Server instance.
26
+ *
27
+ * @public
28
+ */
29
+ const dataServer = {
30
+ /**
31
+ * Initializes the Data Server.
32
+ *
33
+ * @param options - Configuration options
34
+ *
35
+ * @returns An object with the data store and the queryRunner service.
36
+ */
37
+ init: (options: DataServerInitOptions): DataServerReturn => {
38
+ // Configure logger.
39
+ configureLogger(options.logLevel, options.logFile);
40
+
41
+ // Configure data server.
42
+ const config = setConfig({
43
+ dataDir: options.dataDir,
44
+ workDir: options.workDir,
45
+ queryDir: options.queryDir,
46
+ hookDir: options.hookDir,
47
+ taskDir: options.taskDir,
48
+ dumpDir: options.dumpDir,
49
+ runMode: options.runMode,
50
+ });
51
+
52
+ // Start watcher.
53
+ if (config.runMode === RunMode.DEV) {
54
+ initWatcher();
55
+ }
56
+
57
+ // Load data from dataDir.
58
+ dataDirManager.load();
59
+
60
+ return {
61
+ store,
62
+ queryRunner,
63
+ taskRunner,
64
+ };
65
+ },
66
+ };
67
+ export {
68
+ dataServer,
69
+ DataServerInitOptions,
70
+ DataServerReturn,
71
+ RunMode,
72
+ LogLevel,
73
+ LogFile,
74
+ Store,
75
+ QueryRunner,
76
+ QuerySuccessfulResponse,
77
+ QueryErrorResponse,
78
+ QueryArgs,
79
+ QueryModule,
80
+ CacheStatus,
81
+ };
@@ -0,0 +1,98 @@
1
+ import { LogLevel, LogFile } from '@lib/utils/logger/logger.types';
2
+ import { QueryRunner } from '@lib/query/query.types';
3
+ import { TaskRunner } from './task/task.types';
4
+ import { Store } from './store/store.types';
5
+
6
+ /**
7
+ * Init options for Data Server.
8
+ *
9
+ * @public
10
+ */
11
+ export type DataServerInitOptions = {
12
+ /**
13
+ * Log level. Optional. @see {@link LogLevel}
14
+ */
15
+ logLevel?: LogLevel;
16
+
17
+ /**
18
+ * Path to the log file. Optional. @see {@link LogFile}
19
+ */
20
+ logFile?: LogFile;
21
+
22
+ /**
23
+ * Log level for the log file. Optional. @see {@link LogLevel}
24
+ */
25
+ logFileLevel?: LogLevel;
26
+
27
+ /**
28
+ * Path to the directory where data is stored.
29
+ */
30
+ dataDir: string;
31
+
32
+ /**
33
+ * Path to the directory where work data is stored. Optional.
34
+ */
35
+ workDir?: string;
36
+
37
+ /**
38
+ * Path to the directory where queries are stored. Optional.
39
+ */
40
+ queryDir?: string;
41
+
42
+ /**
43
+ * Path to the directory where hooks are stored. Optional.
44
+ */
45
+ hookDir?: string;
46
+
47
+ /**
48
+ * Path to the directory where tasks are stored. Optional.
49
+ */
50
+ taskDir?: string;
51
+
52
+ /**
53
+ * Path to the directory where dumps are stored. Optional.
54
+ */
55
+ dumpDir?: string;
56
+
57
+ /**
58
+ * Run mode (dev or prod).
59
+ */
60
+ runMode: RunMode;
61
+ };
62
+
63
+ /**
64
+ * Available run modes: dev or prod.
65
+ *
66
+ * @public
67
+ */
68
+ export enum RunMode {
69
+ DEV = 'dev',
70
+ PROD = 'prod',
71
+ }
72
+
73
+ /**
74
+ * A helper to get RunMode type as strings. @see {@link RunMode}.
75
+ */
76
+ export type RunModeStrings = keyof typeof RunMode;
77
+
78
+ /**
79
+ * Data returned by Data Server once initialized.
80
+ *
81
+ * @public
82
+ */
83
+ export type DataServerReturn = {
84
+ /**
85
+ * The data store.
86
+ */
87
+ store: Store;
88
+
89
+ /**
90
+ * The query runner, to be able to run queries on demand.
91
+ */
92
+ queryRunner: QueryRunner;
93
+
94
+ /**
95
+ * The task runner, to be able to run tasks on demand.
96
+ */
97
+ taskRunner: TaskRunner;
98
+ };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Defines a custom error that extends the Error class.
3
+ *
4
+ * @internal
5
+ */
6
+ export class DomainError extends Error {
7
+ constructor(message: string) {
8
+ super(message);
9
+
10
+ // Ensure the name of this error is the same as the class name.
11
+ this.name = this.constructor.name;
12
+
13
+ // This clips the constructor invocation from the stack trace.
14
+ // It's not absolutely essential, but it does make the stack trace a little nicer.
15
+ // @see https://nodejs.org/api/errors.html#errors_error_capturestacktrace_targetobject_constructoropt
16
+ Error.captureStackTrace(this, this.constructor);
17
+ }
18
+ }
@@ -0,0 +1,4 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
2
+ require('module-alias')(`${__dirname}/../..`);
3
+
4
+ export * from './dataServer';
@@ -0,0 +1,61 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { config } from '@lib/config';
4
+ import { RunMode } from '@lib/dataServer.types';
5
+ import { cache } from '@lib/utils/cache';
6
+ import { logger } from '@lib/utils/logger';
7
+ import { isQueryErrorResponse } from '../query.types';
8
+ import { queryRunner } from '../queryRunner';
9
+ import { queryManager } from '../queryManager';
10
+
11
+ beforeEach(() => {
12
+ config.queryDir = fs.realpathSync(
13
+ path.resolve('src/__tests__/fixtures/query'),
14
+ );
15
+ config.runMode = RunMode.PROD;
16
+ });
17
+
18
+ let random = 0;
19
+
20
+ describe('QueryRunner test', () => {
21
+ describe('getAvailableQueryIds', () => {
22
+ it('Returns correct queries ids from fixtures', () => {
23
+ expect(Array.from(queryManager.getModuleGroupInfo().keys())).toEqual([
24
+ 'error',
25
+ 'noHandler',
26
+ 'query1',
27
+ 'query2',
28
+ ]);
29
+ });
30
+ });
31
+
32
+ describe('run', () => {
33
+ it('Returns query data', () => {
34
+ cache.bin('query').clear();
35
+ const queryResponse = queryRunner.run('query1?x=x&y=33');
36
+ const data =
37
+ !isQueryErrorResponse(queryResponse) && queryResponse.data[0];
38
+ expect(data.id).toEqual('33');
39
+ ({ random } = data);
40
+ });
41
+
42
+ it('Returns query data from cache', () => {
43
+ const queryResponse = queryRunner.run('query1?x=x&y=33');
44
+ const response = !isQueryErrorResponse(queryResponse)
45
+ ? queryResponse
46
+ : null;
47
+ expect(response?.metadata?.cache).toBeTruthy();
48
+ expect(response?.data?.[0]?.random).toEqual(random);
49
+ });
50
+
51
+ it('Logs error when query fails', () => {
52
+ logger.error = jest.fn();
53
+ try {
54
+ queryRunner.run('error');
55
+ } catch (e) {
56
+ // none
57
+ }
58
+ expect(logger.error).toHaveBeenCalled();
59
+ });
60
+ });
61
+ });
@@ -0,0 +1,2 @@
1
+ export * from './queryManager';
2
+ export * from './queryRunner';