@powerhousedao/codegen 0.36.1 → 0.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/cli.js +0 -78
  2. package/dist/create-lib/index.js +0 -7
  3. package/dist/index.d.ts +4 -6
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -4
  6. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/documentModel.esm.t +7 -0
  7. package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-import-script/index.esm.t +1 -1
  8. package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-import-script/utils.esm.t +1 -1
  9. package/dist/src/codegen/graphql.d.ts +16 -0
  10. package/dist/src/codegen/graphql.d.ts.map +1 -0
  11. package/dist/src/codegen/graphql.js +91 -0
  12. package/dist/src/codegen/hygen.d.ts +23 -0
  13. package/dist/src/codegen/hygen.d.ts.map +1 -0
  14. package/dist/src/codegen/hygen.js +162 -0
  15. package/dist/src/codegen/index.d.ts +12 -0
  16. package/dist/src/codegen/index.d.ts.map +1 -0
  17. package/dist/src/codegen/index.js +122 -0
  18. package/dist/src/codegen/utils.d.ts +4 -0
  19. package/dist/src/codegen/utils.d.ts.map +1 -0
  20. package/dist/src/codegen/utils.js +40 -0
  21. package/dist/src/create-lib/create-project.d.ts +25 -0
  22. package/dist/src/create-lib/create-project.d.ts.map +1 -0
  23. package/dist/src/create-lib/create-project.js +158 -0
  24. package/dist/src/create-lib/index.d.ts +2 -0
  25. package/dist/src/create-lib/index.d.ts.map +1 -0
  26. package/dist/src/create-lib/index.js +1 -0
  27. package/dist/src/utils/cli.d.ts +26 -0
  28. package/dist/src/utils/cli.d.ts.map +1 -0
  29. package/dist/src/utils/cli.js +56 -0
  30. package/dist/src/utils/index.d.ts +4 -0
  31. package/dist/src/utils/index.d.ts.map +1 -0
  32. package/dist/src/utils/index.js +3 -0
  33. package/dist/src/utils/mock.d.ts +4 -0
  34. package/dist/src/utils/mock.d.ts.map +1 -0
  35. package/dist/src/utils/mock.js +4 -0
  36. package/dist/src/utils/package-manager.d.ts +5 -0
  37. package/dist/src/utils/package-manager.d.ts.map +1 -0
  38. package/dist/src/utils/package-manager.js +16 -0
  39. package/dist/tsconfig.hygen.tsbuildinfo +1 -0
  40. package/dist/tsconfig.tsbuildinfo +1 -0
  41. package/package.json +16 -20
  42. package/dist/cli.d.ts +0 -1
  43. package/dist/cli.js.map +0 -1
  44. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/documentModel.esm.t +0 -7
  45. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +0 -73
  46. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.js.map +0 -1
  47. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +0 -33
  48. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js.map +0 -1
  49. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.js +0 -25
  50. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.js.map +0 -1
  51. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js +0 -17
  52. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js.map +0 -1
  53. package/dist/codegen/.hygen/templates/powerhouse/generate-import-script/index.js +0 -14
  54. package/dist/codegen/.hygen/templates/powerhouse/generate-import-script/index.js.map +0 -1
  55. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js +0 -17
  56. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js.map +0 -1
  57. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.js +0 -17
  58. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.js.map +0 -1
  59. package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js +0 -15
  60. package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js.map +0 -1
  61. package/dist/codegen/graphql.js +0 -97
  62. package/dist/codegen/graphql.js.map +0 -1
  63. package/dist/codegen/hygen.js +0 -179
  64. package/dist/codegen/hygen.js.map +0 -1
  65. package/dist/codegen/index.js +0 -146
  66. package/dist/codegen/index.js.map +0 -1
  67. package/dist/codegen/utils.js +0 -38
  68. package/dist/codegen/utils.js.map +0 -1
  69. package/dist/create-lib/index.js.map +0 -1
  70. package/dist/create-lib/init.js +0 -182
  71. package/dist/create-lib/init.js.map +0 -1
  72. package/dist/create-lib/utils.js +0 -19
  73. package/dist/create-lib/utils.js.map +0 -1
  74. package/dist/create-lib.d.ts +0 -1
  75. package/dist/graphql.d.ts +0 -18
  76. package/dist/hygen.d.ts +0 -28
  77. package/dist/index-DT1dkT-t.d.ts +0 -15
  78. package/dist/index.js.map +0 -1
  79. package/dist/utils/cli.js +0 -61
  80. package/dist/utils/cli.js.map +0 -1
  81. package/dist/utils/index.js +0 -6
  82. package/dist/utils/index.js.map +0 -1
  83. package/dist/utils/mock.js +0 -9
  84. package/dist/utils/mock.js.map +0 -1
  85. package/dist/utils.d.ts +0 -59
  86. /package/dist/{codegen/.hygen/templates → src/codegen/.hygen}/package.json +0 -0
  87. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/actions.esm.t +0 -0
  88. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/creators.esm.t +0 -0
  89. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/customUtils.esm.t +0 -0
  90. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/documentModelTest.esm.t +0 -0
  91. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/index.esm.t +0 -0
  92. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/lib.esm.t +0 -0
  93. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/lib.inject_export.esm.t +0 -0
  94. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/object.esm.t +0 -0
  95. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/reducer.esm.t +0 -0
  96. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/rootIndex.esm.t +0 -0
  97. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/schema.esm.t +0 -0
  98. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/types.esm.t +0 -0
  99. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model/utils.esm.t +0 -0
  100. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model-module/actions.esm.t +0 -0
  101. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model-module/creators.esm.t +0 -0
  102. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model-module/customReducers.esm.t +0 -0
  103. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +0 -0
  104. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +0 -0
  105. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model-module/object.esm.t +0 -0
  106. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model-module/operations.esm.t +0 -0
  107. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model-mutations/resolvers.esm.t +0 -0
  108. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-document-model-mutations/schema.esm.t +0 -0
  109. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-editor/editor.esm.t +0 -0
  110. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-editor/index.esm.t +0 -0
  111. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-editor/lib.esm.t +0 -0
  112. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-editor/lib.inject_export.esm.t +0 -0
  113. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-editor/story.esm.t +0 -0
  114. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-processor-analytics/index.esm.t +0 -0
  115. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-processor-analytics/lib.esm.t +0 -0
  116. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_export.esm.t +0 -0
  117. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-processor-operational/index.esm.t +0 -0
  118. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-processor-operational/lib.esm.t +0 -0
  119. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-processor-operational/lib.inject_export.esm.t +0 -0
  120. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-subgraph/index.esm.t +0 -0
  121. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-subgraph/lib.esm.t +0 -0
  122. /package/dist/{codegen → src/codegen}/.hygen/templates/powerhouse/generate-subgraph/lib.inject_export.esm.t +0 -0
