@cyberismo/data-handler 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 (306) hide show
  1. package/LICENSE +702 -0
  2. package/dist/card-metadata-updater.d.ts +33 -0
  3. package/dist/card-metadata-updater.js +121 -0
  4. package/dist/card-metadata-updater.js.map +1 -0
  5. package/dist/command-handler.d.ts +96 -0
  6. package/dist/command-handler.js +557 -0
  7. package/dist/command-handler.js.map +1 -0
  8. package/dist/command-manager.d.ts +43 -0
  9. package/dist/command-manager.js +73 -0
  10. package/dist/command-manager.js.map +1 -0
  11. package/dist/commands/calculate.d.ts +86 -0
  12. package/dist/commands/calculate.js +444 -0
  13. package/dist/commands/calculate.js.map +1 -0
  14. package/dist/commands/create.d.ts +114 -0
  15. package/dist/commands/create.js +389 -0
  16. package/dist/commands/create.js.map +1 -0
  17. package/dist/commands/edit.d.ts +37 -0
  18. package/dist/commands/edit.js +99 -0
  19. package/dist/commands/edit.js.map +1 -0
  20. package/dist/commands/export-site.d.ts +45 -0
  21. package/dist/commands/export-site.js +301 -0
  22. package/dist/commands/export-site.js.map +1 -0
  23. package/dist/commands/export.d.ts +53 -0
  24. package/dist/commands/export.js +251 -0
  25. package/dist/commands/export.js.map +1 -0
  26. package/dist/commands/import.d.ts +53 -0
  27. package/dist/commands/import.js +133 -0
  28. package/dist/commands/import.js.map +1 -0
  29. package/dist/commands/index.d.ts +26 -0
  30. package/dist/commands/index.js +27 -0
  31. package/dist/commands/index.js.map +1 -0
  32. package/dist/commands/move.d.ts +55 -0
  33. package/dist/commands/move.js +341 -0
  34. package/dist/commands/move.js.map +1 -0
  35. package/dist/commands/remove.d.ts +38 -0
  36. package/dist/commands/remove.js +192 -0
  37. package/dist/commands/remove.js.map +1 -0
  38. package/dist/commands/rename.d.ts +46 -0
  39. package/dist/commands/rename.js +289 -0
  40. package/dist/commands/rename.js.map +1 -0
  41. package/dist/commands/show.d.ts +124 -0
  42. package/dist/commands/show.js +345 -0
  43. package/dist/commands/show.js.map +1 -0
  44. package/dist/commands/transition.d.ts +27 -0
  45. package/dist/commands/transition.js +92 -0
  46. package/dist/commands/transition.js.map +1 -0
  47. package/dist/commands/update.d.ts +29 -0
  48. package/dist/commands/update.js +64 -0
  49. package/dist/commands/update.js.map +1 -0
  50. package/dist/commands/validate.d.ts +143 -0
  51. package/dist/commands/validate.js +689 -0
  52. package/dist/commands/validate.js.map +1 -0
  53. package/dist/containers/card-container.d.ts +44 -0
  54. package/dist/containers/card-container.js +282 -0
  55. package/dist/containers/card-container.js.map +1 -0
  56. package/dist/containers/project/project-paths.d.ts +46 -0
  57. package/dist/containers/project/project-paths.js +105 -0
  58. package/dist/containers/project/project-paths.js.map +1 -0
  59. package/dist/containers/project/resource-collector.d.ts +86 -0
  60. package/dist/containers/project/resource-collector.js +331 -0
  61. package/dist/containers/project/resource-collector.js.map +1 -0
  62. package/dist/containers/project.d.ts +351 -0
  63. package/dist/containers/project.js +896 -0
  64. package/dist/containers/project.js.map +1 -0
  65. package/dist/containers/template.d.ts +108 -0
  66. package/dist/containers/template.js +433 -0
  67. package/dist/containers/template.js.map +1 -0
  68. package/dist/exceptions/index.d.ts +19 -0
  69. package/dist/exceptions/index.js +26 -0
  70. package/dist/exceptions/index.js.map +1 -0
  71. package/dist/index.d.ts +16 -0
  72. package/dist/index.js +15 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/interfaces/adoc.d.ts +12 -0
  75. package/dist/interfaces/adoc.js +13 -0
  76. package/dist/interfaces/adoc.js.map +1 -0
  77. package/dist/interfaces/macros.d.ts +45 -0
  78. package/dist/interfaces/macros.js +13 -0
  79. package/dist/interfaces/macros.js.map +1 -0
  80. package/dist/interfaces/project-interfaces.d.ts +121 -0
  81. package/dist/interfaces/project-interfaces.js +21 -0
  82. package/dist/interfaces/project-interfaces.js.map +1 -0
  83. package/dist/interfaces/request-status-interfaces.d.ts +28 -0
  84. package/dist/interfaces/request-status-interfaces.js +20 -0
  85. package/dist/interfaces/request-status-interfaces.js.map +1 -0
  86. package/dist/interfaces/resource-interfaces.d.ts +117 -0
  87. package/dist/interfaces/resource-interfaces.js +20 -0
  88. package/dist/interfaces/resource-interfaces.js.map +1 -0
  89. package/dist/macros/base-macro.d.ts +31 -0
  90. package/dist/macros/base-macro.js +126 -0
  91. package/dist/macros/base-macro.js.map +1 -0
  92. package/dist/macros/common.d.ts +17 -0
  93. package/dist/macros/common.js +23 -0
  94. package/dist/macros/common.js.map +1 -0
  95. package/dist/macros/createCards/index.d.ts +36 -0
  96. package/dist/macros/createCards/index.js +35 -0
  97. package/dist/macros/createCards/index.js.map +1 -0
  98. package/dist/macros/createCards/metadata.d.ts +14 -0
  99. package/dist/macros/createCards/metadata.js +18 -0
  100. package/dist/macros/createCards/metadata.js.map +1 -0
  101. package/dist/macros/graph/index.d.ts +29 -0
  102. package/dist/macros/graph/index.js +91 -0
  103. package/dist/macros/graph/index.js.map +1 -0
  104. package/dist/macros/graph/metadata.d.ts +14 -0
  105. package/dist/macros/graph/metadata.js +18 -0
  106. package/dist/macros/graph/metadata.js.map +1 -0
  107. package/dist/macros/index.d.ts +93 -0
  108. package/dist/macros/index.js +237 -0
  109. package/dist/macros/index.js.map +1 -0
  110. package/dist/macros/report/index.d.ts +26 -0
  111. package/dist/macros/report/index.js +70 -0
  112. package/dist/macros/report/index.js.map +1 -0
  113. package/dist/macros/report/metadata.d.ts +14 -0
  114. package/dist/macros/report/metadata.js +18 -0
  115. package/dist/macros/report/metadata.js.map +1 -0
  116. package/dist/macros/scoreCard/index.d.ts +30 -0
  117. package/dist/macros/scoreCard/index.js +38 -0
  118. package/dist/macros/scoreCard/index.js.map +1 -0
  119. package/dist/macros/scoreCard/metadata.d.ts +14 -0
  120. package/dist/macros/scoreCard/metadata.js +18 -0
  121. package/dist/macros/scoreCard/metadata.js.map +1 -0
  122. package/dist/macros/task-queue.d.ts +46 -0
  123. package/dist/macros/task-queue.js +69 -0
  124. package/dist/macros/task-queue.js.map +1 -0
  125. package/dist/module-manager.d.ts +62 -0
  126. package/dist/module-manager.js +350 -0
  127. package/dist/module-manager.js.map +1 -0
  128. package/dist/permissions/action-guard.d.ts +28 -0
  129. package/dist/permissions/action-guard.js +61 -0
  130. package/dist/permissions/action-guard.js.map +1 -0
  131. package/dist/project-settings.d.ts +42 -0
  132. package/dist/project-settings.js +120 -0
  133. package/dist/project-settings.js.map +1 -0
  134. package/dist/resources/array-handler.d.ts +28 -0
  135. package/dist/resources/array-handler.js +116 -0
  136. package/dist/resources/array-handler.js.map +1 -0
  137. package/dist/resources/card-type-resource.d.ts +72 -0
  138. package/dist/resources/card-type-resource.js +334 -0
  139. package/dist/resources/card-type-resource.js.map +1 -0
  140. package/dist/resources/create-defaults.d.ts +81 -0
  141. package/dist/resources/create-defaults.js +184 -0
  142. package/dist/resources/create-defaults.js.map +1 -0
  143. package/dist/resources/field-type-resource.d.ts +88 -0
  144. package/dist/resources/field-type-resource.js +411 -0
  145. package/dist/resources/field-type-resource.js.map +1 -0
  146. package/dist/resources/file-resource.d.ts +50 -0
  147. package/dist/resources/file-resource.js +301 -0
  148. package/dist/resources/file-resource.js.map +1 -0
  149. package/dist/resources/folder-resource.d.ts +66 -0
  150. package/dist/resources/folder-resource.js +100 -0
  151. package/dist/resources/folder-resource.js.map +1 -0
  152. package/dist/resources/graph-model-resource.d.ts +78 -0
  153. package/dist/resources/graph-model-resource.js +164 -0
  154. package/dist/resources/graph-model-resource.js.map +1 -0
  155. package/dist/resources/graph-view-resource.d.ts +78 -0
  156. package/dist/resources/graph-view-resource.js +163 -0
  157. package/dist/resources/graph-view-resource.js.map +1 -0
  158. package/dist/resources/link-type-resource.d.ts +62 -0
  159. package/dist/resources/link-type-resource.js +150 -0
  160. package/dist/resources/link-type-resource.js.map +1 -0
  161. package/dist/resources/report-resource.d.ts +77 -0
  162. package/dist/resources/report-resource.js +171 -0
  163. package/dist/resources/report-resource.js.map +1 -0
  164. package/dist/resources/resource-object.d.ts +108 -0
  165. package/dist/resources/resource-object.js +147 -0
  166. package/dist/resources/resource-object.js.map +1 -0
  167. package/dist/resources/template-resource.d.ts +82 -0
  168. package/dist/resources/template-resource.js +173 -0
  169. package/dist/resources/template-resource.js.map +1 -0
  170. package/dist/resources/workflow-resource.d.ts +67 -0
  171. package/dist/resources/workflow-resource.js +156 -0
  172. package/dist/resources/workflow-resource.js.map +1 -0
  173. package/dist/types/queries.d.ts +142 -0
  174. package/dist/types/queries.js +16 -0
  175. package/dist/types/queries.js.map +1 -0
  176. package/dist/utils/card-utils.d.ts +34 -0
  177. package/dist/utils/card-utils.js +78 -0
  178. package/dist/utils/card-utils.js.map +1 -0
  179. package/dist/utils/clingo-fact-builder.d.ts +58 -0
  180. package/dist/utils/clingo-fact-builder.js +126 -0
  181. package/dist/utils/clingo-fact-builder.js.map +1 -0
  182. package/dist/utils/clingo-facts.d.ts +97 -0
  183. package/dist/utils/clingo-facts.js +352 -0
  184. package/dist/utils/clingo-facts.js.map +1 -0
  185. package/dist/utils/clingo-parser.d.ts +59 -0
  186. package/dist/utils/clingo-parser.js +403 -0
  187. package/dist/utils/clingo-parser.js.map +1 -0
  188. package/dist/utils/clingo-program-builder.d.ts +39 -0
  189. package/dist/utils/clingo-program-builder.js +57 -0
  190. package/dist/utils/clingo-program-builder.js.map +1 -0
  191. package/dist/utils/common-utils.d.ts +24 -0
  192. package/dist/utils/common-utils.js +47 -0
  193. package/dist/utils/common-utils.js.map +1 -0
  194. package/dist/utils/constants.d.ts +18 -0
  195. package/dist/utils/constants.js +27 -0
  196. package/dist/utils/constants.js.map +1 -0
  197. package/dist/utils/csv.d.ts +18 -0
  198. package/dist/utils/csv.js +45 -0
  199. package/dist/utils/csv.js.map +1 -0
  200. package/dist/utils/file-utils.d.ts +69 -0
  201. package/dist/utils/file-utils.js +158 -0
  202. package/dist/utils/file-utils.js.map +1 -0
  203. package/dist/utils/json.d.ts +61 -0
  204. package/dist/utils/json.js +108 -0
  205. package/dist/utils/json.js.map +1 -0
  206. package/dist/utils/lexorank.d.ts +59 -0
  207. package/dist/utils/lexorank.js +159 -0
  208. package/dist/utils/lexorank.js.map +1 -0
  209. package/dist/utils/log-utils.d.ts +40 -0
  210. package/dist/utils/log-utils.js +109 -0
  211. package/dist/utils/log-utils.js.map +1 -0
  212. package/dist/utils/random.d.ts +19 -0
  213. package/dist/utils/random.js +34 -0
  214. package/dist/utils/random.js.map +1 -0
  215. package/dist/utils/resource-utils.d.ts +45 -0
  216. package/dist/utils/resource-utils.js +137 -0
  217. package/dist/utils/resource-utils.js.map +1 -0
  218. package/dist/utils/sanitize-svg.d.ts +18 -0
  219. package/dist/utils/sanitize-svg.js +38 -0
  220. package/dist/utils/sanitize-svg.js.map +1 -0
  221. package/dist/utils/user-preferences.d.ts +64 -0
  222. package/dist/utils/user-preferences.js +106 -0
  223. package/dist/utils/user-preferences.js.map +1 -0
  224. package/dist/utils/validate.d.ts +26 -0
  225. package/dist/utils/validate.js +53 -0
  226. package/dist/utils/validate.js.map +1 -0
  227. package/dist/utils/value-utils.d.ts +58 -0
  228. package/dist/utils/value-utils.js +181 -0
  229. package/dist/utils/value-utils.js.map +1 -0
  230. package/package.json +67 -0
  231. package/src/card-metadata-updater.ts +182 -0
  232. package/src/command-handler.ts +686 -0
  233. package/src/command-manager.ts +99 -0
  234. package/src/commands/calculate.ts +591 -0
  235. package/src/commands/create.ts +559 -0
  236. package/src/commands/edit.ts +123 -0
  237. package/src/commands/export-site.ts +356 -0
  238. package/src/commands/export.ts +315 -0
  239. package/src/commands/import.ts +169 -0
  240. package/src/commands/index.ts +42 -0
  241. package/src/commands/move.ts +451 -0
  242. package/src/commands/remove.ts +244 -0
  243. package/src/commands/rename.ts +378 -0
  244. package/src/commands/show.ts +442 -0
  245. package/src/commands/transition.ts +127 -0
  246. package/src/commands/update.ts +76 -0
  247. package/src/commands/validate.ts +962 -0
  248. package/src/containers/card-container.ts +378 -0
  249. package/src/containers/project/project-paths.ts +127 -0
  250. package/src/containers/project/resource-collector.ts +379 -0
  251. package/src/containers/project.ts +1135 -0
  252. package/src/containers/template.ts +573 -0
  253. package/src/exceptions/index.ts +29 -0
  254. package/src/index.ts +33 -0
  255. package/src/interfaces/adoc.ts +18 -0
  256. package/src/interfaces/macros.ts +54 -0
  257. package/src/interfaces/project-interfaces.ts +208 -0
  258. package/src/interfaces/request-status-interfaces.ts +30 -0
  259. package/src/interfaces/resource-interfaces.ts +179 -0
  260. package/src/macros/base-macro.ts +176 -0
  261. package/src/macros/common.ts +24 -0
  262. package/src/macros/createCards/index.ts +57 -0
  263. package/src/macros/createCards/metadata.ts +21 -0
  264. package/src/macros/graph/index.ts +130 -0
  265. package/src/macros/graph/metadata.ts +21 -0
  266. package/src/macros/index.ts +321 -0
  267. package/src/macros/report/index.ts +88 -0
  268. package/src/macros/report/metadata.ts +21 -0
  269. package/src/macros/scoreCard/index.ts +55 -0
  270. package/src/macros/scoreCard/metadata.ts +21 -0
  271. package/src/macros/task-queue.ts +79 -0
  272. package/src/module-manager.ts +443 -0
  273. package/src/permissions/action-guard.ts +77 -0
  274. package/src/project-settings.ts +140 -0
  275. package/src/resources/array-handler.ts +141 -0
  276. package/src/resources/card-type-resource.ts +455 -0
  277. package/src/resources/create-defaults.ts +216 -0
  278. package/src/resources/field-type-resource.ts +533 -0
  279. package/src/resources/file-resource.ts +433 -0
  280. package/src/resources/folder-resource.ts +140 -0
  281. package/src/resources/graph-model-resource.ts +205 -0
  282. package/src/resources/graph-view-resource.ts +199 -0
  283. package/src/resources/link-type-resource.ts +191 -0
  284. package/src/resources/report-resource.ts +224 -0
  285. package/src/resources/resource-object.ts +246 -0
  286. package/src/resources/template-resource.ts +210 -0
  287. package/src/resources/workflow-resource.ts +205 -0
  288. package/src/types/queries.ts +149 -0
  289. package/src/utils/card-utils.ts +83 -0
  290. package/src/utils/clingo-fact-builder.ts +167 -0
  291. package/src/utils/clingo-facts.ts +550 -0
  292. package/src/utils/clingo-parser.ts +519 -0
  293. package/src/utils/clingo-program-builder.ts +71 -0
  294. package/src/utils/common-utils.ts +54 -0
  295. package/src/utils/constants.ts +32 -0
  296. package/src/utils/csv.ts +53 -0
  297. package/src/utils/file-utils.ts +182 -0
  298. package/src/utils/json.ts +118 -0
  299. package/src/utils/lexorank.ts +180 -0
  300. package/src/utils/log-utils.ts +127 -0
  301. package/src/utils/random.ts +37 -0
  302. package/src/utils/resource-utils.ts +180 -0
  303. package/src/utils/sanitize-svg.ts +46 -0
  304. package/src/utils/user-preferences.ts +126 -0
  305. package/src/utils/validate.ts +66 -0
  306. package/src/utils/value-utils.ts +189 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.js","sourceRoot":"","sources":["../../src/commands/move.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2024
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU Affero General Public License version 3 as published by
6
+ the Free Software Foundation.
7
+ This program is distributed in the hope that it will be useful, but WITHOUT
8
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
+ FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
10
+ details. You should have received a copy of the GNU Affero General Public
11
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
+ */
13
+ import type { Calculate } from './index.js';
14
+ import { Project } from '../containers/project.js';
15
+ import type { RemovableResourceTypes } from '../interfaces/project-interfaces.js';
16
+ /**
17
+ * Remove command.
18
+ */
19
+ export declare class Remove {
20
+ private project;
21
+ private calculateCmd;
22
+ constructor(project: Project, calculateCmd: Calculate);
23
+ private projectResource;
24
+ private removeAttachment;
25
+ private removeCard;
26
+ private removeLabel;
27
+ private removeLink;
28
+ private removeModule;
29
+ /**
30
+ * Removes either attachment, card, imported module, link or resource from project.
31
+ * @param type Type of resource
32
+ * @param targetName Card id, resource name, or other identifying item
33
+ * @param rest Additional arguments
34
+ * @note removing attachment requires card id and attachment filename
35
+ * @note removing link requires card ids of source card, and optionally link type and link description
36
+ */
37
+ remove(type: RemovableResourceTypes, targetName: string, ...rest: any[]): Promise<void>;
38
+ }
@@ -0,0 +1,192 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2024
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU Affero General Public License version 3 as published by
6
+ the Free Software Foundation.
7
+ This program is distributed in the hope that it will be useful, but WITHOUT
8
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
+ FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
10
+ details. You should have received a copy of the GNU Affero General Public
11
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
+ */
13
+ // node
14
+ import { join, sep } from 'node:path';
15
+ import { ActionGuard } from '../permissions/action-guard.js';
16
+ import { deleteDir, deleteFile } from '../utils/file-utils.js';
17
+ import { Project } from '../containers/project.js';
18
+ import { resourceName } from '../utils/resource-utils.js';
19
+ const MODULES_PATH = `${sep}modules${sep}`;
20
+ /**
21
+ * Remove command.
22
+ */
23
+ export class Remove {
24
+ project;
25
+ calculateCmd;
26
+ constructor(project, calculateCmd) {
27
+ this.project = project;
28
+ this.calculateCmd = calculateCmd;
29
+ }
30
+ // True, if resource is a project resource
31
+ projectResource(type) {
32
+ return (type === 'cardType' ||
33
+ type === 'fieldType' ||
34
+ type === 'graphModel' ||
35
+ type === 'graphView' ||
36
+ type === 'linkType' ||
37
+ type === 'report' ||
38
+ type === 'template' ||
39
+ type === 'workflow');
40
+ }
41
+ // Removes attachment from template or project card
42
+ async removeAttachment(cardKey, attachment) {
43
+ if (!attachment) {
44
+ throw new Error(`Attachment filename required`);
45
+ }
46
+ const attachmentFolder = await this.project.cardAttachmentFolder(cardKey);
47
+ if (!attachmentFolder) {
48
+ throw new Error(`Card '${cardKey}' not found`);
49
+ }
50
+ // Imported templates cannot be modified.
51
+ if (attachmentFolder.includes(MODULES_PATH)) {
52
+ throw new Error(`Cannot modify imported module`);
53
+ }
54
+ // Attachment's reside in 'a' folders.
55
+ const success = await deleteFile(join(attachmentFolder, attachment));
56
+ if (!success) {
57
+ throw new Error('No such file');
58
+ }
59
+ }
60
+ // Removes card from project or template
61
+ async removeCard(cardKey) {
62
+ const cardFolder = await this.project.cardFolder(cardKey);
63
+ if (!cardFolder) {
64
+ throw new Error(`Card '${cardKey}' not found`);
65
+ }
66
+ // Imported templates cannot be modified.
67
+ if (cardFolder.includes(MODULES_PATH)) {
68
+ throw new Error(`Cannot modify imported module`);
69
+ }
70
+ // Make sure card can be removed if it's a project card
71
+ if (!(await this.project.isTemplateCard(cardKey))) {
72
+ const actionGuard = new ActionGuard(this.calculateCmd);
73
+ await actionGuard.checkPermission('delete', cardKey);
74
+ }
75
+ // If card is destination of a link, remove the link.
76
+ const allCards = await this.project.cards(this.project.paths.cardRootFolder, {
77
+ metadata: true,
78
+ });
79
+ const promiseContainer = [];
80
+ allCards.filter((item) => {
81
+ item.metadata?.links.forEach(async (link) => {
82
+ if (link.cardKey === cardKey) {
83
+ promiseContainer.push(this.removeLink(item.key, link.cardKey));
84
+ }
85
+ });
86
+ });
87
+ await Promise.all(promiseContainer);
88
+ // Calculations need to be updated before card is removed.
89
+ const card = await this.project.findSpecificCard(cardKey, {
90
+ metadata: true,
91
+ children: true,
92
+ content: false,
93
+ parent: false,
94
+ });
95
+ if (card) {
96
+ await this.calculateCmd.handleDeleteCard(card);
97
+ }
98
+ await deleteDir(cardFolder);
99
+ }
100
+ // removes label from project
101
+ async removeLabel(cardKey, label) {
102
+ const card = await this.project.findSpecificCard(cardKey, {
103
+ metadata: true,
104
+ });
105
+ if (!card) {
106
+ throw new Error(`Card '${cardKey}' does not exist in the project`);
107
+ }
108
+ let labels = card.metadata?.labels ?? [];
109
+ if (!label && labels.length !== 1) {
110
+ throw new Error(`No label given and ${labels.length === 0 ? 'there are no labels' : 'there are multiple labels'}`);
111
+ }
112
+ if (labels.length !== 1 && !labels.includes(label)) {
113
+ throw new Error(`Label '${label}' does not exist in card ${cardKey}`);
114
+ }
115
+ // remove all labels if there is only 1, otherwise remove all given labels
116
+ labels =
117
+ labels.length === 1
118
+ ? []
119
+ : labels.filter((labelItem) => labelItem !== label);
120
+ return this.project.updateCardMetadataKey(cardKey, 'labels', labels);
121
+ }
122
+ // Removes link from project.
123
+ async removeLink(sourceCardKey, destinationCardKey, linkType, linkDescription) {
124
+ const sourceCard = await this.project.findSpecificCard(sourceCardKey, {
125
+ metadata: true,
126
+ });
127
+ if (!sourceCard) {
128
+ throw new Error(`Card '${sourceCardKey}' not found`);
129
+ }
130
+ const link = sourceCard.metadata?.links.find((l) => l.cardKey === destinationCardKey &&
131
+ (!linkType || l.linkType === linkType) &&
132
+ (!linkDescription || l.linkDescription === linkDescription));
133
+ if (!link) {
134
+ throw new Error(linkType
135
+ ? `Link from '${sourceCardKey}' to '${destinationCardKey}' with link type '${linkType}' not found`
136
+ : `Link from '${sourceCardKey}' to '${destinationCardKey}' not found`);
137
+ }
138
+ const newLinks = sourceCard.metadata?.links.filter((l) => l.cardKey !== destinationCardKey ||
139
+ (linkType && l.linkType !== linkType) ||
140
+ (linkDescription && l.linkDescription !== linkDescription));
141
+ await this.project.updateCardMetadataKey(sourceCardKey, 'links', newLinks);
142
+ }
143
+ // Removes modules from project
144
+ async removeModule(moduleName) {
145
+ const module = await this.project.module(moduleName);
146
+ if (!module) {
147
+ throw new Error(`Module '${moduleName}' not found`);
148
+ }
149
+ await deleteDir(module.path);
150
+ await this.project.removeModule(moduleName);
151
+ }
152
+ /**
153
+ * Removes either attachment, card, imported module, link or resource from project.
154
+ * @param type Type of resource
155
+ * @param targetName Card id, resource name, or other identifying item
156
+ * @param rest Additional arguments
157
+ * @note removing attachment requires card id and attachment filename
158
+ * @note removing link requires card ids of source card, and optionally link type and link description
159
+ */
160
+ async remove(type, targetName, ...rest // eslint-disable-line @typescript-eslint/no-explicit-any
161
+ ) {
162
+ const strictNameCheck = true;
163
+ if (type === 'attachment' && rest.length !== 1 && !rest[0]) {
164
+ throw new Error(`Input validation error: must pass argument 'detail' if requesting to remove attachment`);
165
+ }
166
+ if (type === 'link' &&
167
+ [2, 3].includes(rest.length) &&
168
+ !rest[0] &&
169
+ !rest[1]) {
170
+ throw new Error(`Input validation error: must pass arguments 'source', 'destination' and possibly 'linkType' if requesting to remove link`);
171
+ }
172
+ if (this.projectResource(type)) {
173
+ const resource = Project.resourceObject(this.project, resourceName(targetName, strictNameCheck));
174
+ return resource?.delete();
175
+ }
176
+ else {
177
+ // Something else than resources...
178
+ if (type == 'attachment')
179
+ return this.removeAttachment(targetName, rest[0]);
180
+ else if (type == 'card')
181
+ return this.removeCard(targetName);
182
+ else if (type == 'link')
183
+ return this.removeLink(targetName, rest[0], rest[1], rest.at(2));
184
+ else if (type == 'module')
185
+ return this.removeModule(targetName);
186
+ else if (type == 'label')
187
+ return this.removeLabel(targetName, rest[0]);
188
+ }
189
+ throw new Error(`Unknown resource type '${type}'`);
190
+ }
191
+ }
192
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2024
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU Affero General Public License version 3 as published by
6
+ the Free Software Foundation.
7
+ This program is distributed in the hope that it will be useful, but WITHOUT
8
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
+ FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
10
+ details. You should have received a copy of the GNU Affero General Public
11
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
+ */
13
+ import type { Calculate } from './index.js';
14
+ import { type Project } from '../containers/project.js';
15
+ /**
16
+ * Class that handles 'rename' command.
17
+ */
18
+ export declare class Rename {
19
+ private project;
20
+ private calculateCmd;
21
+ private from;
22
+ private to;
23
+ constructor(project: Project, calculateCmd: Calculate);
24
+ private renameCard;
25
+ private renameCards;
26
+ private scanExtensions;
27
+ private updateCardAttachments;
28
+ private updateCardMetadata;
29
+ private updateFiles;
30
+ private updateResourceName;
31
+ private updateCardTypeMetadata;
32
+ private updateFieldTypeMetadata;
33
+ private updateGraphModelMetadata;
34
+ private updateGraphViewMetadata;
35
+ private updateLinkTypeMetadata;
36
+ private updateReport;
37
+ private updateTemplate;
38
+ private updateWorkflowMetadata;
39
+ /**
40
+ * Renames project prefix.
41
+ * @throws if trying to use empty 'to'
42
+ * @throws if trying to rename with current name
43
+ * @param to Card id, or template name
44
+ */
45
+ rename(to: string): Promise<void>;
46
+ }
@@ -0,0 +1,289 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2024
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU Affero General Public License version 3 as published by
6
+ the Free Software Foundation.
7
+ This program is distributed in the hope that it will be useful, but WITHOUT
8
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
+ FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
10
+ details. You should have received a copy of the GNU Affero General Public
11
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
+ */
13
+ // node
14
+ import { assert } from 'node:console';
15
+ import { join } from 'node:path';
16
+ import { rename, readdir, readFile, writeFile } from 'node:fs/promises';
17
+ import { isTemplateCard } from '../utils/card-utils.js';
18
+ import { ResourcesFrom } from '../containers/project.js';
19
+ import { resourceName } from '../utils/resource-utils.js';
20
+ import { Template } from '../containers/template.js';
21
+ import { CardTypeResource } from '../resources/card-type-resource.js';
22
+ import { FieldTypeResource } from '../resources/field-type-resource.js';
23
+ import { GraphModelResource } from '../resources/graph-model-resource.js';
24
+ import { GraphViewResource } from '../resources/graph-view-resource.js';
25
+ import { LinkTypeResource } from '../resources/link-type-resource.js';
26
+ import { ReportResource } from '../resources/report-resource.js';
27
+ import { TemplateResource } from '../resources/template-resource.js';
28
+ import { WorkflowResource } from '../resources/workflow-resource.js';
29
+ const FILE_TYPES_WITH_PREFIX_REFERENCES = ['adoc', 'hbs', 'json', 'lp'];
30
+ /**
31
+ * Class that handles 'rename' command.
32
+ */
33
+ export class Rename {
34
+ project;
35
+ calculateCmd;
36
+ from = '';
37
+ to = '';
38
+ constructor(project, calculateCmd) {
39
+ this.project = project;
40
+ this.calculateCmd = calculateCmd;
41
+ }
42
+ // Renames a card and all of its attachments (if it is a project card).
43
+ async renameCard(re, card) {
44
+ // Update card's metadata
45
+ await this.updateCardMetadata(card);
46
+ // Then rename card file.
47
+ const newCardPath = card.path.replace(re, this.to);
48
+ await rename(card.path, newCardPath);
49
+ }
50
+ // Update all the cards in a container.
51
+ // Sort cards so that cards that deeper in file hierarchy are renamed first.
52
+ async renameCards(cards) {
53
+ // Sort cards by path length (so that renaming starts from children)
54
+ function sortCards(a, b) {
55
+ if (a.path.length > b.path.length) {
56
+ return -1;
57
+ }
58
+ if (a.path.length < b.path.length) {
59
+ return 1;
60
+ }
61
+ return 0;
62
+ }
63
+ // Ensure that only last occurrence is replaced, since path can contain "project prefixes" that are not to be touched.
64
+ // E.g. /Users/smith/projects/card-projects/smith-project/cardRoot/smith_sdhgsd7; change 'smith' card key to 'miller'
65
+ // --> only the last 'smith' should be replaced with 'miller'.
66
+ const re = new RegExp(`${this.from}(?!.*${this.from})`);
67
+ const sortedCards = cards.sort((a, b) => sortCards(a, b));
68
+ // Cannot do this parallel, since cards deeper in the hierarchy needs to be renamed first.
69
+ for (const card of sortedCards) {
70
+ // Attachments
71
+ card.content = await this.updateCardAttachments(re, card);
72
+ await this.renameCard(re, card);
73
+ }
74
+ }
75
+ // Checks if file's extension is one that might contain project prefix references.
76
+ scanExtensions(fileName) {
77
+ // If file does not contain a dot, then it cannot have extension.
78
+ // Disqualify all files starting with dot as well.
79
+ if (!fileName || !fileName.includes('.') || fileName.at(0) === '.') {
80
+ return false;
81
+ }
82
+ const extension = fileName.split('.').pop() || '';
83
+ return FILE_TYPES_WITH_PREFIX_REFERENCES.includes(extension);
84
+ }
85
+ // Update card's attachments (both the files and the references to them)
86
+ async updateCardAttachments(re, card) {
87
+ if (!isTemplateCard(card)) {
88
+ const attachments = card.attachments ? card.attachments : [];
89
+ await Promise.all(attachments.map(async (attachment) => {
90
+ const newAttachmentFileName = attachment.fileName.replace(re, this.to);
91
+ await rename(join(attachment.path, attachment.fileName), join(attachment.path, newAttachmentFileName));
92
+ const attachmentRe = new RegExp(`image::${attachment.fileName}`, 'g');
93
+ card.content = card.content?.replace(attachmentRe, `image::${newAttachmentFileName}`);
94
+ }));
95
+ }
96
+ return card.content;
97
+ }
98
+ // Update card's metadata.
99
+ async updateCardMetadata(card) {
100
+ if (card.metadata?.cardType && card.metadata?.cardType.length > 0) {
101
+ const { identifier, prefix, type } = resourceName(card.metadata.cardType);
102
+ if (prefix === this.from) {
103
+ card.metadata.cardType = `${this.project.configuration.cardKeyPrefix}/${type}/${identifier}`;
104
+ // Update card' custom fields
105
+ const keys = Object.keys(card.metadata);
106
+ for (const oldKey of keys) {
107
+ if (oldKey.startsWith(`${this.from}/fieldTypes`)) {
108
+ const newKey = this.updateResourceName(oldKey);
109
+ // one-liner to remove the old key and add a new one
110
+ delete Object.assign(card.metadata, {
111
+ [newKey]: card.metadata[oldKey],
112
+ })[oldKey];
113
+ }
114
+ }
115
+ await this.project.updateCardMetadata(card, card.metadata);
116
+ }
117
+ }
118
+ }
119
+ async updateFiles(location) {
120
+ const conversionMap = new Map([
121
+ [`${this.from}/calculations/`, `${this.to}/calculations/`],
122
+ [`${this.from}/cardTypes/`, `${this.to}/cardTypes/`],
123
+ [`${this.from}/fieldTypes/`, `${this.to}/fieldTypes/`],
124
+ [`${this.from}/linkTypes/`, `${this.to}/linkTypes/`],
125
+ [`${this.from}/reports/`, `${this.to}/reports/`],
126
+ [`${this.from}/templates/`, `${this.to}/templates/`],
127
+ [`${this.from}/workflows/`, `${this.to}/workflows/`],
128
+ [`${this.from}_`, `${this.to}_`],
129
+ ]);
130
+ // Collect all supported file types from the location.
131
+ const files = (await readdir(location, {
132
+ recursive: true,
133
+ withFileTypes: true,
134
+ })).filter((item) => item.isFile() &&
135
+ item.name !== '.schema' &&
136
+ this.scanExtensions(item.name));
137
+ // Then replace all values that match in the conversion map.
138
+ files.forEach(async (item) => {
139
+ const target = join(item.parentPath, item.name);
140
+ let fileContent = await readFile(target, {
141
+ encoding: 'utf-8',
142
+ });
143
+ for (const [key, value] of conversionMap) {
144
+ const re = new RegExp(key, 'g');
145
+ fileContent = fileContent.replaceAll(re, value);
146
+ }
147
+ await writeFile(target, fileContent);
148
+ });
149
+ }
150
+ // Changes the name of a resource to match the new prefix.
151
+ updateResourceName(name) {
152
+ const { identifier, prefix, type } = resourceName(name);
153
+ // do not rename module resources
154
+ return this.from === prefix
155
+ ? `${this.project.configuration.cardKeyPrefix}/${type}/${identifier}`
156
+ : name;
157
+ }
158
+ // @todo: merge all update-functions
159
+ // Updates card type's metadata.
160
+ async updateCardTypeMetadata(cardTypeName) {
161
+ const cardType = new CardTypeResource(this.project, resourceName(cardTypeName));
162
+ return cardType.rename(resourceName(this.updateResourceName(cardTypeName)));
163
+ }
164
+ // Updates field type's metadata.
165
+ async updateFieldTypeMetadata(fieldTypeName) {
166
+ const fieldType = new FieldTypeResource(this.project, resourceName(fieldTypeName));
167
+ return fieldType.rename(resourceName(this.updateResourceName(fieldTypeName)));
168
+ }
169
+ // Updates graph model's metadata.
170
+ async updateGraphModelMetadata(graphModelName) {
171
+ const graphModel = new GraphModelResource(this.project, resourceName(graphModelName));
172
+ return graphModel.rename(resourceName(this.updateResourceName(graphModelName)));
173
+ }
174
+ // Updates graph view's metadata.
175
+ async updateGraphViewMetadata(graphViewName) {
176
+ const graphView = new GraphViewResource(this.project, resourceName(graphViewName));
177
+ return graphView.rename(resourceName(this.updateResourceName(graphViewName)));
178
+ }
179
+ // Updates link type's metadata.
180
+ async updateLinkTypeMetadata(linkTypeName) {
181
+ const linkType = new LinkTypeResource(this.project, resourceName(linkTypeName));
182
+ return linkType.rename(resourceName(this.updateResourceName(linkTypeName)));
183
+ }
184
+ // Updates reports' metadata.
185
+ async updateReport(reportName) {
186
+ const report = new ReportResource(this.project, resourceName(reportName));
187
+ return report.rename(resourceName(this.updateResourceName(reportName)));
188
+ }
189
+ // Rename templates.
190
+ async updateTemplate(templateName) {
191
+ const template = new TemplateResource(this.project, resourceName(templateName));
192
+ return template.rename(resourceName(this.updateResourceName(templateName)));
193
+ }
194
+ // Rename workflows.
195
+ async updateWorkflowMetadata(workflowName) {
196
+ const workflow = new WorkflowResource(this.project, resourceName(workflowName));
197
+ return workflow.rename(resourceName(this.updateResourceName(workflowName)));
198
+ }
199
+ /**
200
+ * Renames project prefix.
201
+ * @throws if trying to use empty 'to'
202
+ * @throws if trying to rename with current name
203
+ * @param to Card id, or template name
204
+ */
205
+ async rename(to) {
206
+ if (!to) {
207
+ throw new Error(`Input validation error: empty 'to' is not allowed`);
208
+ }
209
+ const cardContent = {
210
+ metadata: true,
211
+ attachments: true,
212
+ content: true,
213
+ };
214
+ this.from = this.project.configuration.cardKeyPrefix;
215
+ this.to = to;
216
+ assert(this.from !== '');
217
+ assert(this.to !== '');
218
+ if (this.from === this.to) {
219
+ throw new Error(`Project prefix is already '${this.from}'`);
220
+ }
221
+ // Change project prefix to project settings.
222
+ await this.project.configuration.setCardPrefix(to);
223
+ console.info(`Rename: New prefix: '${this.project.projectPrefix}'`);
224
+ // Update the resources collection, since project prefix has changed.
225
+ this.project.collectLocalResources();
226
+ // Rename local resources.
227
+ // It is better to rename the resources in this order: card types, field types, then others
228
+ // Rename all card types and custom fields in them.
229
+ const cardTypes = await this.project.cardTypes(ResourcesFrom.localOnly);
230
+ for (const cardType of cardTypes) {
231
+ await this.updateCardTypeMetadata(cardType.name);
232
+ }
233
+ console.info('Updated card types');
234
+ const workflows = await this.project.workflows(ResourcesFrom.localOnly);
235
+ for (const workflow of workflows) {
236
+ await this.updateWorkflowMetadata(workflow.name);
237
+ }
238
+ console.info('Updated workflows');
239
+ const fieldTypes = await this.project.fieldTypes(ResourcesFrom.localOnly);
240
+ for (const fieldType of fieldTypes) {
241
+ await this.updateFieldTypeMetadata(fieldType.name);
242
+ }
243
+ console.info('Updated field types');
244
+ const graphModels = await this.project.graphModels(ResourcesFrom.localOnly);
245
+ for (const graphModel of graphModels) {
246
+ await this.updateGraphModelMetadata(graphModel.name);
247
+ }
248
+ console.info('Updated graph models');
249
+ const graphViews = await this.project.graphViews(ResourcesFrom.localOnly);
250
+ for (const graphView of graphViews) {
251
+ await this.updateGraphViewMetadata(graphView.name);
252
+ }
253
+ console.info('Updated graph views');
254
+ const linkTypes = await this.project.linkTypes(ResourcesFrom.localOnly);
255
+ for (const linkType of linkTypes) {
256
+ await this.updateLinkTypeMetadata(linkType.name);
257
+ }
258
+ console.info('Updated link types');
259
+ const reports = await this.project.reports(ResourcesFrom.localOnly);
260
+ for (const report of reports) {
261
+ await this.updateReport(report.name);
262
+ }
263
+ console.info('Updated reports');
264
+ let templates = await this.project.templates(ResourcesFrom.localOnly);
265
+ for (const template of templates) {
266
+ await this.updateTemplate(template.name);
267
+ }
268
+ console.info('Updated templates');
269
+ // Rename all local template cards.
270
+ templates = await this.project.templates(ResourcesFrom.localOnly);
271
+ for (const template of templates) {
272
+ const templateObject = new Template(this.project, template);
273
+ await this.renameCards(await templateObject.cards('', cardContent));
274
+ }
275
+ console.info('Renamed template cards and updated the content');
276
+ // Rename all project cards.
277
+ await this.renameCards(await this.project.cards(this.project.paths.cardRootFolder, cardContent));
278
+ console.info('Renamed project cards and updated the content');
279
+ await this.updateFiles(this.project.paths.cardRootFolder);
280
+ console.info('Renamed all remaining references in cardRoot folder');
281
+ await this.updateFiles(this.project.paths.resourcesFolder);
282
+ console.info('Renamed all remaining references in .cards folder');
283
+ // It is best that the resources are re-collected after all the renaming has occurred.
284
+ this.project.collectLocalResources();
285
+ console.info('Collected renamed resources');
286
+ return this.calculateCmd.generate();
287
+ }
288
+ }
289
+ //# sourceMappingURL=rename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename.js","sourceRoot":"","sources":["../../src/commands/rename.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;EAWE;AAEF,OAAO;AACP,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIxE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAgB,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,MAAM,iCAAiC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,OAAO,MAAM;IAKP;IACA;IALF,IAAI,GAAW,EAAE,CAAC;IAClB,EAAE,GAAW,EAAE,CAAC;IAExB,YACU,OAAgB,EAChB,YAAuB;QADvB,YAAO,GAAP,OAAO,CAAS;QAChB,iBAAY,GAAZ,YAAY,CAAW;IAC9B,CAAC;IAEJ,uEAAuE;IAC/D,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,IAAU;QAC7C,yBAAyB;QACzB,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAEpC,yBAAyB;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,uCAAuC;IACvC,4EAA4E;IACpE,KAAK,CAAC,WAAW,CAAC,KAAa;QACrC,oEAAoE;QACpE,SAAS,SAAS,CAAC,CAAO,EAAE,CAAO;YACjC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAClC,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAClC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,sHAAsH;QACtH,uHAAuH;QACvH,gEAAgE;QAChE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1D,0FAA0F;QAC1F,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,cAAc;YACd,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,kFAAkF;IAC1E,cAAc,CAAC,QAAgB;QACrC,iEAAiE;QACjE,kDAAkD;QAClD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAClD,OAAO,iCAAiC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED,wEAAwE;IAChE,KAAK,CAAC,qBAAqB,CAAC,EAAU,EAAE,IAAU;QACxD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,MAAM,OAAO,CAAC,GAAG,CACf,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;gBACnC,MAAM,qBAAqB,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CACvD,EAAE,EACF,IAAI,CAAC,EAAE,CACR,CAAC;gBACF,MAAM,MAAM,CACV,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAC7C,CAAC;gBAEF,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,UAAU,UAAU,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;gBACtE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAClC,YAAY,EACZ,UAAU,qBAAqB,EAAE,CAClC,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,0BAA0B;IAClB,KAAK,CAAC,kBAAkB,CAAC,IAAU;QACzC,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC1E,IAAI,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC7F,6BAA6B;gBAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxC,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;oBAC1B,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC;wBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;wBAC/C,oDAAoD;wBACpD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;4BAClC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;yBAChC,CAAC,CAAC,MAAM,CAAC,CAAC;oBACb,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,QAAgB;QACxC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;YAC5B,CAAC,GAAG,IAAI,CAAC,IAAI,gBAAgB,EAAE,GAAG,IAAI,CAAC,EAAE,gBAAgB,CAAC;YAC1D,CAAC,GAAG,IAAI,CAAC,IAAI,aAAa,EAAE,GAAG,IAAI,CAAC,EAAE,aAAa,CAAC;YACpD,CAAC,GAAG,IAAI,CAAC,IAAI,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,cAAc,CAAC;YACtD,CAAC,GAAG,IAAI,CAAC,IAAI,aAAa,EAAE,GAAG,IAAI,CAAC,EAAE,aAAa,CAAC;YACpD,CAAC,GAAG,IAAI,CAAC,IAAI,WAAW,EAAE,GAAG,IAAI,CAAC,EAAE,WAAW,CAAC;YAChD,CAAC,GAAG,IAAI,CAAC,IAAI,aAAa,EAAE,GAAG,IAAI,CAAC,EAAE,aAAa,CAAC;YACpD,CAAC,GAAG,IAAI,CAAC,IAAI,aAAa,EAAE,GAAG,IAAI,CAAC,EAAE,aAAa,CAAC;YACpD,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;SACjC,CAAC,CAAC;QACH,sDAAsD;QACtD,MAAM,KAAK,GAAG,CACZ,MAAM,OAAO,CAAC,QAAQ,EAAE;YACtB,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;SACpB,CAAC,CACH,CAAC,MAAM,CACN,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,IAAI,KAAK,SAAS;YACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,CAAC;QAEF,4DAA4D;QAC5D,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE;gBACvC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;gBACzC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAChC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0DAA0D;IAClD,kBAAkB,CAAC,IAAY;QACrC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACxD,iCAAiC;QACjC,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;YACzB,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,IAAI,UAAU,EAAE;YACrE,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,oCAAoC;IACpC,gCAAgC;IACxB,KAAK,CAAC,sBAAsB,CAAC,YAAoB;QACvD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,CAAC,OAAO,EACZ,YAAY,CAAC,YAAY,CAAC,CAC3B,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,iCAAiC;IACzB,KAAK,CAAC,uBAAuB,CAAC,aAAqB;QACzD,MAAM,SAAS,GAAG,IAAI,iBAAiB,CACrC,IAAI,CAAC,OAAO,EACZ,YAAY,CAAC,aAAa,CAAC,CAC5B,CAAC;QACF,OAAO,SAAS,CAAC,MAAM,CACrB,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CACrD,CAAC;IACJ,CAAC;IAED,kCAAkC;IAC1B,KAAK,CAAC,wBAAwB,CAAC,cAAsB;QAC3D,MAAM,UAAU,GAAG,IAAI,kBAAkB,CACvC,IAAI,CAAC,OAAO,EACZ,YAAY,CAAC,cAAc,CAAC,CAC7B,CAAC;QACF,OAAO,UAAU,CAAC,MAAM,CACtB,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC;IAED,iCAAiC;IACzB,KAAK,CAAC,uBAAuB,CAAC,aAAqB;QACzD,MAAM,SAAS,GAAG,IAAI,iBAAiB,CACrC,IAAI,CAAC,OAAO,EACZ,YAAY,CAAC,aAAa,CAAC,CAC5B,CAAC;QACF,OAAO,SAAS,CAAC,MAAM,CACrB,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CACrD,CAAC;IACJ,CAAC;IAED,gCAAgC;IACxB,KAAK,CAAC,sBAAsB,CAAC,YAAoB;QACvD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,CAAC,OAAO,EACZ,YAAY,CAAC,YAAY,CAAC,CAC3B,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,6BAA6B;IACrB,KAAK,CAAC,YAAY,CAAC,UAAkB;QAC3C,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,oBAAoB;IACZ,KAAK,CAAC,cAAc,CAAC,YAAoB;QAC/C,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,CAAC,OAAO,EACZ,YAAY,CAAC,YAAY,CAAC,CAC3B,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,oBAAoB;IACZ,KAAK,CAAC,sBAAsB,CAAC,YAAoB;QACvD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,CAAC,OAAO,EACZ,YAAY,CAAC,YAAY,CAAC,CAC3B,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,EAAU;QAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,WAAW,GAAG;YAClB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC;QACrD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9D,CAAC;QAED,6CAA6C;QAC7C,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;QACpE,qEAAqE;QACrE,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAErC,0BAA0B;QAC1B,2FAA2F;QAE3F,mDAAmD;QACnD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACxE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEnC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACxE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAElC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEpC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC5E,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAErC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACxE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACpE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEhC,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACtE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAElC,mCAAmC;QACnC,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAClE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5D,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAE/D,4BAA4B;QAC5B,MAAM,IAAI,CAAC,WAAW,CACpB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC,CACzE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAElE,sFAAsF;QACtF,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;CACF"}