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

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 (146) hide show
  1. package/README.md +569 -107
  2. package/dist/http/README.md +569 -107
  3. package/dist/http/routes/dependency.d.ts +10 -0
  4. package/dist/http/routes/dependency.d.ts.map +1 -0
  5. package/dist/http/routes/dependency.js +71 -0
  6. package/dist/http/routes/dump.d.ts.map +1 -1
  7. package/dist/http/routes/dump.js +15 -10
  8. package/dist/http/routes/home.js +2 -1
  9. package/dist/http/routes/index.d.ts.map +1 -1
  10. package/dist/http/routes/index.js +8 -0
  11. package/dist/http/routes/status.d.ts.map +1 -1
  12. package/dist/http/routes/status.js +1 -6
  13. package/dist/http/views/dependencyIndex.pug +14 -0
  14. package/dist/lib/dataServer.d.ts +2 -1
  15. package/dist/lib/dataServer.d.ts.map +1 -1
  16. package/dist/lib/query/query.types.d.ts +2 -2
  17. package/dist/lib/query/query.types.d.ts.map +1 -1
  18. package/dist/lib/query/query.types.js +2 -2
  19. package/dist/lib/query/queryRunner.d.ts.map +1 -1
  20. package/dist/lib/query/queryRunner.js +3 -1
  21. package/dist/lib/store/dataDir/dataDir.types.d.ts +5 -5
  22. package/dist/lib/store/dataDir/dataDir.types.d.ts.map +1 -1
  23. package/dist/lib/store/dataDir/dataDirManager.d.ts.map +1 -1
  24. package/dist/lib/store/dataDir/dataDirManager.js +23 -12
  25. package/dist/lib/store/dependency/dependency.types.d.ts.map +1 -1
  26. package/dist/lib/store/dependency/dependencyFileHelper.d.ts +1 -1
  27. package/dist/lib/store/dependency/dependencyFileHelper.d.ts.map +1 -1
  28. package/dist/lib/store/dependency/dependencyFileHelper.js +5 -3
  29. package/dist/lib/store/dependency/dependencyManager.d.ts +12 -0
  30. package/dist/lib/store/dependency/dependencyManager.d.ts.map +1 -1
  31. package/dist/lib/store/dependency/dependencyManager.js +7 -5
  32. package/dist/lib/store/dependency/dependencyTagger.d.ts.map +1 -1
  33. package/dist/lib/store/dependency/dependencyTagger.js +3 -38
  34. package/dist/lib/store/diff/{diffManager.types.d.ts → diff.types.d.ts} +14 -6
  35. package/dist/lib/store/diff/diff.types.d.ts.map +1 -0
  36. package/dist/lib/store/{dependency/dependencyManager.types.js → diff/diff.types.js} +0 -0
  37. package/dist/lib/store/diff/diffManager.d.ts +1 -1
  38. package/dist/lib/store/diff/diffManager.d.ts.map +1 -1
  39. package/dist/lib/store/diff/diffManager.js +38 -81
  40. package/dist/lib/store/dump/{dumpManager.types.d.ts → dump.types.d.ts} +21 -8
  41. package/dist/lib/store/dump/dump.types.d.ts.map +1 -0
  42. package/dist/lib/store/{diff/diffManager.types.js → dump/dump.types.js} +0 -0
  43. package/dist/lib/store/dump/dumpManager.d.ts +1 -1
  44. package/dist/lib/store/dump/dumpManager.d.ts.map +1 -1
  45. package/dist/lib/store/dump/dumpManager.js +31 -56
  46. package/dist/lib/store/dump/dumpMetadataHelper.d.ts +7 -0
  47. package/dist/lib/store/dump/dumpMetadataHelper.d.ts.map +1 -0
  48. package/dist/lib/store/dump/dumpMetadataHelper.js +61 -0
  49. package/dist/lib/store/hook/hook.types.d.ts +49 -23
  50. package/dist/lib/store/hook/hook.types.d.ts.map +1 -1
  51. package/dist/lib/store/hook/hookManager.d.ts.map +1 -1
  52. package/dist/lib/store/hook/hookManager.js +19 -8
  53. package/dist/lib/store/store.d.ts.map +1 -1
  54. package/dist/lib/store/store.js +9 -4
  55. package/dist/lib/store/store.types.d.ts +14 -37
  56. package/dist/lib/store/store.types.d.ts.map +1 -1
  57. package/dist/lib/store/storeManager.d.ts.map +1 -1
  58. package/dist/lib/store/storeManager.js +20 -10
  59. package/dist/lib/store/workDir/storage/getChangedLinesBetween.d.ts +16 -0
  60. package/dist/lib/store/workDir/storage/getChangedLinesBetween.d.ts.map +1 -0
  61. package/dist/lib/store/workDir/storage/{getChangedLinesSince.js → getChangedLinesBetween.js} +22 -20
  62. package/dist/lib/store/workDir/storage/getDataFromLogLine.d.ts.map +1 -1
  63. package/dist/lib/store/workDir/storage/getDataFromLogLine.js +16 -3
  64. package/dist/lib/store/workDir/storage/index.d.ts +1 -1
  65. package/dist/lib/store/workDir/storage/index.d.ts.map +1 -1
  66. package/dist/lib/store/workDir/storage/index.js +1 -1
  67. package/dist/lib/store/workDir/workDir.types.d.ts +9 -1
  68. package/dist/lib/store/workDir/workDir.types.d.ts.map +1 -1
  69. package/dist/lib/store/workDir/workDirHelper.d.ts +13 -6
  70. package/dist/lib/store/workDir/workDirHelper.d.ts.map +1 -1
  71. package/dist/lib/store/workDir/workDirHelper.js +42 -11
  72. package/dist/lib/utils/fs/fsUtils.d.ts +6 -0
  73. package/dist/lib/utils/fs/fsUtils.d.ts.map +1 -1
  74. package/dist/lib/utils/fs/fsUtils.js +20 -1
  75. package/dist/lib/utils/module/moduleManager.d.ts.map +1 -1
  76. package/dist/lib/utils/module/moduleManager.js +5 -1
  77. package/dist/lib/utils/string/stringUtils.d.ts +14 -0
  78. package/dist/lib/utils/string/stringUtils.d.ts.map +1 -1
  79. package/dist/lib/utils/string/stringUtils.js +28 -1
  80. package/dist/static-suite-data-server.d.ts +19 -39
  81. package/package.json +3 -3
  82. package/src/http/routes/dependency.ts +91 -0
  83. package/src/http/routes/dump.ts +21 -10
  84. package/src/http/routes/home.ts +2 -2
  85. package/src/http/routes/index.ts +16 -0
  86. package/src/http/routes/status.ts +1 -9
  87. package/src/http/views/dependencyIndex.pug +14 -0
  88. package/src/lib/dataServer.ts +2 -0
  89. package/src/lib/query/query.types.ts +2 -2
  90. package/src/lib/query/queryRunner.ts +3 -1
  91. package/src/lib/store/dataDir/dataDir.types.ts +5 -5
  92. package/src/lib/store/dataDir/dataDirManager.ts +30 -14
  93. package/src/lib/store/dependency/dependency.types.ts +0 -5
  94. package/src/lib/store/dependency/dependencyFileHelper.ts +5 -3
  95. package/src/lib/store/dependency/dependencyManager.ts +6 -3
  96. package/src/lib/store/dependency/dependencyTagger.ts +3 -39
  97. package/src/lib/store/diff/{diffManager.types.ts → diff.types.ts} +14 -5
  98. package/src/lib/store/diff/diffManager.ts +45 -84
  99. package/src/lib/store/dump/{dumpManager.types.ts → dump.types.ts} +24 -7
  100. package/src/lib/store/dump/dumpManager.ts +40 -75
  101. package/src/lib/store/dump/dumpMetadataHelper.ts +73 -0
  102. package/src/lib/store/hook/hook.types.ts +58 -23
  103. package/src/lib/store/hook/hookManager.ts +24 -9
  104. package/src/lib/store/store.ts +9 -4
  105. package/src/lib/store/store.types.ts +16 -37
  106. package/src/lib/store/storeManager.ts +28 -12
  107. package/src/lib/store/workDir/__tests__/workDirHelper.test.ts +6 -1
  108. package/src/lib/store/workDir/storage/__tests__/{getChangedLinesSince.test.ts → getChangedLinesBetween.test.ts} +9 -4
  109. package/src/lib/store/workDir/storage/getChangedLinesBetween.ts +52 -0
  110. package/src/lib/store/workDir/storage/getDataFromLogLine.ts +22 -3
  111. package/src/lib/store/workDir/storage/index.ts +1 -1
  112. package/src/lib/store/workDir/workDir.types.ts +11 -1
  113. package/src/lib/store/workDir/workDirHelper.ts +45 -11
  114. package/src/lib/utils/fs/fsUtils.ts +18 -0
  115. package/src/lib/utils/module/moduleManager.ts +5 -1
  116. package/src/lib/utils/string/__tests__/stringUtils.test.ts +30 -1
  117. package/src/lib/utils/string/stringUtils.ts +32 -0
  118. package/dist/lib/query/queryRunner copy.d.ts +0 -3
  119. package/dist/lib/query/queryRunner copy.d.ts.map +0 -1
  120. package/dist/lib/query/queryRunner copy.js +0 -87
  121. package/dist/lib/store/dependency/dependencyManager copy.d.ts +0 -6
  122. package/dist/lib/store/dependency/dependencyManager copy.d.ts.map +0 -1
  123. package/dist/lib/store/dependency/dependencyManager copy.js +0 -91
  124. package/dist/lib/store/dependency/dependencyManager.types.d.ts +0 -48
  125. package/dist/lib/store/dependency/dependencyManager.types.d.ts.map +0 -1
  126. package/dist/lib/store/dependency/dependencyTagManager.d.ts +0 -6
  127. package/dist/lib/store/dependency/dependencyTagManager.d.ts.map +0 -1
  128. package/dist/lib/store/dependency/dependencyTagManager.js +0 -33
  129. package/dist/lib/store/diff/diffManager.types.d.ts.map +0 -1
  130. package/dist/lib/store/diff/tracker.d.ts +0 -3
  131. package/dist/lib/store/diff/tracker.d.ts.map +0 -1
  132. package/dist/lib/store/diff/tracker.js +0 -82
  133. package/dist/lib/store/diff/tracker.types.d.ts +0 -31
  134. package/dist/lib/store/diff/tracker.types.d.ts.map +0 -1
  135. package/dist/lib/store/diff/tracker.types.js +0 -2
  136. package/dist/lib/store/dump/dumpManager.types.d.ts.map +0 -1
  137. package/dist/lib/store/dump/dumpManager.types.js +0 -2
  138. package/dist/lib/store/include/includeIndex.d.ts +0 -6
  139. package/dist/lib/store/include/includeIndex.d.ts.map +0 -1
  140. package/dist/lib/store/include/includeIndex.js +0 -65
  141. package/dist/lib/store/include/includeIndex.types.d.ts +0 -29
  142. package/dist/lib/store/include/includeIndex.types.d.ts.map +0 -1
  143. package/dist/lib/store/include/includeIndex.types.js +0 -2
  144. package/dist/lib/store/workDir/storage/getChangedLinesSince.d.ts +0 -9
  145. package/dist/lib/store/workDir/storage/getChangedLinesSince.d.ts.map +0 -1
  146. package/src/lib/store/workDir/storage/getChangedLinesSince.ts +0 -47
