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

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 (259) 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 +99 -83
  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/__tests__/generate-manifest.test.js.map +1 -1
  14. package/dist/src/codegen/__tests__/generate-versioned-document-model.test.d.ts +2 -0
  15. package/dist/src/codegen/__tests__/generate-versioned-document-model.test.d.ts.map +1 -0
  16. package/dist/src/codegen/__tests__/generate-versioned-document-model.test.js +142 -0
  17. package/dist/src/codegen/__tests__/generate-versioned-document-model.test.js.map +1 -0
  18. package/dist/src/codegen/generate.d.ts +42 -6
  19. package/dist/src/codegen/generate.d.ts.map +1 -1
  20. package/dist/src/codegen/generate.js +212 -93
  21. package/dist/src/codegen/generate.js.map +1 -1
  22. package/dist/src/codegen/graphql.d.ts +20 -17
  23. package/dist/src/codegen/graphql.d.ts.map +1 -1
  24. package/dist/src/codegen/graphql.js +105 -78
  25. package/dist/src/codegen/graphql.js.map +1 -1
  26. package/dist/src/codegen/hygen.d.ts +1 -8
  27. package/dist/src/codegen/hygen.d.ts.map +1 -1
  28. package/dist/src/codegen/hygen.js +11 -68
  29. package/dist/src/codegen/hygen.js.map +1 -1
  30. package/dist/src/index.d.ts +0 -1
  31. package/dist/src/index.d.ts.map +1 -1
  32. package/dist/src/index.js +0 -1
  33. package/dist/src/index.js.map +1 -1
  34. package/dist/src/ts-morph-utils/constants.d.ts +18 -0
  35. package/dist/src/ts-morph-utils/constants.d.ts.map +1 -0
  36. package/dist/src/ts-morph-utils/constants.js +18 -0
  37. package/dist/src/ts-morph-utils/constants.js.map +1 -0
  38. package/dist/src/ts-morph-utils/file-builders/document-editor.d.ts +28 -0
  39. package/dist/src/ts-morph-utils/file-builders/document-editor.d.ts.map +1 -0
  40. package/dist/src/ts-morph-utils/file-builders/document-editor.js +305 -0
  41. package/dist/src/ts-morph-utils/file-builders/document-editor.js.map +1 -0
  42. package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.d.ts +3 -0
  43. package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.d.ts.map +1 -0
  44. package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.js +216 -0
  45. package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.js.map +1 -0
  46. package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.d.ts +3 -0
  47. package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.d.ts.map +1 -0
  48. package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.js +55 -0
  49. package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.js.map +1 -0
  50. package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.d.ts +3 -0
  51. package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.d.ts.map +1 -0
  52. package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.js +236 -0
  53. package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.js.map +1 -0
  54. package/dist/src/ts-morph-utils/file-builders/document-model/types.d.ts +32 -0
  55. package/dist/src/ts-morph-utils/file-builders/document-model/types.d.ts.map +1 -0
  56. package/dist/src/ts-morph-utils/file-builders/document-model/types.js +2 -0
  57. package/dist/src/ts-morph-utils/file-builders/document-model/types.js.map +1 -0
  58. package/dist/src/ts-morph-utils/file-builders/document-model/upgrades-dir.d.ts +31 -0
  59. package/dist/src/ts-morph-utils/file-builders/document-model/upgrades-dir.d.ts.map +1 -0
  60. package/dist/src/ts-morph-utils/file-builders/document-model/upgrades-dir.js +136 -0
  61. package/dist/src/ts-morph-utils/file-builders/document-model/upgrades-dir.js.map +1 -0
  62. package/dist/src/ts-morph-utils/file-builders/document-model.d.ts +8 -0
  63. package/dist/src/ts-morph-utils/file-builders/document-model.d.ts.map +1 -0
  64. package/dist/src/ts-morph-utils/file-builders/document-model.js +250 -0
  65. package/dist/src/ts-morph-utils/file-builders/document-model.js.map +1 -0
  66. package/dist/src/ts-morph-utils/file-builders/drive-editor.d.ts +56 -0
  67. package/dist/src/ts-morph-utils/file-builders/drive-editor.d.ts.map +1 -0
  68. package/dist/src/ts-morph-utils/file-builders/drive-editor.js +341 -0
  69. package/dist/src/ts-morph-utils/file-builders/drive-editor.js.map +1 -0
  70. package/dist/src/ts-morph-utils/file-builders/editor-common.d.ts +3 -0
  71. package/dist/src/ts-morph-utils/file-builders/editor-common.d.ts.map +1 -0
  72. package/dist/src/ts-morph-utils/file-builders/editor-common.js +15 -0
  73. package/dist/src/ts-morph-utils/file-builders/editor-common.js.map +1 -0
  74. package/dist/src/ts-morph-utils/file-builders/index-files.d.ts +18 -0
  75. package/dist/src/ts-morph-utils/file-builders/index-files.d.ts.map +1 -0
  76. package/dist/src/ts-morph-utils/file-builders/index-files.js +25 -0
  77. package/dist/src/ts-morph-utils/file-builders/index-files.js.map +1 -0
  78. package/dist/src/ts-morph-utils/file-builders/module-files.d.ts +25 -0
  79. package/dist/src/ts-morph-utils/file-builders/module-files.d.ts.map +1 -0
  80. package/dist/src/ts-morph-utils/file-builders/module-files.js +104 -0
  81. package/dist/src/ts-morph-utils/file-builders/module-files.js.map +1 -0
  82. package/dist/src/ts-morph-utils/file-builders/subgraphs.d.ts +6 -0
  83. package/dist/src/ts-morph-utils/file-builders/subgraphs.d.ts.map +1 -0
  84. package/dist/src/ts-morph-utils/file-builders/subgraphs.js +53 -0
  85. package/dist/src/ts-morph-utils/file-builders/subgraphs.js.map +1 -0
  86. package/dist/src/ts-morph-utils/file-builders/types.d.ts +13 -0
  87. package/dist/src/ts-morph-utils/file-builders/types.d.ts.map +1 -0
  88. package/dist/src/ts-morph-utils/file-builders/types.js +2 -0
  89. package/dist/src/ts-morph-utils/file-builders/types.js.map +1 -0
  90. package/dist/src/ts-morph-utils/file-utils.d.ts +28 -0
  91. package/dist/src/ts-morph-utils/file-utils.d.ts.map +1 -0
  92. package/dist/src/ts-morph-utils/file-utils.js +102 -0
  93. package/dist/src/ts-morph-utils/file-utils.js.map +1 -0
  94. package/dist/src/ts-morph-utils/name-builders/common-files.d.ts +5 -0
  95. package/dist/src/ts-morph-utils/name-builders/common-files.d.ts.map +1 -0
  96. package/dist/src/ts-morph-utils/name-builders/common-files.js +15 -0
  97. package/dist/src/ts-morph-utils/name-builders/common-files.js.map +1 -0
  98. package/dist/src/ts-morph-utils/name-builders/document-model-files.d.ts +4 -0
  99. package/dist/src/ts-morph-utils/name-builders/document-model-files.d.ts.map +1 -0
  100. package/dist/src/ts-morph-utils/name-builders/document-model-files.js +12 -0
  101. package/dist/src/ts-morph-utils/name-builders/document-model-files.js.map +1 -0
  102. package/dist/src/ts-morph-utils/name-builders/editor-files.d.ts +10 -0
  103. package/dist/src/ts-morph-utils/name-builders/editor-files.d.ts.map +1 -0
  104. package/dist/src/ts-morph-utils/name-builders/editor-files.js +37 -0
  105. package/dist/src/ts-morph-utils/name-builders/editor-files.js.map +1 -0
  106. package/dist/src/ts-morph-utils/name-builders/get-file-paths.d.ts +4 -0
  107. package/dist/src/ts-morph-utils/name-builders/get-file-paths.d.ts.map +1 -0
  108. package/dist/src/ts-morph-utils/name-builders/get-file-paths.js +21 -0
  109. package/dist/src/ts-morph-utils/name-builders/get-file-paths.js.map +1 -0
  110. package/dist/src/ts-morph-utils/name-builders/get-variable-names.d.ts +37 -0
  111. package/dist/src/ts-morph-utils/name-builders/get-variable-names.d.ts.map +1 -0
  112. package/dist/src/ts-morph-utils/name-builders/get-variable-names.js +145 -0
  113. package/dist/src/ts-morph-utils/name-builders/get-variable-names.js.map +1 -0
  114. package/dist/src/ts-morph-utils/name-builders/types.d.ts +18 -0
  115. package/dist/src/ts-morph-utils/name-builders/types.d.ts.map +1 -0
  116. package/dist/src/ts-morph-utils/name-builders/types.js +2 -0
  117. package/dist/src/ts-morph-utils/name-builders/types.js.map +1 -0
  118. package/dist/src/ts-morph-utils/name-builders/variables.d.ts +12 -0
  119. package/dist/src/ts-morph-utils/name-builders/variables.d.ts.map +1 -0
  120. package/dist/src/ts-morph-utils/name-builders/variables.js +35 -0
  121. package/dist/src/ts-morph-utils/name-builders/variables.js.map +1 -0
  122. package/dist/src/ts-morph-utils/syntax-builders.d.ts +72 -0
  123. package/dist/src/ts-morph-utils/syntax-builders.d.ts.map +1 -0
  124. package/dist/src/ts-morph-utils/syntax-builders.js +201 -0
  125. package/dist/src/ts-morph-utils/syntax-builders.js.map +1 -0
  126. package/dist/src/ts-morph-utils/syntax-getters.d.ts +11 -0
  127. package/dist/src/ts-morph-utils/syntax-getters.d.ts.map +1 -0
  128. package/dist/src/ts-morph-utils/syntax-getters.js +45 -0
  129. package/dist/src/ts-morph-utils/syntax-getters.js.map +1 -0
  130. package/dist/src/ts-morph-utils/templates/document-model/actions.d.ts +3 -0
  131. package/dist/src/ts-morph-utils/templates/document-model/actions.d.ts.map +1 -0
  132. package/dist/src/ts-morph-utils/templates/document-model/actions.js +28 -0
  133. package/dist/src/ts-morph-utils/templates/document-model/actions.js.map +1 -0
  134. package/dist/src/ts-morph-utils/templates/document-model/gen/actions.d.ts +3 -0
  135. package/dist/src/ts-morph-utils/templates/document-model/gen/actions.d.ts.map +1 -0
  136. package/dist/src/ts-morph-utils/templates/document-model/gen/actions.js +40 -0
  137. package/dist/src/ts-morph-utils/templates/document-model/gen/actions.js.map +1 -0
  138. package/dist/src/ts-morph-utils/templates/document-model/gen/creators.d.ts +3 -0
  139. package/dist/src/ts-morph-utils/templates/document-model/gen/creators.d.ts.map +1 -0
  140. package/dist/src/ts-morph-utils/templates/document-model/gen/creators.js +16 -0
  141. package/dist/src/ts-morph-utils/templates/document-model/gen/creators.js.map +1 -0
  142. package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.d.ts +3 -0
  143. package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.d.ts.map +1 -0
  144. package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.js +56 -0
  145. package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.js.map +1 -0
  146. package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.d.ts +3 -0
  147. package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.d.ts.map +1 -0
  148. package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.js +5 -0
  149. package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.js.map +1 -0
  150. package/dist/src/ts-morph-utils/templates/document-model/gen/index.d.ts +3 -0
  151. package/dist/src/ts-morph-utils/templates/document-model/gen/index.d.ts.map +1 -0
  152. package/dist/src/ts-morph-utils/templates/document-model/gen/index.js +29 -0
  153. package/dist/src/ts-morph-utils/templates/document-model/gen/index.js.map +1 -0
  154. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.d.ts +8 -0
  155. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.d.ts.map +1 -0
  156. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.js +39 -0
  157. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.js.map +1 -0
  158. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.d.ts +3 -0
  159. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.d.ts.map +1 -0
  160. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.js +94 -0
  161. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.js.map +1 -0
  162. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.d.ts +3 -0
  163. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.d.ts.map +1 -0
  164. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.js +73 -0
  165. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.js.map +1 -0
  166. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.d.ts +3 -0
  167. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.d.ts.map +1 -0
  168. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.js +61 -0
  169. package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.js.map +1 -0
  170. package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.d.ts +3 -0
  171. package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.d.ts.map +1 -0
  172. package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.js +93 -0
  173. package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.js.map +1 -0
  174. package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.d.ts +3 -0
  175. package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.d.ts.map +1 -0
  176. package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.js +106 -0
  177. package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.js.map +1 -0
  178. package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.d.ts +2 -0
  179. package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.d.ts.map +1 -0
  180. package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.js +6 -0
  181. package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.js.map +1 -0
  182. package/dist/src/ts-morph-utils/templates/document-model/gen/types.d.ts +3 -0
  183. package/dist/src/ts-morph-utils/templates/document-model/gen/types.d.ts.map +1 -0
  184. package/dist/src/ts-morph-utils/templates/document-model/gen/types.js +38 -0
  185. package/dist/src/ts-morph-utils/templates/document-model/gen/types.js.map +1 -0
  186. package/dist/src/ts-morph-utils/templates/document-model/gen/utils.d.ts +3 -0
  187. package/dist/src/ts-morph-utils/templates/document-model/gen/utils.d.ts.map +1 -0
  188. package/dist/src/ts-morph-utils/templates/document-model/gen/utils.js +77 -0
  189. package/dist/src/ts-morph-utils/templates/document-model/gen/utils.js.map +1 -0
  190. package/dist/src/ts-morph-utils/templates/document-model/hooks.d.ts +3 -0
  191. package/dist/src/ts-morph-utils/templates/document-model/hooks.d.ts.map +1 -0
  192. package/dist/src/ts-morph-utils/templates/document-model/hooks.js +49 -0
  193. package/dist/src/ts-morph-utils/templates/document-model/hooks.js.map +1 -0
  194. package/dist/src/ts-morph-utils/templates/document-model/index.d.ts +2 -0
  195. package/dist/src/ts-morph-utils/templates/document-model/index.d.ts.map +1 -0
  196. package/dist/src/ts-morph-utils/templates/document-model/index.js +9 -0
  197. package/dist/src/ts-morph-utils/templates/document-model/index.js.map +1 -0
  198. package/dist/src/ts-morph-utils/templates/document-model/module.d.ts +8 -0
  199. package/dist/src/ts-morph-utils/templates/document-model/module.d.ts.map +1 -0
  200. package/dist/src/ts-morph-utils/templates/document-model/module.js +25 -0
  201. package/dist/src/ts-morph-utils/templates/document-model/module.js.map +1 -0
  202. package/dist/src/ts-morph-utils/templates/document-model/src/index.d.ts +2 -0
  203. package/dist/src/ts-morph-utils/templates/document-model/src/index.d.ts.map +1 -0
  204. package/dist/src/ts-morph-utils/templates/document-model/src/index.js +5 -0
  205. package/dist/src/ts-morph-utils/templates/document-model/src/index.js.map +1 -0
  206. package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.d.ts +3 -0
  207. package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.d.ts.map +1 -0
  208. package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.js +121 -0
  209. package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.js.map +1 -0
  210. package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.d.ts +6 -0
  211. package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.d.ts.map +1 -0
  212. package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.js +87 -0
  213. package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.js.map +1 -0
  214. package/dist/src/ts-morph-utils/templates/document-model/src/utils.d.ts +2 -0
  215. package/dist/src/ts-morph-utils/templates/document-model/src/utils.d.ts.map +1 -0
  216. package/dist/src/ts-morph-utils/templates/document-model/src/utils.js +5 -0
  217. package/dist/src/ts-morph-utils/templates/document-model/src/utils.js.map +1 -0
  218. package/dist/src/ts-morph-utils/templates/document-model/upgrades/upgrade-transition.d.ts +7 -0
  219. package/dist/src/ts-morph-utils/templates/document-model/upgrades/upgrade-transition.d.ts.map +1 -0
  220. package/dist/src/ts-morph-utils/templates/document-model/upgrades/upgrade-transition.js +22 -0
  221. package/dist/src/ts-morph-utils/templates/document-model/upgrades/upgrade-transition.js.map +1 -0
  222. package/dist/src/ts-morph-utils/templates/document-model/utils.d.ts +3 -0
  223. package/dist/src/ts-morph-utils/templates/document-model/utils.d.ts.map +1 -0
  224. package/dist/src/ts-morph-utils/templates/document-model/utils.js +11 -0
  225. package/dist/src/ts-morph-utils/templates/document-model/utils.js.map +1 -0
  226. package/dist/src/ts-morph-utils/templates/drive-editor.d.ts +5 -0
  227. package/dist/src/ts-morph-utils/templates/drive-editor.d.ts.map +1 -0
  228. package/dist/src/ts-morph-utils/templates/drive-editor.js +211 -0
  229. package/dist/src/ts-morph-utils/templates/drive-editor.js.map +1 -0
  230. package/dist/src/ts-morph-utils/templates/unsafe-utils.d.ts +8 -0
  231. package/dist/src/ts-morph-utils/templates/unsafe-utils.d.ts.map +1 -0
  232. package/dist/src/ts-morph-utils/templates/unsafe-utils.js +23 -0
  233. package/dist/src/ts-morph-utils/templates/unsafe-utils.js.map +1 -0
  234. package/dist/src/ts-morph-utils/templates/utils.d.ts +6 -0
  235. package/dist/src/ts-morph-utils/templates/utils.d.ts.map +1 -0
  236. package/dist/src/ts-morph-utils/templates/utils.js +16 -0
  237. package/dist/src/ts-morph-utils/templates/utils.js.map +1 -0
  238. package/dist/src/ts-morph-utils/ts-morph-project.d.ts +3 -0
  239. package/dist/src/ts-morph-utils/ts-morph-project.d.ts.map +1 -0
  240. package/dist/src/ts-morph-utils/ts-morph-project.js +9 -0
  241. package/dist/src/ts-morph-utils/ts-morph-project.js.map +1 -0
  242. package/dist/src/ts-morph-utils/types.d.ts +34 -0
  243. package/dist/src/ts-morph-utils/types.d.ts.map +1 -0
  244. package/dist/src/ts-morph-utils/types.js +2 -0
  245. package/dist/src/ts-morph-utils/types.js.map +1 -0
  246. package/dist/src/utils/mock.d.ts +2 -3
  247. package/dist/src/utils/mock.d.ts.map +1 -1
  248. package/dist/src/utils/mock.js +4 -4
  249. package/dist/src/utils/mock.js.map +1 -1
  250. package/dist/tsconfig.tsbuildinfo +1 -1
  251. package/package.json +18 -13
  252. package/dist/src/codegen/__tests__/generate-schemas.test.d.ts +0 -2
  253. package/dist/src/codegen/__tests__/generate-schemas.test.d.ts.map +0 -1
  254. package/dist/src/codegen/__tests__/generate-schemas.test.js +0 -143
  255. package/dist/src/codegen/__tests__/generate-schemas.test.js.map +0 -1
  256. package/dist/src/ts-morph-utils.d.ts +0 -48
  257. package/dist/src/ts-morph-utils.d.ts.map +0 -1
  258. package/dist/src/ts-morph-utils.js +0 -207
  259. package/dist/src/ts-morph-utils.js.map +0 -1