package/dist/cli.js CHANGED
@@ -1,79 +1 @@
1
1
  #! /usr/bin/env node
2
- import { getConfig } from '@powerhousedao/config/powerhouse';
3
- import { generateEditor, generateProcessor, generateSubgraph, generateFromFile, generate } from './codegen/index.js';
4
- import { parseConfig, promptDirectories, parseArgs } from './utils/index.js';
5
-
6
- function parseCommand(argv) {
7
- const args = parseArgs(argv, {
8
- "--editor": String,
9
- "--subgraph": String,
10
- "-e": "--editor",
11
- "--processor": String,
12
- "--document-types": String,
13
- "--processor-type": String,
14
- "--file": String
15
- });
16
- const editorName = args["--editor"];
17
- const processorName = args["--processor"];
18
- const processorType = args["--processor-type"];
19
- const subgraphName = args["--subgraph"];
20
- const file = args["--file"];
21
- return {
22
- processor: !!processorName,
23
- processorName,
24
- processorType,
25
- editor: !!editorName,
26
- editorName,
27
- documentTypes: args["--document-types"],
28
- arg: args._,
29
- subgraph: !!subgraphName,
30
- subgraphName: subgraphName ?? "example",
31
- file
32
- };
33
- }
34
- async function main() {
35
- const argv = process.argv.slice(2);
36
- const baseConfig = getConfig();
37
- const argsConfig = parseConfig(argv);
38
- const config = { ...baseConfig, ...argsConfig };
39
- if (config.interactive) {
40
- const result = await promptDirectories(config);
41
- Object.assign(config, result);
42
- }
43
- const command = parseCommand(argv);
44
- if (command.editor) {
45
- if (!command.editorName) {
46
- throw new Error("Editor name is required (--editor or -e)");
47
- }
48
- await generateEditor(
49
- command.editorName,
50
- command.documentTypes?.split(/[|,;]/g) ?? [],
51
- config
52
- );
53
- } else if (command.processor) {
54
- if (!command.processorName) {
55
- throw new Error("processor name is required (--processor)");
56
- }
57
- const type = !command.processorType ? "analytics" : command.processorType;
58
- await generateProcessor(
59
- command.processorName,
60
- type,
61
- command.documentTypes?.split(/[|,;]/g) ?? [],
62
- config
63
- );
64
- } else if (command.subgraph) {
65
- if (!command.subgraphName) {
66
- throw new Error("Subgraph name is required (--subgraph)");
67
- }
68
- await generateSubgraph(command.subgraphName, command.file || null, config);
69
- } else if (command.file || command.arg.length === 2) {
70
- await generateFromFile(command.file || command.arg[1], config);
71
- } else {
72
- await generate(config);
73
- }
74
- }
75
- main().catch((e) => {
76
- throw e;
77
- });
78
- //# sourceMappingURL=cli.js.map
79
- //# sourceMappingURL=cli.js.map
@@ -1,8 +1 @@
1
1
  #! /usr/bin/env node