@@ -0,0 +1,10 @@
1
+ import { Request, Response } from 'express';
2
+ declare const dependencyIndex: (req: Request, res: Response) => void;
3
+ declare const dependencyTreeRoute: (req: Request, res: Response) => void;
4
+ declare const dependencyTreeReversed: (req: Request, res: Response) => void;
5
+ declare const dependencyExplicitlyInvalidatedTags: (req: Request, res: Response) => void;
6
+ declare const dependencyAllInvalidatedTags: (req: Request, res: Response) => void;
7
+ declare const dependencyInvalidatedFilepaths: (req: Request, res: Response) => void;
8
+ declare const dependencyTagParents: (req: Request, res: Response) => void;
9
+ export { dependencyIndex, dependencyTreeRoute, dependencyTreeReversed, dependencyExplicitlyInvalidatedTags, dependencyAllInvalidatedTags, dependencyInvalidatedFilepaths, dependencyTagParents, };
10
+ //# sourceMappingURL=dependency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency.d.ts","sourceRoot":"","sources":["../../../src/http/routes/dependency.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAc5C,QAAA,MAAM,eAAe,QAAS,OAAO,OAAO,QAAQ,KAAG,IAWtD,CAAC;AAEF,QAAA,MAAM,mBAAmB,QAAS,OAAO,OAAO,QAAQ,KAAG,IAO1D,CAAC;AAEF,QAAA,MAAM,sBAAsB,QAAS,OAAO,OAAO,QAAQ,KAAG,IAU7D,CAAC;AAEF,QAAA,MAAM,mCAAmC,QAClC,OAAO,OACP,QAAQ,KACZ,IAKF,CAAC;AAEF,QAAA,MAAM,4BAA4B,QAAS,OAAO,OAAO,QAAQ,KAAG,IAKnE,CAAC;AAEF,QAAA,MAAM,8BAA8B,QAAS,OAAO,OAAO,QAAQ,KAAG,IAKrE,CAAC;AAEF,QAAA,MAAM,oBAAoB,QAAS,OAAO,OAAO,QAAQ,KAAG,IAO3D,CAAC;AAEF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,mCAAmC,EACnC,4BAA4B,EAC5B,8BAA8B,EAC9B,oBAAoB,GACrB,CAAC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dependencyTagParents = exports.dependencyInvalidatedFilepaths = exports.dependencyAllInvalidatedTags = exports.dependencyExplicitlyInvalidatedTags = exports.dependencyTreeReversed = exports.dependencyTreeRoute = exports.dependencyIndex = void 0;
4
+ const dataDir_1 = require("@lib/store/dataDir");
5
+ const object_1 = require("@lib/utils/object");
6
+ const dependencyManager_1 = require("@lib/store/dependency/dependencyManager");
7
+ const dependencyTagger_1 = require("@lib/store/dependency/dependencyTagger");
8
+ const dependencyIndex = (req, res) => {
9
+ res.render('dependencyIndex', {
10
+ links: {
11
+ '/dependency/tree': 'Dependency tree',
12
+ '/dependency/tree/reversed': 'Reversed dependency tree',
13
+ '/dependency/invalidated/tags': 'Explicitly invalidated tags',
14
+ '/dependency/invalidated/tags/all': 'All invalidated tags in cascade',
15
+ '/dependency/invalidated/filepaths': 'Invalidated filepaths',
16
+ '/dependency/tag/parents': 'Tag parents',
17
+ },
18
+ });
19
+ };
20
+ exports.dependencyIndex = dependencyIndex;
21
+ const dependencyTreeRoute = (req, res) => {
22
+ dataDir_1.dataDirManager.update();
23
+ const args = req.query;
24
+ const response = args?.tag ? dependencyTagger_1.dependencyTree.get(args.tag) : dependencyTagger_1.dependencyTree;
25
+ res.status(200);
26
+ res.set({ 'Content-Type': 'application/json' });
27
+ res.send((0, object_1.jsonify)(response));
28
+ };
29
+ exports.dependencyTreeRoute = dependencyTreeRoute;
30
+ const dependencyTreeReversed = (req, res) => {
31
+ dataDir_1.dataDirManager.update();
32
+ const reversedDependencyTree = (0, dependencyTagger_1.getReversedDependencyTree)();
33
+ const args = req.query;
34
+ const response = args?.tag
35
+ ? reversedDependencyTree.get(args.tag)
36
+ : reversedDependencyTree;
37
+ res.status(200);
38
+ res.set({ 'Content-Type': 'application/json' });
39
+ res.send((0, object_1.jsonify)(response));
40
+ };
41
+ exports.dependencyTreeReversed = dependencyTreeReversed;
42
+ const dependencyExplicitlyInvalidatedTags = (req, res) => {
43
+ dataDir_1.dataDirManager.update();
44
+ res.status(200);
45
+ res.set({ 'Content-Type': 'application/json' });
46
+ res.send((0, object_1.jsonify)(dependencyTagger_1.invalidatedTags));
47
+ };
48
+ exports.dependencyExplicitlyInvalidatedTags = dependencyExplicitlyInvalidatedTags;
49
+ const dependencyAllInvalidatedTags = (req, res) => {
50
+ dataDir_1.dataDirManager.update();
51
+ res.status(200);
52
+ res.set({ 'Content-Type': 'application/json' });
53
+ res.send((0, dependencyManager_1.getAllInvalidatedTags)());
54
+ };
55
+ exports.dependencyAllInvalidatedTags = dependencyAllInvalidatedTags;
56
+ const dependencyInvalidatedFilepaths = (req, res) => {
57
+ dataDir_1.dataDirManager.update();
58
+ res.status(200);
59
+ res.set({ 'Content-Type': 'application/json' });
60
+ res.send(dependencyManager_1.dependencyManager.getInvalidatedFilepaths());
61
+ };
62
+ exports.dependencyInvalidatedFilepaths = dependencyInvalidatedFilepaths;
63
+ const dependencyTagParents = (req, res) => {
64
+ dataDir_1.dataDirManager.update();
65
+ const args = req.query;
66
+ const response = args?.tag ? (0, object_1.jsonify)((0, dependencyManager_1.getTagParents)(args.tag)) : null;
67
+ res.status(200);
68
+ res.set({ 'Content-Type': 'application/json' });
69
+ res.send(response);
70
+ };
71
+ exports.dependencyTagParents = dependencyTagParents;
@@ -1 +1 @@
1
- {"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../../../src/http/routes/dump.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK5C,QAAA,MAAM,SAAS,QAAS,OAAO,OAAO,QAAQ,KAAG,IAShD,CAAC;AAEF,QAAA,MAAM,eAAe,QAAS,OAAO,OAAO,QAAQ,KAAG,IAKtD,CAAC;AAEF,QAAA,MAAM,QAAQ,QAAS,OAAO,OAAO,QAAQ,KAAG,IAK/C,CAAC;AASF,QAAA,MAAM,gBAAgB,QAAS,OAAO,OAAO,QAAQ,KAAG,IAIvD,CAAC;AAEF,QAAA,MAAM,iBAAiB,QAAS,OAAO,OAAO,QAAQ,KAAG,IAQxD,CAAC;AAEF,OAAO,EACL,SAAS,EACT,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,GAClB,CAAC"}
1
+ {"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../../../src/http/routes/dump.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK5C,QAAA,MAAM,SAAS,QAAS,OAAO,OAAO,QAAQ,KAAG,IAShD,CAAC;AAmBF,QAAA,MAAM,eAAe,QAAS,OAAO,OAAO,QAAQ,KAAG,IAEtD,CAAC;AAEF,QAAA,MAAM,QAAQ,QAAS,OAAO,OAAO,QAAQ,KAAG,IAE/C,CAAC;AASF,QAAA,MAAM,gBAAgB,QAAS,OAAO,OAAO,QAAQ,KAAG,IAIvD,CAAC;AAEF,QAAA,MAAM,iBAAiB,QAAS,OAAO,OAAO,QAAQ,KAAG,IAQxD,CAAC;AAEF,OAAO,EACL,SAAS,EACT,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,GAClB,CAAC"}
@@ -9,7 +9,7 @@ const dump_1 = require("@lib/store/dump");
9
9
  const object_1 = require("@lib/utils/object");
