@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.
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +3 -3
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js +1 -3
- package/dist/src/codegen/__tests__/config.d.ts +1 -0
- package/dist/src/codegen/__tests__/config.d.ts.map +1 -1
- package/dist/src/codegen/__tests__/config.js +1 -0
- package/dist/src/codegen/__tests__/config.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-doc-model.test.js +99 -83
- package/dist/src/codegen/__tests__/generate-doc-model.test.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-drive-editor.test.js +6 -3
- package/dist/src/codegen/__tests__/generate-drive-editor.test.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-editor.test.js +8 -7
- package/dist/src/codegen/__tests__/generate-editor.test.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-manifest.test.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-versioned-document-model.test.d.ts +2 -0
- package/dist/src/codegen/__tests__/generate-versioned-document-model.test.d.ts.map +1 -0
- package/dist/src/codegen/__tests__/generate-versioned-document-model.test.js +142 -0
- package/dist/src/codegen/__tests__/generate-versioned-document-model.test.js.map +1 -0
- package/dist/src/codegen/generate.d.ts +42 -6
- package/dist/src/codegen/generate.d.ts.map +1 -1
- package/dist/src/codegen/generate.js +212 -93
- package/dist/src/codegen/generate.js.map +1 -1
- package/dist/src/codegen/graphql.d.ts +20 -17
- package/dist/src/codegen/graphql.d.ts.map +1 -1
- package/dist/src/codegen/graphql.js +105 -78
- package/dist/src/codegen/graphql.js.map +1 -1
- package/dist/src/codegen/hygen.d.ts +1 -8
- package/dist/src/codegen/hygen.d.ts.map +1 -1
- package/dist/src/codegen/hygen.js +11 -68
- package/dist/src/codegen/hygen.js.map +1 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/ts-morph-utils/constants.d.ts +18 -0
- package/dist/src/ts-morph-utils/constants.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/constants.js +18 -0
- package/dist/src/ts-morph-utils/constants.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-editor.d.ts +28 -0
- package/dist/src/ts-morph-utils/file-builders/document-editor.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-editor.js +305 -0
- package/dist/src/ts-morph-utils/file-builders/document-editor.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.d.ts +3 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.js +216 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/gen-dir.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.d.ts +3 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.js +55 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/root-dir.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.d.ts +3 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.js +236 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/src-dir.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/types.d.ts +32 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/types.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/types.js +2 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/types.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/upgrades-dir.d.ts +31 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/upgrades-dir.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/upgrades-dir.js +136 -0
- package/dist/src/ts-morph-utils/file-builders/document-model/upgrades-dir.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model.d.ts +8 -0
- package/dist/src/ts-morph-utils/file-builders/document-model.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/document-model.js +250 -0
- package/dist/src/ts-morph-utils/file-builders/document-model.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/drive-editor.d.ts +56 -0
- package/dist/src/ts-morph-utils/file-builders/drive-editor.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/drive-editor.js +341 -0
- package/dist/src/ts-morph-utils/file-builders/drive-editor.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/editor-common.d.ts +3 -0
- package/dist/src/ts-morph-utils/file-builders/editor-common.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/editor-common.js +15 -0
- package/dist/src/ts-morph-utils/file-builders/editor-common.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/index-files.d.ts +18 -0
- package/dist/src/ts-morph-utils/file-builders/index-files.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/index-files.js +25 -0
- package/dist/src/ts-morph-utils/file-builders/index-files.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/module-files.d.ts +25 -0
- package/dist/src/ts-morph-utils/file-builders/module-files.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/module-files.js +104 -0
- package/dist/src/ts-morph-utils/file-builders/module-files.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/subgraphs.d.ts +6 -0
- package/dist/src/ts-morph-utils/file-builders/subgraphs.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/subgraphs.js +53 -0
- package/dist/src/ts-morph-utils/file-builders/subgraphs.js.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/types.d.ts +13 -0
- package/dist/src/ts-morph-utils/file-builders/types.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-builders/types.js +2 -0
- package/dist/src/ts-morph-utils/file-builders/types.js.map +1 -0
- package/dist/src/ts-morph-utils/file-utils.d.ts +28 -0
- package/dist/src/ts-morph-utils/file-utils.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/file-utils.js +102 -0
- package/dist/src/ts-morph-utils/file-utils.js.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/common-files.d.ts +5 -0
- package/dist/src/ts-morph-utils/name-builders/common-files.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/common-files.js +15 -0
- package/dist/src/ts-morph-utils/name-builders/common-files.js.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/document-model-files.d.ts +4 -0
- package/dist/src/ts-morph-utils/name-builders/document-model-files.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/document-model-files.js +12 -0
- package/dist/src/ts-morph-utils/name-builders/document-model-files.js.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/editor-files.d.ts +10 -0
- package/dist/src/ts-morph-utils/name-builders/editor-files.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/editor-files.js +37 -0
- package/dist/src/ts-morph-utils/name-builders/editor-files.js.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/get-file-paths.d.ts +4 -0
- package/dist/src/ts-morph-utils/name-builders/get-file-paths.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/get-file-paths.js +21 -0
- package/dist/src/ts-morph-utils/name-builders/get-file-paths.js.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/get-variable-names.d.ts +37 -0
- package/dist/src/ts-morph-utils/name-builders/get-variable-names.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/get-variable-names.js +145 -0
- package/dist/src/ts-morph-utils/name-builders/get-variable-names.js.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/types.d.ts +18 -0
- package/dist/src/ts-morph-utils/name-builders/types.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/types.js +2 -0
- package/dist/src/ts-morph-utils/name-builders/types.js.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/variables.d.ts +12 -0
- package/dist/src/ts-morph-utils/name-builders/variables.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/name-builders/variables.js +35 -0
- package/dist/src/ts-morph-utils/name-builders/variables.js.map +1 -0
- package/dist/src/ts-morph-utils/syntax-builders.d.ts +72 -0
- package/dist/src/ts-morph-utils/syntax-builders.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/syntax-builders.js +201 -0
- package/dist/src/ts-morph-utils/syntax-builders.js.map +1 -0
- package/dist/src/ts-morph-utils/syntax-getters.d.ts +11 -0
- package/dist/src/ts-morph-utils/syntax-getters.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/syntax-getters.js +45 -0
- package/dist/src/ts-morph-utils/syntax-getters.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/actions.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/actions.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/actions.js +28 -0
- package/dist/src/ts-morph-utils/templates/document-model/actions.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/actions.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/actions.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/actions.js +40 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/actions.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/creators.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/creators.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/creators.js +16 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/creators.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.js +56 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/document-schema.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.js +5 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/document-type.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/index.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/index.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/index.js +29 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/index.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.d.ts +8 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.js +39 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/actions.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.js +94 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/creators.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.js +73 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/error.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.js +61 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/modules/operations.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.js +93 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/ph-factories.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.js +106 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/reducer.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.d.ts +2 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.js +6 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/schema/index.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/types.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/types.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/types.js +38 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/types.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/utils.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/utils.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/utils.js +77 -0
- package/dist/src/ts-morph-utils/templates/document-model/gen/utils.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/hooks.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/hooks.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/hooks.js +49 -0
- package/dist/src/ts-morph-utils/templates/document-model/hooks.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/index.d.ts +2 -0
- package/dist/src/ts-morph-utils/templates/document-model/index.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/index.js +9 -0
- package/dist/src/ts-morph-utils/templates/document-model/index.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/module.d.ts +8 -0
- package/dist/src/ts-morph-utils/templates/document-model/module.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/module.js +25 -0
- package/dist/src/ts-morph-utils/templates/document-model/module.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/index.d.ts +2 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/index.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/index.js +5 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/index.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.js +121 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/tests/document-model.test.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.d.ts +6 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.js +87 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/tests/module.test.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/utils.d.ts +2 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/utils.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/utils.js +5 -0
- package/dist/src/ts-morph-utils/templates/document-model/src/utils.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/upgrades/upgrade-transition.d.ts +7 -0
- package/dist/src/ts-morph-utils/templates/document-model/upgrades/upgrade-transition.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/upgrades/upgrade-transition.js +22 -0
- package/dist/src/ts-morph-utils/templates/document-model/upgrades/upgrade-transition.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/utils.d.ts +3 -0
- package/dist/src/ts-morph-utils/templates/document-model/utils.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/document-model/utils.js +11 -0
- package/dist/src/ts-morph-utils/templates/document-model/utils.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/drive-editor.d.ts +5 -0
- package/dist/src/ts-morph-utils/templates/drive-editor.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/drive-editor.js +211 -0
- package/dist/src/ts-morph-utils/templates/drive-editor.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/unsafe-utils.d.ts +8 -0
- package/dist/src/ts-morph-utils/templates/unsafe-utils.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/unsafe-utils.js +23 -0
- package/dist/src/ts-morph-utils/templates/unsafe-utils.js.map +1 -0
- package/dist/src/ts-morph-utils/templates/utils.d.ts +6 -0
- package/dist/src/ts-morph-utils/templates/utils.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/templates/utils.js +16 -0
- package/dist/src/ts-morph-utils/templates/utils.js.map +1 -0
- package/dist/src/ts-morph-utils/ts-morph-project.d.ts +3 -0
- package/dist/src/ts-morph-utils/ts-morph-project.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/ts-morph-project.js +9 -0
- package/dist/src/ts-morph-utils/ts-morph-project.js.map +1 -0
- package/dist/src/ts-morph-utils/types.d.ts +34 -0
- package/dist/src/ts-morph-utils/types.d.ts.map +1 -0
- package/dist/src/ts-morph-utils/types.js +2 -0
- package/dist/src/ts-morph-utils/types.js.map +1 -0
- package/dist/src/utils/mock.d.ts +2 -3
- package/dist/src/utils/mock.d.ts.map +1 -1
- package/dist/src/utils/mock.js +4 -4
- package/dist/src/utils/mock.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -13
- package/dist/src/codegen/__tests__/generate-schemas.test.d.ts +0 -2
- package/dist/src/codegen/__tests__/generate-schemas.test.d.ts.map +0 -1
- package/dist/src/codegen/__tests__/generate-schemas.test.js +0 -143
- package/dist/src/codegen/__tests__/generate-schemas.test.js.map +0 -1
- package/dist/src/ts-morph-utils.d.ts +0 -48
- package/dist/src/ts-morph-utils.d.ts.map +0 -1
- package/dist/src/ts-morph-utils.js +0 -207
- 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
|
|
5
|
-
|
|
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(
|
|
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;
|
|
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
|
|
7
|
-
import {
|
|
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
|
|
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(
|
|
48
|
+
await generateAll({
|
|
49
|
+
dir: config.documentModelsDir,
|
|
50
|
+
legacy,
|
|
51
|
+
useVersioning,
|
|
52
|
+
skipFormat,
|
|
53
|
+
watch,
|
|
54
|
+
});
|
|
13
55
|
}
|
|
14
|
-
export async function generateFromFile(
|
|
56
|
+
export async function generateFromFile(args) {
|
|
57
|
+
const { path, config, legacy, useVersioning, options } = args;
|
|
15
58
|
// load document model spec from file
|
|
16
|
-
const
|
|
59
|
+
const documentModelState = await loadDocumentModel(path);
|
|
17
60
|
// delegate to shared generation function
|
|
18
|
-
await generateFromDocumentModel(
|
|
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(
|
|
82
|
+
export async function generateFromDocument(args) {
|
|
34
83
|
// delegate to shared generation function
|
|
35
|
-
await generateFromDocumentModel(
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
|
|
175
|
+
projectDir,
|
|
176
|
+
editorDir,
|
|
177
|
+
documentModelId,
|
|
178
|
+
editorName,
|
|
56
179
|
editorId,
|
|
57
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
196
|
-
fs.writeFileSync(join(
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
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
|
}
|