2
- import { initCli } from './init.js';
3
-
4
- initCli().catch((e) => {
5
- throw e;
6
- });
7
- //# sourceMappingURL=index.js.map
8
- //# sourceMappingURL=index.js.map
package/dist/index.d.ts CHANGED
@@ -1,6 +1,4 @@
1
- export { D as DocumentTypesMap, g as generate, b as generateEditor, a as generateFromFile, e as generateImportScript, d as generateProcessor, c as generateSubgraph } from './index-DT1dkT-t.js';
2
- export { ICreateProjectOptions, configSpec, createProject, createProjectSpec, generateMock, generateMockTypeFn, getPackageManager, parseArgs, parseConfig, parseVersion, promptDirectories } from './utils.js';
3
- import '@powerhousedao/config/powerhouse';
4
- import 'document-model/document';
5
- import 'arg';
6
- import '@anatine/zod-mock';
1
+ export * from "./src/codegen/index.js";
2
+ export * from "./src/create-lib/index.js";
3
+ export * from "./src/utils/index.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,3 @@
1
- export * from './codegen/index.js';
2
- export * from './utils/index.js';
3
- //# sourceMappingURL=index.js.map
4
- //# sourceMappingURL=index.js.map
1
+ export * from "./src/codegen/index.js";
2
+ export * from "./src/create-lib/index.js";
3
+ export * from "./src/utils/index.js";
@@ -0,0 +1,7 @@
1
+ ---
2
+ to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/document-model.ts"
3
+ force: true
4
+ ---
5
+ import type { DocumentModelState } from "document-model";
6
+
7
+ export const documentModelState: DocumentModelState = <%- documentModel %>;
@@ -3,7 +3,7 @@ to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
3
3
  force: true
4
4
  ---
5
5
  import { IBaseDocumentDriveServer } from "document-drive";
