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