@@ -0,0 +1,142 @@
1
+ import { paramCase } from "change-case";
2
+ import { readdirSync } from "fs";
3
+ import path from "path";
4
+ import { describe, expect, it } from "vitest";
5
+ import { generateDocumentModel } from "../generate.js";
6
+ import { loadDocumentModel } from "../utils.js";
7
+ import { runGeneratedTests } from "./fixtures/run-generated-tests.js";
8
+ import { compile } from "./fixtures/typecheck.js";
9
+ import { copyAllFiles, purgeDirAfterTest, resetDirForTest } from "./utils.js";
10
+ let testCount = 1;
11
+ const parentOutDirName = "versioned-document-models";
12
+ const testsDir = import.meta.dirname;
13
+ const testOutputParentDir = path.join(testsDir, ".test-output", parentOutDirName);
14
+ const testsDataDir = path.join(testsDir, "data", "versioned-document-models");
15
+ function getDirInTestDataDir(dirName) {
16
+ return path.join(testsDataDir, dirName);
17
+ }
18
+ function getTestOutDir(context) {
19
+ const testDirName = `${testCount++}-${paramCase(context.task.name)}`;
20
+ return path.join(testOutputParentDir, testDirName);
21
+ }
22
+ function getDocumentModelJsonFilePath(basePath, dirName) {
23
+ return path.join(basePath, dirName, `${dirName}.json`);
24
+ }
25
+ async function loadDocumentModelsInDir(inDirName, testOutDir) {
26
+ const documentModelsInDir = getDirInTestDataDir(inDirName);
27
+ const documentModelsOutDir = path.join(testOutDir, "document-models");
28
+ const documentModelDirs = readdirSync(documentModelsInDir, {
29
+ withFileTypes: true,
30
+ })
31
+ .filter((value) => value.isDirectory())
32
+ .map((value) => value.name);
33
+ const documentModelStates = await Promise.all(documentModelDirs.map(async (dirName) => await loadDocumentModel(getDocumentModelJsonFilePath(documentModelsInDir, dirName))));
34
+ for (const documentModelState of documentModelStates) {
35
+ await generateDocumentModel({
36
+ documentModelState,
37
+ dir: documentModelsOutDir,
38
+ legacy: false,
39
+ useVersioning: true,
40
+ specifiedPackageName: "test",
41
+ });
42
+ }
43
+ }
44
+ async function loadBaseProjectFromDir(dirName, testOutDir) {
45
+ const projectDir = getDirInTestDataDir(dirName);
46
+ await copyAllFiles(projectDir, testOutDir);
47
+ }
48
+ describe("versioned document models", () => {
49
+ describe("spec version 1", () => {
50
+ it("should generate new document models as v1", {
51
+ timeout: 10000000,
52
+ }, async (context) => {
53
+ const testOutDir = getTestOutDir(context);
54
+ resetDirForTest(testOutDir);
55
+ await loadBaseProjectFromDir("empty-project", testOutDir);
56
+ await loadDocumentModelsInDir("spec-version-1", testOutDir);
57
+ await compile(testOutDir);
58
+ await runGeneratedTests(testOutDir);
59
+ purgeDirAfterTest(testOutDir);
60
+ });
61
+ it("should persist existing reducers, tests, utils, and custom files when generating for the same spec version", {
62
+ timeout: 10000000,
63
+ }, async (context) => {
64
+ const testOutDir = getTestOutDir(context);
65
+ resetDirForTest(testOutDir);
66
+ await loadBaseProjectFromDir("project-with-existing-document-models-at-spec-1", testOutDir);
67
+ await loadDocumentModelsInDir("spec-version-1-with-more-operations", testOutDir);
68
+ await compile(testOutDir);
69
+ await runGeneratedTests(testOutDir);
70
+ purgeDirAfterTest(testOutDir);
71
+ });
72
+ });
73
+ describe("spec version 2", () => {
74
+ it("should handle generating document models as v2", {
75
+ timeout: 10000000,
76
+ }, async (context) => {
77
+ const testOutDir = getTestOutDir(context);
78
+ resetDirForTest(testOutDir);
79
+ await loadBaseProjectFromDir("empty-project", testOutDir);
80
+ await loadDocumentModelsInDir("spec-version-2", testOutDir);
81
+ await compile(testOutDir);
82
+ await runGeneratedTests(testOutDir);
83
+ purgeDirAfterTest(testOutDir);
84
+ });
85
+ it("should persist existing reducers, tests, utils, and custom files when generating a new spec version", {
86
+ timeout: 10000000,
87
+ }, async (context) => {
88
+ const testOutDir = getTestOutDir(context);
89
+ resetDirForTest(testOutDir);
90
+ await loadBaseProjectFromDir("project-with-existing-document-models-at-spec-1", testOutDir);
91
+ await loadDocumentModelsInDir("spec-version-2", testOutDir);
92
+ await compile(testOutDir);
93
+ await runGeneratedTests(testOutDir);
94
+ purgeDirAfterTest(testOutDir);
95
+ });
96
+ it("should throw a typescript error in upgrades when new state does not match old state", {
97
+ timeout: 10000000,
98
+ }, async (context) => {
99
+ const testOutDir = getTestOutDir(context);
100
+ resetDirForTest(testOutDir);
101
+ await loadBaseProjectFromDir("project-with-existing-document-models-at-spec-1", testOutDir);
102
+ await loadDocumentModelsInDir("spec-version-2-with-state-changes", testOutDir);
103
+ await expect(() => compile(testOutDir)).rejects.toThrow();
104
+ purgeDirAfterTest(testOutDir);
105
+ });
106
+ });
107
+ describe("spec version 3", () => {
108
+ it("should handle generating document models as v3", {
109
+ timeout: 10000000,
110
+ }, async (context) => {
111
+ const testOutDir = getTestOutDir(context);
112
+ resetDirForTest(testOutDir);
113
+ await loadBaseProjectFromDir("empty-project", testOutDir);
114
+ await loadDocumentModelsInDir("spec-version-3", testOutDir);
115
+ await compile(testOutDir);
116
+ await runGeneratedTests(testOutDir);
117
+ purgeDirAfterTest(testOutDir);
118
+ });
119
+ it("should persist existing reducers, tests, utils, and custom files when generating a new spec version", {
120
+ timeout: 10000000,
121
+ }, async (context) => {
122
+ const testOutDir = getTestOutDir(context);
123
+ resetDirForTest(testOutDir);
124
+ await loadBaseProjectFromDir("project-with-existing-document-models-at-spec-2", testOutDir);
125
+ await loadDocumentModelsInDir("spec-version-3", testOutDir);
126
+ await compile(testOutDir);
127
+ await runGeneratedTests(testOutDir);
128
+ purgeDirAfterTest(testOutDir);
129
+ });
130
+ it("should throw a typescript error in upgrades when new state does not match old state", {
131
+ timeout: 10000000,
132
+ }, async (context) => {
133
+ const testOutDir = getTestOutDir(context);
134
+ resetDirForTest(testOutDir);
135
+ await loadBaseProjectFromDir("project-with-existing-document-models-at-spec-2", testOutDir);
136
+ await loadDocumentModelsInDir("spec-version-3-with-state-changes", testOutDir);
137
+ await expect(() => compile(testOutDir)).rejects.toThrow();
138
+ purgeDirAfterTest(testOutDir);
139
+ });
140
+ });
141
+ });
142
+ //# sourceMappingURL=generate-versioned-document-model.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-versioned-document-model.test.js","sourceRoot":"","sources":["../../../../src/codegen/__tests__/generate-versioned-document-model.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,23 @@
1
1
  import type { PartialPowerhouseManifest, PowerhouseConfig } from "@powerhousedao/config";