6
- import { actions } from "document-model/document-model";
6
+ import { actions } from "document-model";
7
7
  import {
8
8
  addDocument,
9
9
  addFolder,
@@ -10,7 +10,7 @@ import {
10
10
  } from "document-model-libs/document-drive";
11
11
  import * as DocumentModelsLibs from "document-model-libs/document-models";
12
12
  import { DocumentModel } from "document-model/document";
13
- import { module as DocumentModelLib } from "document-model/document-model";
13
+ import { module as DocumentModelLib } from "document-model";
14
14
  import * as LocalDocumentModels from "../../document-models";
15
15
 
16
16
  export const addFolder = (
@@ -0,0 +1,16 @@
1
+ import { plugin } from "@acaldas/graphql-codegen-typescript-validation-schema";
2
+ import { type CodegenConfig } from "@graphql-codegen/cli";
3
+ import { TypeScriptPluginConfig } from "@graphql-codegen/typescript";
4
+ export declare const tsConfig: TypeScriptPluginConfig;
5
+ export type ValidationSchemaConfigType = Parameters<typeof plugin>[2];
6
+ export declare const validationConfig: ValidationSchemaConfigType;
7
+ export declare function schemaConfig(name: string, dir: string): CodegenConfig["generates"];
8
+ export declare const generateSchema: (model: string, dir: string, { watch, skipFormat }?: {
9
+ watch?: boolean | undefined;
10
+ skipFormat?: boolean | undefined;
11
+ }) => Promise<any>;
12
+ export declare const generateSchemas: (dir: string, { watch, skipFormat }?: {
13
+ watch?: boolean | undefined;
14
+ skipFormat?: boolean | undefined;
15
+ }) => Promise<any>;
16
+ //# sourceMappingURL=graphql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../../src/codegen/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uDAAuD,CAAC;AAC/E,OAAO,EAAE,KAAK,aAAa,EAAY,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAUrE,eAAO,MAAM,QAAQ,EAAE,sBAiBtB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtE,eAAO,MAAM,gBAAgB,EAAE,0BAkB9B,CAAC;AAEF,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,aAAa,CAAC,WAAW,CAAC,CAmB5B;AAED,eAAO,MAAM,cAAc,UAClB,MAAM,OACR,MAAM;;;kBAcZ,CAAC;AAEF,eAAO,MAAM,eAAe,QACrB,MAAM;;;kBAqBZ,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { generate } from "@graphql-codegen/cli";
2
+ import { generatorTypeDefs, validationSchema } from "@powerhousedao/scalars";
3
+ import { readdirSync } from "node:fs";
4
+ import { formatWithPrettierBeforeWrite } from "./utils.js";
5
+ const getDirectories = (source) => readdirSync(source, { withFileTypes: true })
6
+ .filter((dirent) => dirent.isDirectory())
7
+ .map((dirent) => dirent.name);
8
+ export const tsConfig = {
9
+ strictScalars: true,
10
+ scalars: {
11
+ Unknown: "unknown",
12
+ DateTime: "string",
13
+ Attachment: "string",
14
+ Address: "`${string}:0x${string}`",
15
+ ...generatorTypeDefs,
16
+ },
17
+ enumsAsTypes: true,
18
+ allowEnumStringTypes: true,
19
+ avoidOptionals: {
20
+ field: true,
21
+ },
22
+ skipTypename: true,
23
+ // maybeValue: "T | null | undefined",
24
+ inputMaybeValue: "T | null | undefined",
25
+ };
26
+ export const validationConfig = {
27
+ importFrom: `./types.js`,
28
+ schema: "zod",
29
+ ...tsConfig,
30
+ scalarSchemas: {
31
+ Unknown: "z.unknown()",
32
+ DateTime: "z.string().datetime()",
33
+ Attachment: "z.string()",
34
+ Address: "z.custom<`${string}:0x${string}`>((val) => /^[a-zA-Z0-9]+:0x[a-fA-F0-9]{40}$/.test(val as string))",
35
+ ...validationSchema,
36
+ },
37
+ directives: {
38
+ equals: {
39
+ value: ["regex", "/^$1$/"],
40
+ },
41
+ },
42
+ withObjectType: true,
43
+ };
44
+ export function schemaConfig(name, dir) {
45
+ return {
46
+ [`${dir}/${name}/gen/schema/types.ts`]: {
47
+ schema: [
48
+ {
49
+ [`${dir}/${name}/schema.graphql`]: {
50
+ skipGraphQLImport: false,
51
+ },
52
+ },
53
+ ],
54
+ plugins: ["typescript"],
55
+ config: tsConfig,
56
+ },
57
+ [`${dir}/${name}/gen/schema/zod.ts`]: {
58
+ schema: `${dir}/${name}/schema.graphql`,
59
+ plugins: ["@acaldas/graphql-codegen-typescript-validation-schema"],
60
+ config: validationConfig,
61
+ },
62
+ };
63
+ }
64
+ export const generateSchema = (model, dir, { watch = false, skipFormat = false } = {}) => {
65
+ const documentModelConfig = schemaConfig(model, dir);
66
+ const config = {
67
+ overwrite: true,
68
+ generates: documentModelConfig,
69
+ watch,
70
+ hooks: {
71
+ beforeOneFileWrite: skipFormat ? [] : [formatWithPrettierBeforeWrite],
72
+ },
73
+ };
74
+ return generate(config, true);
75
+ };
76
+ export const generateSchemas = (dir, { watch = false, skipFormat = false } = {}) => {
77
+ const documentModels = getDirectories(dir);
78
+ const documentModelConfigs = documentModels.reduce((obj, model) => ({
79
+ ...obj,
80
+ ...schemaConfig(model, dir),
81
+ }), {});
82
+ const config = {
83
+ overwrite: true,
84
+ generates: documentModelConfigs,
85
+ watch,
86
+ hooks: {
87
+ beforeOneFileWrite: skipFormat ? [] : [formatWithPrettierBeforeWrite],
88
+ },
89
+ };
90
+ return generate(config, true);
91
+ };
@@ -0,0 +1,23 @@
1
+ import { DocumentModelState } from "document-model";
2
+ import { DocumentTypesMap } from "./index.js";
3
+ export declare function generateAll(dir: string, { watch, skipFormat }?: {
4
+ watch?: boolean | undefined;
5
+ skipFormat?: boolean | undefined;
6
+ }): Promise<void>;
7
+ export declare function generateDocumentModel(documentModelState: DocumentModelState, dir: string, { watch, skipFormat }?: {
8
+ watch?: boolean | undefined;
9
+ skipFormat?: boolean | undefined;
10
+ }): Promise<void>;
11
+ export declare function generateEditor(name: string, documentTypes: string[], documentTypesMap: DocumentTypesMap, dir: string, documentModelsDir: string, { skipFormat }?: {
12
+ skipFormat?: boolean | undefined;
13
+ }): Promise<void>;
14
+ export declare function generateProcessor(name: string, documentTypes: string[], documentTypesMap: DocumentTypesMap, dir: string, documentModelsDir: string, type?: string, { skipFormat }?: {
15
+ skipFormat?: boolean | undefined;
16
+ }): Promise<void>;
17
+ export declare function generateSubgraph(name: string, documentModel: DocumentModelState | null, dir: string, { skipFormat }?: {
18
+ skipFormat?: boolean | undefined;
19
+ }): Promise<void>;
20
+ export declare function generateImportScript(name: string, dir: string, { skipFormat }?: {
21
+ skipFormat?: boolean | undefined;
22
+ }): Promise<void>;
23
+ //# sourceMappingURL=hygen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hygen.d.ts","sourceRoot":"","sources":["../../../src/codegen/hygen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6C9C,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,EAAE,KAAa,EAAE,UAAkB,EAAE;;;CAAK,iBAoB3C;AAED,wBAAsB,qBAAqB,CACzC,kBAAkB,EAAE,kBAAkB,EACtC,GAAG,EAAE,MAAM,EACX,EAAE,KAAa,EAAE,UAAkB,EAAE;;;CAAK,iBAoC3C;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM,EACzB,EAAE,UAAkB,EAAE;;CAAK,iBAoB5B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM,EACzB,IAAI,SAAc,EAClB,EAAE,UAAkB,EAAE;;CAAK,iBAuB5B;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,kBAAkB,GAAG,IAAI,EACxC,GAAG,EAAE,MAAM,EACX,EAAE,UAAkB,EAAE;;CAAK,iBAoC5B;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,UAAkB,EAAE;;CAAK,iBAgB5B"}
@@ -0,0 +1,162 @@
1
+ import { pascalCase } from "change-case";
2
+ import { Logger, runner } from "hygen";
3
+ import fs from "node:fs";
4
+ import { createRequire } from "node:module";
5
+ import path from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+ import { loadDocumentModel } from "./utils.js";
8
+ const require = createRequire(import.meta.url);
9
+ const __dirname = import.meta.dirname || path.dirname(fileURLToPath(import.meta.url));
10
+ const logger = new Logger(console.log.bind(console));
11
+ const defaultTemplates = path.join(__dirname, ".hygen", "templates");
12
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
+ async function run(args, { watch = false, skipFormat = false } = {}) {
14
+ const result = await runner(args, {
15
+ templates: defaultTemplates,
16
+ cwd: process.cwd(),
17
+ logger,
18
+ createPrompter: () => {
19
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
20
+ return require("enquirer");
21
+ },
22
+ exec: (action, body) => {
23
+ const opts = body && body.length > 0 ? { input: body } : {};
24
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
25
+ return require("execa").shell(action, opts);
26
+ },
27
+ debug: !!process.env.DEBUG,
28
+ });
29
+ if (!skipFormat) {
30
+ const execa = await import("execa");
31
+ const actions = result.actions;
32
+ actions
33
+ .filter((action) => ["added", "inject"].includes(action.status))
34
+ .forEach((action) => {
35
+ execa.$ `prettier --ignore-path --write ${action.subject.replace(".", process.cwd())}`.catch((err) => {
36
+ console.log(err);
37
+ });
38
+ });
39
+ }
40
+ return result;
41
+ }
42
+ export async function generateAll(dir, { watch = false, skipFormat = false } = {}) {
43
+ const files = fs.readdirSync(dir, { withFileTypes: true });
44
+ for (const directory of files.filter((f) => f.isDirectory())) {
45
+ const documentModelPath = path.join(dir, directory.name, `${directory.name}.json`);
46
+ if (!fs.existsSync(documentModelPath)) {
47
+ continue;
48
+ }
49
+ try {
50
+ const documentModel = await loadDocumentModel(documentModelPath);
51
+ await generateDocumentModel(documentModel, dir, { watch, skipFormat });
52
+ }
53
+ catch (error) {
54
+ console.error(directory.name, error);
55
+ }
56
+ }
57
+ }
58
+ export async function generateDocumentModel(documentModelState, dir, { watch = false, skipFormat = false } = {}) {
59
+ // Generate the singular files for the document model logic
60
+ await run([
61
+ "powerhouse",
62
+ "generate-document-model",
63
+ "--document-model",
64
+ JSON.stringify(documentModelState),
65
+ "--root-dir",
66
+ dir,
67
+ ], { watch, skipFormat });
68
+ const latestSpec = documentModelState.specifications[documentModelState.specifications.length - 1];
69
+ // Generate the module-specific files for the document model logic
70
+ for (const module of latestSpec.modules) {
71
+ await run([
72
+ "powerhouse",
73
+ "generate-document-model-module",
74
+ "--document-model",
75
+ JSON.stringify(documentModelState),
76
+ "--root-dir",
77
+ dir,
78
+ "--module",
79
+ module.name,
80
+ ], { watch, skipFormat });
81
+ }
82
+ }
83
+ export async function generateEditor(name, documentTypes, documentTypesMap, dir, documentModelsDir, { skipFormat = false } = {}) {
84
+ // Generate the singular files for the document model logic
85
+ await run([
86
+ "powerhouse",
87
+ "generate-editor",
88
+ "--name",
89
+ name,
90
+ "--root-dir",
91
+ dir,
92
+ "--document-types",
93
+ documentTypes.join(","),
94
+ "--document-types-map",
95
+ JSON.stringify(documentTypesMap),
96
+ "--document-models-dir",
97
+ documentModelsDir,
98
+ ], { skipFormat });
99
+ }
100
+ export async function generateProcessor(name, documentTypes, documentTypesMap, dir, documentModelsDir, type = "analytics", { skipFormat = false } = {}) {
101
+ // Generate the singular files for the document model logic
102
+ const processorType = type === "operational" ? "operational" : "analytics";
103
+ await run([
104
+ "powerhouse",
105
+ `generate-processor-${processorType}`,
106
+ "--name",
107
+ name,
108
+ "--pascalName",
109
+ pascalCase(name),
110
+ "--root-dir",
111
+ dir,
112
+ "--document-types",
113
+ documentTypes.join(","),
114
+ "--document-types-map",
115
+ JSON.stringify(documentTypesMap),
116
+ "--document-models-dir",
117
+ documentModelsDir,
118
+ ], { skipFormat });
119
+ }
120
+ export async function generateSubgraph(name, documentModel, dir, { skipFormat = false } = {}) {
121
+ const params = [
122
+ "powerhouse",
123
+ `generate-subgraph`,
124
+ "--name",
125
+ name,
126
+ "--pascalName",
127
+ pascalCase(name),
128
+ "--root-dir",
129
+ dir,
130
+ ];
131
+ if (documentModel) {
132
+ params.push("--loadFromFile", "1");
133
+ }
134
+ // Generate the singular files for the document model logic
135
+ await run(params, { skipFormat });
136
+ if (documentModel) {
137
+ // Generate the GraphQL mutation schemas
138
+ await run([
139
+ "powerhouse",
140
+ "generate-document-model-mutations",
141
+ "--subgraph",
142
+ name,
143
+ "--document-model",
144
+ JSON.stringify(documentModel),
145
+ "--root-dir",
146
+ dir,
147
+ ], { skipFormat });
148
+ }
149
+ }
150
+ export async function generateImportScript(name, dir, { skipFormat = false } = {}) {
151
+ // Generate the singular files for the document model logic
152
+ await run([
153
+ "powerhouse",
154
+ `generate-import-script`,
155
+ "--name",
156
+ name,
157
+ "--pascalName",
158
+ pascalCase(name),
159
+ "--root-dir",
160
+ dir,
161
+ ], { skipFormat });
162
+ }
@@ -0,0 +1,12 @@
1
+ import { PowerhouseConfig } from "@powerhousedao/config/powerhouse";
2
+ export type DocumentTypesMap = Record<string, {
3
+ name: string;
4
+ importPath: string;
5
+ }>;
6
+ export declare function generate(config: PowerhouseConfig): Promise<void>;
7
+ export declare function generateFromFile(path: string, config: PowerhouseConfig): Promise<void>;
8
+ export declare function generateEditor(name: string, documentTypes: string[], config: PowerhouseConfig): Promise<void>;
9
+ export declare function generateSubgraph(name: string, file: string | null, config: PowerhouseConfig): Promise<void>;
10
+ export declare function generateProcessor(name: string, type: "analytics" | "operational", documentTypes: string[], config: PowerhouseConfig): Promise<void>;
11
+ export declare function generateImportScript(name: string, config: PowerhouseConfig): Promise<void>;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AA4CpE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CACnC,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CACrC,CAAC;AAyDF,wBAAsB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,iBAItD;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,iBA4B5E;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,gBAAgB,iBAwBzB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,gBAAgB,iBAQzB;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAAG,aAAa,EACjC,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,gBAAgB,iBAqBzB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,iBAGzB"}
@@ -0,0 +1,122 @@
1
+ import { typeDefs } from "@powerhousedao/scalars";
2
+ import { paramCase, pascalCase } from "change-case";
3
+ import fs from "node:fs";
4
+ import { join, resolve } from "path";
5
+ import { generateSchema, generateSchemas } from "./graphql.js";
6
+ import { generateEditor as _generateEditor, generateImportScript as _generateImportScript, generateProcessor as _generateProcessor, generateSubgraph as _generateSubgraph, generateAll, generateDocumentModel, } from "./hygen.js";
7
+ import { loadDocumentModel } from "./utils.js";
8
+ function generateGraphqlSchema(documentModel) {
9
+ const spec = documentModel.specifications[documentModel.specifications.length - 1];
10
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
11
+ if (!spec) {
12
+ throw new Error(`No spec found for ${documentModel.id}`);
13
+ }
14
+ const { modules, state: { global, local }, } = spec;
15
+ const schemas = [
16
+ global.schema,
17
+ local.schema,
18
+ ...modules
19
+ .map((module) => [
20
+ `# ${module.name}`,
21
+ ...module.operations.map((op) => op.schema),
22
+ ])
23
+ .flat()
24
+ .filter((schema) => schema && schema.length > 0),
25
+ ];
26
+ return schemas.join("\n\n");
27
+ }
28
+ // returns map of document model id to document model name in pascal case and import path
29
+ async function getDocumentTypesMap(dir, pathOrigin = "../../../") {
30
+ const documentTypesMap = {};
31
+ // add document types from provided dir
32
+ if (fs.existsSync(dir)) {
33
+ fs.readdirSync(dir, { withFileTypes: true })
34
+ .filter((dirent) => dirent.isDirectory())
35
+ .map((dirent) => dirent.name)
36
+ .forEach((name) => {
37
+ const specPath = resolve(dir, name, `${name}.json`);
38
+ if (!fs.existsSync(specPath)) {
39
+ return;
40
+ }
41
+ const specRaw = fs.readFileSync(specPath, "utf-8");
42
+ try {
43
+ const spec = JSON.parse(specRaw);
44
+ if (spec.id) {
45
+ documentTypesMap[spec.id] = {
46
+ name: pascalCase(name),
47
+ importPath: join(pathOrigin, dir, name),
48
+ };
49
+ }
50
+ }
51
+ catch {
52
+ console.error(`Failed to parse ${specPath}`);
53
+ }
54
+ });
55
+ }
56
+ // add documents from document-model-libs if lib is installed
57
+ try {
58
+ /* eslint-disable */
59
+ // @ts-ignore-error TS2307 this import is expected to fail if document-model-libs is not available
60
+ const documentModels = await import("document-model-libs/document-models");
61
+ Object.keys(documentModels).forEach((name) => {
62
+ const documentModel = documentModels[name];
63
+ documentTypesMap[documentModel.documentModel.id] = {
64
+ name,
65
+ importPath: `document-model-libs/${paramCase(name)}`,
66
+ };
67
+ });
68
+ /* eslint-enable */
69
+ }
70
+ catch {
71
+ /* document-model-libs is not available */
72
+ }
73
+ return documentTypesMap;
74
+ }
75
+ export async function generate(config) {
76
+ const { skipFormat, watch } = config;
77
+ await generateSchemas(config.documentModelsDir, { skipFormat, watch });
78
+ await generateAll(config.documentModelsDir, { skipFormat, watch });
79
+ }
80
+ export async function generateFromFile(path, config) {
81
+ // load document model spec from file
82
+ const documentModel = await loadDocumentModel(path);
83
+ const name = paramCase(documentModel.name);
84
+ // create document model folder and spec as json
85
+ fs.mkdirSync(join(config.documentModelsDir, name), { recursive: true });
86
+ fs.writeFileSync(join(config.documentModelsDir, name, `${name}.json`), JSON.stringify(documentModel, null, 4));
87
+ // bundle graphql schemas together
88
+ const schemaStr = [
89
+ typeDefs.join("\n"), // inject ph scalars
90
+ generateGraphqlSchema(documentModel),
91
+ ].join("\n");
92
+ if (schemaStr) {
93
+ fs.writeFileSync(join(config.documentModelsDir, name, `schema.graphql`), schemaStr);
94
+ }
95
+ await generateSchema(name, config.documentModelsDir, config);
96
+ await generateDocumentModel(documentModel, config.documentModelsDir, config);
97
+ }
98
+ export async function generateEditor(name, documentTypes, config) {
99
+ const pathOrigin = "../../";
100
+ const { documentModelsDir, skipFormat } = config;
101
+ const documentTypesMap = await getDocumentTypesMap(documentModelsDir, pathOrigin);
102
+ const invalidType = documentTypes.find((type) => !Object.keys(documentTypesMap).includes(type));
103
+ if (invalidType) {
104
+ throw new Error(`Document model for ${invalidType} not found`);
105
+ }
106
+ return _generateEditor(name, documentTypes, documentTypesMap, config.editorsDir, config.documentModelsDir, { skipFormat });
107
+ }
108
+ export async function generateSubgraph(name, file, config) {
109
+ return _generateSubgraph(name, file !== null ? await loadDocumentModel(file) : null, config.subgraphsDir, config);
110
+ }
111
+ export async function generateProcessor(name, type, documentTypes, config) {
112
+ const { documentModelsDir, skipFormat } = config;
113
+ const documentTypesMap = await getDocumentTypesMap(documentModelsDir);
114
+ const invalidType = documentTypes.find((type) => !Object.keys(documentTypesMap).includes(type));
115
+ if (invalidType) {
116
+ throw new Error(`Document model for ${invalidType} not found`);
117
+ }
118
+ return _generateProcessor(name, documentTypes, documentTypesMap, config.processorsDir, config.documentModelsDir, type, { skipFormat });
119
+ }
120
+ export async function generateImportScript(name, config) {
121
+ return _generateImportScript(name, config.importScriptsDir, config);
122
+ }
@@ -0,0 +1,4 @@
1
+ import { type DocumentModelState } from "document-model";
2
+ export declare function loadDocumentModel(path: string): Promise<DocumentModelState>;
3
+ export declare function formatWithPrettierBeforeWrite(outputFile: string, content: string): Promise<string>;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/codegen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAIxB,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,kBAAkB,CAAC,CA2B7B;AAED,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,mBAMhB"}
@@ -0,0 +1,40 @@
1
+ import { documentModelLoadFromFile, } from "document-model";
2
+ import fs from "node:fs";
3
+ import { format } from "prettier";
4
+ export async function loadDocumentModel(path) {
5
+ let documentModel;
6
+ try {
7
+ if (!path) {
8
+ throw new Error("Document model file not specified");
9
+ }
10
+ else if (path.endsWith(".zip")) {
11
+ const file = await documentModelLoadFromFile(path);
12
+ documentModel = file.state.global;
13
+ }
14
+ else if (path.endsWith(".json")) {
15
+ const data = fs.readFileSync(path, "utf-8");
16
+ const parsedData = JSON.parse(data);
17
+ if ("state" in parsedData) {
18
+ documentModel = parsedData.state.global;
19
+ }
20
+ else {
21
+ documentModel = parsedData;
22
+ }
23
+ }
24
+ else {
25
+ throw new Error("File type not supported. Must be zip or json.");
26
+ }
27
+ return documentModel;
28
+ }
29
+ catch (error) {
30
+ throw error.code === "MODULE_NOT_FOUND"
31
+ ? new Error(`Document model not found.`)
32
+ : error;
33
+ }
34
+ }
35
+ export async function formatWithPrettierBeforeWrite(outputFile, content) {
36
+ const modifiedContent = await format(content, {
37
+ parser: "typescript",
38
+ });
39
+ return modifiedContent;
40
+ }
@@ -0,0 +1,25 @@
1
+ export declare const createCommandSpec: {
2
+ readonly "--name": StringConstructor;
3
+ readonly "--project-name": "--name";
4
+ readonly "--version": StringConstructor;
5
+ readonly "--interactive": BooleanConstructor;
6
+ readonly "--dev": BooleanConstructor;
7
+ readonly "--staging": BooleanConstructor;
8
+ readonly "-p": "--name";
9
+ readonly "-v": "--version";
10
+ readonly "--package-manager": StringConstructor;
11
+ };
12
+ export interface ICreateProjectOptions {
13
+ name: string | undefined;
14
+ version: string;
15
+ interactive: boolean;
16
+ packageManager?: string;
17
+ }
18
+ export declare function parseVersion(args: {
19
+ version?: string;
20
+ dev?: boolean;
21
+ staging?: boolean;
22
+ }): string;
23
+ export declare function initCli(): Promise<void>;
24
+ export declare function createProject(options: ICreateProjectOptions): Promise<void>;
25
+ //# sourceMappingURL=create-project.d.ts.map