@powerhousedao/codegen 5.1.0-dev.2 → 5.1.0-dev.4

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 (234) hide show
  1. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +3 -3
  2. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js +1 -3
  3. package/dist/src/codegen/__tests__/config.d.ts +1 -0
  4. package/dist/src/codegen/__tests__/config.d.ts.map +1 -1
  5. package/dist/src/codegen/__tests__/config.js +1 -0
  6. package/dist/src/codegen/__tests__/config.js.map +1 -1
  7. package/dist/src/codegen/__tests__/generate-doc-model.test.js +39 -14
  8. package/dist/src/codegen/__tests__/generate-doc-model.test.js.map +1 -1
  9. package/dist/src/codegen/__tests__/generate-drive-editor.test.js +6 -3
  10. package/dist/src/codegen/__tests__/generate-drive-editor.test.js.map +1 -1
  11. package/dist/src/codegen/__tests__/generate-editor.test.js +8 -7
  12. package/dist/src/codegen/__tests__/generate-editor.test.js.map +1 -1
  13. package/dist/src/codegen/generate.d.ts +26 -6
  14. package/dist/src/codegen/generate.d.ts.map +1 -1
  15. package/dist/src/codegen/generate.js +139 -40
  16. package/dist/src/codegen/generate.js.map +1 -1
  17. package/dist/src/codegen/hygen.d.ts +1 -8
  18. package/dist/src/codegen/hygen.d.ts.map +1 -1
  19. package/dist/src/codegen/hygen.js +11 -67
  20. package/dist/src/codegen/hygen.js.map +1 -1
  21. package/dist/src/index.d.ts +0 -1
  22. package/dist/src/index.d.ts.map +1 -1
  23. package/dist/src/index.js +0 -1
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/ts-morph-utils/constants.d.ts +18 -0
  26. package/dist/src/ts-morph-utils/constants.d.ts.map +1 -0
  27. package/dist/src/ts-morph-utils/constants.js +18 -0
  28. package/dist/src/ts-morph-utils/constants.js.map +1 -0
  29. package/dist/src/ts-morph-utils/file-builders/document-editor.d.ts +28 -0
  30. package/dist/src/ts-morph-utils/file-builders/document-editor.d.ts.map +1 -0
  31. package/dist/src/ts-morph-utils/file-builders/document-editor.js +305 -0
  32. package/dist/src/ts-morph-utils/file-builders/document-editor.js.map +1 -0
  33. package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.d.ts +3 -0
  34. package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.d.ts.map +1 -0
  35. package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.js +207 -0
  36. package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.js.map +1 -0
  37. package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.d.ts +3 -0
  38. package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.d.ts.map +1 -0
  39. package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.js +58 -0
  40. package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.js.map +1 -0
  41. package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.d.ts +3 -0
  42. package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.d.ts.map +1 -0
  43. package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.js +64 -0
  44. package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.js.map +1 -0
  45. package/dist/src/ts-morph-utils/file-builders/document-model/types.d.ts +12 -0
  46. package/dist/src/ts-morph-utils/file-builders/document-model/types.d.ts.map +1 -0
  47. package/dist/src/ts-morph-utils/file-builders/document-model/types.js +2 -0
  48. package/dist/src/ts-morph-utils/file-builders/document-model/types.js.map +1 -0
  49. package/dist/src/ts-morph-utils/file-builders/document-model.d.ts +8 -0
  50. package/dist/src/ts-morph-utils/file-builders/document-model.d.ts.map +1 -0
  51. package/dist/src/ts-morph-utils/file-builders/document-model.js +68 -0
  52. package/dist/src/ts-morph-utils/file-builders/document-model.js.map +1 -0
  53. package/dist/src/ts-morph-utils/file-builders/drive-editor.d.ts +56 -0
  54. package/dist/src/ts-morph-utils/file-builders/drive-editor.d.ts.map +1 -0
  55. package/dist/src/ts-morph-utils/file-builders/drive-editor.js +341 -0
  56. package/dist/src/ts-morph-utils/file-builders/drive-editor.js.map +1 -0
  57. package/dist/src/ts-morph-utils/file-builders/editor-common.d.ts +3 -0
  58. package/dist/src/ts-morph-utils/file-builders/editor-common.d.ts.map +1 -0
  59. package/dist/src/ts-morph-utils/file-builders/editor-common.js +15 -0
  60. package/dist/src/ts-morph-utils/file-builders/editor-common.js.map +1 -0
  61. package/dist/src/ts-morph-utils/file-builders/index-files.d.ts +17 -0
  62. package/dist/src/ts-morph-utils/file-builders/index-files.d.ts.map +1 -0
  63. package/dist/src/ts-morph-utils/file-builders/index-files.js +21 -0
  64. package/dist/src/ts-morph-utils/file-builders/index-files.js.map +1 -0
  65. package/dist/src/ts-morph-utils/file-builders/module-files.d.ts +25 -0
  66. package/dist/src/ts-morph-utils/file-builders/module-files.d.ts.map +1 -0
  67. package/dist/src/ts-morph-utils/file-builders/module-files.js +92 -0
  68. package/dist/src/ts-morph-utils/file-builders/module-files.js.map +1 -0
  69. package/dist/src/ts-morph-utils/file-builders/subgraphs.d.ts +6 -0
  70. package/dist/src/ts-morph-utils/file-builders/subgraphs.d.ts.map +1 -0
  71. package/dist/src/ts-morph-utils/file-builders/subgraphs.js +53 -0
  72. package/dist/src/ts-morph-utils/file-builders/subgraphs.js.map +1 -0
  73. package/dist/src/ts-morph-utils/file-builders/types.d.ts +13 -0
  74. package/dist/src/ts-morph-utils/file-builders/types.d.ts.map +1 -0
  75. package/dist/src/ts-morph-utils/file-builders/types.js +2 -0
  76. package/dist/src/ts-morph-utils/file-builders/types.js.map +1 -0
  77. package/dist/src/ts-morph-utils/file-utils.d.ts +28 -0
  78. package/dist/src/ts-morph-utils/file-utils.d.ts.map +1 -0
  79. package/dist/src/ts-morph-utils/file-utils.js +102 -0
  80. package/dist/src/ts-morph-utils/file-utils.js.map +1 -0
  81. package/dist/src/ts-morph-utils/name-builders/common-files.d.ts +5 -0
  82. package/dist/src/ts-morph-utils/name-builders/common-files.d.ts.map +1 -0
  83. package/dist/src/ts-morph-utils/name-builders/common-files.js +15 -0
  84. package/dist/src/ts-morph-utils/name-builders/common-files.js.map +1 -0
  85. package/dist/src/ts-morph-utils/name-builders/document-model-files.d.ts +4 -0
  86. package/dist/src/ts-morph-utils/name-builders/document-model-files.d.ts.map +1 -0
  87. package/dist/src/ts-morph-utils/name-builders/document-model-files.js +12 -0
  88. package/dist/src/ts-morph-utils/name-builders/document-model-files.js.map +1 -0
  89. package/dist/src/ts-morph-utils/name-builders/editor-files.d.ts +10 -0
  90. package/dist/src/ts-morph-utils/name-builders/editor-files.d.ts.map +1 -0
  91. package/dist/src/ts-morph-utils/name-builders/editor-files.js +37 -0
  92. package/dist/src/ts-morph-utils/name-builders/editor-files.js.map +1 -0
  93. package/dist/src/ts-morph-utils/name-builders/get-file-paths.d.ts +4 -0
  94. package/dist/src/ts-morph-utils/name-builders/get-file-paths.d.ts.map +1 -0
  95. package/dist/src/ts-morph-utils/name-builders/get-file-paths.js +21 -0
  96. package/dist/src/ts-morph-utils/name-builders/get-file-paths.js.map +1 -0
  97. package/dist/src/ts-morph-utils/name-builders/get-variable-names.d.ts +55 -0
  98. package/dist/src/ts-morph-utils/name-builders/get-variable-names.d.ts.map +1 -0
  99. package/dist/src/ts-morph-utils/name-builders/get-variable-names.js +153 -0
  100. package/dist/src/ts-morph-utils/name-builders/get-variable-names.js.map +1 -0
  101. package/dist/src/ts-morph-utils/name-builders/types.d.ts +14 -0
  102. package/dist/src/ts-morph-utils/name-builders/types.d.ts.map +1 -0
  103. package/dist/src/ts-morph-utils/name-builders/types.js +2 -0
  104. package/dist/src/ts-morph-utils/name-builders/types.js.map +1 -0
  105. package/dist/src/ts-morph-utils/name-builders/variables.d.ts +12 -0
  106. package/dist/src/ts-morph-utils/name-builders/variables.d.ts.map +1 -0
  107. package/dist/src/ts-morph-utils/name-builders/variables.js +35 -0
  108. package/dist/src/ts-morph-utils/name-builders/variables.js.map +1 -0
  109. package/dist/src/ts-morph-utils/syntax-builders.d.ts +72 -0
  110. package/dist/src/ts-morph-utils/syntax-builders.d.ts.map +1 -0
  111. package/dist/src/ts-morph-utils/syntax-builders.js +201 -0
  112. package/dist/src/ts-morph-utils/syntax-builders.js.map +1 -0
  113. package/dist/src/ts-morph-utils/syntax-getters.d.ts +10 -0
  114. package/dist/src/ts-morph-utils/syntax-getters.d.ts.map +1 -0
  115. package/dist/src/ts-morph-utils/syntax-getters.js +39 -0
  116. package/dist/src/ts-morph-utils/syntax-getters.js.map +1 -0
  117. package/dist/src/ts-morph-utils/templates/document-model/actions.d.ts +3 -0
  118. package/dist/src/ts-morph-utils/templates/document-model/actions.d.ts.map +1 -0
  119. package/dist/src/ts-morph-utils/templates/document-model/actions.js +28 -0
  120. package/dist/src/ts-morph-utils/templates/document-model/actions.js.map +1 -0
  121. package/dist/src/ts-morph-utils/templates/document-model/gen/actions.d.ts +3 -0
  122. package/dist/src/ts-morph-utils/templates/document-model/gen/actions.d.ts.map +1 -0
  123. package/dist/src/ts-morph-utils/templates/document-model/gen/actions.js +40 -0
  124. package/dist/src/ts-morph-utils/templates/document-model/gen/actions.js.map +1 -0
  125. package/dist/src/ts-morph-utils/templates/document-model/gen/creators.d.ts +3 -0
  126. package/dist/src/ts-morph-utils/templates/document-model/gen/creators.d.ts.map +1 -0
  127. package/dist/src/ts-morph-utils/templates/document-model/gen/creators.js +16 -0
  128. package/dist/src/ts-morph-utils/templates/document-model/gen/creators.js.map +1 -0
  129. package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.d.ts +3 -0
  130. package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.d.ts.map +1 -0
  131. package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.js +56 -0
  132. package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.js.map +1 -0
  133. package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.d.ts +3 -0
  134. package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.d.ts.map +1 -0
  135. package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.js +5 -0
  136. package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.js.map +1 -0
  137. package/dist/src/ts-morph-utils/templates/document-model/gen/index.d.ts +3 -0
  138. package/dist/src/ts-morph-utils/templates/document-model/gen/index.d.ts.map +1 -0
  139. package/dist/src/ts-morph-utils/templates/document-model/gen/index.js +29 -0
  140. package/dist/src/ts-morph-utils/templates/document-model/gen/index.js.map +1 -0
  141. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.d.ts +8 -0
  142. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.d.ts.map +1 -0
  143. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.js +39 -0
  144. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.js.map +1 -0
  145. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.d.ts +3 -0
  146. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.d.ts.map +1 -0
  147. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.js +94 -0
  148. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.js.map +1 -0
  149. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.d.ts +3 -0
  150. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.d.ts.map +1 -0
  151. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.js +73 -0
  152. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.js.map +1 -0
  153. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.d.ts +3 -0
  154. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.d.ts.map +1 -0
  155. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.js +61 -0
  156. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.js.map +1 -0
  157. package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.d.ts +3 -0
  158. package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.d.ts.map +1 -0
  159. package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.js +93 -0
  160. package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.js.map +1 -0
  161. package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.d.ts +3 -0
  162. package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.d.ts.map +1 -0
  163. package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.js +106 -0
  164. package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.js.map +1 -0
  165. package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.d.ts +2 -0
  166. package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.d.ts.map +1 -0
  167. package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.js +6 -0
  168. package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.js.map +1 -0
  169. package/dist/src/ts-morph-utils/templates/document-model/gen/types.d.ts +3 -0
  170. package/dist/src/ts-morph-utils/templates/document-model/gen/types.d.ts.map +1 -0
  171. package/dist/src/ts-morph-utils/templates/document-model/gen/types.js +38 -0
  172. package/dist/src/ts-morph-utils/templates/document-model/gen/types.js.map +1 -0
  173. package/dist/src/ts-morph-utils/templates/document-model/gen/utils.d.ts +3 -0
  174. package/dist/src/ts-morph-utils/templates/document-model/gen/utils.d.ts.map +1 -0
  175. package/dist/src/ts-morph-utils/templates/document-model/gen/utils.js +77 -0
  176. package/dist/src/ts-morph-utils/templates/document-model/gen/utils.js.map +1 -0
  177. package/dist/src/ts-morph-utils/templates/document-model/hooks.d.ts +3 -0
  178. package/dist/src/ts-morph-utils/templates/document-model/hooks.d.ts.map +1 -0
  179. package/dist/src/ts-morph-utils/templates/document-model/hooks.js +49 -0
  180. package/dist/src/ts-morph-utils/templates/document-model/hooks.js.map +1 -0
  181. package/dist/src/ts-morph-utils/templates/document-model/index.d.ts +2 -0
  182. package/dist/src/ts-morph-utils/templates/document-model/index.d.ts.map +1 -0
  183. package/dist/src/ts-morph-utils/templates/document-model/index.js +9 -0
  184. package/dist/src/ts-morph-utils/templates/document-model/index.js.map +1 -0
  185. package/dist/src/ts-morph-utils/templates/document-model/module.d.ts +8 -0
  186. package/dist/src/ts-morph-utils/templates/document-model/module.d.ts.map +1 -0
  187. package/dist/src/ts-morph-utils/templates/document-model/module.js +25 -0
  188. package/dist/src/ts-morph-utils/templates/document-model/module.js.map +1 -0
  189. package/dist/src/ts-morph-utils/templates/document-model/src/index.d.ts +2 -0
  190. package/dist/src/ts-morph-utils/templates/document-model/src/index.d.ts.map +1 -0
  191. package/dist/src/ts-morph-utils/templates/document-model/src/index.js +5 -0
  192. package/dist/src/ts-morph-utils/templates/document-model/src/index.js.map +1 -0
  193. package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.d.ts +3 -0
  194. package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.d.ts.map +1 -0
  195. package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.js +121 -0
  196. package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.js.map +1 -0
  197. package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.d.ts +3 -0
  198. package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.d.ts.map +1 -0
  199. package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.js +67 -0
  200. package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.js.map +1 -0
  201. package/dist/src/ts-morph-utils/templates/document-model/src/utils.d.ts +2 -0
  202. package/dist/src/ts-morph-utils/templates/document-model/src/utils.d.ts.map +1 -0
  203. package/dist/src/ts-morph-utils/templates/document-model/src/utils.js +5 -0
  204. package/dist/src/ts-morph-utils/templates/document-model/src/utils.js.map +1 -0
  205. package/dist/src/ts-morph-utils/templates/document-model/utils.d.ts +3 -0
  206. package/dist/src/ts-morph-utils/templates/document-model/utils.d.ts.map +1 -0
  207. package/dist/src/ts-morph-utils/templates/document-model/utils.js +11 -0
  208. package/dist/src/ts-morph-utils/templates/document-model/utils.js.map +1 -0
  209. package/dist/src/ts-morph-utils/templates/drive-editor.d.ts +5 -0
  210. package/dist/src/ts-morph-utils/templates/drive-editor.d.ts.map +1 -0
  211. package/dist/src/ts-morph-utils/templates/drive-editor.js +211 -0
  212. package/dist/src/ts-morph-utils/templates/drive-editor.js.map +1 -0
  213. package/dist/src/ts-morph-utils/templates/unsafe-utils.d.ts +8 -0
  214. package/dist/src/ts-morph-utils/templates/unsafe-utils.d.ts.map +1 -0
  215. package/dist/src/ts-morph-utils/templates/unsafe-utils.js +23 -0
  216. package/dist/src/ts-morph-utils/templates/unsafe-utils.js.map +1 -0
  217. package/dist/src/ts-morph-utils/templates/utils.d.ts +6 -0
  218. package/dist/src/ts-morph-utils/templates/utils.d.ts.map +1 -0
  219. package/dist/src/ts-morph-utils/templates/utils.js +16 -0
  220. package/dist/src/ts-morph-utils/templates/utils.js.map +1 -0
  221. package/dist/src/ts-morph-utils/ts-morph-project.d.ts +3 -0
  222. package/dist/src/ts-morph-utils/ts-morph-project.d.ts.map +1 -0
  223. package/dist/src/ts-morph-utils/ts-morph-project.js +9 -0
  224. package/dist/src/ts-morph-utils/ts-morph-project.js.map +1 -0
  225. package/dist/src/ts-morph-utils/types.d.ts +34 -0
  226. package/dist/src/ts-morph-utils/types.d.ts.map +1 -0
  227. package/dist/src/ts-morph-utils/types.js +2 -0
  228. package/dist/src/ts-morph-utils/types.js.map +1 -0
  229. package/dist/tsconfig.tsbuildinfo +1 -1
  230. package/package.json +11 -8
  231. package/dist/src/ts-morph-utils.d.ts +0 -48
  232. package/dist/src/ts-morph-utils.d.ts.map +0 -1
  233. package/dist/src/ts-morph-utils.js +0 -207
  234. package/dist/src/ts-morph-utils.js.map +0 -1