2
2
  import type { DocumentModelGlobalState } from "document-model";
3
3
  import type { CodegenOptions } from "./types.js";
4
- export declare function generate(config: PowerhouseConfig): Promise<void>;
5
- export declare function generateFromFile(path: string, config: PowerhouseConfig, options?: CodegenOptions): Promise<void>;
4
+ export declare function generateAll(args: {
5
+ dir: string;
6
+ legacy: boolean;
7
+ useVersioning: boolean;
8
+ watch?: boolean;
9
+ skipFormat?: boolean;
10
+ verbose?: boolean;
11
+ force?: boolean;
12
+ }): Promise<void>;
13
+ export declare function generate(config: PowerhouseConfig, legacy: boolean, useVersioning: boolean): Promise<void>;
14
+ export declare function generateFromFile(args: {
15
+ path: string;
16
+ config: PowerhouseConfig;
17
+ legacy: boolean;
18
+ useVersioning: boolean;
19
+ options?: CodegenOptions;
20
+ }): Promise<void>;
6
21
  /**
7
22
  * Generates code from a DocumentModelGlobalState object directly.
8
23
  *
@@ -16,27 +31,48 @@ export declare function generateFromFile(path: string, config: PowerhouseConfig,
16
31
  * @param options - Optional configuration for generation behavior (verbose logging, etc.)
17
32
  * @returns A promise that resolves when code generation is complete
18
33
  */
