@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.
- package/.eslintignore +4 -0
- package/.eslintrc.json +49 -0
- package/.nvmrc +1 -0
- package/.prettierrc +10 -0
- package/.vscode/launch.json +44 -0
- package/LICENSE.txt +339 -0
- package/README.md +300 -0
- package/__mocks__/clear-module.js +7 -0
- package/api-extractor.json +339 -0
- package/dist/bin/serve.d.ts +3 -0
- package/dist/bin/serve.d.ts.map +1 -0
- package/dist/bin/serve.js +105 -0
- package/dist/http/README.md +300 -0
- package/dist/http/httpServer.d.ts +4 -0
- package/dist/http/httpServer.d.ts.map +1 -0
- package/dist/http/httpServer.js +24 -0
- package/dist/http/public/assets/bulma/bulma-tooltip.min.css +2 -0
- package/dist/http/public/assets/bulma/bulma.min.css +1 -0
- package/dist/http/public/assets/clipboard/clipboard.min.js +7 -0
- package/dist/http/public/assets/simple-datatables/index.js +12 -0
- package/dist/http/public/assets/simple-datatables/style.css +173 -0
- package/dist/http/routes/cache.d.ts +4 -0
- package/dist/http/routes/cache.d.ts.map +1 -0
- package/dist/http/routes/cache.js +19 -0
- package/dist/http/routes/data.d.ts +4 -0
- package/dist/http/routes/data.d.ts.map +1 -0
- package/dist/http/routes/data.js +104 -0
- package/dist/http/routes/docs.d.ts +3 -0
- package/dist/http/routes/docs.d.ts.map +1 -0
- package/dist/http/routes/docs.js +14 -0
- package/dist/http/routes/dump.d.ts +8 -0
- package/dist/http/routes/dump.d.ts.map +1 -0
- package/dist/http/routes/dump.js +57 -0
- package/dist/http/routes/home.d.ts +3 -0
- package/dist/http/routes/home.d.ts.map +1 -0
- package/dist/http/routes/home.js +17 -0
- package/dist/http/routes/index.d.ts +3 -0
- package/dist/http/routes/index.d.ts.map +1 -0
- package/dist/http/routes/index.js +33 -0
- package/dist/http/routes/query.d.ts +5 -0
- package/dist/http/routes/query.d.ts.map +1 -0
- package/dist/http/routes/query.js +21 -0
- package/dist/http/routes/status.d.ts +9 -0
- package/dist/http/routes/status.d.ts.map +1 -0
- package/dist/http/routes/status.js +74 -0
- package/dist/http/routes/task.d.ts +5 -0
- package/dist/http/routes/task.d.ts.map +1 -0
- package/dist/http/routes/task.js +22 -0
- package/dist/http/views/cacheClear.pug +17 -0
- package/dist/http/views/cacheIndex.pug +19 -0
- package/dist/http/views/data.pug +68 -0
- package/dist/http/views/docs.pug +7 -0
- package/dist/http/views/dumpIndex.pug +14 -0
- package/dist/http/views/home.pug +15 -0
- package/dist/http/views/includes/layout.pug +23 -0
- package/dist/http/views/queryIndex.pug +17 -0
- package/dist/http/views/statusIndex.pug +14 -0
- package/dist/http/views/taskIndex.pug +17 -0
- package/dist/lib/config/config.d.ts +26 -0
- package/dist/lib/config/config.d.ts.map +1 -0
- package/dist/lib/config/config.js +122 -0
- package/dist/lib/config/config.types.d.ts +74 -0
- package/dist/lib/config/config.types.d.ts.map +1 -0
- package/dist/lib/config/config.types.js +2 -0
- package/dist/lib/config/error/InvalidRunMode.d.ts +15 -0
- package/dist/lib/config/error/InvalidRunMode.d.ts.map +1 -0
- package/dist/lib/config/error/InvalidRunMode.js +20 -0
- package/dist/lib/config/error/MissingDirectory.d.ts +24 -0
- package/dist/lib/config/error/MissingDirectory.d.ts.map +1 -0
- package/dist/lib/config/error/MissingDirectory.js +23 -0
- package/dist/lib/config/error/MissingRequiredOption.d.ts +19 -0
- package/dist/lib/config/error/MissingRequiredOption.d.ts.map +1 -0
- package/dist/lib/config/error/MissingRequiredOption.js +21 -0
- package/dist/lib/config/error/NonWritableDirectory.d.ts +24 -0
- package/dist/lib/config/error/NonWritableDirectory.d.ts.map +1 -0
- package/dist/lib/config/error/NonWritableDirectory.js +23 -0
- package/dist/lib/config/error/index.d.ts +5 -0
- package/dist/lib/config/error/index.d.ts.map +1 -0
- package/dist/lib/config/error/index.js +16 -0
- package/dist/lib/config/index.d.ts +2 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +13 -0
- package/dist/lib/dataServer.d.ts +21 -0
- package/dist/lib/dataServer.d.ts.map +1 -0
- package/dist/lib/dataServer.js +56 -0
- package/dist/lib/dataServer.types.d.ts +84 -0
- package/dist/lib/dataServer.types.d.ts.map +1 -0
- package/dist/lib/dataServer.types.js +13 -0
- package/dist/lib/error/DomainError.d.ts +9 -0
- package/dist/lib/error/DomainError.d.ts.map +1 -0
- package/dist/lib/error/DomainError.js +20 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +15 -0
- package/dist/lib/query/index.d.ts +3 -0
- package/dist/lib/query/index.d.ts.map +1 -0
- package/dist/lib/query/index.js +14 -0
- package/dist/lib/query/query.types.d.ts +206 -0
- package/dist/lib/query/query.types.d.ts.map +1 -0
- package/dist/lib/query/query.types.js +21 -0
- package/dist/lib/query/queryManager.d.ts +10 -0
- package/dist/lib/query/queryManager.d.ts.map +1 -0
- package/dist/lib/query/queryManager.js +12 -0
- package/dist/lib/query/queryRunner copy.d.ts +3 -0
- package/dist/lib/query/queryRunner copy.d.ts.map +1 -0
- package/dist/lib/query/queryRunner copy.js +87 -0
- package/dist/lib/query/queryRunner.d.ts +3 -0
- package/dist/lib/query/queryRunner.d.ts.map +1 -0
- package/dist/lib/query/queryRunner.js +96 -0
- package/dist/lib/query/queryTagManager.d.ts +3 -0
- package/dist/lib/query/queryTagManager.d.ts.map +1 -0
- package/dist/lib/query/queryTagManager.js +47 -0
- package/dist/lib/store/dataDir/dataDir.types.d.ts +36 -0
- package/dist/lib/store/dataDir/dataDir.types.d.ts.map +1 -0
- package/dist/lib/store/dataDir/dataDir.types.js +2 -0
- package/dist/lib/store/dataDir/dataDirManager.d.ts +3 -0
- package/dist/lib/store/dataDir/dataDirManager.d.ts.map +1 -0
- package/dist/lib/store/dataDir/dataDirManager.js +97 -0
- package/dist/lib/store/dataDir/index.d.ts +2 -0
- package/dist/lib/store/dataDir/index.d.ts.map +1 -0
- package/dist/lib/store/dataDir/index.js +13 -0
- package/dist/lib/store/dependency/dependency.types.d.ts +70 -0
- package/dist/lib/store/dependency/dependency.types.d.ts.map +1 -0
- package/dist/lib/store/dependency/dependency.types.js +2 -0
- package/dist/lib/store/dependency/dependencyFileHelper.d.ts +6 -0
- package/dist/lib/store/dependency/dependencyFileHelper.d.ts.map +1 -0
- package/dist/lib/store/dependency/dependencyFileHelper.js +46 -0
- package/dist/lib/store/dependency/dependencyManager copy.d.ts +6 -0
- package/dist/lib/store/dependency/dependencyManager copy.d.ts.map +1 -0
- package/dist/lib/store/dependency/dependencyManager copy.js +91 -0
- package/dist/lib/store/dependency/dependencyManager.d.ts +6 -0
- package/dist/lib/store/dependency/dependencyManager.d.ts.map +1 -0
- package/dist/lib/store/dependency/dependencyManager.js +78 -0
- package/dist/lib/store/dependency/dependencyManager.types.d.ts +48 -0
- package/dist/lib/store/dependency/dependencyManager.types.d.ts.map +1 -0
- package/dist/lib/store/dependency/dependencyManager.types.js +2 -0
- package/dist/lib/store/dependency/dependencyTagManager.d.ts +6 -0
- package/dist/lib/store/dependency/dependencyTagManager.d.ts.map +1 -0
- package/dist/lib/store/dependency/dependencyTagManager.js +33 -0
- package/dist/lib/store/dependency/dependencyTagger.d.ts +11 -0
- package/dist/lib/store/dependency/dependencyTagger.d.ts.map +1 -0
- package/dist/lib/store/dependency/dependencyTagger.js +99 -0
- package/dist/lib/store/diff/diffManager.d.ts +3 -0
- package/dist/lib/store/diff/diffManager.d.ts.map +1 -0
- package/dist/lib/store/diff/diffManager.js +114 -0
- package/dist/lib/store/diff/diffManager.types.d.ts +50 -0
- package/dist/lib/store/diff/diffManager.types.d.ts.map +1 -0
- package/dist/lib/store/diff/diffManager.types.js +2 -0
- package/dist/lib/store/diff/index.d.ts +2 -0
- package/dist/lib/store/diff/index.d.ts.map +1 -0
- package/dist/lib/store/diff/index.js +13 -0
- package/dist/lib/store/diff/tracker.d.ts +3 -0
- package/dist/lib/store/diff/tracker.d.ts.map +1 -0
- package/dist/lib/store/diff/tracker.js +82 -0
- package/dist/lib/store/diff/tracker.types.d.ts +31 -0
- package/dist/lib/store/diff/tracker.types.d.ts.map +1 -0
- package/dist/lib/store/diff/tracker.types.js +2 -0
- package/dist/lib/store/dump/dumpManager.d.ts +3 -0
- package/dist/lib/store/dump/dumpManager.d.ts.map +1 -0
- package/dist/lib/store/dump/dumpManager.js +199 -0
- package/dist/lib/store/dump/dumpManager.types.d.ts +62 -0
- package/dist/lib/store/dump/dumpManager.types.d.ts.map +1 -0
- package/dist/lib/store/dump/dumpManager.types.js +2 -0
- package/dist/lib/store/dump/index.d.ts +2 -0
- package/dist/lib/store/dump/index.d.ts.map +1 -0
- package/dist/lib/store/dump/index.js +13 -0
- package/dist/lib/store/hook/hook.types.d.ts +205 -0
- package/dist/lib/store/hook/hook.types.d.ts.map +1 -0
- package/dist/lib/store/hook/hook.types.js +2 -0
- package/dist/lib/store/hook/hookManager.d.ts +6 -0
- package/dist/lib/store/hook/hookManager.d.ts.map +1 -0
- package/dist/lib/store/hook/hookManager.js +168 -0
- package/dist/lib/store/hook/index.d.ts +2 -0
- package/dist/lib/store/hook/index.d.ts.map +1 -0
- package/dist/lib/store/hook/index.js +13 -0
- package/dist/lib/store/include/includeIndex.d.ts +6 -0
- package/dist/lib/store/include/includeIndex.d.ts.map +1 -0
- package/dist/lib/store/include/includeIndex.js +65 -0
- package/dist/lib/store/include/includeIndex.types.d.ts +29 -0
- package/dist/lib/store/include/includeIndex.types.d.ts.map +1 -0
- package/dist/lib/store/include/includeIndex.types.js +2 -0
- package/dist/lib/store/include/includeParser.d.ts +3 -0
- package/dist/lib/store/include/includeParser.d.ts.map +1 -0
- package/dist/lib/store/include/includeParser.js +46 -0
- package/dist/lib/store/include/includeParser.types.d.ts +88 -0
- package/dist/lib/store/include/includeParser.types.d.ts.map +1 -0
- package/dist/lib/store/include/includeParser.types.js +2 -0
- package/dist/lib/store/include/index.d.ts +2 -0
- package/dist/lib/store/include/index.d.ts.map +1 -0
- package/dist/lib/store/include/index.js +13 -0
- package/dist/lib/store/include/parsers/configIncludeParser.d.ts +3 -0
- package/dist/lib/store/include/parsers/configIncludeParser.d.ts.map +1 -0
- package/dist/lib/store/include/parsers/configIncludeParser.js +8 -0
- package/dist/lib/store/include/parsers/customIncludeParser.d.ts +3 -0
- package/dist/lib/store/include/parsers/customIncludeParser.d.ts.map +1 -0
- package/dist/lib/store/include/parsers/customIncludeParser.js +8 -0
- package/dist/lib/store/include/parsers/entityIncludeParser.d.ts +3 -0
- package/dist/lib/store/include/parsers/entityIncludeParser.d.ts.map +1 -0
- package/dist/lib/store/include/parsers/entityIncludeParser.js +13 -0
- package/dist/lib/store/include/parsers/index.d.ts +6 -0
- package/dist/lib/store/include/parsers/index.d.ts.map +1 -0
- package/dist/lib/store/include/parsers/index.js +17 -0
- package/dist/lib/store/include/parsers/localeIncludeParser.d.ts +3 -0
- package/dist/lib/store/include/parsers/localeIncludeParser.d.ts.map +1 -0
- package/dist/lib/store/include/parsers/localeIncludeParser.js +8 -0
- package/dist/lib/store/include/parsers/queryIncludeParser.d.ts +11 -0
- package/dist/lib/store/include/parsers/queryIncludeParser.d.ts.map +1 -0
- package/dist/lib/store/include/parsers/queryIncludeParser.js +45 -0
- package/dist/lib/store/include/parsers/types/aliasIncludeParser.d.ts +3 -0
- package/dist/lib/store/include/parsers/types/aliasIncludeParser.d.ts.map +1 -0
- package/dist/lib/store/include/parsers/types/aliasIncludeParser.js +10 -0
- package/dist/lib/store/include/parsers/types/aliasWithoutTypeIncludeParser.d.ts +8 -0
- package/dist/lib/store/include/parsers/types/aliasWithoutTypeIncludeParser.d.ts.map +1 -0
- package/dist/lib/store/include/parsers/types/aliasWithoutTypeIncludeParser.js +18 -0
- package/dist/lib/store/index.d.ts +2 -0
- package/dist/lib/store/index.d.ts.map +1 -0
- package/dist/lib/store/index.js +13 -0
- package/dist/lib/store/store.d.ts +7 -0
- package/dist/lib/store/store.d.ts.map +1 -0
- package/dist/lib/store/store.js +89 -0
- package/dist/lib/store/store.types.d.ts +231 -0
- package/dist/lib/store/store.types.d.ts.map +1 -0
- package/dist/lib/store/store.types.js +2 -0
- package/dist/lib/store/storeManager.d.ts +3 -0
- package/dist/lib/store/storeManager.d.ts.map +1 -0
- package/dist/lib/store/storeManager.js +149 -0
- package/dist/lib/store/workDir/index.d.ts +2 -0
- package/dist/lib/store/workDir/index.d.ts.map +1 -0
- package/dist/lib/store/workDir/index.js +13 -0
- package/dist/lib/store/workDir/storage/getChangedLinesSince.d.ts +9 -0
- package/dist/lib/store/workDir/storage/getChangedLinesSince.d.ts.map +1 -0
- package/dist/lib/store/workDir/storage/getChangedLinesSince.js +47 -0
- package/dist/lib/store/workDir/storage/getDataFromLogLine.d.ts +10 -0
- package/dist/lib/store/workDir/storage/getDataFromLogLine.d.ts.map +1 -0
- package/dist/lib/store/workDir/storage/getDataFromLogLine.js +33 -0
- package/dist/lib/store/workDir/storage/getLogFile.d.ts +8 -0
- package/dist/lib/store/workDir/storage/getLogFile.d.ts.map +1 -0
- package/dist/lib/store/workDir/storage/getLogFile.js +11 -0
- package/dist/lib/store/workDir/storage/index.d.ts +4 -0
- package/dist/lib/store/workDir/storage/index.d.ts.map +1 -0
- package/dist/lib/store/workDir/storage/index.js +20 -0
- package/dist/lib/store/workDir/workDir.types.d.ts +44 -0
- package/dist/lib/store/workDir/workDir.types.d.ts.map +1 -0
- package/dist/lib/store/workDir/workDir.types.js +2 -0
- package/dist/lib/store/workDir/workDirHelper.d.ts +20 -0
- package/dist/lib/store/workDir/workDirHelper.d.ts.map +1 -0
- package/dist/lib/store/workDir/workDirHelper.js +52 -0
- package/dist/lib/task/index.d.ts +3 -0
- package/dist/lib/task/index.d.ts.map +1 -0
- package/dist/lib/task/index.js +14 -0
- package/dist/lib/task/task.types.d.ts +140 -0
- package/dist/lib/task/task.types.d.ts.map +1 -0
- package/dist/lib/task/task.types.js +11 -0
- package/dist/lib/task/taskManager.d.ts +10 -0
- package/dist/lib/task/taskManager.d.ts.map +1 -0
- package/dist/lib/task/taskManager.js +12 -0
- package/dist/lib/task/taskRunner.d.ts +3 -0
- package/dist/lib/task/taskRunner.d.ts.map +1 -0
- package/dist/lib/task/taskRunner.js +71 -0
- package/dist/lib/tsdoc-metadata.json +11 -0
- package/dist/lib/utils/array/arrayUtils.d.ts +2 -0
- package/dist/lib/utils/array/arrayUtils.d.ts.map +1 -0
- package/dist/lib/utils/array/arrayUtils.js +11 -0
- package/dist/lib/utils/cache/cacheBinManager.d.ts +37 -0
- package/dist/lib/utils/cache/cacheBinManager.d.ts.map +1 -0
- package/dist/lib/utils/cache/cacheBinManager.js +53 -0
- package/dist/lib/utils/cache/index.d.ts +2 -0
- package/dist/lib/utils/cache/index.d.ts.map +1 -0
- package/dist/lib/utils/cache/index.js +13 -0
- package/dist/lib/utils/fs/fs.types.d.ts +20 -0
- package/dist/lib/utils/fs/fs.types.d.ts.map +1 -0
- package/dist/lib/utils/fs/fs.types.js +2 -0
- package/dist/lib/utils/fs/fsUtils.d.ts +62 -0
- package/dist/lib/utils/fs/fsUtils.d.ts.map +1 -0
- package/dist/lib/utils/fs/fsUtils.js +137 -0
- package/dist/lib/utils/fs/index.d.ts +2 -0
- package/dist/lib/utils/fs/index.d.ts.map +1 -0
- package/dist/lib/utils/fs/index.js +13 -0
- package/dist/lib/utils/logger/index.d.ts +2 -0
- package/dist/lib/utils/logger/index.d.ts.map +1 -0
- package/dist/lib/utils/logger/index.js +13 -0
- package/dist/lib/utils/logger/logger.d.ts +32 -0
- package/dist/lib/utils/logger/logger.d.ts.map +1 -0
- package/dist/lib/utils/logger/logger.js +82 -0
- package/dist/lib/utils/logger/logger.types.d.ts +37 -0
- package/dist/lib/utils/logger/logger.types.d.ts.map +1 -0
- package/dist/lib/utils/logger/logger.types.js +15 -0
- package/dist/lib/utils/module/dirBasedModuleGroupManager.d.ts +30 -0
- package/dist/lib/utils/module/dirBasedModuleGroupManager.d.ts.map +1 -0
- package/dist/lib/utils/module/dirBasedModuleGroupManager.js +78 -0
- package/dist/lib/utils/module/index.d.ts +3 -0
- package/dist/lib/utils/module/index.d.ts.map +1 -0
- package/dist/lib/utils/module/index.js +14 -0
- package/dist/lib/utils/module/module.types.d.ts +53 -0
- package/dist/lib/utils/module/module.types.d.ts.map +1 -0
- package/dist/lib/utils/module/module.types.js +2 -0
- package/dist/lib/utils/module/moduleManager.d.ts +64 -0
- package/dist/lib/utils/module/moduleManager.d.ts.map +1 -0
- package/dist/lib/utils/module/moduleManager.js +139 -0
- package/dist/lib/utils/object/index.d.ts +2 -0
- package/dist/lib/utils/object/index.d.ts.map +1 -0
- package/dist/lib/utils/object/index.js +13 -0
- package/dist/lib/utils/object/object.types.d.ts +72 -0
- package/dist/lib/utils/object/object.types.d.ts.map +1 -0
- package/dist/lib/utils/object/object.types.js +2 -0
- package/dist/lib/utils/object/objectUtils.d.ts +45 -0
- package/dist/lib/utils/object/objectUtils.d.ts.map +1 -0
- package/dist/lib/utils/object/objectUtils.js +64 -0
- package/dist/lib/utils/string/index.d.ts +2 -0
- package/dist/lib/utils/string/index.d.ts.map +1 -0
- package/dist/lib/utils/string/index.js +13 -0
- package/dist/lib/utils/string/string.types.d.ts +2 -0
- package/dist/lib/utils/string/string.types.d.ts.map +1 -0
- package/dist/lib/utils/string/string.types.js +2 -0
- package/dist/lib/utils/string/stringUtils.d.ts +37 -0
- package/dist/lib/utils/string/stringUtils.d.ts.map +1 -0
- package/dist/lib/utils/string/stringUtils.js +62 -0
- package/dist/lib/watcher/index.d.ts +2 -0
- package/dist/lib/watcher/index.d.ts.map +1 -0
- package/dist/lib/watcher/index.js +13 -0
- package/dist/lib/watcher/watcher.d.ts +17 -0
- package/dist/lib/watcher/watcher.d.ts.map +1 -0
- package/dist/lib/watcher/watcher.js +65 -0
- package/dist/static-suite-data-server.d.ts +392 -0
- package/package.json +102 -0
- package/scripts/copy-http-files-to-src.js +45 -0
- package/src/__tests__/fixtures/data/en/en.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/entity.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/article/article1--card.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/article/article1--small.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/article/article1.json +40 -0
- package/src/__tests__/fixtures/data/en/entity/node/article/article2--card.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/article/article2--small.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/article/article2.json +40 -0
- package/src/__tests__/fixtures/data/en/entity/node/article/article3--card.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/article/article3--small.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/article/article3.json +7 -0
- package/src/__tests__/fixtures/data/en/entity/node/node.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/page/page1--card.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/page/page1--small.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/page/page1.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/page/page2--card.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/page/page2--small.json +3 -0
- package/src/__tests__/fixtures/data/en/entity/node/page/page2.json +3 -0
- package/src/__tests__/fixtures/data/global--block.json +3 -0
- package/src/__tests__/fixtures/data/global.json +3 -0
- package/src/__tests__/fixtures/hook/main.hook.js +15 -0
- package/src/__tests__/fixtures/hook/taxonomy/main.hook.js +15 -0
- package/src/__tests__/fixtures/hook/taxonomy/taxo.hook.js +15 -0
- package/src/__tests__/fixtures/query/error.query.js +6 -0
- package/src/__tests__/fixtures/query/noHandler.query.js +14 -0
- package/src/__tests__/fixtures/query/query1.query.js +15 -0
- package/src/__tests__/fixtures/query/query2.query.js +14 -0
- package/src/__tests__/fixtures/query/wrongNamequery.js +14 -0
- package/src/__tests__/fixtures/task/error.task.js +6 -0
- package/src/__tests__/fixtures/task/noHandler.task.js +13 -0
- package/src/__tests__/fixtures/task/task1.task.js +14 -0
- package/src/__tests__/fixtures/task/task2.task.js +13 -0
- package/src/__tests__/fixtures/task/wrongNametask.js +13 -0
- package/src/bin/serve.ts +107 -0
- package/src/http/httpServer.ts +21 -0
- package/src/http/routes/cache.ts +17 -0
- package/src/http/routes/data.ts +114 -0
- package/src/http/routes/docs.ts +9 -0
- package/src/http/routes/dump.ts +61 -0
- package/src/http/routes/home.ts +16 -0
- package/src/http/routes/index.ts +47 -0
- package/src/http/routes/query.ts +27 -0
- package/src/http/routes/status.ts +89 -0
- package/src/http/routes/task.ts +29 -0
- package/src/http/views/cacheClear.pug +17 -0
- package/src/http/views/cacheIndex.pug +19 -0
- package/src/http/views/data.pug +68 -0
- package/src/http/views/docs.pug +7 -0
- package/src/http/views/dumpIndex.pug +14 -0
- package/src/http/views/home.pug +15 -0
- package/src/http/views/includes/layout.pug +23 -0
- package/src/http/views/queryIndex.pug +17 -0
- package/src/http/views/statusIndex.pug +14 -0
- package/src/http/views/taskIndex.pug +17 -0
- package/src/lib/config/__tests__/config.test.ts +132 -0
- package/src/lib/config/config.ts +143 -0
- package/src/lib/config/config.types.ts +87 -0
- package/src/lib/config/error/InvalidRunMode.ts +17 -0
- package/src/lib/config/error/MissingDirectory.ts +30 -0
- package/src/lib/config/error/MissingRequiredOption.ts +23 -0
- package/src/lib/config/error/NonWritableDirectory.ts +30 -0
- package/src/lib/config/error/index.ts +4 -0
- package/src/lib/config/index.ts +1 -0
- package/src/lib/dataServer.ts +81 -0
- package/src/lib/dataServer.types.ts +98 -0
- package/src/lib/error/DomainError.ts +18 -0
- package/src/lib/index.ts +4 -0
- package/src/lib/query/__tests__/queryRunner.test.ts +61 -0
- package/src/lib/query/index.ts +2 -0
- package/src/lib/query/query.types.ts +231 -0
- package/src/lib/query/queryManager.ts +11 -0
- package/src/lib/query/queryRunner.ts +110 -0
- package/src/lib/query/queryTagManager.ts +53 -0
- package/src/lib/store/dataDir/__tests__/dataDirManager.test.ts +15 -0
- package/src/lib/store/dataDir/dataDir.types.ts +38 -0
- package/src/lib/store/dataDir/dataDirManager.ts +121 -0
- package/src/lib/store/dataDir/index.ts +1 -0
- package/src/lib/store/dependency/dependency.types.ts +78 -0
- package/src/lib/store/dependency/dependencyFileHelper.ts +50 -0
- package/src/lib/store/dependency/dependencyManager.ts +82 -0
- package/src/lib/store/dependency/dependencyTagger.ts +105 -0
- package/src/lib/store/diff/diffManager.ts +122 -0
- package/src/lib/store/diff/diffManager.types.ts +51 -0
- package/src/lib/store/diff/index.ts +1 -0
- package/src/lib/store/dump/dumpManager.ts +235 -0
- package/src/lib/store/dump/dumpManager.types.ts +61 -0
- package/src/lib/store/dump/index.ts +1 -0
- package/src/lib/store/hook/hook.types.ts +232 -0
- package/src/lib/store/hook/hookManager.ts +180 -0
- package/src/lib/store/hook/index.ts +1 -0
- package/src/lib/store/include/__tests__/includeParser.test.ts +80 -0
- package/src/lib/store/include/includeParser.ts +54 -0
- package/src/lib/store/include/includeParser.types.ts +99 -0
- package/src/lib/store/include/index.ts +1 -0
- package/src/lib/store/include/parsers/__tests__/entityIncludeParser.test.ts +43 -0
- package/src/lib/store/include/parsers/configIncludeParser.ts +8 -0
- package/src/lib/store/include/parsers/customIncludeParser.ts +8 -0
- package/src/lib/store/include/parsers/entityIncludeParser.ts +15 -0
- package/src/lib/store/include/parsers/index.ts +5 -0
- package/src/lib/store/include/parsers/localeIncludeParser.ts +8 -0
- package/src/lib/store/include/parsers/queryIncludeParser.ts +51 -0
- package/src/lib/store/include/parsers/types/__tests__/aliasIncludeParser.test.ts +37 -0
- package/src/lib/store/include/parsers/types/__tests__/aliasWithoutTypeIncludeParser.test.ts +43 -0
- package/src/lib/store/include/parsers/types/aliasIncludeParser.ts +13 -0
- package/src/lib/store/include/parsers/types/aliasWithoutTypeIncludeParser.ts +22 -0
- package/src/lib/store/index.ts +1 -0
- package/src/lib/store/store.ts +105 -0
- package/src/lib/store/store.types.ts +251 -0
- package/src/lib/store/storeManager.ts +187 -0
- package/src/lib/store/workDir/__tests__/workDirHelper.test.ts +25 -0
- package/src/lib/store/workDir/index.ts +1 -0
- package/src/lib/store/workDir/storage/__tests__/getChangedLinesSince.test.ts +23 -0
- package/src/lib/store/workDir/storage/__tests__/getDataFromLogLine.test.ts +21 -0
- package/src/lib/store/workDir/storage/getChangedLinesSince.ts +47 -0
- package/src/lib/store/workDir/storage/getDataFromLogLine.ts +31 -0
- package/src/lib/store/workDir/storage/getLogFile.ts +11 -0
- package/src/lib/store/workDir/storage/index.ts +8 -0
- package/src/lib/store/workDir/workDir.types.ts +48 -0
- package/src/lib/store/workDir/workDirHelper.ts +59 -0
- package/src/lib/task/__tests__/taskRunner.test.ts +47 -0
- package/src/lib/task/index.ts +2 -0
- package/src/lib/task/task.types.ts +151 -0
- package/src/lib/task/taskManager.ts +11 -0
- package/src/lib/task/taskRunner.ts +79 -0
- package/src/lib/utils/array/__tests__/arrayUtils.test.ts +16 -0
- package/src/lib/utils/array/arrayUtils.ts +7 -0
- package/src/lib/utils/cache/__tests__/cache.test.ts +24 -0
- package/src/lib/utils/cache/cacheBinManager.ts +88 -0
- package/src/lib/utils/cache/index.ts +1 -0
- package/src/lib/utils/fs/__tests__/fixtures/file.json +3 -0
- package/src/lib/utils/fs/__tests__/fixtures/file.txt +3 -0
- package/src/lib/utils/fs/__tests__/fsUtils.test.ts +93 -0
- package/src/lib/utils/fs/fs.types.ts +21 -0
- package/src/lib/utils/fs/fsUtils.ts +141 -0
- package/src/lib/utils/fs/index.ts +1 -0
- package/src/lib/utils/logger/__tests__/logger.test.ts +12 -0
- package/src/lib/utils/logger/index.ts +1 -0
- package/src/lib/utils/logger/logger.ts +87 -0
- package/src/lib/utils/logger/logger.types.ts +41 -0
- package/src/lib/utils/module/__mocks__/dummyModule.query.js +4 -0
- package/src/lib/utils/module/__mocks__/dummyModule2.query.js +4 -0
- package/src/lib/utils/module/__tests__/dirBasedModuleGroupManager.test.ts +34 -0
- package/src/lib/utils/module/__tests__/moduleHandler.test.ts +100 -0
- package/src/lib/utils/module/dirBasedModuleGroupManager.ts +78 -0
- package/src/lib/utils/module/index.ts +2 -0
- package/src/lib/utils/module/module.types.ts +57 -0
- package/src/lib/utils/module/moduleManager.ts +144 -0
- package/src/lib/utils/object/__tests__/objectUtils.test.ts +62 -0
- package/src/lib/utils/object/index.ts +1 -0
- package/src/lib/utils/object/object.types.ts +74 -0
- package/src/lib/utils/object/objectUtils.ts +71 -0
- package/src/lib/utils/string/__tests__/stringUtils.test.ts +30 -0
- package/src/lib/utils/string/index.ts +1 -0
- package/src/lib/utils/string/string.types.ts +1 -0
- package/src/lib/utils/string/stringUtils.ts +61 -0
- package/src/lib/watcher/index.ts +1 -0
- package/src/lib/watcher/watcher.ts +66 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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,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 @@
|
|
|
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"}
|