10
10
  const config_1 = require("@lib/config");
11
11
  const dumpIndex = (req, res) => {
12
- res.render('statusIndex', {
12
+ res.render('dumpIndex', {
13
13
  links: {
14
14
  '/dump/incremental': 'Execute an incremental dump',
15
15
  '/dump/full': 'Execute a full dump',
@@ -19,18 +19,23 @@ const dumpIndex = (req, res) => {
19
19
  });
20
20
  };
21
21
  exports.dumpIndex = dumpIndex;
22
- const dumpIncremental = (req, res) => {
23
- const dump = dump_1.dumpManager.dump({ incremental: true });
22
+ const dumpAction = (req, res, incremental) => {
23
+ const dump = dump_1.dumpManager.dump({ incremental });
24
+ const dumpAsJson = (0, object_1.jsonify)(dump);
25
+ const args = req.query;
26
+ if (args?.noDiff !== undefined) {
27
+ delete dumpAsJson.diff;
28
+ }
24
29
  res.status(200);
25
30
  res.set({ 'Content-Type': 'application/json' });
26
- res.send((0, object_1.jsonify)(dump));
31
+ res.send(dumpAsJson);
32
+ };
33
+ const dumpIncremental = (req, res) => {
34
+ dumpAction(req, res, true);
27
35
  };
28
36
  exports.dumpIncremental = dumpIncremental;
29
37
  const dumpFull = (req, res) => {
30
- const dump = dump_1.dumpManager.dump({ incremental: false });
31
- res.status(200);
32
- res.set({ 'Content-Type': 'application/json' });
33
- res.send((0, object_1.jsonify)(dump));
38
+ dumpAction(req, res, false);
34
39
  };
35
40
  exports.dumpFull = dumpFull;
36
41
  const getMetadata = () => {
@@ -47,8 +52,8 @@ const dumpMetadataShow = (req, res) => {
47
52
  exports.dumpMetadataShow = dumpMetadataShow;
48
53
  const dumpMetadataReset = (req, res) => {
49
54
  const args = req.query;
50
- if (args?.timestamp) {
51
- dump_1.dumpManager.reset(parseInt(args.timestamp, 10));
55
+ if (args?.uniqueId) {
56
+ dump_1.dumpManager.reset(args.uniqueId);
52
57
  }
53
58
  res.status(200);
54
59
  res.set({ 'Content-Type': 'application/json' });
@@ -5,7 +5,8 @@ const home = (req, res) => {
5
5
  res.render('home', {
6
6
  links: {
7
7
  '/data': 'Browse all data loaded into the server',
8
- '/dump': 'Dump resolved data (includes and queries) into the dump directory',
8
+ '/dependency': 'Dependency data',
9
+ '/dump': 'Dump operations',
9
10
  '/query': 'List of available queries',
10
11
  '/task': 'List of available tasks',
11
12
  '/cache': 'List of available cache bins',
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/routes/index.ts"],"names":[],"mappings":"AAuBA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAuBxB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/routes/index.ts"],"names":[],"mappings":"AAgCA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA8BxB,eAAe,MAAM,CAAC"}
@@ -9,6 +9,7 @@ const data_1 = require("./data");
9
9
  const docs_1 = require("./docs");
10
10
  const task_1 = require("./task");
11
11
  const dump_1 = require("./dump");
12
+ const dependency_1 = require("./dependency");
12
13
  const routes = (0, express_1.Router)();
13
14
  routes.get('/', home_1.home);
14
15
  routes.get('/docs', docs_1.docs);
@@ -29,5 +30,12 @@ routes.get('/dump/incremental', dump_1.dumpIncremental);
29
30
  routes.get('/dump/full', dump_1.dumpFull);
30
31
  routes.get('/dump/metadata/show', dump_1.dumpMetadataShow);
31
32
  routes.get('/dump/metadata/reset', dump_1.dumpMetadataReset);
33
+ routes.get('/dependency/tree/reversed', dependency_1.dependencyTreeReversed);
34
+ routes.get('/dependency/tree', dependency_1.dependencyTreeRoute);
35
+ routes.get('/dependency/invalidated/tags', dependency_1.dependencyExplicitlyInvalidatedTags);
36
+ routes.get('/dependency/invalidated/tags/all', dependency_1.dependencyAllInvalidatedTags);
37
+ routes.get('/dependency/invalidated/filepaths', dependency_1.dependencyInvalidatedFilepaths);
38
+ routes.get('/dependency/tag/parents', dependency_1.dependencyTagParents);
39
+ routes.get('/dependency', dependency_1.dependencyIndex);
32
40
  routes.get(['/data/*', '/data'], data_1.data);
33
41
  exports.default = routes;
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/http/routes/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAe5C,QAAA,MAAM,WAAW,QAAS,OAAO,OAAO,QAAQ,KAAG,IAWlD,CAAC;AAEF,QAAA,MAAM,WAAW,QAAS,OAAO,OAAO,QAAQ,KAAG,IAkBlD,CAAC;AAEF,QAAA,MAAM,cAAc,QAAS,OAAO,OAAO,QAAQ,KAAG,IAKrD,CAAC;AAEF,QAAA,MAAM,eAAe,QAAS,OAAO,OAAO,QAAQ,KAAG,IAStD,CAAC;AAEF,QAAA,MAAM,iBAAiB,QAAS,OAAO,OAAO,QAAQ,KAAG,IAKxD,CAAC;AAEF,QAAA,MAAM,UAAU,QAAS,OAAO,OAAO,QAAQ,KAAG,IAKjD,CAAC;AAEF,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,UAAU,GACX,CAAC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/http/routes/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAU5C,QAAA,MAAM,WAAW,QAAS,OAAO,OAAO,QAAQ,KAAG,IAWlD,CAAC;AAEF,QAAA,MAAM,WAAW,QAAS,OAAO,OAAO,QAAQ,KAAG,IAelD,CAAC;AAEF,QAAA,MAAM,cAAc,QAAS,OAAO,OAAO,QAAQ,KAAG,IAKrD,CAAC;AAEF,QAAA,MAAM,eAAe,QAAS,OAAO,OAAO,QAAQ,KAAG,IAStD,CAAC;AAEF,QAAA,MAAM,iBAAiB,QAAS,OAAO,OAAO,QAAQ,KAAG,IAKxD,CAAC;AAEF,QAAA,MAAM,UAAU,QAAS,OAAO,OAAO,QAAQ,KAAG,IAKjD,CAAC;AAEF,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,UAAU,GACX,CAAC"}
@@ -8,8 +8,6 @@ const cache_1 = require("@lib/utils/cache");
8
8
  const store_1 = require("@lib/store");
9
9
  const object_1 = require("@lib/utils/object");
10
10
  const diffManager_1 = require("@lib/store/diff/diffManager");
11
- const dependencyManager_1 = require("@lib/store/dependency/dependencyManager");
12
- const dependencyTagger_1 = require("@lib/store/dependency/dependencyTagger");
13
11
  const statusIndex = (req, res) => {
14
12
  res.render('statusIndex', {
15
13
  links: {
@@ -27,14 +25,11 @@ const statusBasic = (req, res) => {
27
25
  dataDir_1.dataDirManager.update();
28
26
  const response = {
29
27
  config: config_1.config,
30
- dataDirLastUpdate: dataDir_1.dataDirManager.getModificationDate(),
28
+ dataDirLastUpdate: dataDir_1.dataDirManager.getModificationUniqueId(),
31
29
  query: {
32
30
  numberOfExecutions: query_1.queryRunner.getCount(),
33
31
  numberOfCachedQueries: cache_1.cache.bin('query').size,
34
32
  },
35
- dependencyTree: (0, object_1.jsonify)(dependencyTagger_1.dependencyTree),
36
- reversedDependencyTree: (0, object_1.jsonify)((0, dependencyTagger_1.getReversedDependencyTree)()),
37
- invalidatedFilepaths: dependencyManager_1.dependencyManager.getInvalidatedFilepaths(),
38
33
  };
39
34
  res.status(200);
40
35
  res.set({ 'Content-Type': 'application/json' });
@@ -0,0 +1,14 @@
1
+ extends includes/layout.pug
2
+
3
+ block vars
4
+ - var title = "Dependency | Static Suite Data Server"
5
+
6
+ block content
7
+ h1(class="title is-1")="Dependency"
8
+ table(class="table is-fullwidth is-hoverable")
9
+ tbody
10
+ each description, link in links
11
+ tr
12
+ td
13
+ a(href=link)= link
14
+ td=description
@@ -1,5 +1,6 @@
1
1
  import { LogLevel, LogFile } from '@lib/utils/logger/logger.types';
2
2
  import { Store } from '@lib/store/store.types';
3
+ import { TaskRunner } from '@lib/task/task.types';
3
4
  import { QueryRunner, QuerySuccessfulResponse, QueryErrorResponse, QueryArgs, QueryModule, CacheStatus } from '@lib/query/query.types';
4
5
  import { RunMode, DataServerReturn, DataServerInitOptions } from './dataServer.types';
5
6
  /**
@@ -17,5 +18,5 @@ declare const dataServer: {
17
18
  */
18
19
  init: (options: DataServerInitOptions) => DataServerReturn;
19
20
  };
20
- export { dataServer, DataServerInitOptions, DataServerReturn, RunMode, LogLevel, LogFile, Store, QueryRunner, QuerySuccessfulResponse, QueryErrorResponse, QueryArgs, QueryModule, CacheStatus, };
21
+ export { dataServer, DataServerInitOptions, DataServerReturn, RunMode, LogLevel, LogFile, Store, QueryRunner, QuerySuccessfulResponse, QueryErrorResponse, QueryArgs, QueryModule, TaskRunner, CacheStatus, };
21
22
  //# sourceMappingURL=dataServer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataServer.d.ts","sourceRoot":"","sources":["../../src/lib/dataServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAKnE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG/C,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,QAAA,MAAM,UAAU;IACd;;;;;;OAMG;oBACa,qBAAqB,KAAG,gBAAgB;CA6BzD,CAAC;AACF,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,KAAK,EACL,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"dataServer.d.ts","sourceRoot":"","sources":["../../src/lib/dataServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAKnE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,QAAA,MAAM,UAAU;IACd;;;;;;OAMG;oBACa,qBAAqB,KAAG,gBAAgB;CA6BzD,CAAC;AACF,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,KAAK,EACL,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,GACZ,CAAC"}
@@ -91,8 +91,8 @@ export declare type QueryModuleResult = {
91
91
  * @public
92
92
  */
93
93
  export declare enum CacheStatus {
94
- MISS = 0,
95
- HIT = 1
94
+ MISS = "miss",
95
+ HIT = "hit"
96
96
  }
97
97
  /**
98
98
  * A successful response returned after executing a query.
@@ -1 +1 @@
1
- {"version":3,"file":"query.types.d.ts","sourceRoot":"","sources":["../../../src/lib/query/query.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE/C;;;;GAIG;AACH,oBAAY,WAAW,GAAG;IACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,GAAG,CAAC,eAAe,EAAE,MAAM,GAAG,uBAAuB,GAAG,kBAAkB,CAAC;IAE3E;;;;;;;OAOG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,oBAAY,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE5C;;GAEG;AACH,oBAAY,iBAAiB,GAAG;IAC9B;;OAEG;IACH,MAAM,EAAE,GAAG,CAAC;IAEZ;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,oBAAY,WAAW;IACrB,IAAI,IAAA;IACJ,GAAG,IAAA;CACJ;AAED;;;;;;;;GAQG;AACH,oBAAY,uBAAuB,GAAG;IACpC;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC;IAEV;;OAEG;IACH,QAAQ,EAAE;QACR;;;;;;;WAOG;QACH,WAAW,EAAE,MAAM,CAAC;QAEpB;;WAEG;QACH,UAAU,EAAE,MAAM,CAAC;QAEnB;;WAEG;QACH,KAAK,EAAE,WAAW,CAAC;QAEnB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,oBAAY,WAAW,GAAG;IACxB;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE;QACf;;WAEG;QACH,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,SAAS,CAAC;KACjB,GAAG,iBAAiB,CAAC;CACvB,CAAC;AAEF;;;;;;;;GAQG;AACH,oBAAY,kBAAkB,GAAG;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,kBAChB,uBAAuB,GAAG,kBAAkB,wCAEF,CAAC;AAE5D,oBAAY,eAAe,GAAG;IAC5B;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAErC;;OAEG;IACH,oBAAoB,IAAI,IAAI,CAAC;IAE7B;;;;;OAKG;IACH,cAAc,CACZ,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,CAAC;IAER;;;;OAIG;IACH,mBAAmB,IAAI,MAAM,EAAE,CAAC;CACjC,CAAC"}
1
+ {"version":3,"file":"query.types.d.ts","sourceRoot":"","sources":["../../../src/lib/query/query.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE/C;;;;GAIG;AACH,oBAAY,WAAW,GAAG;IACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,GAAG,CAAC,eAAe,EAAE,MAAM,GAAG,uBAAuB,GAAG,kBAAkB,CAAC;IAE3E;;;;;;;OAOG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,oBAAY,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE5C;;GAEG;AACH,oBAAY,iBAAiB,GAAG;IAC9B;;OAEG;IACH,MAAM,EAAE,GAAG,CAAC;IAEZ;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,oBAAY,WAAW;IACrB,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAED;;;;;;;;GAQG;AACH,oBAAY,uBAAuB,GAAG;IACpC;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC;IAEV;;OAEG;IACH,QAAQ,EAAE;QACR;;;;;;;WAOG;QACH,WAAW,EAAE,MAAM,CAAC;QAEpB;;WAEG;QACH,UAAU,EAAE,MAAM,CAAC;QAEnB;;WAEG;QACH,KAAK,EAAE,WAAW,CAAC;QAEnB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,oBAAY,WAAW,GAAG;IACxB;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE;QACf;;WAEG;QACH,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,SAAS,CAAC;KACjB,GAAG,iBAAiB,CAAC;CACvB,CAAC;AAEF;;;;;;;;GAQG;AACH,oBAAY,kBAAkB,GAAG;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,kBAChB,uBAAuB,GAAG,kBAAkB,wCAEF,CAAC;AAE5D,oBAAY,eAAe,GAAG;IAC5B;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAErC;;OAEG;IACH,oBAAoB,IAAI,IAAI,CAAC;IAE7B;;;;;OAKG;IACH,cAAc,CACZ,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,CAAC;IAER;;;;OAIG;IACH,mBAAmB,IAAI,MAAM,EAAE,CAAC;CACjC,CAAC"}
@@ -8,8 +8,8 @@ exports.isQueryErrorResponse = exports.CacheStatus = void 0;
8
8
  */
9
9
  var CacheStatus;
10
10
  (function (CacheStatus) {
11
- CacheStatus[CacheStatus["MISS"] = 0] = "MISS";
12
- CacheStatus[CacheStatus["HIT"] = 1] = "HIT";
11
+ CacheStatus["MISS"] = "miss";
12
+ CacheStatus["HIT"] = "hit";
13
13
  })(CacheStatus = exports.CacheStatus || (exports.CacheStatus = {}));
14
14
  /**
15
15
  * Tells whether a query response is erroneous or not.
@@ -1 +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"}
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,WA8EzB,CAAC"}
@@ -65,11 +65,13 @@ exports.queryRunner = {
65
65
  if (queryResponse?.cacheable !== false) {
66
66
  queryCache.set(cacheId, queryResult);
67
67
  }
68
- // Set tags for this query.
68
+ // Set tags for this query, replacing any other, because query
69
+ // dependencies are set only by their "tags" field.
69
70
  const queryTags = queryResponse.tags && queryResponse.tags?.length > 0
70
71
  ? queryResponse.tags
71
72
  : ['*'];
72
73
  dependencyTagger_1.dependencyTagger.setDependency(queryDefinition, queryTags);
74
+ queryResult.tags = queryTags;
73
75
  }
74
76
  catch (e) {
75
77
  // Log error and rethrow.
@@ -20,17 +20,17 @@ export declare type DataDirManager = {
20
20
  */
21
21
  update(): ChangedFiles;
22
22
  /**
23
- * Get date of last modification of data directory.
23
+ * Get unique id of last modification of data directory.
24
24
  *
25
25
  * @remarks
26
26
  * Metadata about when and how is the data directory updated is
27
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,
28
+ * not initialized with proper data, it returns the unique id of the store.
29
+ * If the store is not yet loaded, it returns a unique id in the past,
30
30
  * the Unix Epoch (00:00:00 UTC on 1 January 1970).
31
31
  *
32
- * @returns The date of last modification of data directory
32
+ * @returns The unique id of last modification of data directory
33
33
  */
34
- getModificationDate(): Date;
34
+ getModificationUniqueId(): string;
35
35
  };
36
36
  //# sourceMappingURL=dataDir.types.d.ts.map
@@ -1 +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"}
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,uBAAuB,IAAI,MAAM,CAAC;CACnC,CAAC"}
@@ -1 +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"}
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;AAMjD,eAAO,MAAM,cAAc,EAAE,cAuH5B,CAAC"}
@@ -16,6 +16,7 @@ const hook_1 = require("@lib/store/hook");
16
16
  const query_1 = require("@lib/query");
17
17
  const task_1 = require("@lib/task");
18
18
  const dependencyManager_1 = require("../dependency/dependencyManager");
19
+ let initialUniqueIdAlreadySet = false;
19
20
  exports.dataDirManager = {
20
21
  load: () => {
21
22
  logger_1.logger.info('Loading data dir...');
@@ -28,9 +29,16 @@ exports.dataDirManager = {
28
29
  hook_1.hookManager.reset();
29
30
  query_1.queryManager.reset();
30
31
  task_1.taskManager.reset();
32
+ dependencyManager_1.dependencyManager.reset();
31
33
  // Invoke "store load start" hook.
32
34
  hook_1.hookManager.invokeOnStoreLoadStart();
33
- store_1.store.syncDate = exports.dataDirManager.getModificationDate();
35
+ const modificationUniqueId = exports.dataDirManager.getModificationUniqueId();
36
+ if (!initialUniqueIdAlreadySet) {
37
+ store_1.store.initialUniqueId = modificationUniqueId;
38
+ initialUniqueIdAlreadySet = true;
39
+ }
40
+ store_1.store.currentUniqueId = modificationUniqueId;
41
+ logger_1.logger.info(`Found unique id: ${store_1.store.currentUniqueId}`);
34
42
  // Add all files, one by one.
35
43
  const relativeFilePaths = (0, fs_1.findFilesInDir)(config_1.config.dataDir);
36
44
  const storeHydrationStartDate = Date.now();
@@ -46,23 +54,24 @@ exports.dataDirManager = {
46
54
  logger_1.logger.info(`${relativeFilePaths.length} files loaded in ${Date.now() - startDate}ms.`);
47
55
  },
48
56
  update: () => {
49
- const dataDirModificationDate = exports.dataDirManager.getModificationDate();
57
+ const dataDirModificationUniqueId = exports.dataDirManager.getModificationUniqueId();
50
58
  let changedFiles = {
51
59
  updated: [],
52
60
  deleted: [],
61
+ fromUniqueId: store_1.store.currentUniqueId,
62
+ toUniqueId: dataDirModificationUniqueId,
53
63
  };
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;
64
+ if (store_1.store.currentUniqueId) {
65
+ if (dataDirModificationUniqueId > store_1.store.currentUniqueId) {
66
+ // Save store.syncDate to a variable and set it ASAP.
67
+ const storeLastUniqueId = store_1.store.currentUniqueId;
68
+ store_1.store.currentUniqueId = dataDirModificationUniqueId;
60
69
  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()}`);
70
+ logger_1.logger.debug(`Data dir outdated. Current unique id in memory is ${storeLastUniqueId} but data dir is ${dataDirModificationUniqueId}`);
62
71
  // Before updating anything, track down which filepaths are invalidated with
63
72
  // the current set of dependencies, before those dependencies change.
64
73
  dependencyManager_1.dependencyManager.trackInvalidatedFilepaths();
65
- changedFiles = workDir_1.workDirHelper.getChangedFilesSince(storeLastSyncDate);
74
+ changedFiles = workDir_1.workDirHelper.getChangedFilesBetween(storeLastUniqueId, dataDirModificationUniqueId);
66
75
  hook_1.hookManager.invokeOnStoreChangeStart(changedFiles);
67
76
  changedFiles.updated.forEach(file => {
68
77
  storeManager_1.storeManager.update(file);
@@ -85,7 +94,7 @@ exports.dataDirManager = {
85
94
  logger_1.logger.debug(`Data dir updated in ${execTimeMs}ms.`);
86
95
  }
87
96
  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()}`);
97
+ logger_1.logger.debug(`Data dir up to date. Current unique id in memory is ${store_1.store.currentUniqueId} and data dir is ${dataDirModificationUniqueId}`);
89
98
  }
90
99
  }
91
100
  else {
@@ -93,5 +102,7 @@ exports.dataDirManager = {
93
102
  }
94
103
  return changedFiles;
95
104
  },
96
- getModificationDate: () => workDir_1.workDirHelper.getModificationDate() || store_1.store.syncDate || new Date(0),
105
+ getModificationUniqueId: () => workDir_1.workDirHelper.getModificationUniqueId() ||
106
+ store_1.store.currentUniqueId ||
107
+ workDir_1.unixEpochUniqueId,
97
108
  };
@@ -1 +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"}
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;CACtC,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"}
@@ -1,6 +1,6 @@
1
1
  import { Json } from '@lib/utils/object/object.types';
2
2
  export declare const dependencyIncludeHelper: {
3
- setIncludeDependencies: (filepath: string, json: Json) => void;
3
+ addIncludeDependencies: (filepath: string, json: Json) => void;
4
4
  deleteIncludeDependencies: (filepath: string, json: Json) => void;
5
5
  };
6
6
  //# sourceMappingURL=dependencyFileHelper.d.ts.map
@@ -1 +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"}
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;0CA6BtB,MAAM,QAAQ,IAAI,KAAG,IAAI;CAkBhE,CAAC"}
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.dependencyIncludeHelper = void 0;
4
4
  const dependencyTagger_1 = require("./dependencyTagger");
5
5
  exports.dependencyIncludeHelper = {
6
- setIncludeDependencies: (filepath, json) => {
6
+ addIncludeDependencies: (filepath, json) => {
7
7
  const includes = json?.metadata?.includes;
8
8
  if (includes?.static) {
9
9
  const staticIncludes = Object.values(includes?.static);
10
- dependencyTagger_1.dependencyTagger.setDependency(filepath, staticIncludes);
10
+ dependencyTagger_1.dependencyTagger.addDependency(filepath, staticIncludes);
11
11
  }
12
12
  if (includes?.dynamic) {
13
13
  const dynamicIncludes = Object.values(includes?.dynamic);
14
- dependencyTagger_1.dependencyTagger.setDependency(filepath, dynamicIncludes);
14
+ dependencyTagger_1.dependencyTagger.addDependency(filepath, dynamicIncludes);
15
15
  // Queries are invalidated by any data change until they are executed,
16
16
  // when they return their dependencies. They are "globally invalidable" when:
17
17
  // 1) Are added for the first time
@@ -23,6 +23,8 @@ exports.dependencyIncludeHelper = {
23
23
  // 2) When that query is executed, it has a dependency on "node:1234"
24
24
  // 3) When that file with a query is updated, the query has again a dependency on "*"
25
25
  dynamicIncludes.forEach(queryDefinition => {
26
+ // This is explicity a "set" operation, because query dependencies are
27
+ // only set from a query's "tags" field.
26
28
  dependencyTagger_1.dependencyTagger.setDependency(queryDefinition, ['*']);
27
29
  });
28
30
  }
@@ -1,4 +1,16 @@
1
1
  import { DependencyManager } from './dependency.types';
2
+ /**
3
+ * Gets a list of parents of a dependency tag
4
+ */
5
+ export declare const getTagParents: (tag: string, parents?: Set<string>) => Set<string>;
6
+ /**
7
+ * Gets a recursive list of invalidated tags.
8
+ *
9
+ * @remarks
10
+ * Iterates over all explicitly invalidated tags, and obtains all
11
+ * its parents.
12
+ */
13
+ export declare const getAllInvalidatedTags: () => string[];
2
14
  /**
3
15
  * Manager that keeps control of dependencies between data.
4
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dependencyManager.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dependency/dependencyManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAkDvD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBA2B/B,CAAC"}
1
+ {"version":3,"file":"dependencyManager.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dependency/dependencyManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAQvD;;GAEG;AACH,eAAO,MAAM,aAAa,QACnB,MAAM,4BAEV,IAAI,MAAM,CAUZ,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAAO,MAAM,EAkB9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBA2B/B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dependencyManager = void 0;
3
+ exports.dependencyManager = exports.getAllInvalidatedTags = exports.getTagParents = void 0;
4
4
  const store_1 = require("../store");
5
5
  const dependencyTagger_1 = require("./dependencyTagger");
6
6
  const invalidatedFilepaths = {
@@ -16,11 +16,12 @@ const getTagParents = (tag, parents = new Set()) => {
16
16
  ?.forEach(parent => {
17
17
  if (!parents.has(parent)) {
18
18
  parents.add(parent);
19
- getTagParents(parent, parents);
19
+ (0, exports.getTagParents)(parent, parents);
20
20
  }
21
21
  });
22
22
  return parents;
23
23
  };
24
+ exports.getTagParents = getTagParents;
24
25
  /**
25
26
  * Gets a recursive list of invalidated tags.
26
27
  *
@@ -28,7 +29,7 @@ const getTagParents = (tag, parents = new Set()) => {
28
29
  * Iterates over all explicitly invalidated tags, and obtains all
29
30
  * its parents.
30
31
  */
31
- const getInvalidatedTags = () => {
32
+ const getAllInvalidatedTags = () => {
32
33
  const allInvalidatedTags = new Set();
33
34
  const invalidatedTagsArray = Array.from(dependencyTagger_1.invalidatedTags);
34
35
  if (invalidatedTagsArray.length > 0) {
@@ -40,18 +41,19 @@ const getInvalidatedTags = () => {
40
41
  allInvalidatedTags.add(invalidatedTag);
41
42
  }
42
43
  // Search for parents of this invalidated tag.
43
- getTagParents(invalidatedTag).forEach(parentTag => {
44
+ (0, exports.getTagParents)(invalidatedTag).forEach(parentTag => {
44
45
  allInvalidatedTags.add(parentTag);
45
46
  });
46
47
  });
47
48
  return Array.from(allInvalidatedTags);
48
49
  };
50
+ exports.getAllInvalidatedTags = getAllInvalidatedTags;
49
51
  /**
50
52
  * Manager that keeps control of dependencies between data.
51
53
  */
52
54
  exports.dependencyManager = {
53
55
  trackInvalidatedFilepaths: () => {
54
- const allInvalidatedTags = getInvalidatedTags();
56
+ const allInvalidatedTags = (0, exports.getAllInvalidatedTags)();
55
57
  allInvalidatedTags.forEach(invalidatedTag => {
56
58
  if (store_1.store.deleted.has(invalidatedTag)) {
57
59
  invalidatedFilepaths.deleted.add(invalidatedTag);
@@ -1 +1 @@
1
- {"version":3,"file":"dependencyTagger.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dependency/dependencyTagger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEtE,eAAO,MAAM,cAAc,EAAE,cAA+C,CAAC;AAE7E,eAAO,MAAM,eAAe,aAAoB,CAAC;AAMjD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,sBAiBrC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,gBAgC9B,CAAC"}
1
+ {"version":3,"file":"dependencyTagger.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/dependency/dependencyTagger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEtE,eAAO,MAAM,cAAc,EAAE,cAA+C,CAAC;AAE7E,eAAO,MAAM,eAAe,aAAoB,CAAC;AAMjD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,sBAiBrC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,gBAkC9B,CAAC"}
@@ -56,44 +56,9 @@ exports.dependencyTagger = {
56
56
  },
57
57
  invalidateTags: tags => {
58
58
  tags.forEach(tag => {
59
- exports.invalidatedTags.add(tag);
59
+ if (tag) {
60
+ exports.invalidatedTags.add(tag);
61
+ }
60
62
  });
61
63
  },
62
64
  };
63
- /*
64
- import { DependencyTagger } from './dependency.types';
65
-
66
- export const dependencyTree = new Map<string, Set<string>>();
67
-
68
- export const invalidatedTags = new Set<string>();
69
-
70
- export const dependencyTagger: DependencyTagger = {
71
- setDependency: (tag, dependsOnTags) => {
72
- dependsOnTags.forEach(dependsOnTag => {
73
- const previousData = dependencyTree.get(dependsOnTag);
74
- if (previousData) {
75
- previousData.add(tag);
76
- } else {
77
- dependencyTree.set(dependsOnTag, new Set<string>([tag]));
78
- }
79
- });
80
- },
81
-
82
- deleteDependency: (tag, dependsOnTags) => {
83
- dependsOnTags.forEach(dependsOnTag => {
84
- const previousData = dependencyTree.get(dependsOnTag);
85
- if (previousData) {
86
- previousData.delete(tag);
87
- if (previousData.size === 0) {
88
- dependencyTree.delete(dependsOnTag);
89
- }
90
- }
91
- });
92
- },
93
-
94
- invalidateTags: tags => {
95
- tags.forEach(tag => {
96
- invalidatedTags.add(tag);
97
- });
98
- },
99
- }; */