19
- export declare function generateFromDocument(documentModelState: DocumentModelGlobalState, config: PowerhouseConfig, options?: CodegenOptions): Promise<void>;
34
+ export declare function generateFromDocument(args: {
35
+ documentModelState: DocumentModelGlobalState;
36
+ config: PowerhouseConfig;
37
+ legacy: boolean;
38
+ useVersioning: boolean;
39
+ options?: CodegenOptions;
40
+ }): Promise<void>;
41
+ type GenerateDocumentModelArgs = {
42
+ dir: string;
43
+ documentModelState: DocumentModelGlobalState;
44
+ legacy: boolean;
45
+ useVersioning: boolean;
46
+ specifiedPackageName?: string;
47
+ watch?: boolean;
48
+ skipFormat?: boolean;
49
+ verbose?: boolean;
50
+ force?: boolean;
51
+ };
52
+ export declare function generateDocumentModel(args: GenerateDocumentModelArgs): Promise<void>;
20
53
  type GenerateEditorArgs = {
21
54
  name: string;
22
55
  documentTypes: string[];
23
56
  config: PowerhouseConfig;
57
+ legacy: boolean;
24
58
  editorId?: string;
25
59
  specifiedPackageName?: string;
26
60
  editorDirName?: string;
27
61
  };
28
62
  export declare function generateEditor(args: GenerateEditorArgs): Promise<void>;
