@cyberismo/data-handler 0.0.14 → 0.0.16

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 (280) hide show
  1. package/dist/card-metadata-updater.js +8 -4
  2. package/dist/card-metadata-updater.js.map +1 -1
  3. package/dist/command-handler.d.ts +4 -0
  4. package/dist/command-handler.js +29 -19
  5. package/dist/command-handler.js.map +1 -1
  6. package/dist/command-manager.d.ts +25 -2
  7. package/dist/command-manager.js +30 -5
  8. package/dist/command-manager.js.map +1 -1
  9. package/dist/commands/create.d.ts +1 -1
  10. package/dist/commands/create.js +45 -93
  11. package/dist/commands/create.js.map +1 -1
  12. package/dist/commands/edit.d.ts +1 -15
  13. package/dist/commands/edit.js +15 -89
  14. package/dist/commands/edit.js.map +1 -1
  15. package/dist/commands/export.d.ts +11 -2
  16. package/dist/commands/export.js +58 -58
  17. package/dist/commands/export.js.map +1 -1
  18. package/dist/commands/import.d.ts +9 -1
  19. package/dist/commands/import.js +17 -11
  20. package/dist/commands/import.js.map +1 -1
  21. package/dist/commands/move.d.ts +1 -2
  22. package/dist/commands/move.js +107 -146
  23. package/dist/commands/move.js.map +1 -1
  24. package/dist/commands/remove.d.ts +8 -1
  25. package/dist/commands/remove.js +17 -48
  26. package/dist/commands/remove.js.map +1 -1
  27. package/dist/commands/rename.d.ts +4 -9
  28. package/dist/commands/rename.js +34 -108
  29. package/dist/commands/rename.js.map +1 -1
  30. package/dist/commands/show.d.ts +22 -34
  31. package/dist/commands/show.js +103 -151
  32. package/dist/commands/show.js.map +1 -1
  33. package/dist/commands/transition.d.ts +9 -2
  34. package/dist/commands/transition.js +49 -44
  35. package/dist/commands/transition.js.map +1 -1
  36. package/dist/commands/update.d.ts +18 -12
  37. package/dist/commands/update.js +34 -18
  38. package/dist/commands/update.js.map +1 -1
  39. package/dist/commands/validate.d.ts +18 -10
  40. package/dist/commands/validate.js +101 -47
  41. package/dist/commands/validate.js.map +1 -1
  42. package/dist/containers/card-container.d.ts +87 -24
  43. package/dist/containers/card-container.js +183 -279
  44. package/dist/containers/card-container.js.map +1 -1
  45. package/dist/containers/project/calculation-engine.d.ts +13 -4
  46. package/dist/containers/project/calculation-engine.js +79 -77
  47. package/dist/containers/project/calculation-engine.js.map +1 -1
  48. package/dist/containers/project/card-cache.d.ts +146 -0
  49. package/dist/containers/project/card-cache.js +411 -0
  50. package/dist/containers/project/card-cache.js.map +1 -0
  51. package/dist/containers/project/project-paths.d.ts +5 -4
  52. package/dist/containers/project/project-paths.js +16 -12
  53. package/dist/containers/project/project-paths.js.map +1 -1
  54. package/dist/containers/project/resource-cache.d.ts +169 -0
  55. package/dist/containers/project/resource-cache.js +507 -0
  56. package/dist/containers/project/resource-cache.js.map +1 -0
  57. package/dist/containers/project/resource-handler.d.ts +129 -0
  58. package/dist/containers/project/resource-handler.js +206 -0
  59. package/dist/containers/project/resource-handler.js.map +1 -0
  60. package/dist/containers/project.d.ts +114 -195
  61. package/dist/containers/project.js +425 -535
  62. package/dist/containers/project.js.map +1 -1
  63. package/dist/containers/template.d.ts +22 -32
  64. package/dist/containers/template.js +113 -115
  65. package/dist/containers/template.js.map +1 -1
  66. package/dist/index.d.ts +1 -0
  67. package/dist/index.js +1 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/interfaces/folder-content-interfaces.d.ts +7 -4
  70. package/dist/interfaces/folder-content-interfaces.js +3 -3
  71. package/dist/interfaces/folder-content-interfaces.js.map +1 -1
  72. package/dist/interfaces/macros.d.ts +1 -0
  73. package/dist/interfaces/macros.js +1 -1
  74. package/dist/interfaces/macros.js.map +1 -1
  75. package/dist/interfaces/project-interfaces.d.ts +7 -5
  76. package/dist/interfaces/project-interfaces.js.map +1 -1
  77. package/dist/interfaces/resource-interfaces.d.ts +25 -22
  78. package/dist/interfaces/resource-interfaces.js +3 -0
  79. package/dist/interfaces/resource-interfaces.js.map +1 -1
  80. package/dist/macros/common.d.ts +10 -10
  81. package/dist/macros/createCards/index.d.ts +0 -13
  82. package/dist/macros/createCards/index.js.map +1 -1
  83. package/dist/macros/createCards/types.d.ts +44 -0
  84. package/dist/macros/createCards/types.js +15 -0
  85. package/dist/macros/createCards/types.js.map +1 -0
  86. package/dist/macros/graph/index.d.ts +2 -6
  87. package/dist/macros/graph/index.js +14 -28
  88. package/dist/macros/graph/index.js.map +1 -1
  89. package/dist/macros/graph/types.d.ts +23 -0
  90. package/dist/macros/graph/types.js +15 -0
  91. package/dist/macros/graph/types.js.map +1 -0
  92. package/dist/macros/image/index.d.ts +8 -16
  93. package/dist/macros/image/index.js +36 -33
  94. package/dist/macros/image/index.js.map +1 -1
  95. package/dist/macros/image/types.d.ts +38 -0
  96. package/dist/macros/image/types.js +15 -0
  97. package/dist/macros/image/types.js.map +1 -0
  98. package/dist/macros/include/index.d.ts +1 -6
  99. package/dist/macros/include/index.js +4 -7
  100. package/dist/macros/include/index.js.map +1 -1
  101. package/dist/macros/include/types.d.ts +31 -0
  102. package/dist/macros/include/types.js +15 -0
  103. package/dist/macros/include/types.js.map +1 -0
  104. package/dist/macros/index.d.ts +1 -1
  105. package/dist/macros/index.js +2 -2
  106. package/dist/macros/index.js.map +1 -1
  107. package/dist/macros/percentage/index.d.ts +0 -6
  108. package/dist/macros/percentage/index.js.map +1 -1
  109. package/dist/macros/percentage/types.d.ts +31 -0
  110. package/dist/macros/percentage/types.js +15 -0
  111. package/dist/macros/percentage/types.js.map +1 -0
  112. package/dist/macros/report/index.d.ts +0 -3
  113. package/dist/macros/report/index.js +3 -6
  114. package/dist/macros/report/index.js.map +1 -1
  115. package/dist/macros/report/types.d.ts +19 -0
  116. package/dist/macros/report/types.js +15 -0
  117. package/dist/macros/report/types.js.map +1 -0
  118. package/dist/macros/scoreCard/index.d.ts +0 -6
  119. package/dist/macros/scoreCard/index.js.map +1 -1
  120. package/dist/macros/scoreCard/types.d.ts +31 -0
  121. package/dist/macros/scoreCard/types.js +15 -0
  122. package/dist/macros/scoreCard/types.js.map +1 -0
  123. package/dist/macros/types.d.ts +25 -0
  124. package/dist/macros/types.js +2 -0
  125. package/dist/macros/types.js.map +1 -0
  126. package/dist/macros/vega/index.d.ts +0 -4
  127. package/dist/macros/vega/index.js.map +1 -1
  128. package/dist/macros/vega/types.d.ts +20 -0
  129. package/dist/macros/vega/types.js +2 -0
  130. package/dist/macros/vega/types.js.map +1 -0
  131. package/dist/macros/vegalite/index.d.ts +0 -4
  132. package/dist/macros/vegalite/index.js.map +1 -1
  133. package/dist/macros/vegalite/types.d.ts +20 -0
  134. package/dist/macros/vegalite/types.js +15 -0
  135. package/dist/macros/vegalite/types.js.map +1 -0
  136. package/dist/macros/xref/index.d.ts +0 -3
  137. package/dist/macros/xref/index.js +5 -14
  138. package/dist/macros/xref/index.js.map +1 -1
  139. package/dist/macros/xref/types.d.ts +19 -0
  140. package/dist/macros/xref/types.js +15 -0
  141. package/dist/macros/xref/types.js.map +1 -0
  142. package/dist/module-manager.d.ts +16 -3
  143. package/dist/module-manager.js +55 -23
  144. package/dist/module-manager.js.map +1 -1
  145. package/dist/project-settings.d.ts +16 -3
  146. package/dist/project-settings.js +79 -14
  147. package/dist/project-settings.js.map +1 -1
  148. package/dist/resources/calculation-resource.d.ts +6 -33
  149. package/dist/resources/calculation-resource.js +11 -60
  150. package/dist/resources/calculation-resource.js.map +1 -1
  151. package/dist/resources/card-type-resource.d.ts +10 -22
  152. package/dist/resources/card-type-resource.js +46 -66
  153. package/dist/resources/card-type-resource.js.map +1 -1
  154. package/dist/resources/create-defaults.d.ts +3 -2
  155. package/dist/resources/create-defaults.js +3 -2
  156. package/dist/resources/create-defaults.js.map +1 -1
  157. package/dist/resources/field-type-resource.d.ts +8 -22
  158. package/dist/resources/field-type-resource.js +35 -60
  159. package/dist/resources/field-type-resource.js.map +1 -1
  160. package/dist/resources/file-resource.d.ts +14 -35
  161. package/dist/resources/file-resource.js +22 -301
  162. package/dist/resources/file-resource.js.map +1 -1
  163. package/dist/resources/folder-resource.d.ts +44 -66
  164. package/dist/resources/folder-resource.js +102 -149
  165. package/dist/resources/folder-resource.js.map +1 -1
  166. package/dist/resources/graph-model-resource.d.ts +9 -34
  167. package/dist/resources/graph-model-resource.js +18 -64
  168. package/dist/resources/graph-model-resource.js.map +1 -1
  169. package/dist/resources/graph-view-resource.d.ts +9 -29
  170. package/dist/resources/graph-view-resource.js +13 -48
  171. package/dist/resources/graph-view-resource.js.map +1 -1
  172. package/dist/resources/link-type-resource.d.ts +9 -23
  173. package/dist/resources/link-type-resource.js +11 -33
  174. package/dist/resources/link-type-resource.js.map +1 -1
  175. package/dist/resources/report-resource.d.ts +10 -23
  176. package/dist/resources/report-resource.js +20 -67
  177. package/dist/resources/report-resource.js.map +1 -1
  178. package/dist/resources/resource-object.d.ts +143 -23
  179. package/dist/resources/resource-object.js +369 -48
  180. package/dist/resources/resource-object.js.map +1 -1
  181. package/dist/resources/template-resource.d.ts +10 -17
  182. package/dist/resources/template-resource.js +19 -27
  183. package/dist/resources/template-resource.js.map +1 -1
  184. package/dist/resources/workflow-resource.d.ts +9 -25
  185. package/dist/resources/workflow-resource.js +25 -55
  186. package/dist/resources/workflow-resource.js.map +1 -1
  187. package/dist/utils/card-utils.d.ts +69 -19
  188. package/dist/utils/card-utils.js +179 -30
  189. package/dist/utils/card-utils.js.map +1 -1
  190. package/dist/utils/clingo-fact-builder.d.ts +25 -14
  191. package/dist/utils/clingo-fact-builder.js +27 -5
  192. package/dist/utils/clingo-fact-builder.js.map +1 -1
  193. package/dist/utils/clingo-facts.js +14 -7
  194. package/dist/utils/clingo-facts.js.map +1 -1
  195. package/dist/utils/clingo-parser.js +1 -1
  196. package/dist/utils/clingo-parser.js.map +1 -1
  197. package/dist/utils/constants.d.ts +2 -0
  198. package/dist/utils/constants.js +4 -0
  199. package/dist/utils/constants.js.map +1 -1
  200. package/dist/utils/csv.js +1 -1
  201. package/dist/utils/csv.js.map +1 -1
  202. package/dist/utils/resource-utils.d.ts +1 -0
  203. package/dist/utils/resource-utils.js +2 -1
  204. package/dist/utils/resource-utils.js.map +1 -1
  205. package/package.json +11 -11
  206. package/src/card-metadata-updater.ts +9 -7
  207. package/src/command-handler.ts +35 -23
  208. package/src/command-manager.ts +32 -19
  209. package/src/commands/create.ts +59 -160
  210. package/src/commands/edit.ts +16 -132
  211. package/src/commands/export.ts +71 -81
  212. package/src/commands/import.ts +26 -18
  213. package/src/commands/move.ts +143 -179
  214. package/src/commands/remove.ts +20 -59
  215. package/src/commands/rename.ts +45 -156
  216. package/src/commands/show.ts +153 -211
  217. package/src/commands/transition.ts +53 -58
  218. package/src/commands/update.ts +44 -23
  219. package/src/commands/validate.ts +108 -82
  220. package/src/containers/card-container.ts +200 -360
  221. package/src/containers/project/calculation-engine.ts +81 -105
  222. package/src/containers/project/card-cache.ts +497 -0
  223. package/src/containers/project/project-paths.ts +21 -13
  224. package/src/containers/project/resource-cache.ts +648 -0
  225. package/src/containers/project/resource-handler.ts +265 -0
  226. package/src/containers/project.ts +551 -693
  227. package/src/containers/template.ts +129 -142
  228. package/src/index.ts +1 -0
  229. package/src/interfaces/folder-content-interfaces.ts +14 -7
  230. package/src/interfaces/macros.ts +2 -0
  231. package/src/interfaces/project-interfaces.ts +14 -7
  232. package/src/interfaces/resource-interfaces.ts +30 -27
  233. package/src/macros/createCards/index.ts +1 -12
  234. package/src/macros/createCards/types.ts +46 -0
  235. package/src/macros/graph/index.ts +27 -52
  236. package/src/macros/graph/types.ts +24 -0
  237. package/src/macros/image/index.ts +50 -61
  238. package/src/macros/image/types.ts +39 -0
  239. package/src/macros/include/index.ts +6 -15
  240. package/src/macros/include/types.ts +32 -0
  241. package/src/macros/index.ts +2 -2
  242. package/src/macros/percentage/index.ts +1 -7
  243. package/src/macros/percentage/types.ts +32 -0
  244. package/src/macros/report/index.ts +4 -13
  245. package/src/macros/report/types.ts +20 -0
  246. package/src/macros/scoreCard/index.ts +1 -7
  247. package/src/macros/scoreCard/types.ts +32 -0
  248. package/src/macros/types.ts +48 -0
  249. package/src/macros/vega/index.ts +1 -4
  250. package/src/macros/vega/types.ts +21 -0
  251. package/src/macros/vegalite/index.ts +1 -4
  252. package/src/macros/vegalite/types.ts +22 -0
  253. package/src/macros/xref/index.ts +6 -20
  254. package/src/macros/xref/types.ts +20 -0
  255. package/src/module-manager.ts +79 -22
  256. package/src/project-settings.ts +84 -15
  257. package/src/resources/calculation-resource.ts +21 -91
  258. package/src/resources/card-type-resource.ts +74 -109
  259. package/src/resources/create-defaults.ts +3 -2
  260. package/src/resources/field-type-resource.ts +61 -104
  261. package/src/resources/file-resource.ts +33 -441
  262. package/src/resources/folder-resource.ts +130 -207
  263. package/src/resources/graph-model-resource.ts +36 -95
  264. package/src/resources/graph-view-resource.ts +28 -70
  265. package/src/resources/link-type-resource.ts +23 -53
  266. package/src/resources/report-resource.ts +34 -96
  267. package/src/resources/resource-object.ts +511 -66
  268. package/src/resources/template-resource.ts +32 -44
  269. package/src/resources/workflow-resource.ts +42 -85
  270. package/src/utils/card-utils.ts +217 -31
  271. package/src/utils/clingo-fact-builder.ts +28 -16
  272. package/src/utils/clingo-facts.ts +16 -7
  273. package/src/utils/clingo-parser.ts +1 -1
  274. package/src/utils/constants.ts +6 -0
  275. package/src/utils/csv.ts +1 -1
  276. package/src/utils/resource-utils.ts +2 -1
  277. package/dist/containers/project/resource-collector.d.ts +0 -87
  278. package/dist/containers/project/resource-collector.js +0 -337
  279. package/dist/containers/project/resource-collector.js.map +0 -1
  280. package/src/containers/project/resource-collector.ts +0 -396
