@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 @@
1
+ {"version":3,"file":"queryManager.d.ts","sourceRoot":"","sources":["../../../src/lib/query/queryManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,wEAAmD,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.queryManager = void 0;
4
+ const module_1 = require("@lib/utils/module");
5
+ /**
6
+ * A manager for queries stored in a user-land directory defined by configuration.
7
+ *
8
+ * @remarks
9
+ * It extends dirBasedModuleGroupManager, which manages groups of modules based
10
+ * on a directory: @see {@link dirBasedModuleGroupManager}
11
+ */
12
+ exports.queryManager = (0, module_1.dirBasedModuleGroupManager)('query');
@@ -0,0 +1,3 @@
1
+ import { QueryRunner } from './query.types';
2
+ export declare const queryRunner: QueryRunner;
3
+ //# sourceMappingURL=queryRunner%20copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryRunner copy.d.ts","sourceRoot":"","sources":["../../../src/lib/query/queryRunner copy.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,WAAW,EAIZ,MAAM,eAAe,CAAC;AAkBvB,eAAO,MAAM,WAAW,EAAE,WAiEzB,CAAC"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.queryRunner = void 0;
7
+ const microtime_1 = __importDefault(require("microtime"));
8
+ const config_1 = require("@lib/config");
9
+ const store_1 = require("@lib/store");
10
+ const logger_1 = require("@lib/utils/logger");
11
+ const cache_1 = require("@lib/utils/cache");
12
+ const queryManager_1 = require("./queryManager");
13
+ const query_types_1 = require("./query.types");
14
+ let count = 0;
15
+ /**
16
+ * Creates a QueryErrorResponse object ready to be returned to clients.
17
+ *
18
+ * @param message - Error message
19
+ *
20
+ * @returns A JSON object with an error key
21
+ *
22
+ * @internal
23
+ */
24
+ const createErrorResponse = (message) => {
25
+ logger_1.logger.error(message);
26
+ return { error: message };
27
+ };
28
+ exports.queryRunner = {
29
+ run: (queryId, args) => {
30
+ if (!config_1.config.queryDir) {
31
+ return createErrorResponse('No query directory ("queryDir") configured');
32
+ }
33
+ if (!queryId) {
34
+ return createErrorResponse('No query ID received');
35
+ }
36
+ const queryModuleInfo = queryManager_1.queryManager.getModuleGroupInfo().get(queryId);
37
+ if (!queryModuleInfo) {
38
+ return createErrorResponse(`Query module for ID ${queryId} not found`);
39
+ }
40
+ count += 1;
41
+ const startDate = microtime_1.default.now();
42
+ const argsString = JSON.stringify(args);
43
+ // Implement a query cache.
44
+ const cacheId = `${queryId}--${argsString}`;
45
+ let isCacheMiss = false;
46
+ const queryCache = cache_1.cache.bin('query');
47
+ let queryResult = queryCache.get(cacheId);
48
+ if (!queryResult) {
49
+ try {
50
+ const queryModule = queryModuleInfo.getModule();
51
+ const queryResponse = queryModule.default({
52
+ store: store_1.store,
53
+ args,
54
+ });
55
+ queryResult = {
56
+ result: queryResponse?.result,
57
+ contentType: queryResponse?.contentType || 'application/json',
58
+ tags: queryResponse?.tags,
59
+ };
60
+ isCacheMiss = true;
61
+ if (queryResponse?.cacheable !== false) {
62
+ queryCache.set(cacheId, queryResult);
63
+ }
64
+ }
65
+ catch (e) {
66
+ // Log error and rethrow.
67
+ logger_1.logger.error(`#${count} Query error: "${queryId}", args "${argsString}": ${e}`);
68
+ throw e;
69
+ }
70
+ }
71
+ const execTimeMs = (microtime_1.default.now() - startDate) / 1000;
72
+ const response = {
73
+ data: queryResult.result,
74
+ metadata: {
75
+ contentType: queryResult?.contentType || 'application/json',
76
+ execTimeMs,
77
+ cache: isCacheMiss ? query_types_1.CacheStatus.MISS : query_types_1.CacheStatus.HIT,
78
+ tags: queryResult.tags,
79
+ },
80
+ };
81
+ /* logger.debug(
82
+ `#${count} Query "${queryId}" args "${argsString}" took ${execTimeMs} ms.`,
83
+ ); */
84
+ return response;
85
+ },
86
+ getCount: () => count,
87
+ };
@@ -0,0 +1,3 @@
1
+ import { QueryRunner } from './query.types';
2
+ export declare const queryRunner: QueryRunner;
3
+ //# sourceMappingURL=queryRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryRunner.d.ts","sourceRoot":"","sources":["../../../src/lib/query/queryRunner.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,WAAW,EAKZ,MAAM,eAAe,CAAC;AAkBvB,eAAO,MAAM,WAAW,EAAE,WA4EzB,CAAC"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.queryRunner = void 0;
7
+ const microtime_1 = __importDefault(require("microtime"));
8
+ const config_1 = require("@lib/config");
9
+ const store_1 = require("@lib/store");
10
+ const logger_1 = require("@lib/utils/logger");
11
+ const cache_1 = require("@lib/utils/cache");
12
+ const string_1 = require("@lib/utils/string");
13
+ const dependencyTagger_1 = require("@lib/store/dependency/dependencyTagger");
14
+ const queryManager_1 = require("./queryManager");
15
+ const query_types_1 = require("./query.types");
16
+ let count = 0;
17
+ /**
18
+ * Creates a QueryErrorResponse object ready to be returned to clients.
19
+ *
20
+ * @param message - Error message
21
+ *
22
+ * @returns A JSON object with an error key
23
+ *
24
+ * @internal
25
+ */
26
+ const createErrorResponse = (message) => {
27
+ logger_1.logger.error(message);
28
+ return { error: message };
29
+ };
30
+ exports.queryRunner = {
31
+ run: (queryDefinition) => {
32
+ if (!config_1.config.queryDir) {
33
+ return createErrorResponse('No query directory ("queryDir") configured');
34
+ }
35
+ const [queryId, queryArgsString] = queryDefinition.split('?');
36
+ const queryArgs = queryArgsString
37
+ ? (0, string_1.parseURLSearchParams)(queryArgsString)
38
+ : {};
39
+ if (!queryId) {
40
+ return createErrorResponse('No query ID received');
41
+ }
42
+ const queryModuleInfo = queryManager_1.queryManager.getModuleGroupInfo().get(queryId);
43
+ if (!queryModuleInfo) {
44
+ return createErrorResponse(`Query module for ID ${queryId} not found`);
45
+ }
46
+ count += 1;
47
+ const startDate = microtime_1.default.now();
48
+ // Implement a query cache.
49
+ const cacheId = queryDefinition;
50
+ let isCacheMiss = false;
51
+ const queryCache = cache_1.cache.bin('query');
52
+ let queryResult = queryCache.get(cacheId);
53
+ if (!queryResult) {
54
+ try {
55
+ const queryModule = queryModuleInfo.getModule();
56
+ const queryResponse = queryModule.default({
57
+ store: store_1.store,
58
+ args: queryArgs,
59
+ });
60
+ queryResult = {
61
+ result: queryResponse?.result,
62
+ contentType: queryResponse?.contentType || 'application/json',
63
+ };
64
+ isCacheMiss = true;
65
+ if (queryResponse?.cacheable !== false) {
66
+ queryCache.set(cacheId, queryResult);
67
+ }
68
+ // Set tags for this query.
69
+ const queryTags = queryResponse.tags && queryResponse.tags?.length > 0
70
+ ? queryResponse.tags
71
+ : ['*'];
72
+ dependencyTagger_1.dependencyTagger.setDependency(queryDefinition, queryTags);
73
+ }
74
+ catch (e) {
75
+ // Log error and rethrow.
76
+ logger_1.logger.error(`#${count} Query error: "${queryId}", args "${queryArgsString}": ${e}`);
77
+ throw e;
78
+ }
79
+ }
80
+ const execTimeMs = (microtime_1.default.now() - startDate) / 1000;
81
+ const response = {
82
+ data: queryResult.result,
83
+ metadata: {
84
+ contentType: queryResult?.contentType || 'application/json',
85
+ execTimeMs,
86
+ cache: isCacheMiss ? query_types_1.CacheStatus.MISS : query_types_1.CacheStatus.HIT,
87
+ tags: queryResult.tags ? Array.from(queryResult.tags) : undefined,
88
+ },
89
+ };
90
+ /* logger.debug(
91
+ `#${count} Query "${queryId}" args "${argsString}" took ${execTimeMs} ms.`,
92
+ ); */
93
+ return response;
94
+ },
95
+ getCount: () => count,
96
+ };
@@ -0,0 +1,3 @@
1
+ import { QueryTagManager } from './query.types';
2
+ export declare const queryTagManager: QueryTagManager;
3
+ //# sourceMappingURL=queryTagManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryTagManager.d.ts","sourceRoot":"","sources":["../../../src/lib/query/queryTagManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMhD,eAAO,MAAM,eAAe,EAAE,eA4C7B,CAAC"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.queryTagManager = void 0;
4
+ const store_1 = require("@lib/store/store");
5
+ const invalidatedTags = new Set();
6
+ const tagsByQueryIndex = new Map();
7
+ exports.queryTagManager = {
8
+ invalidateTags: tags => {
9
+ tags.forEach(tag => {
10
+ invalidatedTags.add(tag);
11
+ });
12
+ },
13
+ resetInvalidatedTags: () => {
14
+ invalidatedTags.clear();
15
+ },
16
+ setTagsToQuery: (queryDefinition, tags) => {
17
+ if (tags) {
18
+ tagsByQueryIndex.set(queryDefinition, tags);
19
+ }
20
+ else {
21
+ tagsByQueryIndex.delete(queryDefinition);
22
+ }
23
+ },
24
+ getInvalidFilepaths: () => {
25
+ const invalidFilepaths = new Set();
26
+ store_1.store.data.forEach((json, relativeFilepath) => {
27
+ if (json?.metadata?.includes?.dynamic) {
28
+ Object.values(json.metadata.includes.dynamic).forEach(queryDefinition => {
29
+ const tagsByQuery = tagsByQueryIndex.get(queryDefinition);
30
+ if (tagsByQuery) {
31
+ // eslint-disable-next-line no-restricted-syntax
32
+ for (const invalidatedTag of invalidatedTags) {
33
+ if (tagsByQuery.has(invalidatedTag)) {
34
+ invalidFilepaths.add(relativeFilepath);
35
+ break;
36
+ }
37
+ }
38
+ }
39
+ else {
40
+ invalidFilepaths.add(relativeFilepath);
41
+ }
42
+ });
43
+ }
44
+ });
45
+ return Array.from(invalidFilepaths);
46
+ },
47
+ };
@@ -0,0 +1,36 @@
1
+ import { ChangedFiles } from '../workDir/workDir.types';
2
+ /**
3
+ * A manager for the data dir from Static Suite.
4
+ */
5
+ export declare type DataDirManager = {
6
+ /**
7
+ * Loads all files inside the data directory into the store.
8
+ *
9
+ */
10
+ load(): void;
11
+ /**
12
+ * Updates the store with changed files since last sync.
13
+ *
14
+ * @remarks
15
+ * It's main difference with load() is that, instead of loading the whole store,
16
+ * update() checks if something has changed, not doing anything if nothing
17
+ * has changed. Thus, this method is way faster than load().
18
+ *
19
+ * @returns A group of changed files in Static Suite's data dir.
20
+ */
21
+ update(): ChangedFiles;
22
+ /**
23
+ * Get date of last modification of data directory.
24
+ *
25
+ * @remarks
26
+ * Metadata about when and how is the data directory updated is
27
+ * stored in the work directory. If that directory is not present or
28
+ * not initialized with proper data, it returns the sync date of the store.
29
+ * If the store is not yet loaded, it returns a date in the past,
30
+ * the Unix Epoch (00:00:00 UTC on 1 January 1970).
31
+ *
32
+ * @returns The date of last modification of data directory
33
+ */
34
+ getModificationDate(): Date;
35
+ };
36
+ //# sourceMappingURL=dataDir.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataDir.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dataDir/dataDir.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD;;GAEG;AACH,oBAAY,cAAc,GAAG;IAC3B;;;OAGG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;;;;;;;;OASG;IACH,MAAM,IAAI,YAAY,CAAC;IAEvB;;;;;;;;;;;OAWG;IACH,mBAAmB,IAAI,IAAI,CAAC;CAC7B,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ import { DataDirManager } from './dataDir.types';
2
+ export declare const dataDirManager: DataDirManager;
3
+ //# sourceMappingURL=dataDirManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataDirManager.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dataDir/dataDirManager.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,eAAO,MAAM,cAAc,EAAE,cAyG5B,CAAC"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.dataDirManager = void 0;
7
+ const microtime_1 = __importDefault(require("microtime"));
8
+ const config_1 = require("@lib/config");
9
+ const store_1 = require("@lib/store");
10
+ const fs_1 = require("@lib/utils/fs");
11
+ const logger_1 = require("@lib/utils/logger");
12
+ const workDir_1 = require("@lib/store/workDir");
13
+ const cache_1 = require("@lib/utils/cache");
14
+ const storeManager_1 = require("@lib/store/storeManager");
15
+ const hook_1 = require("@lib/store/hook");
16
+ const query_1 = require("@lib/query");
17
+ const task_1 = require("@lib/task");
18
+ const dependencyManager_1 = require("../dependency/dependencyManager");
19
+ exports.dataDirManager = {
20
+ load: () => {
21
+ logger_1.logger.info('Loading data dir...');
22
+ const startDate = Date.now();
23
+ // Reset store, just in case this load is called on an already loaded store.
24
+ storeManager_1.storeManager.reset();
25
+ // Clear all caches.
26
+ cache_1.cache.clear();
27
+ // Reset all managers.
28
+ hook_1.hookManager.reset();
29
+ query_1.queryManager.reset();
30
+ task_1.taskManager.reset();
31
+ // Invoke "store load start" hook.
32
+ hook_1.hookManager.invokeOnStoreLoadStart();
33
+ store_1.store.syncDate = exports.dataDirManager.getModificationDate();
34
+ // Add all files, one by one.
35
+ const relativeFilePaths = (0, fs_1.findFilesInDir)(config_1.config.dataDir);
36
+ const storeHydrationStartDate = Date.now();
37
+ relativeFilePaths.forEach(relativeFilePath => {
38
+ storeManager_1.storeManager.add(relativeFilePath);
39
+ });
40
+ logger_1.logger.debug(`Store map hydrated in ${Date.now() - storeHydrationStartDate}ms.`);
41
+ const includeParserStartDate = Date.now();
42
+ storeManager_1.storeManager.parseIncludes();
43
+ logger_1.logger.debug(`Store include parser done in ${Date.now() - includeParserStartDate}ms.`);
44
+ // Invoke "store load done" hook.
45
+ hook_1.hookManager.invokeOnStoreLoadDone();
46
+ logger_1.logger.info(`${relativeFilePaths.length} files loaded in ${Date.now() - startDate}ms.`);
47
+ },
48
+ update: () => {
49
+ const dataDirModificationDate = exports.dataDirManager.getModificationDate();
50
+ let changedFiles = {
51
+ updated: [],
52
+ deleted: [],
53
+ };
54
+ if (store_1.store.syncDate) {
55
+ if (dataDirModificationDate > store_1.store.syncDate) {
56
+ // Save store.syncDate to a variable and set it ASAP to avoid two concurrent
57
+ // processes updating the data directory at the same time.
58
+ const storeLastSyncDate = store_1.store.syncDate;
59
+ store_1.store.syncDate = dataDirModificationDate;
60
+ const startDate = microtime_1.default.now();
61
+ logger_1.logger.debug(`Data dir outdated. Current data loaded at ${storeLastSyncDate.toISOString()} but last updated at ${dataDirModificationDate.toISOString()}`);
62
+ // Before updating anything, track down which filepaths are invalidated with
63
+ // the current set of dependencies, before those dependencies change.
64
+ dependencyManager_1.dependencyManager.trackInvalidatedFilepaths();
65
+ changedFiles = workDir_1.workDirHelper.getChangedFilesSince(storeLastSyncDate);
66
+ hook_1.hookManager.invokeOnStoreChangeStart(changedFiles);
67
+ changedFiles.updated.forEach(file => {
68
+ storeManager_1.storeManager.update(file);
69
+ const fileContent = store_1.store.data.get(file);
70
+ storeManager_1.storeManager.parseSingleFileIncludes(file, fileContent);
71
+ });
72
+ changedFiles.deleted.forEach(file => {
73
+ storeManager_1.storeManager.remove(file);
74
+ });
75
+ // Clear all store subsets and queries, since they are stale.
76
+ // In fact, the subset cache should be cleared only when files
77
+ // are added or deleted, but not when they are simply updated.
78
+ // Anyway, we currently do not have any means of distinguishing
79
+ // added files from updated ones, so we must clear the subset
80
+ // cache in all situations.
81
+ cache_1.cache.bin('store-subset').clear();
82
+ cache_1.cache.bin('query').clear();
83
+ hook_1.hookManager.invokeOnStoreChangeDone(changedFiles);
84
+ const execTimeMs = (microtime_1.default.now() - startDate) / 1000;
85
+ logger_1.logger.debug(`Data dir updated in ${execTimeMs}ms.`);
86
+ }
87
+ else {
88
+ logger_1.logger.debug(`Data dir up to date. Current data loaded at ${store_1.store.syncDate.toISOString()} and last updated at ${dataDirModificationDate.toISOString()}`);
89
+ }
90
+ }
91
+ else {
92
+ logger_1.logger.debug(`Data dir not yet loaded, so it cannot be updated.`);
93
+ }
94
+ return changedFiles;
95
+ },
96
+ getModificationDate: () => workDir_1.workDirHelper.getModificationDate() || store_1.store.syncDate || new Date(0),
97
+ };
@@ -0,0 +1,2 @@
1
+ export * from './dataDirManager';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dataDir/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./dataDirManager"), exports);
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Service to define dependencies between data.
3
+ */
4
+ export declare type DependencyTagger = {
5
+ /**
6
+ * Sets a dependency relationship between a tag that depends on another tags.
7
+ *
8
+ * @remarks It replaces any previous dependency relationship.
9
+ *
10
+ * @param tag - A tag to set a dependency for.
11
+ * @param dependsOnTags - An array of tags that depends on first parameter tag.
12
+ */
13
+ setDependency(tag: string, dependsOnTags: string[]): void;
14
+ /**
15
+ * Adds a dependency relationship between a tag that depends on another tags.
16
+ *
17
+ * @remarks It adds data to any previous dependency relationship.
18
+ *
19
+ * @param tag - A tag to set a dependency for.
20
+ * @param dependsOnTags - An array of tags that depends on first parameter tag.
21
+ */
22
+ addDependency(tag: string, dependsOnTags: string[]): void;
23
+ /**
24
+ * Deletes a dependency relationship between a tag that depends on another tags.
25
+ *
26
+ * @param tag - A tag to delete a dependency for.
27
+ * @param dependsOnTags - Optional array of tags that depends on first parameter
28
+ * tag. If not provided, it deletes all dependencies for tag.
29
+ */
30
+ deleteDependency(tag: string, dependsOnTags?: string[]): void;
31
+ /**
32
+ * Marks dependency items with any of the specified tags as invalid.
33
+ *
34
+ * @param tags - The list of tags for which to invalidate dependency items.
35
+ */
36
+ invalidateTags(tags: string[]): void;
37
+ };
38
+ /**
39
+ * Manager that keeps control of dependencies between data.
40
+ */
41
+ export declare type DependencyManager = {
42
+ /**
43
+ * Calculates and tracks down a list of filepaths which contain an invalidated tag.
44
+ *
45
+ * @remarks
46
+ * It calculates which filepaths have been invalidated, and stores them so they
47
+ * can be consumed later. This function should be called before the store is updated,
48
+ * before any dependency data changes, to avoid losing the set of invalidated filepaths
49
+ * between updates.
50
+ */
51
+ trackInvalidatedFilepaths(): void;
52
+ /**
53
+ * Gets a list of filepaths which contain an invalidated tag.
54
+ *
55
+ * @remarks
56
+ * It uses the set of tracked down filepaths from
57
+ *
58
+ * @returns A list of filepaths which contain an invalidated tag.
59
+ */
60
+ getInvalidatedFilepaths(): {
61
+ updated: string[];
62
+ deleted: string[];
63
+ };
64
+ /**
65
+ * Resets the list of invalidated tags once consumed.
66
+ */
67
+ reset(): void;
68
+ };
69
+ export declare type DependencyTree = Map<string, Set<string>>;
70
+ //# sourceMappingURL=dependency.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dependency/dependency.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,gBAAgB,GAAG;IAC7B;;;;;;;OAOG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE1D;;;;;;;OAOG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE1D;;;;;;OAMG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE9D;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAMtC,CAAC;AAEF;;GAEG;AACH,oBAAY,iBAAiB,GAAG;IAC9B;;;;;;;;OAQG;IACH,yBAAyB,IAAI,IAAI,CAAC;IAElC;;;;;;;OAOG;IACH,uBAAuB,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAEpE;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,oBAAY,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { Json } from '@lib/utils/object/object.types';
2
+ export declare const dependencyIncludeHelper: {
3
+ setIncludeDependencies: (filepath: string, json: Json) => void;
4
+ deleteIncludeDependencies: (filepath: string, json: Json) => void;
5
+ };
6
+ //# sourceMappingURL=dependencyFileHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencyFileHelper.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dependency/dependencyFileHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAGtD,eAAO,MAAM,uBAAuB;uCACC,MAAM,QAAQ,IAAI,KAAG,IAAI;0CA2BtB,MAAM,QAAQ,IAAI,KAAG,IAAI;CAkBhE,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dependencyIncludeHelper = void 0;
4
+ const dependencyTagger_1 = require("./dependencyTagger");
5
+ exports.dependencyIncludeHelper = {
6
+ setIncludeDependencies: (filepath, json) => {
7
+ const includes = json?.metadata?.includes;
8
+ if (includes?.static) {
9
+ const staticIncludes = Object.values(includes?.static);
10
+ dependencyTagger_1.dependencyTagger.setDependency(filepath, staticIncludes);
11
+ }
12
+ if (includes?.dynamic) {
13
+ const dynamicIncludes = Object.values(includes?.dynamic);
14
+ dependencyTagger_1.dependencyTagger.setDependency(filepath, dynamicIncludes);
15
+ // Queries are invalidated by any data change until they are executed,
16
+ // when they return their dependencies. They are "globally invalidable" when:
17
+ // 1) Are added for the first time
18
+ // 2) Are updated: file can contain another query include,
19
+ // or different parameters, etc
20
+ // In another words:
21
+ // 1) When a file with a query is loaded for he first time,
22
+ // that query has a dependency on "*"
23
+ // 2) When that query is executed, it has a dependency on "node:1234"
24
+ // 3) When that file with a query is updated, the query has again a dependency on "*"
25
+ dynamicIncludes.forEach(queryDefinition => {
26
+ dependencyTagger_1.dependencyTagger.setDependency(queryDefinition, ['*']);
27
+ });
28
+ }
29
+ },
30
+ deleteIncludeDependencies: (filepath, json) => {
31
+ const includes = json?.metadata?.includes;
32
+ if (includes?.static) {
33
+ const staticIncludes = Object.values(includes?.static);
34
+ dependencyTagger_1.dependencyTagger.deleteDependency(filepath, staticIncludes);
35
+ }
36
+ if (includes?.dynamic) {
37
+ const dynamicIncludes = Object.values(includes?.dynamic);
38
+ dependencyTagger_1.dependencyTagger.deleteDependency(filepath, dynamicIncludes);
39
+ // Queries are invalidated by any data change until they are executed,
40
+ // when they return their dependencies. Remove that dependency if still present.
41
+ dynamicIncludes.forEach(queryDefinition => {
42
+ dependencyTagger_1.dependencyTagger.deleteDependency(queryDefinition, ['*']);
43
+ });
44
+ }
45
+ },
46
+ };
@@ -0,0 +1,6 @@
1
+ import { DependencyManager } from './dependencyManager.types';
2
+ /**
3
+ * Manager that keeps control of dependencies between data.
4
+ */
5
+ export declare const dependencyManager: DependencyManager;
6
+ //# sourceMappingURL=dependencyManager%20copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencyManager copy.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dependency/dependencyManager copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AA2C9D;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAsD/B,CAAC"}