29
- export declare function generateSubgraphFromDocumentModel(name: string, documentModel: DocumentModelGlobalState, config: PowerhouseConfig, options?: CodegenOptions): Promise<void>;
30
- export declare function generateSubgraph(name: string, file: string | null, config: PowerhouseConfig, options?: CodegenOptions): Promise<void>;
31
- export declare function generateProcessor(name: string, type: "analytics" | "relationalDb", documentTypes: string[], config: PowerhouseConfig): Promise<void>;
32
63
  export declare function generateDriveEditor(options: {
33
64
  name: string;
34
65
  config: PowerhouseConfig;
66
+ legacy: boolean;
35
67
  appId?: string;
36
68
  allowedDocumentTypes?: string;
37
69
  isDragAndDropEnabled?: boolean;
38
70
  driveEditorDirName?: string;
71
+ specifiedPackageName?: string;
39
72
  }): Promise<void>;
73
+ export declare function generateSubgraphFromDocumentModel(name: string, documentModel: DocumentModelGlobalState, config: PowerhouseConfig, options?: CodegenOptions): Promise<void>;
74
+ export declare function generateSubgraph(name: string, file: string | null, config: PowerhouseConfig, options?: CodegenOptions): Promise<void>;
75
+ export declare function generateProcessor(name: string, type: "analytics" | "relationalDb", documentTypes: string[], config: PowerhouseConfig): Promise<void>;
40
76
  export declare function generateImportScript(name: string, config: PowerhouseConfig): Promise<void>;