@@ -22,7 +22,7 @@ export default class XrefMacro extends BaseMacro {
22
22
  };
23
23
  handleStatic = async (context, input) => {
24
24
  const options = this.validate(input);
25
- const card = await this.getCard(options.cardKey, context);
25
+ const card = this.getCard(options.cardKey, context);
26
26
  if (!card || !card.metadata) {
27
27
  throw new Error(`Card key ${options.cardKey} not found`);
28
28
  }
@@ -31,20 +31,11 @@ export default class XrefMacro extends BaseMacro {
31
31
  };
32
32
  handleInject = async (context, input) => {
33
33
  const options = this.validate(input);
34
- const card = await this.getCard(options.cardKey, context);
35
- if (!card || !card.metadata) {
36
- throw new Error(`Card key ${options.cardKey} not found`);
37
- }
38
- return `xref:${options.cardKey}.adoc[${card.metadata.title}]`;
34
+ const card = this.getCard(options.cardKey, context);
35
+ return `xref:${options.cardKey}.adoc[${card?.metadata?.title}]`;
39
36
  };
40
- async getCard(cardKey, context) {
41
- const card = await context.project.cardDetailsById(cardKey, {
42
- metadata: true,
43
- });
44
- if (!card || !card.metadata) {
45
- throw new Error(`Card key ${cardKey} not found`);
46
- }
47
- return card;
37
+ getCard(cardKey, context) {
38
+ return context.project.findCard(cardKey);
48
39
  }
49
40
  validate(input) {
50
41
  return validateMacroContent(this.metadata, input);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/macros/xref/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;EAWE;AAEF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,aAAa,MAAM,eAAe,CAAC;AAC1C,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAOzC,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,SAAS;IAC9C,YAAY,UAAqB;QAC/B,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,GAAG,CAAC,CAAyB,EAAE,KAAc,EAAE,EAAE;QAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,YAAY,GAAG,KAAK,EAClB,OAA+B,EAC/B,KAAc,EACG,EAAE;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,OAAO,YAAY,CAAC,CAAC;QAC3D,CAAC;QAED,oDAAoD;QACpD,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,CAAC;IAClC,CAAC,CAAC;IAEF,YAAY,GAAG,KAAK,EAAE,OAA+B,EAAE,KAAc,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,OAAO,YAAY,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,QAAQ,OAAO,CAAC,OAAO,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC;IAChE,CAAC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,OAA+B;QACpE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE;YAC1D,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,YAAY,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,QAAQ,CAAC,KAAc;QAC7B,OAAO,oBAAoB,CAAmB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/macros/xref/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;EAWE;AAEF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,aAAa,MAAM,eAAe,CAAC;AAC1C,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAIzC,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,SAAS;IAC9C,YAAY,UAAqB;QAC/B,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,GAAG,CAAC,CAAyB,EAAE,KAAc,EAAE,EAAE;QAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,YAAY,GAAG,KAAK,EAClB,OAA+B,EAC/B,KAAc,EACG,EAAE;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,OAAO,YAAY,CAAC,CAAC;QAC3D,CAAC;QAED,oDAAoD;QACpD,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,CAAC;IAClC,CAAC,CAAC;IAEF,YAAY,GAAG,KAAK,EAAE,OAA+B,EAAE,KAAc,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,QAAQ,OAAO,CAAC,OAAO,SAAS,IAAI,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC;IAClE,CAAC,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,OAA+B;QAC9D,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAEO,QAAQ,CAAC,KAAc;QAC7B,OAAO,oBAAoB,CAAmB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2025
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU Affero General Public License version 3 as published by
7
+ the Free Software Foundation. This program is distributed in the hope that it
8
+ will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
9
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
+ See the GNU Affero General Public License for more details.
11
+ You should have received a copy of the GNU Affero General Public
12
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
13
+ */
14
+ export interface XrefMacroOptions {
15
+ /**
16
+ * Card of the card being referenced
17
+ */
18
+ cardKey: string;
19
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2025
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU Affero General Public License version 3 as published by
7
+ the Free Software Foundation. This program is distributed in the hope that it
8
+ will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
9
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
+ See the GNU Affero General Public License for more details.
11
+ You should have received a copy of the GNU Affero General Public
12
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/macros/xref/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;EAYE"}
@@ -52,30 +52,43 @@ export declare class ModuleManager {
52
52
  * Imports module from local file path.
53
53
  * @param source Path to import from.
54
54
  * @param destination is this really needed???
55
+ * @param skipValidation Skip prefix validation (used during updates)
56
+ * @returns Module prefix of the imported module.
55
57
  */
56
- importFileModule(source: string, destination?: string): Promise<string>;
58
+ importFileModule(source: string, destination?: string, skipValidation?: boolean): Promise<string>;
57
59
  /**
58
60
  * Imports module from gitUrl.
59
61
  * @param source Git URL to import from.
60
62
  * @param options Modules setting options.
61
63
  * @param credentials Credentials for private repositories.
64
+ * @param skipValidation Skip prefix validation (used during updates)
62
65
  * @returns module prefix as defined in its CardsConfig.json
63
66
  */
64
- importGitModule(source: string, options?: ModuleSettingOptions, credentials?: Credentials): Promise<string>;
67
+ importGitModule(source: string, options?: ModuleSettingOptions, credentials?: Credentials, skipValidation?: boolean): Promise<string>;
65
68
  /**
66
69
  * Removed module from project.
67
70
  * If module is not used by any other modules, then will remove the module from disk as well.
68
71
  * Otherwise, only updates project configuration.
69
72
  * @param moduleName Name of the module to remove
73
+ * @throws If module was not found.
70
74
  */
71
75
  removeModule(moduleName: string): Promise<void>;
76
+ /**
77
+ * Updates dependencies for a module without re-importing the module itself.
78
+ * Used during module import to fetch dependencies after the main module is already imported.
79
+ * @param module Module whose dependencies should be updated.
80
+ * @param credentials Optional credentials for private repositories.
81
+ * @returns Module prefix as defined in its CardsConfig.json
82
+ */
83
+ updateDependencies(module: ModuleSetting, credentials?: Credentials): Promise<void>;
72
84
  /**
73
85
  * Imports module from a local file path or a git URL.
74
86
  * @param module Module to update. If not provided, updates all modules.
75
87
  * @param credentials Optional credentials for private repositories.
88
+ * @param skipModules Optional set of module names to skip during import.
76
89
  * @returns Module prefix as defined in its CardsConfig.json
77
90
  */
78
- updateModule(module: ModuleSetting, credentials?: Credentials): Promise<void>;
91
+ updateModule(module: ModuleSetting, credentials?: Credentials, skipModules?: Set<string>): Promise<void>;
79
92
  /**
80
93
  * Updates all imported modules.
81
94
  * @param credentials Optional credentials for private modules.
@@ -17,7 +17,7 @@ import { copyDir, deleteDir, pathExists } from './utils/file-utils.js';
17
17
  import { Project } from './containers/project.js';
18
18
  import { ProjectPaths } from './containers/project/project-paths.js';
19
19
  import { readJsonFile } from './utils/json.js';
20
- import { Validate } from './commands/index.js';
20
+ import { Validate } from './commands/validate.js';
21
21
  const FILE_PROTOCOL = 'file:';
22
22
  const HTTPS_PROTOCOL = 'https:';
23
23
  /**
@@ -37,7 +37,7 @@ export class ModuleManager {
37
37
  // Copy files.
38
38
  await copyDir(sourcePath, destinationPath);
39
39
  // Update the resources.
40
- await this.project.collectModuleResources();
40
+ this.project.resources.changedModules();
41
41
  }
42
42
  // Creates a map of what dependencies each module depend from.
43
43
  async buildDependencyGraph(dependencies) {
@@ -164,14 +164,11 @@ export class ModuleManager {
164
164
  }
165
165
  // Fetches direct dependencies of a module.
166
166
  async dependencies(moduleName) {
167
- const allModules = await this.project.modules();
168
- if (!allModules)
169
- return new Set();
170
- const module = allModules.find((m) => m.name === moduleName);
167
+ const module = await this.project.module(moduleName);
171
168
  if (!module) {
172
169
  throw new Error(`Module '${moduleName}' not found`);
173
170
  }
174
- const modulePath = join(module.path, module.name, 'cardsConfig.json');
171
+ const modulePath = join(module.path, 'cardsConfig.json');
175
172
  const moduleConfiguration = (await readJsonFile(modulePath));
176
173
  return moduleConfiguration.modules
177
174
  ? new Set(moduleConfiguration.modules.map((m) => m.name))
@@ -227,7 +224,7 @@ export class ModuleManager {
227
224
  }
228
225
  // Imports from a given folder. Is used both for .temp/<module name> and file locations.
229
226
  async importFromFolder(path, name) {
230
- await this.importFileModule(path);
227
+ await this.importFileModule(path, undefined, true); // Skip validation during updates
231
228
  console.log(`... Imported module '${name}' to '${this.project.configuration.name}'`);
232
229
  }
233
230
  // Returns true if module is imported from file-system.
@@ -244,7 +241,7 @@ export class ModuleManager {
244
241
  }
245
242
  // Collect modules that could be removed from .cards/modules when
246
243
  // 'moduleName' is removed.
247
- async orphanedModules(dependencies, moduleName) {
244
+ orphanedModules(dependencies, moduleName) {
248
245
  const projectModules = this.project.configuration.modules;
249
246
  const removableTransientModules = [];
250
247
  if (dependencies.has(moduleName)) {
@@ -290,6 +287,8 @@ export class ModuleManager {
290
287
  try {
291
288
  await this.removeModuleFiles(module.name);
292
289
  console.log(`... Removed imported module '${module.name}'`);
290
+ // Refresh module resources in cache after filesystem removal to avoid stale prefixes
291
+ this.project.resources.changedModules();
293
292
  }
294
293
  catch (error) {
295
294
  if (error instanceof Error)
@@ -379,7 +378,7 @@ export class ModuleManager {
379
378
  return transientDependencies;
380
379
  }
381
380
  // Updates modules in the project.
382
- async update(module, credentials) {
381
+ async update(module, credentials, skipModules) {
383
382
  // Prints dots every half second so that user knows that something is ongoing
384
383
  function start() {
385
384
  console.log('... Collecting unique modules. This takes a moment.');
@@ -406,19 +405,37 @@ export class ModuleManager {
406
405
  }
407
406
  finally {
408
407
  finished(dotInterval, uniqueModules.map((item) => item.name));
408
+ // Filter out modules that are already imported
409
+ const modulesToImport = skipModules
410
+ ? uniqueModules.filter((module) => !skipModules.has(module.name))
411
+ : uniqueModules;
412
+ if (skipModules &&
413
+ skipModules.size > 0 &&
414
+ modulesToImport.length < uniqueModules.length) {
415
+ const skippedModules = uniqueModules
416
+ .filter((module) => skipModules.has(module.name))
417
+ .map((m) => m.name)
418
+ .join(', ');
419
+ console.log(`... Skipping already imported module(s): ${skippedModules}`);
420
+ }
409
421
  // Update modules parallel.
410
422
  const promises = [];
411
- uniqueModules.forEach((module) => promises.push(this.handleModule(module)));
423
+ modulesToImport.forEach((module) => promises.push(this.handleModule(module)));
412
424
  await Promise.all(promises);
413
425
  await deleteDir(this.tempModulesDir);
414
- await this.project.collectModuleResources();
426
+ this.project.resources.changedModules();
415
427
  }
416
428
  }
417
429
  // Checks that module prefix is not in use in the project
418
- async validatePrefix(modulePrefix) {
430
+ // Optionally skip check for modules that are already imported (during updates)
431
+ validatePrefix(modulePrefix, skipIfExists = false) {
419
432
  // Do not allow modules with same prefixes.
420
- const currentlyUsedPrefixes = await this.project.projectPrefixes();
433
+ const currentlyUsedPrefixes = this.project.projectPrefixes();
421
434
  if (currentlyUsedPrefixes.includes(modulePrefix)) {
435
+ // If skipIfExists is true, allow re-importing modules that are already present
436
+ if (skipIfExists) {
437
+ return;
438
+ }
422
439
  throw new Error(`Imported project has a prefix '${modulePrefix}' that is already used in the project. Cannot import from module.`);
423
440
  }
424
441
  }
@@ -426,8 +443,10 @@ export class ModuleManager {
426
443
  * Imports module from local file path.
427
444
  * @param source Path to import from.
428
445
  * @param destination is this really needed???
446
+ * @param skipValidation Skip prefix validation (used during updates)
447
+ * @returns Module prefix of the imported module.
429
448
  */
430
- async importFileModule(source, destination) {
449
+ async importFileModule(source, destination, skipValidation = false) {
431
450
  if (!Validate.validateFolder(source)) {
432
451
  throw new Error(`Input validation error: folder name is invalid '${source}'`);
433
452
  }
@@ -438,10 +457,11 @@ export class ModuleManager {
438
457
  throw new Error(`Input validation error: destination does not exist '${destination}'`);
439
458
  }
440
459
  const sourceProject = new Project(source);
460
+ await sourceProject.populateCaches();
441
461
  const modulePrefix = sourceProject.projectPrefix;
442
462
  const destinationPath = join(this.project.paths.modulesFolder, modulePrefix);
443
463
  const sourcePath = sourceProject.paths.resourcesFolder;
444
- await this.validatePrefix(modulePrefix);
464
+ this.validatePrefix(modulePrefix, skipValidation);
445
465
  // Copy files.
446
466
  await this.addFileContents(sourcePath, destinationPath);
447
467
  return modulePrefix;
@@ -451,9 +471,10 @@ export class ModuleManager {
451
471
  * @param source Git URL to import from.
452
472
  * @param options Modules setting options.
453
473
  * @param credentials Credentials for private repositories.
474
+ * @param skipValidation Skip prefix validation (used during updates)
454
475
  * @returns module prefix as defined in its CardsConfig.json
455
476
  */
456
- async importGitModule(source, options, credentials) {
477
+ async importGitModule(source, options, credentials, skipValidation = false) {
457
478
  const clonedName = await this.clone({
458
479
  name: this.repositoryName(source),
459
480
  location: source,
@@ -461,7 +482,7 @@ export class ModuleManager {
461
482
  }, undefined, credentials);
462
483
  const clonePath = join(this.tempModulesDir, clonedName);
463
484
  const modulePrefix = (await this.configuration(clonePath)).cardKeyPrefix;
464
- await this.validatePrefix(modulePrefix);
485
+ this.validatePrefix(modulePrefix, skipValidation);
465
486
  const sourcePath = new ProjectPaths(clonePath).resourcesFolder;
466
487
  const destinationPath = join(this.project.paths.modulesFolder, modulePrefix);
467
488
  await this.addFileContents(sourcePath, destinationPath);
@@ -472,6 +493,7 @@ export class ModuleManager {
472
493
  * If module is not used by any other modules, then will remove the module from disk as well.
473
494
  * Otherwise, only updates project configuration.
474
495
  * @param moduleName Name of the module to remove
496
+ * @throws If module was not found.
475
497
  */
476
498
  async removeModule(moduleName) {
477
499
  const projectModules = this.project.configuration.modules;
@@ -484,24 +506,34 @@ export class ModuleManager {
484
506
  // but modules under .cards/modules must be checked not to be used by
485
507
  // other modules.
486
508
  if (this.canBeRemoved(dependencies, moduleName)) {
487
- const orphans = await this.orphanedModules(dependencies, moduleName);
509
+ const orphans = this.orphanedModules(dependencies, moduleName);
488
510
  await deleteDir(module.path);
489
511
  for (const moduleToDelete of orphans) {
490
512
  const modulePath = join(this.project.paths.modulesFolder, moduleToDelete);
491
513
  await deleteDir(modulePath);
492
514
  }
493
- await this.project.collectModuleResources();
494
515
  }
495
- await this.project.configuration.removeModule(moduleName);
516
+ await this.project.removeModule(moduleName);
517
+ }
518
+ /**
519
+ * Updates dependencies for a module without re-importing the module itself.
520
+ * Used during module import to fetch dependencies after the main module is already imported.
521
+ * @param module Module whose dependencies should be updated.
522
+ * @param credentials Optional credentials for private repositories.
523
+ * @returns Module prefix as defined in its CardsConfig.json
524
+ */
525
+ async updateDependencies(module, credentials) {
526
+ return this.update(module, credentials, new Set([module.name]));
496
527
  }
497
528
  /**
498
529
  * Imports module from a local file path or a git URL.
499
530
  * @param module Module to update. If not provided, updates all modules.
500
531
  * @param credentials Optional credentials for private repositories.
532
+ * @param skipModules Optional set of module names to skip during import.
501
533
  * @returns Module prefix as defined in its CardsConfig.json
502
534
  */
503
- async updateModule(module, credentials) {
504
- return this.update(module, credentials);
535
+ async updateModule(module, credentials, skipModules) {
536
+ return this.update(module, credentials, skipModules);
505
537
  }
506
538
  /**
507
539
  * Updates all imported modules.
@@ -1 +1 @@
1
- {"version":3,"file":"module-manager.js","sourceRoot":"","sources":["../src/module-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-manager.js","sourceRoot":"","sources":["../src/module-manager.ts"],"names":[],"mappings":"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"}
@@ -15,15 +15,18 @@ import type { HubSetting, ModuleSetting, ProjectSettings } from './interfaces/pr
15
15
  * Represents Project's cardsConfig.json file.
16
16
  */
17
17
  export declare class ProjectConfiguration implements ProjectSettings {
18
- private static instance;
18
+ schemaVersion?: number;
19
19
  name: string;
20
20
  cardKeyPrefix: string;
21
21
  modules: ModuleSetting[];
22
22
  hubs: HubSetting[];
23
+ private logger;
23
24
  private settingPath;
24
- constructor(path: string);
25
- save(): Promise<void>;
25
+ private autoSave;
26
+ constructor(path: string, autoSave?: boolean);
27
+ private ensureSchemaVersionAndSave;
26
28
  private readSettings;
29
+ private saveSync;
27
30
  private toJSON;
28
31
  /**
29
32
  * Adds a new hub.
@@ -36,6 +39,14 @@ export declare class ProjectConfiguration implements ProjectSettings {
36
39
  * @param module Module to add as dependency
37
40
  */
38
41
  addModule(module: ModuleSetting): Promise<void>;
42
+ /**
43
+ * Checks schema version compatibility.
44
+ * @returns Compatibility state (true - compatible; false - not) and optional message related to it.
45
+ */
46
+ checkSchemaVersion(): {
47
+ isCompatible: boolean;
48
+ message: string;
49
+ };
39
50
  /**
40
51
  * Removes a hub.
41
52
  * @param hubName Name of the hub to remove.
@@ -45,8 +56,10 @@ export declare class ProjectConfiguration implements ProjectSettings {
45
56
  /**
46
57
  * Removes module from imported modules property.
47
58
  * @param moduleName Name of the module to remove.
59
+ * @throws If Module name is empty, or not imported to the project.
48
60
  */
49
61
  removeModule(moduleName: string): Promise<void>;
62
+ save(): Promise<void>;
50
63
  /**
51
64
  * Changes project prefix.
52
65
  * @param newPrefix New prefix to use in the project
@@ -11,39 +11,44 @@
11
11
  License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
12
  */
13
13
  import { writeJsonFile as atomicWrite } from 'write-json-file';
14
+ import { writeFileSync } from 'node:fs';
14
15
  import { resolve } from 'node:path';
15
16
  import { URL } from 'node:url';
17
+ import { formatJson } from './utils/json.js';
18
+ import { getChildLogger } from './utils/log-utils.js';
16
19
  import { readJsonFileSync } from './utils/json.js';
17
- import { Validate } from './commands/index.js';
20
+ import { Validate } from './commands/validate.js';
21
+ import { SCHEMA_VERSION } from '@cyberismo/assets';
18
22
  /**
19
23
  * Represents Project's cardsConfig.json file.
20
24
  */
21
25
  export class ProjectConfiguration {
22
- static instance;
26
+ schemaVersion;
23
27
  name;
24
28
  cardKeyPrefix;
25
29
  modules;
26
30
  hubs;
31
+ logger = getChildLogger({ module: 'Project' });
27
32
  settingPath;
28
- constructor(path) {
33
+ autoSave = false;
34
+ constructor(path, autoSave = true) {
29
35
  this.name = '';
30
36
  this.settingPath = path;
31
37
  this.cardKeyPrefix = '';
32
38
  this.modules = [];
33
39
  this.hubs = [];
40
+ this.autoSave = autoSave;
34
41
  this.readSettings();
42
+ this.ensureSchemaVersionAndSave();
35
43
  }
36
- // Persists configuration file to disk.
37
- async save() {
38
- if (this.cardKeyPrefix === '') {
39
- throw new Error('wrong configuration');
40
- }
41
- try {
42
- await atomicWrite(this.settingPath, this.toJSON(), { indent: 4 });
43
- }
44
- catch (error) {
45
- if (error instanceof Error) {
46
- console.error(error.message);
44
+ // Ensures that schemaVersion is set in the project configuration.
45
+ // If missing, sets it to the current SCHEMA_VERSION and marks for auto-save.
46
+ ensureSchemaVersionAndSave() {
47
+ if (this.schemaVersion === undefined) {
48
+ this.schemaVersion = SCHEMA_VERSION;
49
+ // Auto-saves the configuration, if schema version was updated.
50
+ if (this.autoSave) {
51
+ this.saveSync();
47
52
  }
48
53
  }
49
54
  }
@@ -56,6 +61,7 @@ export class ProjectConfiguration {
56
61
  const valid = Object.prototype.hasOwnProperty.call(settings, 'cardKeyPrefix') &&
57
62
  Object.prototype.hasOwnProperty.call(settings, 'name');
58
63
  if (valid) {
64
+ this.schemaVersion = settings.schemaVersion;
59
65
  this.cardKeyPrefix = settings.cardKeyPrefix;
60
66
  this.name = settings.name;
61
67
  this.modules = settings.modules || [];
@@ -65,9 +71,24 @@ export class ProjectConfiguration {
65
71
  throw new Error(`Invalid configuration file '${this.settingPath}'`);
66
72
  }
67
73
  }
74
+ // Synchronously persists configuration file to disk.
75
+ saveSync() {
76
+ if (this.cardKeyPrefix === '') {
77
+ throw new Error('wrong configuration');
78
+ }
79
+ try {
80
+ writeFileSync(this.settingPath, formatJson(this.toJSON()), 'utf-8');
81
+ }
82
+ catch (error) {
83
+ if (error instanceof Error) {
84
+ this.logger.error({ error }, 'Cannot write project configuration');
85
+ }
86
+ }
87
+ }
68
88
  // Return the configuration as object
69
89
  toJSON() {
70
90
  return {
91
+ schemaVersion: this.schemaVersion,
71
92
  cardKeyPrefix: this.cardKeyPrefix,
72
93
  name: this.name,
73
94
  modules: this.modules,
@@ -126,6 +147,35 @@ export class ProjectConfiguration {
126
147
  this.modules.push(module);
127
148
  return this.save();
128
149
  }
150
+ /**
151
+ * Checks schema version compatibility.
152
+ * @returns Compatibility state (true - compatible; false - not) and optional message related to it.
153
+ */
154
+ checkSchemaVersion() {
155
+ if (this.schemaVersion === undefined) {
156
+ return {
157
+ isCompatible: true,
158
+ message: '',
159
+ };
160
+ }
161
+ if (this.schemaVersion < SCHEMA_VERSION) {
162
+ return {
163
+ isCompatible: false,
164
+ message: `Schema version mismatch: Project schema version (${this.schemaVersion}) is older than the application schema version (${SCHEMA_VERSION}). A migration is needed.`,
165
+ };
166
+ }
167
+ if (this.schemaVersion > SCHEMA_VERSION) {
168
+ return {
169
+ isCompatible: false,
170
+ message: `Schema version mismatch: Project schema version (${this.schemaVersion}) is newer than the application schema version (${SCHEMA_VERSION}). Please update the application.`,
171
+ };
172
+ }
173
+ // Schema versions are equal
174
+ return {
175
+ isCompatible: true,
176
+ message: '',
177
+ };
178
+ }
129
179
  /**
130
180
  * Removes a hub.
131
181
  * @param hubName Name of the hub to remove.
@@ -142,6 +192,7 @@ export class ProjectConfiguration {
142
192
  /**
143
193
  * Removes module from imported modules property.
144
194
  * @param moduleName Name of the module to remove.
195
+ * @throws If Module name is empty, or not imported to the project.
145
196
  */
146
197
  async removeModule(moduleName) {
147
198
  if (!moduleName) {
@@ -154,6 +205,20 @@ export class ProjectConfiguration {
154
205
  this.modules = this.modules.filter((item) => item.name !== moduleName);
155
206
  return this.save();
156
207
  }
208
+ // Persists configuration file to disk.
209
+ async save() {
210
+ if (this.cardKeyPrefix === '') {
211
+ throw new Error('wrong configuration');
212
+ }
213
+ try {
214
+ await atomicWrite(this.settingPath, this.toJSON(), { indent: 4 });
215
+ }
216
+ catch (error) {
217
+ if (error instanceof Error) {
218
+ this.logger.error({ error }, 'Could not write project configuration');
219
+ }
220
+ }
221
+ }
157
222
  /**
158
223
  * Changes project prefix.
159
224
  * @param newPrefix New prefix to use in the project