@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,82 @@
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.tracker = void 0;
7
+ const os_1 = __importDefault(require("os"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const config_1 = require("@lib/config");
11
+ const logger_1 = require("@lib/utils/logger");
12
+ const object_1 = require("@lib/utils/object");
13
+ const includeIndex_1 = require("../include/includeIndex");
14
+ /**
15
+ * A list of changed files with includes that have changed since last reset.
16
+ */
17
+ const changedFiles = new Set();
18
+ /**
19
+ * A flag to tell wether getChangedFiles() has been already called.
20
+ */
21
+ let isChangedFilesInitialized = false;
22
+ // Ensure several concurrent Data Servers use different files.
23
+ let trackerFilepath = null;
24
+ const getTrackerFilepath = () => {
25
+ if (!trackerFilepath) {
26
+ const dataDirHash = config_1.config.dataDir
27
+ .replace(/\//g, '-')
28
+ .replace(/([^a-zA-Z0-9-])/g, '')
29
+ .replace(/^-/g, '')
30
+ .replace(/-$/g, '');
31
+ trackerFilepath = `${os_1.default.homedir()}/.static-suite/data-server/${dataDirHash}/tracker.json`;
32
+ }
33
+ return trackerFilepath;
34
+ };
35
+ exports.tracker = {
36
+ trackChangedFile(relativeFilepath) {
37
+ // Add parents.
38
+ includeIndex_1.includeIndex
39
+ .getParents(relativeFilepath)
40
+ .forEach((parentRelativeFilepath) => {
41
+ changedFiles.add(parentRelativeFilepath);
42
+ });
43
+ // Add the passed file.
44
+ changedFiles.add(relativeFilepath);
45
+ // Store memory data into disk
46
+ const trackerFile = getTrackerFilepath();
47
+ const dataToStore = JSON.stringify({ changedFiles: (0, object_1.jsonify)(changedFiles) });
48
+ try {
49
+ if (!fs_1.default.existsSync(trackerFile)) {
50
+ fs_1.default.mkdirSync(path_1.default.dirname(trackerFile), { recursive: true });
51
+ }
52
+ fs_1.default.writeFileSync(trackerFile, dataToStore);
53
+ }
54
+ catch (e) {
55
+ logger_1.logger.error(`Error writing tracker file located at "${trackerFile}": ${e}`);
56
+ }
57
+ },
58
+ getChangedFiles: () => {
59
+ const trackerFile = getTrackerFilepath();
60
+ // The first time this function is executed (after Data Server is started for the first time),
61
+ // it tries to get changed files from previously stored value on disk.
62
+ if (!isChangedFilesInitialized && fs_1.default.existsSync(trackerFile)) {
63
+ try {
64
+ const trackerFileData = JSON.parse(fs_1.default.readFileSync(trackerFile).toString().trim());
65
+ isChangedFilesInitialized = true;
66
+ trackerFileData.changedFiles?.forEach((changedFile) => changedFiles.add(changedFile));
67
+ }
68
+ catch (e) {
69
+ logger_1.logger.error(`Error reading tracker file located at "${trackerFile}": ${e}`);
70
+ }
71
+ }
72
+ return Array.from(changedFiles);
73
+ },
74
+ reset: () => {
75
+ changedFiles.clear();
76
+ // Delete tracker file.
77
+ const trackerFile = getTrackerFilepath();
78
+ if (fs_1.default.existsSync(trackerFile)) {
79
+ fs_1.default.unlinkSync(trackerFile);
80
+ }
81
+ },
82
+ };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Track changed files affected by includes.
3
+ */
4
+ export declare type Tracker = {
5
+ /**
6
+ * Gets a set of changed files from a file and adds them to a temporary stack.
7
+ *
8
+ * @remarks
9
+ * Between two builds, stored data can be mutated when dataDirManager::update() runs. That
10
+ * creates a problem when an include or file is removed, since once store is updated we cannot
11
+ * go back in time to track past changes. To avoid this, track changes files whenever store
12
+ * is updated.
13
+ *
14
+ * This function only tracks changed files affected by static includes. There is no need to track
15
+ * intermediate changes in query results, since they are evaluated on demand.
16
+ *
17
+ * @param relativeFilepath - Relative file path, inside dataDir, to the file to be processed.
18
+ */
19
+ trackChangedFile(relativeFilepath: string): void;
20
+ /**
21
+ * Gets the current set of changed files.
22
+ *
23
+ * @returns an array of changed files.
24
+ */
25
+ getChangedFiles(): string[];
26
+ /**
27
+ * Resets current set of changed files.
28
+ */
29
+ reset(): void;
30
+ };
31
+ //# sourceMappingURL=tracker.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/diff/tracker.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,OAAO,GAAG;IACpB;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjD;;;;OAIG;IACH,eAAe,IAAI,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ import { DumpManager } from './dumpManager.types';
2
+ export declare const dumpManager: DumpManager;
3
+ //# sourceMappingURL=dumpManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dumpManager.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dump/dumpManager.ts"],"names":[],"mappings":"AAUA,OAAO,EAAQ,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAqIxD,eAAO,MAAM,WAAW,EAAE,WA2FzB,CAAC"}
@@ -0,0 +1,199 @@
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.dumpManager = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const microtime_1 = __importDefault(require("microtime"));
10
+ const logger_1 = require("@lib/utils/logger");
11
+ const object_1 = require("@lib/utils/object");
12
+ const fs_2 = require("@lib/utils/fs");
13
+ const config_1 = require("@lib/config");
14
+ const store_1 = require("@lib/store");
15
+ const diffManager_1 = require("../diff/diffManager");
16
+ const hook_1 = require("../hook");
17
+ const removeEmptyDirsUpwards = (dir) => {
18
+ const isEmpty = fs_1.default.readdirSync(dir).length === 0;
19
+ if (isEmpty) {
20
+ try {
21
+ fs_1.default.rmdirSync(dir);
22
+ }
23
+ catch (e) {
24
+ logger_1.logger.debug(`Error deleting empty directory "${dir}": ${e}`);
25
+ }
26
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
+ removeEmptyDirsUpwards(path_1.default.dirname(dir));
28
+ }
29
+ };
30
+ const storeUpdatedFiles = (diff, dump, dumpDir) => {
31
+ diff.updated.forEach(relativeFilepath => {
32
+ const storeFileContentData = store_1.store.data.get(relativeFilepath);
33
+ if (storeFileContentData) {
34
+ const absoluteFilepathInDumpDir = `${dumpDir}/${relativeFilepath}`;
35
+ try {
36
+ // Create parent directories if they are missing.
37
+ const dir = path_1.default.dirname(absoluteFilepathInDumpDir);
38
+ if (!fs_1.default.existsSync(dir)) {
39
+ fs_1.default.mkdirSync(dir, { recursive: true });
40
+ }
41
+ // If store data is an object, stringify it to execute its
42
+ // queries and resolve its includes.
43
+ const isJson = (0, fs_2.isJsonFile)(relativeFilepath);
44
+ const storeFileContentString = isJson
45
+ ? JSON.stringify(storeFileContentData)
46
+ : storeFileContentData;
47
+ // Before overwriting a file, check it has changed.
48
+ let needsSave = true;
49
+ let oldPublicUrl = null;
50
+ const newPublicUrl = storeFileContentData.data?.content?.url?.path || null;
51
+ if (fs_1.default.existsSync(absoluteFilepathInDumpDir)) {
52
+ const dumpFileContentString = (0, fs_2.readFile)(absoluteFilepathInDumpDir);
53
+ if (storeFileContentString === dumpFileContentString) {
54
+ // No need to save it, file has not changed.
55
+ needsSave = false;
56
+ }
57
+ else if (isJson && dumpFileContentString) {
58
+ // Get old public URL before it changes on disk.
59
+ oldPublicUrl =
60
+ JSON.parse(dumpFileContentString)?.data?.content?.url?.path ||
61
+ null;
62
+ /*
63
+ fs.renameSync(
64
+ absoluteFilepathInDumpDir,
65
+ absoluteFilepathInDumpDir.replace('.json', '.2.json'),
66
+ );
67
+ */
68
+ }
69
+ }
70
+ if (needsSave) {
71
+ // Save it.
72
+ fs_1.default.writeFileSync(absoluteFilepathInDumpDir, storeFileContentString);
73
+ // Mark it as updated.
74
+ dump.updated.set(relativeFilepath, {
75
+ oldPublicUrl,
76
+ newPublicUrl,
77
+ });
78
+ }
79
+ }
80
+ catch (e) {
81
+ logger_1.logger.error(`Dump: error writing file "${absoluteFilepathInDumpDir}": ${e}`);
82
+ }
83
+ }
84
+ else {
85
+ logger_1.logger.error(`Dump: store data for file "${relativeFilepath}" not found.`);
86
+ }
87
+ });
88
+ };
89
+ const removeDeletedFiles = (diff, dump, dumpDir) => {
90
+ diff.deleted.forEach(relativeFilepath => {
91
+ const absoluteFilepath = `${dumpDir}/${relativeFilepath}`;
92
+ try {
93
+ if (fs_1.default.existsSync(absoluteFilepath)) {
94
+ // Get old public URLs before they change on disk.
95
+ const dumpContent = (0, fs_2.getFileContent)(absoluteFilepath);
96
+ const oldPublicUrl = dumpContent.json?.data?.content?.url?.path;
97
+ // Delete it.
98
+ fs_1.default.unlinkSync(absoluteFilepath);
99
+ // Mark it as deleted.
100
+ dump.deleted.set(relativeFilepath, {
101
+ oldPublicUrl,
102
+ newPublicUrl: null,
103
+ });
104
+ }
105
+ }
106
+ catch (e) {
107
+ logger_1.logger.error(`Dump: error deleting file "${absoluteFilepath}": ${e}`);
108
+ }
109
+ });
110
+ };
111
+ const storeDumpMetadata = (metadataFilepath, dump, diffResetDate) => {
112
+ let currentDumpMetadata = [];
113
+ try {
114
+ currentDumpMetadata = JSON.parse(fs_1.default.readFileSync(metadataFilepath).toString());
115
+ }
116
+ catch (e) {
117
+ currentDumpMetadata = [];
118
+ }
119
+ currentDumpMetadata.push((0, object_1.jsonify)(dump));
120
+ try {
121
+ const currentDumpMetadataString = JSON.stringify(currentDumpMetadata);
122
+ fs_1.default.writeFileSync(metadataFilepath, currentDumpMetadataString);
123
+ // Resetting the diff must happen when dump metadata is successfully
124
+ // stored into disk.
125
+ diffManager_1.diffManager.reset(diffResetDate);
126
+ }
127
+ catch (e) {
128
+ logger_1.logger.error(`Dump: error saving dump metadata to "${metadataFilepath}": ${e}`);
129
+ }
130
+ };
131
+ exports.dumpManager = {
132
+ dump(options = { incremental: true }) {
133
+ const startDate = microtime_1.default.now();
134
+ // Create a diff reset date just before consuming a diff.
135
+ const diffResetDate = new Date();
136
+ const diff = diffManager_1.diffManager.getDiff({ incremental: options.incremental });
137
+ // Diff data is processed and transformed into a dump object.
138
+ let dump = {
139
+ since: diff.since,
140
+ updated: new Map(),
141
+ deleted: new Map(),
142
+ };
143
+ if (config_1.config.dumpDir) {
144
+ const dumpDir = `${config_1.config.dumpDir}/files`;
145
+ const metadataFilepath = `${config_1.config.dumpDir}/metadata.json`;
146
+ if (diff.updated.size || diff.deleted.size) {
147
+ // Store updated files.
148
+ storeUpdatedFiles(diff, dump, dumpDir);
149
+ // Remove deleted files.
150
+ removeDeletedFiles(diff, dump, dumpDir);
151
+ // Invoke "onDumpCreate" hook.
152
+ dump = hook_1.hookManager.invokeOnDumpCreate(dump);
153
+ const execTimeMs = (microtime_1.default.now() - startDate) / 1000;
154
+ dump.execTimeMs = execTimeMs;
155
+ // Merge and store dump metadata if any.
156
+ if (dump.updated.size || dump.deleted.size) {
157
+ storeDumpMetadata(metadataFilepath, dump, diffResetDate);
158
+ logger_1.logger.info(`Dump created in ${execTimeMs} ms. Updated: ${dump.updated.size} / Deleted: ${dump.deleted.size}`);
159
+ // Log dump if not empty
160
+ if (dump.updated.size || dump.deleted.size) {
161
+ logger_1.logger.debug(`Dump: "${JSON.stringify((0, object_1.jsonify)(dump))}"`);
162
+ }
163
+ }
164
+ else {
165
+ // Resetting the diff must happen when no other operations are pending.
166
+ diffManager_1.diffManager.reset(diffResetDate);
167
+ logger_1.logger.info(`Dump done in ${execTimeMs} ms without changes stored into disk.`);
168
+ }
169
+ }
170
+ else {
171
+ logger_1.logger.info('Dump not stored into disk due to an empty diff.');
172
+ }
173
+ }
174
+ else {
175
+ logger_1.logger.error('"dumpDir" option not provided. Dump cannot be executed.');
176
+ }
177
+ return dump;
178
+ },
179
+ reset(timestamp) {
180
+ if (config_1.config.dumpDir) {
181
+ const metadataFilepath = `${config_1.config.dumpDir}/metadata.json`;
182
+ const metadata = JSON.parse(fs_1.default.existsSync(metadataFilepath)
183
+ ? fs_1.default.readFileSync(metadataFilepath).toString()
184
+ : '[]');
185
+ // Remove any dump data older that timestamp
186
+ const resetMetadata = metadata.filter((dump) => dump.since > timestamp);
187
+ logger_1.logger.debug(`Dump reset : "${JSON.stringify(resetMetadata)}"`);
188
+ try {
189
+ fs_1.default.writeFileSync(metadataFilepath, JSON.stringify(resetMetadata));
190
+ }
191
+ catch (e) {
192
+ logger_1.logger.error(`Dump: error resetting dump metadata to "${metadataFilepath}": ${e}`);
193
+ }
194
+ }
195
+ else {
196
+ logger_1.logger.error('"dumpDir" option not provided. Dump reset cannot be executed.');
197
+ }
198
+ },
199
+ };
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Service that dumps resolved data (with resolved includes) into a dump directory.
3
+ */
4
+ export declare type DumpManager = {
5
+ /**
6
+ * Dump resolved data (with resolved includes) into a dump directory.
7
+ *
8
+ * @remarks
9
+ * Raw data stored in Data Server does not resolve its includes until
10
+ * each file is consumed (and therefore stringified). A dump consumes
11
+ * that raw data and stores it in a directory, along its metadata
12
+ * (a list of changed/deleted files), so a later process can store
13
+ * those changes in another service like AWS S3.
14
+ *
15
+ * @param options - Configuration options
16
+ */
17
+ dump(options?: {
18
+ incremental: boolean;
19
+ }): Dump;
20
+ /**
21
+ * Reset dump metadata.
22
+ *
23
+ * @remarks
24
+ * Resets dump metadata, removing any dump information older than the passed timestamp.
25
+ *
26
+ * @param timestamp - Timestamp
27
+ */
28
+ reset(timestamp: number): void;
29
+ };
30
+ /**
31
+ * A group of files to by dumped to dump directory.
32
+ */
33
+ export declare type Dump = {
34
+ /**
35
+ * Timestamp in milliseconds.
36
+ */
37
+ since: number;
38
+ /**
39
+ * A list of updated files, keyed by file path. Its value is an object with two keys,
40
+ * old public URL and new public URL (the value stored at data.content.url.path) before
41
+ * and after updating file in dumpDir.
42
+ */
43
+ updated: Map<string, {
44
+ oldPublicUrl: string | null;
45
+ newPublicUrl: string | null;
46
+ }>;
47
+ /**
48
+ * A list of deleted files, keyed by file path. Its value is an object with two keys,
49
+ * old public URL and new public URL (the value stored at data.content.url.path) before
50
+ * and after updating file in dumpDir. New public URL is always null, since file is
51
+ * deleted. We keep the same structure for both updated and deleted items.
52
+ */
53
+ deleted: Map<string, {
54
+ oldPublicUrl: string | null;
55
+ newPublicUrl: null;
56
+ }>;
57
+ /**
58
+ * Optional execution time taken by the dump, in milliseconds.
59
+ */
60
+ execTimeMs?: number;
61
+ };
62
+ //# sourceMappingURL=dumpManager.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dumpManager.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dump/dumpManager.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,WAAW,GAAG;IACxB;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAE/C;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,oBAAY,IAAI,GAAG;IACjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,OAAO,EAAE,GAAG,CACV,MAAM,EACN;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAC7D,CAAC;IAEF;;;;;OAKG;IACH,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAE1E;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export * from './dumpManager';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dump/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,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("./dumpManager"), exports);
@@ -0,0 +1,205 @@
1
+ import { ConfigOptions } from '@lib/config/config.types';
2
+ import { Store } from '@lib/store/store.types';
3
+ import { FileType } from '@lib/utils/fs/fs.types';
4
+ import { DependencyTagger } from '../dependency/dependency.types';
5
+ import { Dump } from '../dump/dumpManager.types';
6
+ import { ChangedFiles } from '../workDir/workDir.types';
7
+ /**
8
+ * A manager for a group of user-land modules.
9
+ *
10
+ * @typeParam ModuleType - The type of module being managed.
11
+ */
12
+ export declare type HookManager = {
13
+ reset(): void;
14
+ invokeOnStoreLoadStart(): void;
15
+ invokeOnProcessFile(options: FileHookOptions): FileType;
16
+ invokeOnStoreItemAdd(options: FileHookOptions): void;
17
+ invokeOnStoreLoadDone(): void;
18
+ invokeOnStoreChangeStart(changedFiles: ChangedFiles): void;
19
+ invokeOnStoreItemBeforeUpdate(options: FileHookOptions): void;
20
+ invokeOnStoreItemAfterUpdate(options: FileHookOptions): void;
21
+ invokeOnStoreItemDelete(options: FileHookOptions): void;
22
+ invokeOnStoreChangeDone(changedFiles: ChangedFiles): void;
23
+ invokeOnDumpCreate(dump: Dump): Dump;
24
+ };
25
+ /**
26
+ * Options passed to an onModuleLoad hook.
27
+ */
28
+ export interface OnModuleLoadHookOptions {
29
+ /**
30
+ * Configuration options.
31
+ */
32
+ config: ConfigOptions;
33
+ /**
34
+ * The data store.
35
+ */
36
+ store: Store;
37
+ }
38
+ /**
39
+ * Options passed to a hook.
40
+ *
41
+ * @remarks
42
+ * Since hooks are user-land modules, they do not have access to configuration
43
+ * or any other part of the Data Server. All data they need to function must be
44
+ * passed as parameters.
45
+ */
46
+ export interface BaseHookOptions {
47
+ /**
48
+ * The data store.
49
+ */
50
+ store: Store;
51
+ /**
52
+ * The dependency tagger service.
53
+ */
54
+ dependencyTagger: DependencyTagger;
55
+ }
56
+ /**
57
+ * Options passed to a file hook.
58
+ */
59
+ export interface FileHookOptions {
60
+ /**
61
+ * Relative file path inside the data dir.
62
+ */
63
+ relativeFilepath: string;
64
+ /**
65
+ * File contents, an object with "raw" and "json" members.
66
+ */
67
+ fileContent: FileType;
68
+ }
69
+ /**
70
+ * Full options passed to a hook.
71
+ */
72
+ export interface FullHookOptions extends BaseHookOptions, FileHookOptions {
73
+ }
74
+ export interface ChangedFilesHookOptions extends BaseHookOptions {
75
+ /**
76
+ * A group of changed files in Static Suite's data dir.
77
+ */
78
+ changedFiles: ChangedFiles;
79
+ }
80
+ export interface OnDumpHookOptions {
81
+ /**
82
+ * Path to the dump directory.
83
+ */
84
+ dumpDir: string;
85
+ /**
86
+ * The data store.
87
+ */
88
+ store: Store;
89
+ /**
90
+ * The dump to be processed.
91
+ */
92
+ dump: Dump;
93
+ }
94
+ /**
95
+ * A module that defines several hooks.
96
+ */
97
+ export declare type HookModule = {
98
+ /**
99
+ * A hook executed when a hook module is loaded or reloaded.
100
+ *
101
+ * @remarks
102
+ * This hook is aimed at bootstrapping some data structure, or establishing some connection
103
+ * to an external system before other hooks are run.
104
+ */
105
+ onModuleLoad?(options: OnModuleLoadHookOptions): void;
106
+ /**
107
+ * A hook executed before the store starts loading.
108
+ *
109
+ * @remarks
110
+ * This hook is aimed at bootstrapping some data structure, or establishing some connection
111
+ * to an external system before other hooks are run.
112
+ *
113
+ * @param options - An object with options passed to the hook. @see {@link HookOptions}
114
+ */
115
+ onStoreLoadStart?(options: BaseHookOptions): void;
116
+ /**
117
+ * A hook executed after a file is read from disk, before adding it to the store.
118
+ *
119
+ * @remarks
120
+ * This hook is aimed at altering the contents of the file before it being added to the store.
121
+ *
122
+ * @param options - An object with options passed to the hook. @see {@link FileHookOptions}
123
+ *
124
+ * @returns The file contents, and object with "raw" and "json" members.
125
+ */
126
+ onProcessFile?(options: FullHookOptions): FileType;
127
+ /**
128
+ * A hook executed after a file is added into the store.
129
+ *
130
+ * @remarks
131
+ * This hook is aimed at adding some information to the store, e.g.- indexing all contents
132
+ * by their taxonomy.
133
+ *
134
+ * @param options - An object with options passed to the hook. @see {@link FileHookOptions}
135
+ */
136
+ onStoreItemAdd?(options: FullHookOptions): void;
137
+ /**
138
+ * A hook executed after the store finishes loading.
139
+ *
140
+ * @remarks
141
+ * This hook is aimed at adding some final information to the store, e.g.- counting all images, etc
142
+ *
143
+ * @param options - An object with options passed to the hook. @see {@link HookOptions}
144
+ */
145
+ onStoreLoadDone?(options: BaseHookOptions): void;
146
+ /**
147
+ * A hook executed before the store starts updating.
148
+ *
149
+ * @remarks
150
+ * This hook is aimed at bootstrapping or updating some data structure
151
+ * before a set of update/delete operations starts.
152
+ *
153
+ * @param options - An object with options passed to the hook. @see {@link HookOptions}
154
+ */
155
+ onStoreChangeStart?(options: ChangedFilesHookOptions): void;
156
+ /**
157
+ * A hook executed before a file is updated in the store.
158
+ *
159
+ * @remarks
160
+ * This hook is aimed at adding some information to the store, e.g.- indexing all contents
161
+ * by their taxonomy.
162
+ *
163
+ * @param options - An object with options passed to the hook. @see {@link FileHookOptions}
164
+ */
165
+ onStoreItemBeforeUpdate?(options: FullHookOptions): void;
166
+ /**
167
+ * A hook executed after a file is updated in the store.
168
+ *
169
+ * @remarks
170
+ * This hook is aimed at adding some information to the store, e.g.- indexing all contents
171
+ * by their taxonomy.
172
+ *
173
+ * @param options - An object with options passed to the hook. @see {@link FileHookOptions}
174
+ */
175
+ onStoreItemAfterUpdate?(options: FullHookOptions): void;
176
+ /**
177
+ * A hook executed after a file is deleted from the store.
178
+ *
179
+ * @remarks
180
+ * This hook is aimed at reverting the actions taken in storeAdd hook, e.g.- removing a file
181
+ * from a taxonomy index.
182
+ *
183
+ * @param options - An object with options passed to the hook. @see {@link FileHookOptions}
184
+ */
185
+ onStoreItemDelete?(options: FullHookOptions): void;
186
+ /**
187
+ * A hook executed after the store ends updating.
188
+ *
189
+ * @remarks
190
+ * This hook is run after a set of update/delete operations finishes.
191
+ *
192
+ * @param options - An object with options passed to the hook. @see {@link HookOptions}
193
+ */
194
+ onStoreChangeDone?(options: ChangedFilesHookOptions): void;
195
+ /**
196
+ * A hook executed after a dump object is created.
197
+ *
198
+ * @remarks
199
+ * This hook can alter the contents of the dump being saved, and add/remove items.
200
+ *
201
+ * @param options - An object with options passed to the hook. @see {@link OnDumpHookOptions}
202
+ */
203
+ onDumpCreate?(options: OnDumpHookOptions): Dump;
204
+ };
205
+ //# sourceMappingURL=hook.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/hook/hook.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD;;;;GAIG;AACH,oBAAY,WAAW,GAAG;IACxB,KAAK,IAAI,IAAI,CAAC;IAGd,sBAAsB,IAAI,IAAI,CAAC;IAC/B,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAAC;IACxD,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IACrD,qBAAqB,IAAI,IAAI,CAAC;IAG9B,wBAAwB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3D,6BAA6B,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9D,4BAA4B,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7D,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IACxD,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAG1D,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,EAAE,QAAQ,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,eAAe,EAAE,eAAe;CAAG;AAE5E,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;CACZ;AAED;;GAEG;AACH,oBAAY,UAAU,GAAG;IACvB;;;;;;OAMG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAEtD;;;;;;;;OAQG;IACH,gBAAgB,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAElD;;;;;;;;;OASG;IACH,aAAa,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAAC;IAEnD;;;;;;;;OAQG;IACH,cAAc,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAEhD;;;;;;;OAOG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAEjD;;;;;;;;OAQG;IACH,kBAAkB,CAAC,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAE5D;;;;;;;;OAQG;IACH,uBAAuB,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAEzD;;;;;;;;OAQG;IACH,sBAAsB,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAExD;;;;;;;;OAQG;IACH,iBAAiB,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAEnD;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAE3D;;;;;;;OAOG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACjD,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { HookManager } from './hook.types';
2
+ /**
3
+ * A specialized hook manager with invoke helpers for all hooks
4
+ */
5
+ export declare const hookManager: HookManager;
6
+ //# sourceMappingURL=hookManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hookManager.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/hook/hookManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAc,MAAM,cAAc,CAAC;AAYvD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WA+JzB,CAAC"}