41
77
  export declare function generateManifest(manifestData: PartialPowerhouseManifest, projectRoot?: string): string;
42
78
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/codegen/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAc/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,wBAAsB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,iBAItD;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,cAAmB,iBAO7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CACxC,kBAAkB,EAAE,wBAAwB,EAC5C,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,cAAmB,iBAI7B;AAED,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,iBAqC5D;AAED,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,wBAAwB,EACvC,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,cAAmB,iBAG7B;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,cAAmB,iBAO7B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAAG,cAAc,EAClC,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,gBAAgB,iBAWzB;AACD,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,iBAqBA;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,iBAKzB;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,yBAAyB,EACvC,WAAW,CAAC,EAAE,MAAM,UAoFrB"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/codegen/generate.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,70 @@
1
- import { typeDefs } from "@powerhousedao/document-engineering/graphql";
2
1
  import { paramCase } from "change-case";
3
2
  import fs from "node:fs";
4
- import { join } from "node:path";
3
+ import path, { join } from "node:path";
5
4
  import { readPackage } from "read-pkg";
6
- import { generateSchema, generateSchemas } from "./graphql.js";
7
- import { generateAll, hygenGenerateDocumentModel, hygenGenerateDriveEditor, hygenGenerateEditor, hygenGenerateImportScript, hygenGenerateProcessor, hygenGenerateSubgraph, } from "./hygen.js";
5
+ import semver from "semver";
6
+ import { TSMorphCodeGenerator } from "../ts-morph-generator/index.js";
7
+ import { tsMorphGenerateEditor } from "../ts-morph-utils/file-builders/document-editor.js";
8
+ import { makeDocumentModelModulesFile, tsMorphGenerateDocumentModel, } from "../ts-morph-utils/file-builders/document-model.js";
9
+ import { tsMorphGenerateDriveEditor } from "../ts-morph-utils/file-builders/drive-editor.js";
10
+ import { makeSubgraphsIndexFile } from "../ts-morph-utils/file-builders/subgraphs.js";
11
+ import { buildTsMorphProject } from "../ts-morph-utils/ts-morph-project.js";
12
+ import { generateDocumentModelZodSchemas, generateSchemas } from "./graphql.js";
13
+ import { hygenGenerateDocumentModel, hygenGenerateDriveEditor, hygenGenerateEditor, hygenGenerateImportScript, hygenGenerateProcessor, hygenGenerateSubgraph, } from "./hygen.js";
8
14
  import { getDocumentTypesMap, loadDocumentModel } from "./utils.js";
