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

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 +564 -104
  2. package/dist/http/README.md +564 -104
  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
@@ -1,8 +1,10 @@
1
1
  import { ConfigOptions } from '@lib/config/config.types';
2
2
  import { Store } from '@lib/store/store.types';
3
3
  import { FileType } from '@lib/utils/fs/fs.types';
4
+ import { Logger } from '@lib/utils/logger/logger.types';
5
+ import { Json } from '@lib/utils/object/object.types';
4
6
  import { DependencyTagger } from '../dependency/dependency.types';
5
- import { Dump } from '../dump/dumpManager.types';
7
+ import { Dump } from '../dump/dump.types';
6
8
  import { ChangedFiles } from '../workDir/workDir.types';
7
9
  /**
8
10
  * A manager for a group of user-land modules.
@@ -12,13 +14,13 @@ import { ChangedFiles } from '../workDir/workDir.types';
12
14
  export declare type HookManager = {
13
15
  reset(): void;
14
16
  invokeOnStoreLoadStart(): void;
15
- invokeOnProcessFile(options: FileHookOptions): FileType;
16
- invokeOnStoreItemAdd(options: FileHookOptions): void;
17
+ invokeOnProcessFile(options: FileTypeHookOptions): FileType;
18
+ invokeOnStoreItemAdd(options: StoreItemHookOptions): void;
17
19
  invokeOnStoreLoadDone(): void;
18
20
  invokeOnStoreChangeStart(changedFiles: ChangedFiles): void;
19
- invokeOnStoreItemBeforeUpdate(options: FileHookOptions): void;
20
- invokeOnStoreItemAfterUpdate(options: FileHookOptions): void;
21
- invokeOnStoreItemDelete(options: FileHookOptions): void;
21
+ invokeOnStoreItemBeforeUpdate(options: StoreItemHookOptions): void;
22
+ invokeOnStoreItemAfterUpdate(options: StoreItemHookOptions): void;
23
+ invokeOnStoreItemDelete(options: StoreItemHookOptions): void;
22
24
  invokeOnStoreChangeDone(changedFiles: ChangedFiles): void;
23
25
  invokeOnDumpCreate(dump: Dump): Dump;
24
26
  };
@@ -34,6 +36,10 @@ export interface OnModuleLoadHookOptions {
34
36
  * The data store.
35
37
  */
36
38
  store: Store;
39
+ /**
40
+ * The logger service.
41
+ */
42
+ logger: Logger;
37
43
  }
38
44
  /**
39
45
  * Options passed to a hook.
@@ -48,28 +54,48 @@ export interface BaseHookOptions {
48
54
  * The data store.
49
55
  */
50
56
  store: Store;
57
+ /**
58
+ * The logger service.
59
+ */
60
+ logger: Logger;
51
61
  /**
52
62
  * The dependency tagger service.
53
63
  */
54
64
  dependencyTagger: DependencyTagger;
55
65
  }
56
66
  /**
57
- * Options passed to a file hook.
67
+ * Options passed to a store item hook.
58
68
  */