@@ -0,0 +1,121 @@
1
+ import { ts } from "@tmpl/core";
2
+ export const documentModelTestFileTemplate = (v) => ts `
3
+ /**
4
+ * This is a scaffold file meant for customization:
5
+ * - change it by adding new tests or modifying the existing ones
6
+ */
7
+ /**
8
+ * This is a scaffold file meant for customization:
9
+ * - change it by adding new tests or modifying the existing ones
10
+ */
11
+
12
+ import { describe, it, expect } from "vitest";
13
+ import {
14
+ utils,
15
+ initialGlobalState,
16
+ initialLocalState,
17
+ ${v.documentTypeVariableName},
18
+ ${v.isPhDocumentOfTypeFunctionName},
19
+ ${v.assertIsPhDocumentOfTypeFunctionName},
20
+ ${v.isPhStateOfTypeFunctionName},
21
+ ${v.assertIsPhStateOfTypeFunctionName},
22
+ } from "${v.documentModelDir}";
23
+ import { ZodError } from "zod";
24
+
25
+ describe("${v.pascalCaseDocumentType} Document Model", () => {
26
+ it("should create a new ${v.pascalCaseDocumentType} document", () => {
27
+ const document = utils.createDocument();
28
+
29
+ expect(document).toBeDefined();
30
+ expect(document.header.documentType).toBe(${v.documentTypeVariableName});
31
+ });
32
+
33
+ it("should create a new ${v.pascalCaseDocumentType} document with a valid initial state", () => {
34
+ const document = utils.createDocument();
35
+ expect(document.state.global).toStrictEqual(initialGlobalState);
36
+ expect(document.state.local).toStrictEqual(initialLocalState);
37
+ expect(${v.isPhDocumentOfTypeFunctionName}(document)).toBe(true);
38
+ expect(${v.isPhStateOfTypeFunctionName}(document.state)).toBe(true);
39
+ });
40
+ it("should reject a document that is not a ${v.pascalCaseDocumentType} document", () => {
41
+ const wrongDocumentType = utils.createDocument();
42
+ wrongDocumentType.header.documentType = "the-wrong-thing-1234";
43
+ try {
44
+ expect(${v.assertIsPhDocumentOfTypeFunctionName}(wrongDocumentType)).toThrow();
45
+ expect(${v.isPhDocumentOfTypeFunctionName}(wrongDocumentType)).toBe(false);
46
+ } catch (error) {
47
+ expect(error).toBeInstanceOf(ZodError);
48
+ }
49
+ });
50
+ const wrongState = utils.createDocument();
51
+ // @ts-expect-error - we are testing the error case
52
+ wrongState.state.global = {
53
+ ...{ notWhat: "you want" },
54
+ };
55
+ try {
56
+ expect(${v.isPhStateOfTypeFunctionName}(wrongState.state)).toBe(false);
57
+ expect(${v.assertIsPhStateOfTypeFunctionName}(wrongState.state)).toThrow();
58
+ expect(${v.isPhDocumentOfTypeFunctionName}(wrongState)).toBe(false);
59
+ expect(${v.assertIsPhDocumentOfTypeFunctionName}(wrongState)).toThrow();
60
+ } catch (error) {
61
+ expect(error).toBeInstanceOf(ZodError);
62
+ }
63
+
64
+ const wrongInitialState = utils.createDocument();
65
+ // @ts-expect-error - we are testing the error case
66
+ wrongInitialState.initialState.global = {
67
+ ...{ notWhat: "you want" },
68
+ };
69
+ try {
70
+ expect(${v.isPhStateOfTypeFunctionName}(wrongInitialState.state)).toBe(false);
71
+ expect(${v.assertIsPhStateOfTypeFunctionName}(wrongInitialState.state)).toThrow();
72
+ expect(${v.isPhDocumentOfTypeFunctionName}(wrongInitialState)).toBe(false);
73
+ expect(${v.assertIsPhDocumentOfTypeFunctionName}(wrongInitialState)).toThrow();
74
+ } catch (error) {
75
+ expect(error).toBeInstanceOf(ZodError);
76
+ }
77
+
78
+ const missingIdInHeader = utils.createDocument();
79
+ // @ts-expect-error - we are testing the error case
80
+ delete missingIdInHeader.header.id;
81
+ try {
82
+ expect(${v.isPhDocumentOfTypeFunctionName}(missingIdInHeader)).toBe(false);
83
+ expect(${v.assertIsPhDocumentOfTypeFunctionName}(missingIdInHeader)).toThrow();
84
+ } catch (error) {
85
+ expect(error).toBeInstanceOf(ZodError);
86
+ }
87
+
88
+ const missingNameInHeader = utils.createDocument();
89
+ // @ts-expect-error - we are testing the error case
90
+ delete missingNameInHeader.header.name;
91
+ try {
92
+ expect(${v.isPhDocumentOfTypeFunctionName}(missingNameInHeader)).toBe(false);
93
+ expect(${v.assertIsPhDocumentOfTypeFunctionName}(missingNameInHeader)).toThrow();
94
+ } catch (error) {
95
+ expect(error).toBeInstanceOf(ZodError);
96
+ }
97
+
98
+ const missingCreatedAtUtcIsoInHeader = utils.createDocument();
99
+ // @ts-expect-error - we are testing the error case
100
+ delete missingCreatedAtUtcIsoInHeader.header.createdAtUtcIso;
101
+ try {
102
+ expect(${v.isPhDocumentOfTypeFunctionName}(missingCreatedAtUtcIsoInHeader)).toBe(false);
103
+ expect(${v.assertIsPhDocumentOfTypeFunctionName}(missingCreatedAtUtcIsoInHeader)).toThrow();
104
+ } catch (error) {
105
+ expect(error).toBeInstanceOf(ZodError);
106
+ }
107
+
108
+ const missingLastModifiedAtUtcIsoInHeader = utils.createDocument();
109
+ // @ts-expect-error - we are testing the error case
110
+ delete missingLastModifiedAtUtcIsoInHeader.header.lastModifiedAtUtcIso;
111
+ try {
112
+ expect(${v.isPhDocumentOfTypeFunctionName}(missingLastModifiedAtUtcIsoInHeader)).toBe(false);
113
+ expect(
114
+ ${v.assertIsPhDocumentOfTypeFunctionName}(missingLastModifiedAtUtcIsoInHeader),
115
+ ).toThrow();
116
+ } catch (error) {
117
+ expect(error).toBeInstanceOf(ZodError);
118
+ }
119
+ });
120
+ `.raw;
121
+ //# sourceMappingURL=document-model.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-model.test.js","sourceRoot":"","sources":["../../../../../../../src/ts-morph-utils/templates/document-model/src/tests/document-model.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAGhC,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAA6B,EAAE,EAAE,CAC7E,EAAE,CAAA;;;;;;;;;;;;;;;IAeA,CAAC,CAAC,wBAAwB;IAC1B,CAAC,CAAC,8BAA8B;IAChC,CAAC,CAAC,oCAAoC;IACtC,CAAC,CAAC,2BAA2B;IAC7B,CAAC,CAAC,iCAAiC;UAC7B,CAAC,CAAC,gBAAgB;;;YAGhB,CAAC,CAAC,sBAAsB;4BACR,CAAC,CAAC,sBAAsB;;;;gDAIJ,CAAC,CAAC,wBAAwB;;;4BAG9C,CAAC,CAAC,sBAAsB;;;;aAIvC,CAAC,CAAC,8BAA8B;aAChC,CAAC,CAAC,2BAA2B;;+CAEK,CAAC,CAAC,sBAAsB;;;;eAIxD,CAAC,CAAC,oCAAoC;eACtC,CAAC,CAAC,8BAA8B;;;;;;;;;;;aAWlC,CAAC,CAAC,2BAA2B;aAC7B,CAAC,CAAC,iCAAiC;aACnC,CAAC,CAAC,8BAA8B;aAChC,CAAC,CAAC,oCAAoC;;;;;;;;;;;aAWtC,CAAC,CAAC,2BAA2B;aAC7B,CAAC,CAAC,iCAAiC;aACnC,CAAC,CAAC,8BAA8B;aAChC,CAAC,CAAC,oCAAoC;;;;;;;;;aAStC,CAAC,CAAC,8BAA8B;aAChC,CAAC,CAAC,oCAAoC;;;;;;;;;aAStC,CAAC,CAAC,8BAA8B;aAChC,CAAC,CAAC,oCAAoC;;;;;;;;;aAStC,CAAC,CAAC,8BAA8B;aAChC,CAAC,CAAC,oCAAoC;;;;;;;;;aAStC,CAAC,CAAC,8BAA8B;;QAErC,CAAC,CAAC,oCAAoC;;;;;;CAM7C,CAAC,GAAG,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AllDocumentModelVariableNames } from "../../../../name-builders/types.js";
2
+ export declare const documentModelOperationsModuleTestFileTemplate: (v: AllDocumentModelVariableNames) => string;
3
+ //# sourceMappingURL=module.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/ts-morph-utils/templates/document-model/src/tests/module.test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,6BAA6B,EAC9B,MAAM,oCAAoC,CAAC;AAyD5C,eAAO,MAAM,6CAA6C,GACxD,GAAG,6BAA6B,WAsB7B,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { ts } from "@tmpl/core";
2
+ import { camelCase, constantCase, pascalCase } from "change-case";
3
+ function makeModuleOperationsTypeName(module) {
4
+ const pascalCaseModuleName = pascalCase(module.name);
5
+ return `${pascalCaseModuleName}Operations`;
6
+ }
7
+ function makeCamelCaseActionNamesForImport(actions) {
8
+ return actions.map((a) => camelCase(a.name)).join(",\n");
9
+ }
10
+ function makeActionInputSchemasForImport(actions) {
11
+ return actions.map((a) => `${pascalCase(a.name)}InputSchema`).join(",\n");
12
+ }
13
+ function makeTestCaseForAction(action, isPhDocumentOfTypeFunctionName) {
14
+ const camelCaseActionName = camelCase(action.name);
15
+ const pascalCaseActionName = pascalCase(action.name);
16
+ const constantCaseActionName = constantCase(action.name);
17
+ const actionInputSchemaName = `${pascalCaseActionName}InputSchema`;
18
+ const scope = action.scope;
19
+ return ts `
20
+ it('should handle ${camelCaseActionName} operation', () => {
21
+ const document = utils.createDocument();
22
+ const input = generateMock(
23
+ ${actionInputSchemaName}(),
24
+ );
25
+
26
+ const updatedDocument = reducer(
27
+ document,
28
+ ${camelCaseActionName}(input),
29
+ );
30
+
31
+ expect(${isPhDocumentOfTypeFunctionName}(updatedDocument)).toBe(true);
32
+ expect(updatedDocument.operations.${scope}).toHaveLength(1);
33
+ expect(updatedDocument.operations.${scope}[0].action.type).toBe(
34
+ "${constantCaseActionName}",
35
+ );
36
+ expect(updatedDocument.operations.${scope}[0].action.input).toStrictEqual(input);
37
+ expect(updatedDocument.operations.${scope}[0].index).toEqual(0);
38
+ });
39
+ `.raw;
40
+ }
41
+ function makeTestCasesForActions(actions, isPhDocumentOfTypeFunctionName) {
42
+ return actions
43
+ .map((action) => makeTestCaseForAction(action, isPhDocumentOfTypeFunctionName))
44
+ .join("\n\n");
45
+ }
46
+ export const documentModelOperationsModuleTestFileTemplate = (v) => ts `
47
+ /**
48
+ * This is a scaffold file meant for customization:
49
+ * - change it by adding new tests or modifying the existing ones
50
+ */
51
+
52
+ import { describe, it, expect } from 'vitest';
53
+ import { generateMock } from '@powerhousedao/codegen';
54
+ import {
55
+ reducer,
56
+ utils,
57
+ ${v.isPhDocumentOfTypeFunctionName},
58
+ ${makeCamelCaseActionNamesForImport(v.actions)},
59
+ ${makeActionInputSchemasForImport(v.actions)},
60
+ } from "${v.documentModelDir}";
61
+
62
+ describe("${makeModuleOperationsTypeName(v.module)}", () => {
63
+ ${makeTestCasesForActions(v.actions, v.isPhDocumentOfTypeFunctionName)}
64
+ });
65
+
66
+ `.raw;
67
+ //# sourceMappingURL=module.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.test.js","sourceRoot":"","sources":["../../../../../../../src/ts-morph-utils/templates/document-model/src/tests/module.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOlE,SAAS,4BAA4B,CAAC,MAA2B;IAC/D,MAAM,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO,GAAG,oBAAoB,YAAY,CAAC;AAC7C,CAAC;AAED,SAAS,iCAAiC,CAAC,OAA8B;IACvE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,+BAA+B,CAAC,OAA8B;IACrE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAA2B,EAC3B,8BAAsC;IAEtC,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,sBAAsB,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,qBAAqB,GAAG,GAAG,oBAAoB,aAAa,CAAC;IACnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,OAAO,EAAE,CAAA;sBACW,mBAAmB;;;cAG3B,qBAAqB;;;;;cAKrB,mBAAmB;;;iBAGhB,8BAA8B;4CACH,KAAK;4CACL,KAAK;eAClC,sBAAsB;;4CAEO,KAAK;4CACL,KAAK;;GAE9C,CAAC,GAAG,CAAC;AACR,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAA8B,EAC9B,8BAAsC;IAEtC,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACd,qBAAqB,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAC9D;SACA,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AACD,MAAM,CAAC,MAAM,6CAA6C,GAAG,CAC3D,CAAgC,EAChC,EAAE,CACF,EAAE,CAAA;;;;;;;;;;;IAWA,CAAC,CAAC,8BAA8B;IAChC,iCAAiC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5C,+BAA+B,CAAC,CAAC,CAAC,OAAO,CAAC;UACpC,CAAC,CAAC,gBAAgB;;YAEhB,4BAA4B,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,8BAA8B,CAAC;;;CAGvE,CAAC,GAAG,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const documentModelSrcUtilsTemplate: string;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/ts-morph-utils/templates/document-model/src/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,6BAA6B,QAErC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { ts } from "@tmpl/core";
2
+ export const documentModelSrcUtilsTemplate = ts `
3
+ export {};
4
+ `.raw;
5
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../src/ts-morph-utils/templates/document-model/src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAEhC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAA;;CAE9C,CAAC,GAAG,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DocumentModelVariableNames } from "../../name-builders/types.js";
2
+ export declare const documentModelUtilsTemplate: ({ phStateName, pascalCaseDocumentType, }: DocumentModelVariableNames) => string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/ts-morph-utils/templates/document-model/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE/E,eAAO,MAAM,0BAA0B,GAAI,0CAGxC,0BAA0B,WASxB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ts } from "@tmpl/core";
2
+ export const documentModelUtilsTemplate = ({ phStateName, pascalCaseDocumentType, }) => ts `
3
+ import type { DocumentModelUtils } from "document-model";
4
+ import type { ${phStateName} } from "./gen/types.js";
5
+ import { utils as genUtils } from "./gen/utils.js";
6
+ import * as customUtils from "./src/utils.js";
7
+
8
+ /** Utils for the ${pascalCaseDocumentType} document model */
9
+ export const utils = { ...genUtils, ...customUtils } satisfies DocumentModelUtils<${phStateName}>;
10
+ `.raw;
11
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/ts-morph-utils/templates/document-model/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAGhC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACzC,WAAW,EACX,sBAAsB,GACK,EAAE,EAAE,CAC/B,EAAE,CAAA;;gBAEY,WAAW;;;;oBAIP,sBAAsB;oFAC0C,WAAW;CAC9F,CAAC,GAAG,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const driveExplorerFileTemplate: string;
2
+ export declare const folderTreeFileTemplate: string;
3
+ export declare const emptyStateFileTemplate: string;
4
+ export declare const createDocumentFileTemplate: string;
5
+ //# sourceMappingURL=drive-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive-editor.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-utils/templates/drive-editor.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,QA6BjC,CAAC;AAEN,eAAO,MAAM,sBAAsB,QAyG9B,CAAC;AAEN,eAAO,MAAM,sBAAsB,QAgB9B,CAAC;AAEN,eAAO,MAAM,0BAA0B,QAuDlC,CAAC"}
@@ -0,0 +1,211 @@
1
+ import { tsx } from "@tmpl/core";
2
+ export const driveExplorerFileTemplate = tsx `
3
+ import type { EditorProps } from "document-model";
4
+ import { FolderTree } from "./FolderTree.js";
5
+ import { DriveContents } from "./DriveContents.js";
6
+
7
+ /**
8
+ * Main drive explorer component with sidebar navigation and content area.
9
+ * Layout: Left sidebar (folder tree) + Right content area (files/folders + document editor)
10
+ */
11
+ export function DriveExplorer({ children }: EditorProps) {
12
+ // if a document is selected then it's editor will be passed as children
13
+ const showDocumentEditor = !!children;
14
+
15
+ return (
16
+ <div className="flex h-full">
17
+ <FolderTree />
18
+ <div className="flex-1 overflow-y-auto p-4">
19
+ {/* Conditional rendering: Document editor or folder contents */}
20
+ {showDocumentEditor ? (
21
+ /* Document editor view */
22
+ children
23
+ ) : (
24
+ /* Folder contents view */
25
+ <DriveContents />
26
+ )}
27
+ </div>
28
+ </div>
29
+ );
30
+ }
31
+ `.raw;
32
+ export const folderTreeFileTemplate = tsx `
33
+ import {
34
+ Sidebar,
35
+ SidebarProvider,
36
+ type SidebarNode,
37
+ } from "@powerhousedao/document-engineering";
38
+ import {
39
+ setSelectedNode,
40
+ useNodesInSelectedDrive,
41
+ useSelectedDrive,
42
+ useSelectedNode,
43
+ } from "@powerhousedao/reactor-browser";
44
+ import type { Node } from "document-drive";
45
+ import { useMemo } from "react";
46
+
47
+ function buildSidebarNodes(
48
+ nodes: Node[],
49
+ parentId: string | null | undefined,
50
+ ): SidebarNode[] {
51
+ return nodes
52
+ .filter((n) => {
53
+ if (parentId == null) {
54
+ return n.parentFolder == null;
55
+ }
56
+ return n.parentFolder === parentId;
57
+ })
58
+ .map((node): SidebarNode => {
59
+ if (node.kind === "folder") {
60
+ return {
61
+ id: node.id,
62
+ title: node.name,
63
+ icon: "FolderClose" as const,
64
+ expandedIcon: "FolderOpen" as const,
65
+ children: buildSidebarNodes(nodes, node.id),
66
+ };
67
+ }
68
+ return {
69
+ id: node.id,
70
+ title: node.name,
71
+ icon: "File" as const,
72
+ };
73
+ });
74
+ }
75
+
76
+ function transformNodesToSidebarNodes(
77
+ nodes: Node[],
78
+ driveName: string,
79
+ ): SidebarNode[] {
80
+ return [
81
+ {
82
+ id: "root",
83
+ title: driveName,
84
+ icon: "Drive" as const,
85
+ children: buildSidebarNodes(nodes, null),
86
+ },
87
+ ];
88
+ }
89
+
90
+ /**
91
+ * Hierarchical folder tree navigation component using Sidebar from document-engineering.
92
+ * Displays folders and files in a tree structure with expand/collapse functionality, search, and resize support.
93
+ */
94
+ export function FolderTree() {
95
+ const [selectedDrive] = useSelectedDrive();
96
+ const nodes = useNodesInSelectedDrive();
97
+ const selectedNode = useSelectedNode();
98
+ const driveName = selectedDrive.header.name;
99
+ // Transform Node[] to hierarchical SidebarNode structure
100
+ const sidebarNodes = useMemo(
101
+ () => transformNodesToSidebarNodes(nodes || [], driveName),
102
+ [nodes, driveName],
103
+ );
104
+
105
+ const handleActiveNodeChange = (node: SidebarNode) => {
106
+ // If root node is selected, pass undefined to match existing behavior
107
+ if (node.id === "root") {
108
+ setSelectedNode(undefined);
109
+ } else {
110
+ setSelectedNode(node.id);
111
+ }
112
+ };
113
+ // Map selectedNodeId to activeNodeId (use "root" when undefined)
114
+ const activeNodeId =
115
+ !selectedNode || selectedNode.id === selectedDrive.header.id
116
+ ? "root"
117
+ : selectedNode.id;
118
+
119
+ return (
120
+ <SidebarProvider nodes={sidebarNodes}>
121
+ <Sidebar
122
+ className="pt-1"
123
+ nodes={sidebarNodes}
124
+ activeNodeId={activeNodeId}
125
+ onActiveNodeChange={handleActiveNodeChange}
126
+ sidebarTitle="Drive Explorer"
127
+ showSearchBar={true}
128
+ resizable={true}
129
+ allowPinning={false}
130
+ showStatusFilter={false}
131
+ initialWidth={256}
132
+ defaultLevel={2}
133
+ />
134
+ </SidebarProvider>
135
+ );
136
+ }
137
+ `.raw;
138
+ export const emptyStateFileTemplate = tsx `
139
+ import { useNodesInSelectedDriveOrFolder } from "@powerhousedao/reactor-browser";
140
+
141
+ /** Shows a message when the selected drive or folder is empty */
142
+ export function EmptyState() {
143
+ const nodes = useNodesInSelectedDriveOrFolder();
144
+ const hasNodes = nodes.length > 0;
145
+ if (hasNodes) return null;
146
+
147
+ return (
148
+ <div className="py-12 text-center text-gray-500">
149
+ <p className="text-lg">This folder is empty</p>
150
+ <p className="mt-2 text-sm">Create your first document or folder below</p>
151
+ </div>
152
+ );
153
+ }
154
+ `.raw;
155
+ export const createDocumentFileTemplate = tsx `
156
+ import type { VetraDocumentModelModule } from "@powerhousedao/reactor-browser";
157
+ import {
158
+ showCreateDocumentModal,
159
+ useAllowedDocumentModelModules,
160
+ } from "@powerhousedao/reactor-browser";
161
+
162
+ /**
163
+ * Document creation UI component.
164
+ * Displays available document types as clickable buttons.
165
+ */
166
+ export function CreateDocument() {
167
+ const allowedDocumentModelModules = useAllowedDocumentModelModules();
168
+
169
+ return (
170
+ <div>
171
+ {/* Customize section title here */}
172
+ <h3 className="mb-3 mt-4 text-sm font-bold text-gray-600">
173
+ Create document
174
+ </h3>
175
+ {/* Customize layout by changing flex-wrap, gap, or grid layout */}
176
+ <div className="flex w-full flex-wrap gap-4">
177
+ {allowedDocumentModelModules?.map((documentModelModule) => {
178
+ return (
179
+ <CreateDocumentButton
180
+ key={documentModelModule.documentModel.global.id}
181
+ documentModelModule={documentModelModule}
182
+ />
183
+ );
184
+ })}
185
+ </div>
186
+ </div>
187
+ );
188
+ }
189
+
190
+ type Props = {
191
+ documentModelModule: VetraDocumentModelModule;
192
+ };
193
+ function CreateDocumentButton({ documentModelModule }: Props) {
194
+ const documentType = documentModelModule.documentModel.global.id;
195
+ const documentModelName =
196
+ documentModelModule.documentModel.global.name || documentType;
197
+ const documentModelDescription =
198
+ documentModelModule.documentModel.global.description;
199
+ return (
200
+ <button
201
+ className="cursor-pointer rounded-md bg-gray-200 py-2 px-3 hover:bg-gray-300"
202
+ title={documentModelName}
203
+ aria-description={documentModelDescription}
204
+ onClick={() => showCreateDocumentModal(documentType)}
205
+ >
206
+ {documentModelName}
207
+ </button>
208
+ );
209
+ }
210
+ `.raw;
211
+ //# sourceMappingURL=drive-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive-editor.js","sourceRoot":"","sources":["../../../../src/ts-morph-utils/templates/drive-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3C,CAAC,GAAG,CAAC;AAEN,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyGxC,CAAC,GAAG,CAAC;AAEN,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;CAgBxC,CAAC,GAAG,CAAC;AAEN,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuD5C,CAAC,GAAG,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function getInitialStates(scopeState: {
2
+ global: any;
3
+ local: any;
4
+ }): {
5
+ initialGlobalState: string;
6
+ initialLocalState: string;
7
+ };
8
+ //# sourceMappingURL=unsafe-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsafe-utils.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-utils/templates/unsafe-utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,CAAC,UAAU,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE;;;EAkBvE"}
@@ -0,0 +1,23 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
4
+ export function getInitialStates(scopeState) {
5
+ const { global, local } = scopeState;
6
+ const scopes = { global, local };
7
+ Object.entries(scopes).forEach(([scope, state]) => {
8
+ if (!isEmptyStateSchema(state.schema) && state.initialValue === "") {
9
+ throw new Error(`${scope.charAt(0).toLocaleUpperCase() + scope.slice(1)} scope has a defined schema but is missing an initial value.`);
10
+ }
11
+ });
12
+ return {
13
+ initialGlobalState: handleEmptyState(global.initialValue),
14
+ initialLocalState: handleEmptyState(local.initialValue),
15
+ };
16
+ }
17
+ function isEmptyStateSchema(schema) {
18
+ return schema === "" || !schema.includes("{");
19
+ }
20
+ function handleEmptyState(state) {
21
+ return state === "" ? "{}" : state;
22
+ }
23
+ //# sourceMappingURL=unsafe-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsafe-utils.js","sourceRoot":"","sources":["../../../../src/ts-morph-utils/templates/unsafe-utils.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+DAA+D;AAC/D,0DAA0D;AAC1D,MAAM,UAAU,gBAAgB,CAAC,UAAuC;IACtE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IACrC,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAEjC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;QAChD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CACb,GACE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CACrD,8DAA8D,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC;QACzD,iBAAiB,EAAE,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAyB;IACnD,OAAO,MAAM,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ActionFromOperation } from "../name-builders/types.js";
2
+ export declare function getActionTypeName(action: ActionFromOperation): string;
3
+ export declare function getActionInputName(action: ActionFromOperation): string | undefined;
4
+ export declare function getActionType(action: ActionFromOperation): string;
5
+ export declare function getActionInputTypeNames(actions: ActionFromOperation[]): string;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-utils/templates/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,UAE5D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,sBAG7D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,UAExD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,EAAE,UAErE"}
@@ -0,0 +1,16 @@
1
+ import { constantCase, pascalCase } from "change-case";
2
+ export function getActionTypeName(action) {
3
+ return `${pascalCase(action.name)}Action`;
4
+ }
5
+ export function getActionInputName(action) {
6
+ if (!action.hasInput)
7
+ return;
8
+ return `${pascalCase(action.name)}Input`;
9
+ }
10
+ export function getActionType(action) {
11
+ return constantCase(action.name);
12
+ }
13
+ export function getActionInputTypeNames(actions) {
14
+ return actions.map(getActionInputName).join(",\n");
15
+ }
16
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/ts-morph-utils/templates/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGvD,MAAM,UAAU,iBAAiB,CAAC,MAA2B;IAC3D,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA2B;IAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO;IAC7B,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAA2B;IACvD,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAA8B;IACpE,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Project } from "ts-morph";
2
+ export declare function buildTsMorphProject(projectDir: string): Project;
3
+ //# sourceMappingURL=ts-morph-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-morph-project.d.ts","sourceRoot":"","sources":["../../../src/ts-morph-utils/ts-morph-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAInC,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,WAIrD"}
@@ -0,0 +1,9 @@
1
+ import { Project } from "ts-morph";
2
+ import { getDefaultProjectOptions } from "./file-utils.js";
3
+ import { buildTsConfigFilePath } from "./name-builders/common-files.js";
4
+ export function buildTsMorphProject(projectDir) {
5
+ const tsConfigFilePath = buildTsConfigFilePath(projectDir);
6
+ const project = new Project(getDefaultProjectOptions(tsConfigFilePath));
7
+ return project;
8
+ }
9
+ //# sourceMappingURL=ts-morph-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-morph-project.js","sourceRoot":"","sources":["../../../src/ts-morph-utils/ts-morph-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxE,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,34 @@
1
+ export type DocumentModelDocumentTypeMetadata = {
2
+ documentModelId: string;
3
+ documentModelDocumentTypeName: string;
4
+ documentModelDirName: string;
5
+ documentModelImportPath: string;
6
+ };
7
+ export type DocumentModelFilePaths = {
8
+ documentModelsSourceFilesPath: string;
9
+ documentModelsDirPath: string;
10
+ };
11
+ export type EditorFilePaths = {
12
+ editorSourceFilesPath: string;
13
+ editorsDirPath: string;
14
+ editorFilePath: string;
15
+ editorModuleFilePath: string;
16
+ editDocumentNameComponentFilePath: string;
17
+ editorConfigFilePath: string;
18
+ driveContentsFilePath: string;
19
+ editorComponentsDirPath: string;
20
+ };
21
+ export type EditorVariableNames = {
22
+ documentVariableName: string;
23
+ editDocumentNameComponentName: string;
24
+ useSelectedDocumentHookName: string;
25
+ documentNameVariableName: string;
26
+ dispatchFunctionName: string;
27
+ onClickEditHandlerName: string;
28
+ onCancelEditHandlerName: string;
29
+ setNameActionName: string;
30
+ isEditingVariableName: string;
31
+ setIsEditingFunctionName: string;
32
+ onSubmitSetNameFunctionName: string;
33
+ };
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ts-morph-utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iCAAiC,GAAG;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,6BAA6B,EAAE,MAAM,CAAC;IACtC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,6BAA6B,EAAE,MAAM,CAAC;IACtC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iCAAiC,EAAE,MAAM,CAAC;IAC1C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,6BAA6B,EAAE,MAAM,CAAC;IACtC,2BAA2B,EAAE,MAAM,CAAC;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;CACrC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ts-morph-utils/types.ts"],"names":[],"mappings":""}