9
- export async function generate(config) {
15
+ export async function generateAll(args) {
16
+ const { dir, legacy, useVersioning, watch = false, skipFormat = false, verbose = true, force = true, } = args;
17
+ const files = fs.readdirSync(dir, { withFileTypes: true });
18
+ const documentModelStates = [];
19
+ for (const directory of files.filter((f) => f.isDirectory())) {
20
+ const documentModelPath = path.join(dir, directory.name, `${directory.name}.json`);
21
+ if (!fs.existsSync(documentModelPath)) {
22
+ continue;
23
+ }
24
+ try {
25
+ const documentModelState = await loadDocumentModel(documentModelPath);
26
+ documentModelStates.push(documentModelState);
27
+ await generateDocumentModel({
28
+ dir,
29
+ documentModelState,
30
+ watch,
31
+ skipFormat,
32
+ verbose,
33
+ force,
34
+ legacy,
35
+ useVersioning,
36
+ });
37
+ }
38
+ catch (error) {
39
+ if (verbose) {
40
+ console.error(directory.name, error);
41
+ }
42
+ }
43
+ }
44
+ }
45
+ export async function generate(config, legacy, useVersioning) {
10
46
  const { skipFormat, watch } = config;
11
47
  await generateSchemas(config.documentModelsDir, { skipFormat, watch });
12
- await generateAll(config.documentModelsDir, { skipFormat, watch });
48
+ await generateAll({
49
+ dir: config.documentModelsDir,
50
+ legacy,
51
+ useVersioning,
52
+ skipFormat,
53
+ watch,
54
+ });
13
55
  }
14
- export async function generateFromFile(path, config, options = {}) {
56
+ export async function generateFromFile(args) {
57
+ const { path, config, legacy, useVersioning, options } = args;
15
58
  // load document model spec from file
16
- const documentModel = await loadDocumentModel(path);
59
+ const documentModelState = await loadDocumentModel(path);
17
60
  // delegate to shared generation function
18
- await generateFromDocumentModel(documentModel, config, path, options);
61
+ await generateFromDocumentModel({
62
+ documentModelState,
63
+ config,
64
+ legacy,
65
+ useVersioning,
66
+ options,
67
+ });
19
68
  }
20
69
  /**
21
70
  * Generates code from a DocumentModelGlobalState object directly.
@@ -30,80 +79,175 @@ export async function generateFromFile(path, config, options = {}) {
30
79
  * @param options - Optional configuration for generation behavior (verbose logging, etc.)
31
80
  * @returns A promise that resolves when code generation is complete
32
81
  */
33
- export async function generateFromDocument(documentModelState, config, options = {}) {
82
+ export async function generateFromDocument(args) {
34
83
  // delegate to shared generation function
35
- await generateFromDocumentModel(documentModelState, config, null, options);
84
+ await generateFromDocumentModel({ ...args, filePath: null });
85
+ }
86
+ export async function generateDocumentModel(args) {
87
+ const { dir, documentModelState, specifiedPackageName, legacy, useVersioning, ...hygenArgs } = args;
88
+ const packageJson = await readPackage();
89
+ const packageNameFromPackageJson = packageJson.name;
90
+ const packageName = specifiedPackageName || packageNameFromPackageJson;
91
+ const zodSemverString = findZodDependencyInPackageJson(packageJson);
92
+ ensureZodVersionIsSufficient(zodSemverString);
93
+ const projectDir = path.dirname(dir);
94
+ if (legacy) {
95
+ await hygenGenerateDocumentModel(documentModelState, dir, packageName, hygenArgs);
96
+ const specification = documentModelState.specifications[documentModelState.specifications.length - 1];
97
+ const documentModelsDirPath = path.join(projectDir, "document-models");
98
+ const documentModelDirPath = path.join(documentModelsDirPath, paramCase(documentModelState.name));
99
+ await generateDocumentModelZodSchemas({
100
+ documentModelDirPath,
101
+ specification,
102
+ });
103
+ const generator = new TSMorphCodeGenerator(projectDir, [documentModelState], packageName, {
104
+ directories: { documentModelDir: "document-models" },
105
+ forceUpdate: true,
106
+ });
107
+ await generator.generateReducers();
108
+ const project = buildTsMorphProject(projectDir);
109
+ makeDocumentModelModulesFile({
110
+ project,
111
+ projectDir,
112
+ });
113
+ }
114
+ else {
115
+ await tsMorphGenerateDocumentModel({
116
+ projectDir,
117
+ packageName,
118
+ documentModelState,
119
+ useVersioning,
120
+ });
121
+ }
122
+ }
123
+ function findZodDependencyInPackageJson(packageJson) {
124
+ const dependencies = {
125
+ ...packageJson.dependencies,
126
+ ...packageJson.devDependencies,
127
+ };
128
+ const zodDependency = dependencies["zod"];
129
+ return zodDependency;
130
+ }
131
+ function ensureZodVersionIsSufficient(zodSemverString) {
132
+ if (!zodSemverString)
133
+ return;
134
+ const isSufficient = semver.satisfies("4.1.13", zodSemverString);
135
+ if (!isSufficient) {
136
+ throw new Error(`Your version of zod "${zodSemverString}" is out of date. Please install zod version 4.x to continue.`);
137
+ }
36
138
  }
37
139
  export async function generateEditor(args) {
38
- const { name, documentTypes, config, editorId, specifiedPackageName, editorDirName, } = args;
39
- const pathOrigin = "../../";
40
- const { documentModelsDir, skipFormat } = config;
41
- const documentTypesMap = getDocumentTypesMap(documentModelsDir, pathOrigin);
42
- const invalidType = documentTypes.find((type) => !Object.keys(documentTypesMap).includes(type));
43
- if (invalidType) {
44
- throw new Error(`Document model for ${invalidType} not found. Make sure the document model is available in the document-models directory (${documentModelsDir}) and has been properly generated.`);
140
+ const { name, documentTypes, config, legacy, editorId: editorIdArg, specifiedPackageName, editorDirName, } = args;
141
+ if (legacy) {
142
+ const pathOrigin = "../../";
143
+ const { documentModelsDir, skipFormat } = config;
144
+ const documentTypesMap = getDocumentTypesMap(documentModelsDir, pathOrigin);
145
+ const invalidType = documentTypes.find((type) => !Object.keys(documentTypesMap).includes(type));
146
+ if (invalidType) {
147
+ throw new Error(`Document model for ${invalidType} not found. Make sure the document model is available in the document-models directory (${documentModelsDir}) and has been properly generated.`);
148
+ }
149
+ const packageNameFromPackageJson = await readPackage().then((pkg) => pkg.name);
150
+ const packageName = specifiedPackageName || packageNameFromPackageJson;
151
+ return hygenGenerateEditor({
152
+ name,
153
+ documentTypes,
154
+ documentTypesMap,
155
+ dir: config.editorsDir,
156
+ documentModelsDir: config.documentModelsDir,
157
+ packageName,
158
+ skipFormat,
159
+ editorId: args.editorId,
160
+ editorDirName,
161
+ });
45
162
  }
46
163
  const packageNameFromPackageJson = await readPackage().then((pkg) => pkg.name);
47
164
  const packageName = specifiedPackageName || packageNameFromPackageJson;
48
- return hygenGenerateEditor({
49
- name,
50
- documentTypes,
51
- documentTypesMap,
52
- dir: config.editorsDir,
53
- documentModelsDir: config.documentModelsDir,
165
+ const projectDir = path.dirname(config.editorsDir);
166
+ if (documentTypes.length > 1) {
167
+ throw new Error("Multiple document types are not supported yet");
168
+ }
169
+ const documentModelId = documentTypes[0];
170
+ const editorName = name;
171
+ const editorId = editorIdArg || paramCase(editorName);
172
+ const editorDir = editorDirName || paramCase(editorName);
173
+ tsMorphGenerateEditor({
54
174
  packageName,
55
- skipFormat,
175
+ projectDir,
176
+ editorDir,
177
+ documentModelId,
178
+ editorName,
56
179
  editorId,
57
- editorDirName,
180
+ });
181
+ }
182
+ export async function generateDriveEditor(options) {
183
+ const { name, config, appId, allowedDocumentTypes, isDragAndDropEnabled, driveEditorDirName, specifiedPackageName, legacy, } = options;
184
+ const dir = config.editorsDir;
185
+ const packageNameFromPackageJson = await readPackage().then((pkg) => pkg.name);
186
+ const packageName = specifiedPackageName || packageNameFromPackageJson;
187
+ const projectDir = path.dirname(dir);
188
+ if (legacy) {
189
+ const { name, config, appId, allowedDocumentTypes, isDragAndDropEnabled, driveEditorDirName, } = options;
190
+ const dir = config.editorsDir;
191
+ const skipFormat = config.skipFormat;
192
+ return hygenGenerateDriveEditor({
193
+ name,
194
+ dir,
195
+ appId: appId ?? paramCase(name),
196
+ allowedDocumentTypes: allowedDocumentTypes,
197
+ isDragAndDropEnabled: isDragAndDropEnabled ?? true,
198
+ skipFormat,
199
+ driveEditorDirName,
200
+ });
201
+ }
202
+ tsMorphGenerateDriveEditor({
203
+ projectDir,
204
+ editorDir: driveEditorDirName || paramCase(name),
205
+ editorName: name,
206
+ editorId: appId ?? paramCase(name),
207
+ packageName,
208
+ allowedDocumentModelIds: allowedDocumentTypes?.split(",") ?? [],
209
+ isDragAndDropEnabled: isDragAndDropEnabled ?? true,
58
210
  });
59
211
  }
60
212
  export async function generateSubgraphFromDocumentModel(name, documentModel, config, options = {}) {
61
- return hygenGenerateSubgraph(name, documentModel, { ...config, ...options });
213
+ await hygenGenerateSubgraph(name, documentModel, { ...config, ...options });
214
+ makeSubgraphsIndexFile({ projectDir: path.dirname(config.subgraphsDir) });
62
215
  }
63
216
  export async function generateSubgraph(name, file, config, options = {}) {
64
- return hygenGenerateSubgraph(name, file !== null ? await loadDocumentModel(file) : null, { ...config, ...options });
217
+ const documentModelState = file !== null ? await loadDocumentModel(file) : null;
218
+ await hygenGenerateSubgraph(name, documentModelState, {
219
+ ...config,
220
+ ...options,
221
+ });
222
+ makeSubgraphsIndexFile({ projectDir: path.dirname(config.subgraphsDir) });
65
223
  }
66
224
  export async function generateProcessor(name, type, documentTypes, config) {
67
225
  const { skipFormat } = config;
68
226
  return hygenGenerateProcessor(name, documentTypes, config.processorsDir, type, { skipFormat });
69
227
  }
70
- export async function generateDriveEditor(options) {
71
- const { name, config, appId, allowedDocumentTypes, isDragAndDropEnabled, driveEditorDirName, } = options;
72
- const dir = config.editorsDir;
73
- const skipFormat = config.skipFormat;
74
- return hygenGenerateDriveEditor({
75
- name,
76
- dir,
77
- appId: appId ?? paramCase(name),
78
- allowedDocumentTypes: allowedDocumentTypes,
79
- isDragAndDropEnabled: isDragAndDropEnabled ?? true,
80
- skipFormat,
81
- driveEditorDirName,
82
- });
83
- }
84
228
  export async function generateImportScript(name, config) {
85
229
  return hygenGenerateImportScript(name, config.importScriptsDir, {
86
230
  skipFormat: config.skipFormat,
87
231
  });
88
232
  }
233
+ const defaultManifest = {
234
+ name: "",
235
+ description: "",
236
+ category: "",
237
+ publisher: {
238
+ name: "",
239
+ url: "",
240
+ },
241
+ documentModels: [],
242
+ editors: [],
243
+ apps: [],
244
+ subgraphs: [],
245
+ importScripts: [],
246
+ };
89
247
  export function generateManifest(manifestData, projectRoot) {
90
248
  const rootDir = projectRoot || process.cwd();
91
249
  const manifestPath = join(rootDir, "powerhouse.manifest.json");
92
250
  // Create default manifest structure
93
- const defaultManifest = {
94
- name: "",
95
- description: "",
96
- category: "",
97
- publisher: {
98
- name: "",
99
- url: "",
100
- },
101
- documentModels: [],
102
- editors: [],
103
- apps: [],
104
- subgraphs: [],
105
- importScripts: [],
106
- };
107
251
  // Read existing manifest if it exists
108
252
  let existingManifest = defaultManifest;
109
253
  if (fs.existsSync(manifestPath)) {
@@ -152,25 +296,6 @@ export function generateManifest(manifestData, projectRoot) {
152
296
  fs.writeFileSync(manifestPath, JSON.stringify(updatedManifest, null, 4));
153
297
  return manifestPath;
154
298
  }
155
- function generateGraphqlSchema(documentModel) {
156
- const spec = documentModel.specifications[documentModel.specifications.length - 1];
157
- if (!spec) {
158
- throw new Error(`No spec found for ${documentModel.id}`);
159
- }
160
- const { modules, state: { global, local }, } = spec;
161
- const schemas = [
162
- global.schema,
163
- local.schema,
164
- ...modules
165
- .map((module) => [
166
- `# ${module.name}`,
167
- ...module.operations.map((op) => op.schema),
168
- ])
169
- .flat()
170
- .filter((schema) => schema && schema.length > 0),
171
- ];
172
- return schemas.join("\n\n");
173
- }
174
299
  /**
175
300
  * Generates code from a DocumentModelGlobalState.
176
301
  *
@@ -184,33 +309,27 @@ function generateGraphqlSchema(documentModel) {
184
309
  * @param options - Optional configuration for generation behavior
185
310
  * @returns A promise that resolves when code generation is complete
186
311
  */
187
- async function generateFromDocumentModel(documentModel, config, filePath, options = {}) {
312
+ async function generateFromDocumentModel(args) {
313
+ const { documentModelState, config, legacy, useVersioning, filePath, options = {}, } = args;
188
314
  // Derive verbose from config.logLevel if not explicitly provided
189
315
  // Show hygen logs for verbose, debug, and info levels (default behavior before ts-morph)
190
316
  const { verbose = config.logLevel === "verbose" ||
191
317
  config.logLevel === "debug" ||
192
318
  config.logLevel === "info", force = false, } = options;
193
- const name = paramCase(documentModel.name);
319
+ const name = paramCase(documentModelState.name);
320
+ const documentModelDir = join(config.documentModelsDir, name);
194
321
  // create document model folder and spec as json
195
- fs.mkdirSync(join(config.documentModelsDir, name), { recursive: true });
196
- fs.writeFileSync(join(config.documentModelsDir, name, `${name}.json`), JSON.stringify(documentModel, null, 4));
197
- // bundle graphql schemas together
198
- const schemaStr = [
199
- typeDefs.join("\n"), // inject ph scalars
200
- generateGraphqlSchema(documentModel),
201
- ].join("\n");
202
- if (schemaStr) {
203
- fs.writeFileSync(join(config.documentModelsDir, name, `schema.graphql`), schemaStr);
204
- }
205
- const packageName = await readPackage().then((pkg) => pkg.name);
206
- await generateSchema(name, config.documentModelsDir, {
207
- skipFormat: config.skipFormat,
208
- verbose,
209
- });
210
- await hygenGenerateDocumentModel(documentModel, config.documentModelsDir, packageName, {
322
+ fs.mkdirSync(documentModelDir, { recursive: true });
323
+ fs.writeFileSync(join(documentModelDir, `${name}.json`), JSON.stringify(documentModelState, null, 2));
324
+ await generateDocumentModel({
325
+ dir: config.documentModelsDir,
326
+ documentModelState,
327
+ watch: config.watch,
211
328
  skipFormat: config.skipFormat,
212
329
  verbose,
213
330
  force,
331
+ legacy,
332
+ useVersioning,
214
333
  });
215
334
  await generateSubgraph(name, filePath || null, config, { verbose });
216
335
  }