59
- export interface FileHookOptions {
69
+ export interface StoreItemHookOptions {
60
70
  /**
61
71
  * Relative file path inside the data dir.
62
72
  */
63
73
  relativeFilepath: string;
64
74
  /**
65
- * File contents, an object with "raw" and "json" members.
75
+ * Contents of the store item.
66
76
  */
67
- fileContent: FileType;
77
+ storeItem: Json | string | null;
78
+ /**
79
+ * Contents of the previous store item before store was updated.
80
+ */
81
+ previousStoreItem?: Json | string | null;
82
+ }
83
+ export interface FullStoreItemHookOptions extends StoreItemHookOptions, BaseHookOptions {
68
84
  }
69
85
  /**
70
- * Full options passed to a hook.
86
+ * Options passed to a file type hook.
71
87
  */
72
- export interface FullHookOptions extends BaseHookOptions, FileHookOptions {
88
+ export interface FileTypeHookOptions {
89
+ /**
90
+ * Relative file path inside the data dir.
91
+ */
92
+ relativeFilepath: string;
93
+ /**
94
+ * File contents, an object with "raw" and "json" members.
95
+ */
96
+ fileContent: FileType;
97
+ }
98
+ export interface FullFileTypeHookOptions extends FileTypeHookOptions, BaseHookOptions {
73
99
  }
74
100
  export interface ChangedFilesHookOptions extends BaseHookOptions {
75
101
  /**
@@ -119,11 +145,11 @@ export declare type HookModule = {
119
145
  * @remarks
120
146
  * This hook is aimed at altering the contents of the file before it being added to the store.
121
147
  *
122
- * @param options - An object with options passed to the hook. @see {@link FileHookOptions}
148
+ * @param options - An object with options passed to the hook. @see {@link FullFileTypeHookOptions}
123
149
  *
124
- * @returns The file contents, and object with "raw" and "json" members.
150
+ * @returns The file contents, an object with "raw" and "json" members.
125
151
  */
126
- onProcessFile?(options: FullHookOptions): FileType;
152
+ onProcessFile?(options: FullFileTypeHookOptions): FileType;
127
153
  /**
128
154
  * A hook executed after a file is added into the store.
129
155
  *
@@ -131,9 +157,9 @@ export declare type HookModule = {
131
157
  * This hook is aimed at adding some information to the store, e.g.- indexing all contents
132
158
  * by their taxonomy.
133
159
  *
134
- * @param options - An object with options passed to the hook. @see {@link FileHookOptions}
160
+ * @param options - An object with options passed to the hook. @see {@link StoreItemHookOptions}
135
161
  */
136
- onStoreItemAdd?(options: FullHookOptions): void;
162
+ onStoreItemAdd?(options: FullStoreItemHookOptions): void;
137
163
  /**
138
164
  * A hook executed after the store finishes loading.
139
165
  *
@@ -160,9 +186,9 @@ export declare type HookModule = {
160
186
  * This hook is aimed at adding some information to the store, e.g.- indexing all contents
161
187
  * by their taxonomy.
162
188
  *
163
- * @param options - An object with options passed to the hook. @see {@link FileHookOptions}
189
+ * @param options - An object with options passed to the hook. @see {@link StoreItemHookOptions}
164
190
  */
165
- onStoreItemBeforeUpdate?(options: FullHookOptions): void;
191
+ onStoreItemBeforeUpdate?(options: FullStoreItemHookOptions): void;
166
192
  /**
167
193
  * A hook executed after a file is updated in the store.
168
194
  *
@@ -170,9 +196,9 @@ export declare type HookModule = {
170
196
  * This hook is aimed at adding some information to the store, e.g.- indexing all contents
171
197
  * by their taxonomy.
172
198
  *
173
- * @param options - An object with options passed to the hook. @see {@link FileHookOptions}
199
+ * @param options - An object with options passed to the hook. @see {@link StoreItemHookOptions}
174
200
  */
175
- onStoreItemAfterUpdate?(options: FullHookOptions): void;
201
+ onStoreItemAfterUpdate?(options: FullStoreItemHookOptions): void;
176
202
  /**
177
203
  * A hook executed after a file is deleted from the store.
178
204
  *
@@ -180,9 +206,9 @@ export declare type HookModule = {
180
206
  * This hook is aimed at reverting the actions taken in storeAdd hook, e.g.- removing a file
181
207
  * from a taxonomy index.
182
208
  *
183
- * @param options - An object with options passed to the hook. @see {@link FileHookOptions}
209
+ * @param options - An object with options passed to the hook. @see {@link StoreItemHookOptions}
184
210
  */
185
- onStoreItemDelete?(options: FullHookOptions): void;
211
+ onStoreItemDelete?(options: FullStoreItemHookOptions): void;
186
212
  /**
187
213
  * A hook executed after the store ends updating.
188
214
  *
@@ -1 +1 @@
1
- {"version":3,"file":"hook.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/hook/hook.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/hook/hook.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD;;;;GAIG;AACH,oBAAY,WAAW,GAAG;IACxB,KAAK,IAAI,IAAI,CAAC;IAGd,sBAAsB,IAAI,IAAI,CAAC;IAC/B,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,QAAQ,CAAC;IAC5D,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1D,qBAAqB,IAAI,IAAI,CAAC;IAG9B,wBAAwB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3D,6BAA6B,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnE,4BAA4B,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClE,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7D,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAG1D,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,iBAAiB,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,wBACf,SAAQ,oBAAoB,EAC1B,eAAe;CAAG;AAEtB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,EAAE,QAAQ,CAAC;CACvB;AAED,MAAM,WAAW,uBACf,SAAQ,mBAAmB,EACzB,eAAe;CAAG;AAEtB,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;CACZ;AAED;;GAEG;AACH,oBAAY,UAAU,GAAG;IACvB;;;;;;OAMG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAEtD;;;;;;;;OAQG;IACH,gBAAgB,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAElD;;;;;;;;;OASG;IACH,aAAa,CAAC,CAAC,OAAO,EAAE,uBAAuB,GAAG,QAAQ,CAAC;IAE3D;;;;;;;;OAQG;IACH,cAAc,CAAC,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAEzD;;;;;;;OAOG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAEjD;;;;;;;;OAQG;IACH,kBAAkB,CAAC,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAE5D;;;;;;;;OAQG;IACH,uBAAuB,CAAC,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAElE;;;;;;;;OAQG;IACH,sBAAsB,CAAC,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAEjE;;;;;;;;OAQG;IACH,iBAAiB,CAAC,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAE5D;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAE3D;;;;;;;OAOG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hookManager.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/hook/hookManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAc,MAAM,cAAc,CAAC;AAYvD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WA+JzB,CAAC"}
1
+ {"version":3,"file":"hookManager.d.ts","sourceRoot":"","sources":["../../../../src/lib/store/hook/hookManager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAc,MAAM,cAAc,CAAC;AAYvD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WA6KzB,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hookManager = void 0;
4
4
  const config_1 = require("@lib/config");
5
5
  const store_1 = require("@lib/store");
6
+ const logger_1 = require("@lib/utils/logger");
6
7
  const dependencyTagger_1 = require("@lib/store/dependency/dependencyTagger");
7
8
  const module_1 = require("@lib/utils/module");
8
9
  /**
@@ -27,6 +28,7 @@ exports.hookManager = {
27
28
  if (hookModule.onStoreLoadStart) {
28
29
  hookModule.onStoreLoadStart({
29
30
  store: store_1.store,
31
+ logger: logger_1.logger,
30
32
  dependencyTagger: dependencyTagger_1.dependencyTagger,
31
33
  });
32
34
  }
@@ -43,6 +45,7 @@ exports.hookManager = {
43
45
  relativeFilepath,
44
46
  fileContent: processedFileContent,
45
47
  store: store_1.store,
48
+ logger: logger_1.logger,
46
49
  dependencyTagger: dependencyTagger_1.dependencyTagger,
47
50
  });
48
51
  if (returnValue) {
@@ -52,16 +55,17 @@ exports.hookManager = {
52
55
  });
53
56
  return processedFileContent;
54
57
  },
55
- invokeOnStoreItemAdd({ relativeFilepath, fileContent }) {
58
+ invokeOnStoreItemAdd({ relativeFilepath, storeItem }) {
56
59
  const hookModulesInfo = moduleManager.getModuleGroupInfo();
57
60
  hookModulesInfo.forEach(hookInfo => {
58
61
  const hookModule = hookInfo.getModule();
59
62
  if (hookModule.onStoreItemAdd) {
60
63
  hookModule.onStoreItemAdd({
61
64
  relativeFilepath,
62
- fileContent,
63
65
  store: store_1.store,
66
+ logger: logger_1.logger,
64
67
  dependencyTagger: dependencyTagger_1.dependencyTagger,
68
+ storeItem,
65
69
  });
66
70
  }
67
71
  });
@@ -73,6 +77,7 @@ exports.hookManager = {
73
77
  if (hookModule.onStoreLoadDone) {
74
78
  hookModule.onStoreLoadDone({
75
79
  store: store_1.store,
80
+ logger: logger_1.logger,
76
81
  dependencyTagger: dependencyTagger_1.dependencyTagger,
77
82
  });
78
83
  }
@@ -85,50 +90,55 @@ exports.hookManager = {
85
90
  if (hookModule.onStoreChangeStart) {
86
91
  hookModule.onStoreChangeStart({
87
92
  store: store_1.store,
93
+ logger: logger_1.logger,
88
94
  dependencyTagger: dependencyTagger_1.dependencyTagger,
89
95
  changedFiles,
90
96
  });
91
97
  }
92
98
  });
93
99
  },
94
- invokeOnStoreItemBeforeUpdate({ relativeFilepath, fileContent }) {
100
+ invokeOnStoreItemBeforeUpdate({ relativeFilepath, storeItem }) {
95
101
  const hookModulesInfo = moduleManager.getModuleGroupInfo();
96
102
  hookModulesInfo.forEach(hookInfo => {
97
103
  const hookModule = hookInfo.getModule();
98
104
  if (hookModule.onStoreItemBeforeUpdate) {
99
105
  hookModule.onStoreItemBeforeUpdate({
100
106
  store: store_1.store,
107
+ logger: logger_1.logger,
101
108
  dependencyTagger: dependencyTagger_1.dependencyTagger,
102
109
  relativeFilepath,
103
- fileContent,
110
+ storeItem,
104
111
  });
105
112
  }
106
113
  });
107
114
  },
108
- invokeOnStoreItemAfterUpdate({ relativeFilepath, fileContent }) {
115
+ invokeOnStoreItemAfterUpdate({ relativeFilepath, storeItem, previousStoreItem, }) {
109
116
  const hookModulesInfo = moduleManager.getModuleGroupInfo();
110
117
  hookModulesInfo.forEach(hookInfo => {
111
118
  const hookModule = hookInfo.getModule();
112
119
  if (hookModule.onStoreItemAfterUpdate) {
113
120
  hookModule.onStoreItemAfterUpdate({
114
121
  store: store_1.store,
122
+ logger: logger_1.logger,
115
123
  dependencyTagger: dependencyTagger_1.dependencyTagger,
116
124
  relativeFilepath,
117
- fileContent,
125
+ storeItem,
126
+ previousStoreItem,
118
127
  });
119
128
  }
120
129
  });
121
130
  },
122
- invokeOnStoreItemDelete({ relativeFilepath, fileContent }) {
131
+ invokeOnStoreItemDelete({ relativeFilepath, storeItem }) {
123
132
  const hookModulesInfo = moduleManager.getModuleGroupInfo();
124
133
  hookModulesInfo.forEach(hookInfo => {
125
134
  const hookModule = hookInfo.getModule();
126
135
  if (hookModule.onStoreItemDelete) {
127
136
  hookModule.onStoreItemDelete({
128
137
  store: store_1.store,
138
+ logger: logger_1.logger,
129
139
  dependencyTagger: dependencyTagger_1.dependencyTagger,
130
140
  relativeFilepath,
131
- fileContent,
141
+ storeItem,
132
142
  });
133
143
  }
134
144
  });
@@ -140,6 +150,7 @@ exports.hookManager = {
140
150
  if (hookModule.onStoreChangeDone) {
141
151
  hookModule.onStoreChangeDone({
142
152
  store: store_1.store,
153
+ logger: logger_1.logger,
143
154
  dependencyTagger: dependencyTagger_1.dependencyTagger,
144
155
  changedFiles,
145
156
  });
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/lib/store/store.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,EAIN,MAAM,eAAe,CAAC;AAcvB,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAkEF;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,IAO7B,CAAC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/lib/store/store.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,EAIN,MAAM,eAAe,CAAC;AAevB,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAoEF;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,IAQ7B,CAAC"}
@@ -8,6 +8,7 @@ const microtime_1 = __importDefault(require("microtime"));
8
8
  const string_1 = require("@lib/utils/string");
9
9
  const logger_1 = require("@lib/utils/logger");
10
10
  const cache_1 = require("@lib/utils/cache");
11
+ const workDir_1 = require("./workDir");
11
12
  // Instantiate the subset cache so it can be accessed faster.
12
13
  const subsetCache = cache_1.cache.bin('store-subset');
13
14
  const initIndex = () => {
@@ -19,7 +20,8 @@ const initIndex = () => {
19
20
  };
20
21
  const initData = () => new Map();
21
22
  exports.store = {
22
- syncDate: null,
23
+ initialUniqueId: workDir_1.unixEpochUniqueId,
24
+ currentUniqueId: workDir_1.unixEpochUniqueId,
23
25
  data: initData(),
24
26
  deleted: new Set(),
25
27
  index: initIndex(),
@@ -33,7 +35,7 @@ exports.store.data.subset = (options) => {
33
35
  recursive: 'true',
34
36
  };
35
37
  const opts = { ...defaultOptions, ...options };
36
- let subset = { filenames: [], items: [] };
38
+ let subset = { map: new Map(), filenames: [], items: [] };
37
39
  const dirWithTrimmedSlashes = opts.dir?.replace(/^\//, '').replace(/\/$/, '');
38
40
  const dirPart = dirWithTrimmedSlashes ? `${dirWithTrimmedSlashes}/` : '';
39
41
  let variantPart;
@@ -66,8 +68,10 @@ exports.store.data.subset = (options) => {
66
68
  const mapKeys = Array.from(exports.store.data.keys());
67
69
  mapKeys.forEach(k => {
68
70
  if (k.match(regex)) {
71
+ const storeItem = exports.store.data.get(k);
72
+ subset.map.set(k, storeItem);
69
73
  subset.filenames.push(k);
70
- subset.items.push(exports.store.data.get(k));
74
+ subset.items.push(storeItem);
71
75
  }
72
76
  });
73
77
  subsetCache.set(pattern, subset);
@@ -79,7 +83,8 @@ exports.store.data.subset = (options) => {
79
83
  * Resets store and deletes all loaded data.
80
84
  */
81
85
  const resetStore = () => {
82
- exports.store.syncDate = null;
86
+ exports.store.initialUniqueId = workDir_1.unixEpochUniqueId;
87
+ exports.store.currentUniqueId = workDir_1.unixEpochUniqueId;
83
88
  const previousSubset = exports.store.data.subset;
84
89
  exports.store.data = initData();
85
90
  exports.store.data.subset = previousSubset;
@@ -39,44 +39,17 @@ export interface StoreData<K, V> extends Map<K, V> {
39
39
  */
40
40
  export declare type Store = {
41
41
  /**
42
- * Date to tell when was the store last synced.
43
- *
44
- * Every time the store is updated, syncDate is set with the last modification
45
- * date of the data directory, not the date when the store has finished updating.
46
- *
47
- * Given this scenario:
48
- * - Data directory modified at 12:30:00
49
- * - Syncing the store takes 3 seconds and finishes at 12:30:03
50
- *
51
- * ... syncDate will be 12:30:00, not 12:30:03.
52
- *
53
- * Doing it the other way round can cause data inconsistencies, because syncing files
54
- * to the store takes time, it is done sequentially, and in the meanwhile, other
55
- * modifications can happen:
56
- * - Store last syncDate is 12:29:00
57
- * - Data directory is modified at 12:30:00
58
- * - We ask for modified files after 12:29:00 and got 3 files (1.json, 2.json and 3.json)
59
- * - File "1.json" is processed and added to the store at 12:30:01
60
- * - While "2.json" is being processed and added to the store, data directory is modified
61
- * again at 12:30:02 and "1.json" is changed.
62
- * - File "3.json" is processed and added to the store at 12:30:03
63
- *
64
- * At this moment, there are two options:
42
+ * Initial unique id when the store was initially loaded.
43
+ */
44
+ initialUniqueId: string;
45
+ /**
46
+ * Current unique id to tell when was the store last synced.
65
47
  *
66
- * 1) Setting syncDate to the current date:
67
- * - Store syncDate is set to 12:30:03
68
- * - Data directory is modified again at 12:30:10 and only "3.json" is changed
69
- * - We ask for modified files after 12:30:03 and get only "3.json"
70
- * - Modification done at 12:30:02 to "1.json" is lost and cannot be recovered unless "1.json" is
71
- * modified again, or Data Server is restarted
48
+ * Every time the store is updated, this id is set with the last modification
49
+ * unique id of the data directory, not the date when the store has finished updating.
72
50
  *
73
- * 2) Setting syncDate to the last modification date of the data directory:
74
- * - Store syncDate is set to 12:30:00
75
- * - Data directory is modified again at 12:30:10 and only "3.json" is changed
76
- * - We ask for modified files after 12:30:00 and get "1.json" and "3.json"
77
- * - Modification done at 12:30:02 to "1.json" is properly processed
78
51
  */
79
- syncDate: Date | null;
52
+ currentUniqueId: string;
80
53
  /**
81
54
  * Map that holds all data for all files.
82
55
  *
@@ -102,7 +75,7 @@ export declare type Store = {
102
75
  */
103
76
  data: StoreData<string, any>;
104
77
  /**
105
- * A list of deleted files from store, to be able to track them.
78
+ * A list of deleted files since last reboot, to be able to track them.
106
79
  */
107
80
  deleted: Set<string>;
108
81
  /**
@@ -114,7 +87,7 @@ export declare type Store = {
114
87
  */
115
88
  url: Map<string, any>;
116
89
  /**
117
- * An index that holds all data for all files, keyed by their lang and uuid.
90
+ * An index that holds all data for all files, keyed by their langcode and UUID.
118
91
  */
119
92
  uuid: Map<string, any>;
120
93
  /**
@@ -157,6 +130,10 @@ export declare type StoreSubsetOptions = {
157
130
  * Object holding a subset of items from the store.
158
131
  */
159
132
  export declare type StoreSubset = {
133
+ /**
134
+ * Map of elements, with the filename as key
135
+ */
136
+ map: Map<string, any>;
160
137
  /**
161
138
  * Array of filenames in this subset.
162
139
  */
@@ -1 +1 @@
1
- {"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../src/lib/store/store.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAAC;CAClD;AAED;;GAEG;AACH,oBAAY,KAAK,GAAG;IAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAErB;;OAEG;IACH,KAAK,EAAE;QACL;;WAEG;QACH,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEtB;;WAEG;QACH,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvB;;WAEG;QACH,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,oBAAY,kBAAkB,GAAG;IAC/B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,oBAAY,WAAW,GAAG;IACxB;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,oBAAY,YAAY,GAAG;IACzB;;;;;;;;;OASG;IACH,GAAG,CAAC,gBAAgB,EAAE,MAAM,GAAG,YAAY,CAAC;IAE5C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IAEnC;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IAEnC;;;;;OAKG;IACH,aAAa,IAAI,YAAY,CAAC;IAE9B;;;;;;;;OAQG;IACH,uBAAuB,CACrB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,GAAG,GACf,YAAY,CAAC;IAEhB;;;;OAIG;IACH,KAAK,IAAI,YAAY,CAAC;CACvB,CAAC"}
1
+ {"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../src/lib/store/store.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAAC;CAClD;AAED;;GAEG;AACH,oBAAY,KAAK,GAAG;IAClB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAErB;;OAEG;IACH,KAAK,EAAE;QACL;;WAEG;QACH,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEtB;;WAEG;QACH,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvB;;WAEG;QACH,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,oBAAY,kBAAkB,GAAG;IAC/B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,oBAAY,WAAW,GAAG;IACxB;;OAEG;IACH,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEtB;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,oBAAY,YAAY,GAAG;IACzB;;;;;;;;;OASG;IACH,GAAG,CAAC,gBAAgB,EAAE,MAAM,GAAG,YAAY,CAAC;IAE5C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IAEnC;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IAEnC;;;;;OAKG;IACH,aAAa,IAAI,YAAY,CAAC;IAE9B;;;;;;;;OAQG;IACH,uBAAuB,CACrB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,GAAG,GACf,YAAY,CAAC;IAEhB;;;;OAIG;IACH,KAAK,IAAI,YAAY,CAAC;CACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"storeManager.d.ts","sourceRoot":"","sources":["../../../src/lib/store/storeManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA2F7C,eAAO,MAAM,YAAY,EAAE,YA4F1B,CAAC"}
1
+ {"version":3,"file":"storeManager.d.ts","sourceRoot":"","sources":["../../../src/lib/store/storeManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAsG7C,eAAO,MAAM,YAAY,EAAE,YAiG1B,CAAC"}
@@ -24,10 +24,11 @@ const setFileIntoStore = (relativeFilepath) => {
24
24
  relativeFilepath,
25
25
  fileContent,
26
26
  });
27
+ let previousStoredData = null;
27
28
  const dataToStore = fileContent.json || fileContent.raw;
29
+ const previousData = _1.store.data.get(relativeFilepath);
28
30
  if (fileContent.json) {
29
31
  // Check if the object already exists to make sure we don't break the reference
30
- const previousData = _1.store.data.get(relativeFilepath);
31
32
  if (dataToStore && typeof dataToStore === 'object') {
32
33
  if (previousData) {
33
34
  // Delete include dependencies.
@@ -43,8 +44,10 @@ const setFileIntoStore = (relativeFilepath) => {
43
44
  if (uuid && langcode) {
44
45
  _1.store.index.uuid.get(langcode)?.delete(uuid);
45
46
  }
46
- // Delete all referenced object properties
47
+ // Delete all referenced object properties and copy them to another object.
48
+ previousStoredData = {};
47
49
  Object.keys(previousData).forEach(key => {
50
+ previousStoredData[key] = previousData[key];
48
51
  delete previousData[key];
49
52
  });
50
53
  // hydrate new object properties into referenced object
@@ -66,19 +69,25 @@ const setFileIntoStore = (relativeFilepath) => {
66
69
  _1.store.index.url.set(url, dataToStore);
67
70
  }
68
71
  // Add include dependencies.
69
- dependencyFileHelper_1.dependencyIncludeHelper.setIncludeDependencies(relativeFilepath, dataToStore);
72
+ dependencyFileHelper_1.dependencyIncludeHelper.addIncludeDependencies(relativeFilepath, dataToStore);
70
73
  }
71
74
  }
75
+ else {
76
+ previousStoredData = previousData;
77
+ }
72
78
  _1.store.data.set(relativeFilepath, dataToStore);
73
79
  // Remove this path from store.deleted
74
80
  _1.store.deleted.delete(relativeFilepath);
75
- return fileContent;
81
+ return { fileContent: dataToStore, previousStoredData };
76
82
  };
77
83
  exports.storeManager = {
78
84
  add: (relativeFilepath) => {
79
- const fileContent = setFileIntoStore(relativeFilepath);
85
+ const { fileContent } = setFileIntoStore(relativeFilepath);
80
86
  // Invoke "store add" hook.
81
- hook_1.hookManager.invokeOnStoreItemAdd({ relativeFilepath, fileContent });
87
+ hook_1.hookManager.invokeOnStoreItemAdd({
88
+ relativeFilepath,
89
+ storeItem: fileContent,
90
+ });
82
91
  return exports.storeManager;
83
92
  },
84
93
  update: (relativeFilepath) => {
@@ -86,16 +95,17 @@ exports.storeManager = {
86
95
  if (storedData) {
87
96
  hook_1.hookManager.invokeOnStoreItemBeforeUpdate({
88
97
  relativeFilepath,
89
- fileContent: storedData,
98
+ storeItem: storedData,
90
99
  });
91
100
  }
92
- const fileContent = setFileIntoStore(relativeFilepath);
101
+ const { fileContent, previousStoredData } = setFileIntoStore(relativeFilepath);
93
102
  // Invalidate this item.
94
103
  dependencyTagger_1.dependencyTagger.invalidateTags([relativeFilepath]);
95
104
  // Invoke "store update" hook.
96
105
  hook_1.hookManager.invokeOnStoreItemAfterUpdate({
97
106
  relativeFilepath,
98
- fileContent,
107
+ storeItem: fileContent,
108
+ previousStoreItem: previousStoredData,
99
109
  });
100
110
  return exports.storeManager;
101
111
  },
@@ -122,7 +132,7 @@ exports.storeManager = {
122
132
  // Invoke "store remove" hook.
123
133
  hook_1.hookManager.invokeOnStoreItemDelete({
124
134
  relativeFilepath,
125
- fileContent: storedData,
135
+ storeItem: storedData,
126
136
  });
127
137
  return exports.storeManager;
128
138
  },
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Get changed files between a set of dates.
3
+ *
4
+ * @param fromUniqueId - Unique id to search from.
5
+ * @param toUniqueId - Unique id to search to.
6
+ *
7
+ * @remarks
8
+ * It searches for lines grater than fromUniqueId and lower
9
+ * or equal to toUniqueId, to avoid getting repeated entries
10
+ * when dates are advanced in blocks (from 1 to 2, from 2 to 3,
11
+ * from 3 to 4, etc).
12
+ *
13
+ * @returns Array of changed lines
14
+ */
15
+ export declare const getChangedLinesBetween: (fromUniqueId: string, toUniqueId: string) => string[];
16
+ //# sourceMappingURL=getChangedLinesBetween.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getChangedLinesBetween.d.ts","sourceRoot":"","sources":["../../../../../src/lib/store/workDir/storage/getChangedLinesBetween.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,iBACnB,MAAM,cACR,MAAM,KACjB,MAAM,EA6BR,CAAC"}
@@ -3,40 +3,42 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getChangedLinesSince = void 0;
6
+ exports.getChangedLinesBetween = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const logger_1 = require("@lib/utils/logger");
9
+ const string_1 = require("@lib/utils/string");
9
10
  const getLogFile_1 = require("./getLogFile");
10
11
  /**
11
- * Get changed files since a date.
12
- *
13
- * @param sinceDate - Date to search
14
-
15
- * @returns Array of changed lines
16
- */
17
- const getChangedLinesSince = (sinceDate) => {
12
+ * Get changed files between a set of dates.
13
+ *
14
+ * @param fromUniqueId - Unique id to search from.
15
+ * @param toUniqueId - Unique id to search to.
16
+ *
17
+ * @remarks
18
+ * It searches for lines grater than fromUniqueId and lower
19
+ * or equal to toUniqueId, to avoid getting repeated entries
20
+ * when dates are advanced in blocks (from 1 to 2, from 2 to 3,
21
+ * from 3 to 4, etc).
22
+ *
23
+ * @returns Array of changed lines
24
+ */
25
+ const getChangedLinesBetween = (fromUniqueId, toUniqueId) => {
18
26
  let allLines = [];
19
27
  const logFile = (0, getLogFile_1.getLogFile)();
20
28
  if (logFile) {
21
29
  try {
22
- allLines = fs_1.default.readFileSync(logFile).toString().split('\n');
30
+ allLines = fs_1.default.readFileSync(logFile).toString().trim().split('\n');
23
31
  }
24
32
  catch (e) {
25
33
  logger_1.logger.error(`Error reading metadata log file located at ${`logFile`}: ${e}`);
26
34
  }
27
35
  }
28
- // todo - Do not use dates and use timestamps in all cases
29
- // to avoid having to fix offsets.
30
- const date = new Date();
31
- const dateOffset = -(date.getTimezoneOffset() * 60 * 1000);
32
36
  const changedLines = allLines.filter(line => {
33
37
  const uniqueId = line.substring(0, 32);
34
- if (!uniqueId) {
35
- return false;
36
- }
37
- const dateString = uniqueId.replace(/(\d{4})-(\d{2})-(\d{2})_(\d{2})-(\d{2})-(\d{2})\.(\d{3}).*/, '$1-$2-$3T$4:$5:$6.$7');
38
- const uniqueIdDate = Date.parse(dateString) + dateOffset;
39
- return uniqueIdDate && uniqueIdDate > sinceDate.getTime();
38
+ return (uniqueId &&
39
+ (0, string_1.isUniqueId)(uniqueId) &&
40
+ uniqueId > fromUniqueId &&
41
+ uniqueId <= toUniqueId);
40
42
  });
41
43
  logger_1.logger.debug(`Found ${changedLines.length} changed lines`);
42
44
  changedLines.forEach(line => {
@@ -44,4 +46,4 @@ const getChangedLinesSince = (sinceDate) => {
44
46
  });
45
47
  return changedLines;
46
48
  };
47
- exports.getChangedLinesSince = getChangedLinesSince;
49
+ exports.getChangedLinesBetween = getChangedLinesBetween;
@@ -1 +1 @@
1
- {"version":3,"file":"getDataFromLogLine.d.ts","sourceRoot":"","sources":["../../../../../src/lib/store/workDir/storage/getDataFromLogLine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,SAAU,MAAM,KAAG,WAAW,GAAG,IAqB/D,CAAC"}
1
+ {"version":3,"file":"getDataFromLogLine.d.ts","sourceRoot":"","sources":["../../../../../src/lib/store/workDir/storage/getDataFromLogLine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,SAAU,MAAM,KAAG,WAAW,GAAG,IAuC/D,CAAC"}