@powerhousedao/codegen 0.6.0 → 0.8.0

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/cli.js CHANGED
@@ -4,7 +4,7 @@
4
4
  var index = require('./codegen/index');
5
5
  var utils = require('./utils');
6
6
 
7
- async function parseCommand(argv) {
7
+ function parseCommand(argv) {
8
8
  const args = utils.parseArgs(argv, {
9
9
  "--editor": String,
10
10
  "-e": "--editor",
@@ -27,8 +27,11 @@ async function main() {
27
27
  const result = await utils.promptDirectories(config);
28
28
  Object.assign(config, result);
29
29
  }
30
- const command = await parseCommand(argv);
30
+ const command = parseCommand(argv);
31
31
  if (command.editor) {
32
+ if (!command.editorName) {
33
+ throw new Error("Editor name is required (--editor or -e)");
34
+ }
32
35
  await index.generateEditor(
33
36
  command.editorName,
34
37
  command.documentTypes?.split(/[|,;]/g) ?? [],
@@ -40,6 +43,8 @@ async function main() {
40
43
  await index.generate(config);
41
44
  }
42
45
  }
43
- main();
46
+ main().catch((e) => {
47
+ throw e;
48
+ });
44
49
  //# sourceMappingURL=cli.js.map
45
50
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"names":["parseArgs","getConfig","parseConfig","promptDirectories","generateEditor","generateFromFile","generate"],"mappings":";;;;;;AAIA,eAAe,aAAa,IAAgB,EAAA;AAC1C,EAAM,MAAA,IAAA,GAAOA,gBAAU,IAAM,EAAA;AAAA,IAC3B,UAAY,EAAA,MAAA;AAAA,IACZ,IAAM,EAAA,UAAA;AAAA,IACN,kBAAoB,EAAA,MAAA;AAAA,GACrB,CAAA,CAAA;AACD,EAAM,MAAA,UAAA,GAAa,KAAK,UAAU,CAAA,CAAA;AAClC,EAAO,OAAA;AAAA,IACL,MAAA,EAAQ,CAAC,CAAC,UAAA;AAAA,IACV,UAAA;AAAA,IACA,aAAA,EAAe,KAAK,kBAAkB,CAAA;AAAA,IACtC,KAAK,IAAK,CAAA,CAAA;AAAA,GACZ,CAAA;AACF,CAAA;AAEA,eAAe,IAAO,GAAA;AACpB,EAAA,MAAM,IAAO,GAAA,OAAA,CAAQ,IAAK,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AACjC,EAAA,MAAM,aAAaC,eAAU,EAAA,CAAA;AAC7B,EAAM,MAAA,UAAA,GAAaC,kBAAY,IAAI,CAAA,CAAA;AACnC,EAAA,MAAM,MAAS,GAAA,EAAE,GAAG,UAAA,EAAY,GAAG,UAAW,EAAA,CAAA;AAC9C,EAAA,IAAI,OAAO,WAAa,EAAA;AACtB,IAAM,MAAA,MAAA,GAAS,MAAMC,uBAAA,CAAkB,MAAM,CAAA,CAAA;AAC7C,IAAO,MAAA,CAAA,MAAA,CAAO,QAAQ,MAAM,CAAA,CAAA;AAAA,GAC9B;AAEA,EAAM,MAAA,OAAA,GAAU,MAAM,YAAA,CAAa,IAAI,CAAA,CAAA;AACvC,EAAA,IAAI,QAAQ,MAAQ,EAAA;AAClB,IAAM,MAAAC,oBAAA;AAAA,MACJ,OAAQ,CAAA,UAAA;AAAA,MACR,OAAQ,CAAA,aAAA,EAAe,KAAM,CAAA,QAAQ,KAAK,EAAC;AAAA,MAC3C,MAAA;AAAA,KACF,CAAA;AAAA,GACS,MAAA,IAAA,OAAA,CAAQ,GAAI,CAAA,MAAA,KAAW,CAAG,EAAA;AACnC,IAAA,MAAMC,sBAAiB,CAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,GAAG,MAAM,CAAA,CAAA;AAAA,GACxC,MAAA;AACL,IAAA,MAAMC,eAAS,MAAM,CAAA,CAAA;AAAA,GACvB;AACF,CAAA;AAEA,IAAK,EAAA","file":"cli.js","sourcesContent":["#! /usr/bin/env node\nimport { generate, generateEditor, generateFromFile } from \"./codegen/index\";\nimport { parseArgs, getConfig, promptDirectories, parseConfig } from \"./utils\";\n\nasync function parseCommand(argv: string[]) {\n const args = parseArgs(argv, {\n \"--editor\": String,\n \"-e\": \"--editor\",\n \"--document-types\": String,\n });\n const editorName = args[\"--editor\"];\n return {\n editor: !!editorName,\n editorName,\n documentTypes: args[\"--document-types\"],\n arg: args._,\n };\n}\n\nasync function main() {\n const argv = process.argv.slice(2);\n const baseConfig = getConfig();\n const argsConfig = parseConfig(argv);\n const config = { ...baseConfig, ...argsConfig };\n if (config.interactive) {\n const result = await promptDirectories(config);\n Object.assign(config, result);\n }\n\n const command = await parseCommand(argv);\n if (command.editor) {\n await generateEditor(\n command.editorName!,\n command.documentTypes?.split(/[|,;]/g) ?? [],\n config,\n );\n } else if (command.arg.length === 2) {\n await generateFromFile(command.arg[1], config);\n } else {\n await generate(config);\n }\n}\n\nmain();\n"]}
1
+ {"version":3,"sources":["../src/cli.ts"],"names":["parseArgs","getConfig","parseConfig","promptDirectories","generateEditor","generateFromFile","generate"],"mappings":";;;;;;AAIA,SAAS,aAAa,IAAgB,EAAA;AACpC,EAAM,MAAA,IAAA,GAAOA,gBAAU,IAAM,EAAA;AAAA,IAC3B,UAAY,EAAA,MAAA;AAAA,IACZ,IAAM,EAAA,UAAA;AAAA,IACN,kBAAoB,EAAA,MAAA;AAAA,GACrB,CAAA,CAAA;AACD,EAAM,MAAA,UAAA,GAAa,KAAK,UAAU,CAAA,CAAA;AAClC,EAAO,OAAA;AAAA,IACL,MAAA,EAAQ,CAAC,CAAC,UAAA;AAAA,IACV,UAAA;AAAA,IACA,aAAA,EAAe,KAAK,kBAAkB,CAAA;AAAA,IACtC,KAAK,IAAK,CAAA,CAAA;AAAA,GACZ,CAAA;AACF,CAAA;AAEA,eAAe,IAAO,GAAA;AACpB,EAAA,MAAM,IAAO,GAAA,OAAA,CAAQ,IAAK,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AACjC,EAAA,MAAM,aAAaC,eAAU,EAAA,CAAA;AAC7B,EAAM,MAAA,UAAA,GAAaC,kBAAY,IAAI,CAAA,CAAA;AACnC,EAAA,MAAM,MAAS,GAAA,EAAE,GAAG,UAAA,EAAY,GAAG,UAAW,EAAA,CAAA;AAC9C,EAAA,IAAI,OAAO,WAAa,EAAA;AACtB,IAAM,MAAA,MAAA,GAAS,MAAMC,uBAAA,CAAkB,MAAM,CAAA,CAAA;AAC7C,IAAO,MAAA,CAAA,MAAA,CAAO,QAAQ,MAAM,CAAA,CAAA;AAAA,GAC9B;AAEA,EAAM,MAAA,OAAA,GAAU,aAAa,IAAI,CAAA,CAAA;AACjC,EAAA,IAAI,QAAQ,MAAQ,EAAA;AAClB,IAAI,IAAA,CAAC,QAAQ,UAAY,EAAA;AACvB,MAAM,MAAA,IAAI,MAAM,0CAA0C,CAAA,CAAA;AAAA,KAC5D;AACA,IAAM,MAAAC,oBAAA;AAAA,MACJ,OAAQ,CAAA,UAAA;AAAA,MACR,OAAQ,CAAA,aAAA,EAAe,KAAM,CAAA,QAAQ,KAAK,EAAC;AAAA,MAC3C,MAAA;AAAA,KACF,CAAA;AAAA,GACS,MAAA,IAAA,OAAA,CAAQ,GAAI,CAAA,MAAA,KAAW,CAAG,EAAA;AACnC,IAAA,MAAMC,sBAAiB,CAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,GAAG,MAAM,CAAA,CAAA;AAAA,GACxC,MAAA;AACL,IAAA,MAAMC,eAAS,MAAM,CAAA,CAAA;AAAA,GACvB;AACF,CAAA;AAEA,IAAK,EAAA,CAAE,KAAM,CAAA,CAAC,CAAe,KAAA;AAC3B,EAAM,MAAA,CAAA,CAAA;AACR,CAAC,CAAA","file":"cli.js","sourcesContent":["#! /usr/bin/env node\nimport { generate, generateEditor, generateFromFile } from \"./codegen/index\";\nimport { parseArgs, getConfig, promptDirectories, parseConfig } from \"./utils\";\n\nfunction parseCommand(argv: string[]) {\n const args = parseArgs(argv, {\n \"--editor\": String,\n \"-e\": \"--editor\",\n \"--document-types\": String,\n });\n const editorName = args[\"--editor\"];\n return {\n editor: !!editorName,\n editorName,\n documentTypes: args[\"--document-types\"],\n arg: args._,\n };\n}\n\nasync function main() {\n const argv = process.argv.slice(2);\n const baseConfig = getConfig();\n const argsConfig = parseConfig(argv);\n const config = { ...baseConfig, ...argsConfig };\n if (config.interactive) {\n const result = await promptDirectories(config);\n Object.assign(config, result);\n }\n\n const command = parseCommand(argv);\n if (command.editor) {\n if (!command.editorName) {\n throw new Error(\"Editor name is required (--editor or -e)\");\n }\n await generateEditor(\n command.editorName,\n command.documentTypes?.split(/[|,;]/g) ?? [],\n config,\n );\n } else if (command.arg.length === 2) {\n await generateFromFile(command.arg[1], config);\n } else {\n await generate(config);\n }\n}\n\nmain().catch((e: unknown) => {\n throw e;\n});\n"]}
@@ -13,6 +13,7 @@ var generate_document_model_module_default = {
13
13
  name: a.name,
14
14
  hasInput: a.schema !== null,
15
15
  hasAttachment: a.schema?.includes(": Attachment"),
16
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
16
17
  scope: a.scope || "global",
17
18
  state: a.scope === "global" ? "" : a.scope
18
19
  // the state this action affects
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.ts"],"names":["paramCase"],"mappings":";;;;AAcA,IAAO,sCAAQ,GAAA;AAAA,EACb,MAAQ,EAAA,CAAC,EAAE,IAAA,EAAiC,KAAA;AAC1C,IAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,aAAa,CAAA,CAAA;AACnD,IAAA,MAAM,aACJ,aAAc,CAAA,cAAA,CAAe,aAAc,CAAA,cAAA,CAAe,SAAS,CAAC,CAAA,CAAA;AACtE,IAAM,MAAA,eAAA,GAAkB,WAAW,OAAQ,CAAA,MAAA;AAAA,MACzC,CAAC,CAAA,KAAM,CAAE,CAAA,IAAA,KAAS,IAAK,CAAA,MAAA;AAAA,KACzB,CAAA;AAEA,IAAM,MAAA,OAAA,GACJ,eAAgB,CAAA,MAAA,GAAS,CACrB,GAAA,eAAA,CAAgB,CAAC,CAAE,CAAA,UAAA,CAAW,GAAI,CAAA,CAAC,CAAO,MAAA;AAAA,MACxC,MAAM,CAAE,CAAA,IAAA;AAAA,MACR,QAAA,EAAU,EAAE,MAAW,KAAA,IAAA;AAAA,MACvB,aAAe,EAAA,CAAA,CAAE,MAAQ,EAAA,QAAA,CAAS,cAAc,CAAA;AAAA,MAChD,KAAA,EAAO,EAAE,KAAS,IAAA,QAAA;AAAA,MAClB,KAAO,EAAA,CAAA,CAAE,KAAU,KAAA,QAAA,GAAW,KAAK,CAAE,CAAA,KAAA;AAAA;AAAA,KACvC,CAAE,IACF,EAAC,CAAA;AAEP,IAAO,OAAA;AAAA,MACL,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,cAAc,aAAc,CAAA,IAAA;AAAA,MAC5B,MAAA,EAAQA,oBAAU,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA,MAC7B,OAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF","file":"index.js","sourcesContent":["import { DocumentModelState } from \"document-model/document-model\";\nimport { paramCase } from \"change-case\";\nimport { Maybe, OperationScope } from \"document-model/document\";\nimport { Args } from \"../generate-document-model\";\n\ntype ModuleArgs = Args & { module: string };\ntype Actions = {\n name: Maybe<string>;\n hasInput: boolean;\n hasAttachment: boolean | undefined;\n scope: OperationScope;\n state: string;\n};\n\nexport default {\n params: ({ args }: { args: ModuleArgs }) => {\n const documentModel = JSON.parse(args.documentModel) as DocumentModelState;\n const latestSpec =\n documentModel.specifications[documentModel.specifications.length - 1];\n const filteredModules = latestSpec.modules.filter(\n (m) => m.name === args.module,\n );\n\n const actions: Actions[] =\n filteredModules.length > 0\n ? filteredModules[0].operations.map((a) => ({\n name: a.name,\n hasInput: a.schema !== null,\n hasAttachment: a.schema?.includes(\": Attachment\"),\n scope: a.scope || \"global\",\n state: a.scope === \"global\" ? \"\" : a.scope, // the state this action affects\n }))\n : [];\n\n return {\n rootDir: args.rootDir,\n documentType: documentModel.name,\n module: paramCase(args.module),\n actions,\n };\n },\n};\n"]}
1
+ {"version":3,"sources":["../../../../../../src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.ts"],"names":["paramCase"],"mappings":";;;;AAcA,IAAO,sCAAQ,GAAA;AAAA,EACb,MAAQ,EAAA,CAAC,EAAE,IAAA,EAAiC,KAAA;AAC1C,IAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,aAAa,CAAA,CAAA;AACnD,IAAA,MAAM,aACJ,aAAc,CAAA,cAAA,CAAe,aAAc,CAAA,cAAA,CAAe,SAAS,CAAC,CAAA,CAAA;AACtE,IAAM,MAAA,eAAA,GAAkB,WAAW,OAAQ,CAAA,MAAA;AAAA,MACzC,CAAC,CAAA,KAAM,CAAE,CAAA,IAAA,KAAS,IAAK,CAAA,MAAA;AAAA,KACzB,CAAA;AAEA,IAAM,MAAA,OAAA,GACJ,eAAgB,CAAA,MAAA,GAAS,CACrB,GAAA,eAAA,CAAgB,CAAC,CAAE,CAAA,UAAA,CAAW,GAAI,CAAA,CAAC,CAAO,MAAA;AAAA,MACxC,MAAM,CAAE,CAAA,IAAA;AAAA,MACR,QAAA,EAAU,EAAE,MAAW,KAAA,IAAA;AAAA,MACvB,aAAe,EAAA,CAAA,CAAE,MAAQ,EAAA,QAAA,CAAS,cAAc,CAAA;AAAA;AAAA,MAEhD,KAAA,EAAO,EAAE,KAAS,IAAA,QAAA;AAAA,MAClB,KAAO,EAAA,CAAA,CAAE,KAAU,KAAA,QAAA,GAAW,KAAK,CAAE,CAAA,KAAA;AAAA;AAAA,KACvC,CAAE,IACF,EAAC,CAAA;AAEP,IAAO,OAAA;AAAA,MACL,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,cAAc,aAAc,CAAA,IAAA;AAAA,MAC5B,MAAA,EAAQA,oBAAU,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA,MAC7B,OAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF","file":"index.js","sourcesContent":["import { DocumentModelState } from \"document-model/document-model\";\nimport { paramCase } from \"change-case\";\nimport { Maybe, OperationScope } from \"document-model/document\";\nimport { Args } from \"../generate-document-model\";\n\ntype ModuleArgs = Args & { module: string };\ntype Actions = {\n name: Maybe<string>;\n hasInput: boolean;\n hasAttachment: boolean | undefined;\n scope: OperationScope;\n state: string;\n};\n\nexport default {\n params: ({ args }: { args: ModuleArgs }) => {\n const documentModel = JSON.parse(args.documentModel) as DocumentModelState;\n const latestSpec =\n documentModel.specifications[documentModel.specifications.length - 1];\n const filteredModules = latestSpec.modules.filter(\n (m) => m.name === args.module,\n );\n\n const actions: Actions[] =\n filteredModules.length > 0\n ? filteredModules[0].operations.map((a) => ({\n name: a.name,\n hasInput: a.schema !== null,\n hasAttachment: a.schema?.includes(\": Attachment\"),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n scope: a.scope || \"global\",\n state: a.scope === \"global\" ? \"\" : a.scope, // the state this action affects\n }))\n : [];\n\n return {\n rootDir: args.rootDir,\n documentType: documentModel.name,\n module: paramCase(args.module),\n actions,\n };\n },\n};\n"]}
@@ -4,7 +4,7 @@ unless_exists: true
4
4
  ---
5
5
  <% if(!documentTypes.length){ %>import { Action, EditorProps } from 'document-model/document';<% } else { %>import { EditorProps } from 'document-model/document';<% } %>
6
6
  <% documentTypes.forEach(type => { _%>
7
- import { <%= documentTypesMap[type] %>State, <%= documentTypesMap[type] %>Action, <%= documentTypesMap[type] %>LocalState } from "../.<%= documentModelsDir %>/<%= h.changeCase.param(documentTypesMap[type]) %>";
7
+ import { <%= documentTypesMap[type] %>State, <%= documentTypesMap[type] %>Action, <%= documentTypesMap[type] %>LocalState, actions } from "../.<%= documentModelsDir %>/<%= h.changeCase.param(documentTypesMap[type]) %>";
8
8
  %><% }); _%>
9
9
 
10
10
  export type IProps = <% if(!documentTypes.length){ %>EditorProps<unknown, Action><% } else { %><% documentTypes.forEach((type, index) => { _%>EditorProps<<%= documentTypesMap[type] %>State, <%= documentTypesMap[type] %>Action, <%= documentTypesMap[type] %>LocalState%>%>><% if(index < documentTypes.length - 1){ %> | <% }%><% }); _%> <% } %>;
@@ -2,15 +2,20 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
3
3
  force: true
4
4
  ---
5
- import { type Editor as EditorModule<% if(!documentTypes.length){ %>, Action<% } %> } from 'document-model/document';
5
+ import { ExtendedEditor, EditorContextProps } from 'document-model-libs';
6
6
  import Editor from './editor';
7
7
  <% documentTypes.forEach(type => { _%>
8
8
  import { <%= documentTypesMap[type] %>State, <%= documentTypesMap[type] %>Action, <%= documentTypesMap[type] %>LocalState } from "../.<%= documentModelsDir %>/<%= h.changeCase.param(documentTypesMap[type]) %>";
9
9
  %><% }); _%>
10
10
 
11
- export const module: <% if(!documentTypes.length){ %>EditorModule<unknown, Action><% } else { %><% documentTypes.forEach((type, index) => { _%>EditorModule<<%= documentTypesMap[type] %>State, <%= documentTypesMap[type] %>Action, <%= documentTypesMap[type] %>LocalState%>%>> <% if(index < documentTypes.length - 1){ %>| <% }%><% }); _%> <% } %>= {
11
+ export const module: <% if(!documentTypes.length){ %>ExtendedEditor<unknown, Action, unknown, unknown><% } else { %><% documentTypes.forEach((type, index) => { _%>ExtendedEditor<<%= documentTypesMap[type] %>State, <%= documentTypesMap[type] %>Action, <%= documentTypesMap[type] %>LocalState, EditorContextProps%>%>> <% if(index < documentTypes.length - 1){ %>| <% }%><% }); _%> <% } %>= {
12
12
  Component: Editor,
13
13
  documentTypes: [<% if(!documentTypes.length){ %>'*'<% } else { %><% documentTypes.forEach(type => { _%>"<%= type %>", %><% }); _%> <% } %>],
14
+ config: {
15
+ id: 'editor-id',
16
+ disableExternalControls: true,
17
+ documentToolbarEnabled: true,
18
+ },
14
19
  };
15
20
 
16
21
  export default module;
@@ -21,6 +21,23 @@ const tsConfig = {
21
21
  // maybeValue: "T | null | undefined",
22
22
  inputMaybeValue: "T | null | undefined"
23
23
  };
24
+ const validationConfig = {
25
+ importFrom: `./types`,
26
+ schema: "zod",
27
+ ...tsConfig,
28
+ scalarSchemas: {
29
+ Unknown: "z.unknown()",
30
+ DateTime: "z.string().datetime()",
31
+ Attachment: "z.string()",
32
+ Address: "z.custom<`${string}:0x${string}`>((val) => /^[a-zA-Z0-9]+:0x[a-fA-F0-9]{40}$/.test(val as string))"
33
+ },
34
+ directives: {
35
+ equals: {
36
+ value: ["regex", "/^$1$/"]
37
+ }
38
+ },
39
+ withObjectType: true
40
+ };
24
41
  function schemaConfig(name, dir) {
25
42
  return {
26
43
  [`${dir}/${name}/gen/schema/types.ts`]: {
@@ -37,23 +54,7 @@ function schemaConfig(name, dir) {
37
54
  [`${dir}/${name}/gen/schema/zod.ts`]: {
38
55
  schema: `${dir}/${name}/schema.graphql`,
39
56
  plugins: ["@acaldas/graphql-codegen-typescript-validation-schema"],
40
- config: {
41
- importFrom: `./types`,
42
- schema: "zod",
43
- ...tsConfig,
44
- scalarSchemas: {
45
- Unknown: "z.unknown()",
46
- DateTime: "z.string().datetime()",
47
- Attachment: "z.string()",
48
- Address: "z.custom<`${string}:0x${string}`>((val) => /^[a-zA-Z0-9]+:0x[a-fA-F0-9]{40}$/.test(val as string))"
49
- },
50
- directives: {
51
- equals: {
52
- value: ["regex", "/^$1$/"]
53
- }
54
- },
55
- withObjectType: true
56
- }
57
+ config: validationConfig
57
58
  }
58
59
  };
59
60
  }
@@ -91,5 +92,8 @@ const generateSchemas = (dir, { watch = false, format = false } = {}) => {
91
92
 
92
93
  exports.generateSchema = generateSchema;
93
94
  exports.generateSchemas = generateSchemas;
95
+ exports.schemaConfig = schemaConfig;
96
+ exports.tsConfig = tsConfig;
97
+ exports.validationConfig = validationConfig;
94
98
  //# sourceMappingURL=graphql.js.map
95
99
  //# sourceMappingURL=graphql.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/codegen/graphql.ts"],"names":["readdirSync","generate"],"mappings":"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","file":"graphql.js","sourcesContent":["import { type CodegenConfig, generate } from \"@graphql-codegen/cli\";\nimport { TypeScriptPluginConfig } from \"@graphql-codegen/typescript\";\nimport { readdirSync } from \"node:fs\";\n\nconst getDirectories = (source: string) =>\n readdirSync(source, { withFileTypes: true })\n .filter((dirent) => dirent.isDirectory())\n .map((dirent) => dirent.name);\n\nconst tsConfig: TypeScriptPluginConfig = {\n strictScalars: true,\n scalars: {\n Unknown: \"unknown\",\n DateTime: \"string\",\n Attachment: \"string\",\n Address: \"`${string}:0x${string}`\",\n },\n enumsAsTypes: true,\n allowEnumStringTypes: true,\n avoidOptionals: {\n field: true,\n },\n skipTypename: true,\n // maybeValue: \"T | null | undefined\",\n inputMaybeValue: \"T | null | undefined\",\n};\n\nfunction schemaConfig(name: string, dir: string): CodegenConfig[\"generates\"] {\n return {\n [`${dir}/${name}/gen/schema/types.ts`]: {\n schema: [\n {\n [`${dir}/${name}/schema.graphql`]: {\n skipGraphQLImport: false,\n },\n },\n ],\n plugins: [\"typescript\"],\n config: tsConfig,\n },\n [`${dir}/${name}/gen/schema/zod.ts`]: {\n schema: `${dir}/${name}/schema.graphql`,\n plugins: [\"@acaldas/graphql-codegen-typescript-validation-schema\"],\n config: {\n importFrom: `./types`,\n schema: \"zod\",\n ...tsConfig,\n scalarSchemas: {\n Unknown: \"z.unknown()\",\n DateTime: \"z.string().datetime()\",\n Attachment: \"z.string()\",\n Address:\n \"z.custom<`${string}:0x${string}`>((val) => /^[a-zA-Z0-9]+:0x[a-fA-F0-9]{40}$/.test(val as string))\",\n },\n directives: {\n equals: {\n value: [\"regex\", \"/^$1$/\"],\n },\n },\n withObjectType: true,\n },\n },\n };\n}\n\nexport const generateSchema = (\n model: string,\n dir: string,\n { watch = false, format = false } = {},\n) => {\n const documentModelConfig = schemaConfig(model, dir);\n const config: CodegenConfig = {\n overwrite: true,\n generates: documentModelConfig,\n watch,\n hooks: {\n afterOneFileWrite: format ? [\"prettier --ignore-path --write\"] : [],\n },\n };\n return generate(config, true);\n};\n\nexport const generateSchemas = (\n dir: string,\n { watch = false, format = false } = {},\n) => {\n const documentModels = getDirectories(dir);\n const documentModelConfigs = documentModels.reduce(\n (obj, model) => ({\n ...obj,\n ...schemaConfig(model, dir),\n }),\n {},\n );\n\n const config: CodegenConfig = {\n overwrite: true,\n generates: documentModelConfigs,\n watch,\n hooks: {\n afterOneFileWrite: format ? [\"prettier --ignore-path --write\"] : [],\n },\n };\n return generate(config, true);\n};\n"]}
1
+ {"version":3,"sources":["../../src/codegen/graphql.ts"],"names":["readdirSync","generate"],"mappings":"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","file":"graphql.js","sourcesContent":["import { type CodegenConfig, generate } from \"@graphql-codegen/cli\";\nimport { TypeScriptPluginConfig } from \"@graphql-codegen/typescript\";\nimport { plugin } from \"@acaldas/graphql-codegen-typescript-validation-schema\";\nimport { readdirSync } from \"node:fs\";\nconst getDirectories = (source: string) =>\n readdirSync(source, { withFileTypes: true })\n .filter((dirent) => dirent.isDirectory())\n .map((dirent) => dirent.name);\n\nexport const tsConfig: TypeScriptPluginConfig = {\n strictScalars: true,\n scalars: {\n Unknown: \"unknown\",\n DateTime: \"string\",\n Attachment: \"string\",\n Address: \"`${string}:0x${string}`\",\n },\n enumsAsTypes: true,\n allowEnumStringTypes: true,\n avoidOptionals: {\n field: true,\n },\n skipTypename: true,\n // maybeValue: \"T | null | undefined\",\n inputMaybeValue: \"T | null | undefined\",\n};\n\nexport type ValidationSchemaConfigType = Parameters<typeof plugin>[2];\n\nexport const validationConfig: ValidationSchemaConfigType = {\n importFrom: `./types`,\n schema: \"zod\",\n ...tsConfig,\n scalarSchemas: {\n Unknown: \"z.unknown()\",\n DateTime: \"z.string().datetime()\",\n Attachment: \"z.string()\",\n Address:\n \"z.custom<`${string}:0x${string}`>((val) => /^[a-zA-Z0-9]+:0x[a-fA-F0-9]{40}$/.test(val as string))\",\n },\n directives: {\n equals: {\n value: [\"regex\", \"/^$1$/\"],\n },\n },\n withObjectType: true,\n};\n\nexport function schemaConfig(\n name: string,\n dir: string,\n): CodegenConfig[\"generates\"] {\n return {\n [`${dir}/${name}/gen/schema/types.ts`]: {\n schema: [\n {\n [`${dir}/${name}/schema.graphql`]: {\n skipGraphQLImport: false,\n },\n },\n ],\n plugins: [\"typescript\"],\n config: tsConfig,\n },\n [`${dir}/${name}/gen/schema/zod.ts`]: {\n schema: `${dir}/${name}/schema.graphql`,\n plugins: [\"@acaldas/graphql-codegen-typescript-validation-schema\"],\n config: validationConfig,\n },\n };\n}\n\nexport const generateSchema = (\n model: string,\n dir: string,\n { watch = false, format = false } = {},\n) => {\n const documentModelConfig = schemaConfig(model, dir);\n const config: CodegenConfig = {\n overwrite: true,\n generates: documentModelConfig,\n watch,\n hooks: {\n afterOneFileWrite: format ? [\"prettier --ignore-path --write\"] : [],\n },\n };\n return generate(config, true);\n};\n\nexport const generateSchemas = (\n dir: string,\n { watch = false, format = false } = {},\n) => {\n const documentModels = getDirectories(dir);\n const documentModelConfigs = documentModels.reduce(\n (obj, model) => ({\n ...obj,\n ...schemaConfig(model, dir),\n }),\n {},\n );\n\n const config: CodegenConfig = {\n overwrite: true,\n generates: documentModelConfigs,\n watch,\n hooks: {\n afterOneFileWrite: format ? [\"prettier --ignore-path --write\"] : [],\n },\n };\n return generate(config, true);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/codegen/hygen.ts"],"names":["Logger","path","runner","fs","loadDocumentModel"],"mappings":"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","file":"hygen.js","sourcesContent":["import { DocumentModel } from \"document-model\";\nimport fs from \"node:fs\";\nimport { Logger, runner } from \"hygen\";\nimport path from \"path\";\nimport { loadDocumentModel } from \"./utils\";\n\nconst logger = new Logger(console.log.bind(console));\nconst defaultTemplates = path.join(__dirname, \".hygen\", \"templates\");\n\nasync function run(args: string[], { watch = false, format = false } = {}) {\n const result = await runner(args, {\n templates: defaultTemplates,\n cwd: process.cwd(),\n logger,\n createPrompter: () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-require-imports\n return require(\"enquirer\");\n },\n exec: (action, body) => {\n const opts = body && body.length > 0 ? { input: body } : {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-require-imports\n return require(\"execa\").shell(action, opts);\n },\n debug: !!process.env.DEBUG,\n });\n if (format) {\n const execa = await import(\"execa\");\n const actions = result.actions as { status: string; subject: string }[];\n actions\n .filter((action) => [\"added\", \"inject\"].includes(action.status))\n .forEach((action) => {\n execa.$`prettier --ignore-path --write ${action.subject.replace(\n \".\",\n process.cwd(),\n )}`.catch((err: unknown) => {\n console.log(err);\n });\n });\n }\n\n return result;\n}\n\nexport async function generateAll(\n dir: string,\n { watch = false, format = false } = {},\n) {\n const files = fs.readdirSync(dir, { withFileTypes: true });\n for (const directory of files.filter((f) => f.isDirectory())) {\n const documentModelPath = path.join(\n dir,\n directory.name,\n `${directory.name}.json`,\n );\n if (!fs.existsSync(documentModelPath)) {\n continue;\n }\n\n try {\n const documentModel = await loadDocumentModel(documentModelPath);\n await generateDocumentModel(documentModel, dir, { watch, format });\n } catch (error) {\n console.error(directory.name, error);\n }\n }\n}\n\nexport async function generateDocumentModel(\n documentModel: DocumentModel.DocumentModelState,\n dir: string,\n { watch = false, format = false } = {},\n) {\n // Generate the singular files for the document model logic\n await run(\n [\n \"powerhouse\",\n \"generate-document-model\",\n \"--document-model\",\n JSON.stringify(documentModel),\n \"--root-dir\",\n dir,\n ],\n { watch, format },\n );\n\n // Generate the module-specific files for the document model logic\n const latestSpec =\n documentModel.specifications[documentModel.specifications.length - 1];\n for (const module of latestSpec.modules) {\n await run(\n [\n \"powerhouse\",\n \"generate-document-model-module\",\n \"--document-model\",\n JSON.stringify(documentModel),\n \"--root-dir\",\n dir,\n \"--module\",\n module.name,\n ],\n { watch, format },\n );\n }\n}\n\nexport async function generateEditor(\n name: string,\n documentTypes: string[],\n documentTypesMap: Record<string, string>,\n dir: string,\n documentModelsDir: string,\n { format = false } = {},\n) {\n // Generate the singular files for the document model logic\n await run(\n [\n \"powerhouse\",\n \"generate-editor\",\n \"--name\",\n name,\n \"--root-dir\",\n dir,\n \"--document-types\",\n documentTypes.join(\",\"),\n \"--document-types-map\",\n JSON.stringify(documentTypesMap),\n \"--document-models-dir\",\n documentModelsDir,\n ],\n { format },\n );\n}\n"]}
1
+ {"version":3,"sources":["../../src/codegen/hygen.ts"],"names":["Logger","path","runner","fs","loadDocumentModel"],"mappings":"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","file":"hygen.js","sourcesContent":["import { DocumentModel } from \"document-model\";\nimport fs from \"node:fs\";\nimport { Logger, runner } from \"hygen\";\nimport path from \"path\";\nimport { loadDocumentModel } from \"./utils\";\n\nconst logger = new Logger(console.log.bind(console));\nconst defaultTemplates = path.join(__dirname, \".hygen\", \"templates\");\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nasync function run(args: string[], { watch = false, format = false } = {}) {\n const result = await runner(args, {\n templates: defaultTemplates,\n cwd: process.cwd(),\n logger,\n createPrompter: () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-require-imports\n return require(\"enquirer\");\n },\n exec: (action, body) => {\n const opts = body && body.length > 0 ? { input: body } : {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-require-imports\n return require(\"execa\").shell(action, opts);\n },\n debug: !!process.env.DEBUG,\n });\n if (format) {\n const execa = await import(\"execa\");\n const actions = result.actions as { status: string; subject: string }[];\n actions\n .filter((action) => [\"added\", \"inject\"].includes(action.status))\n .forEach((action) => {\n execa.$`prettier --ignore-path --write ${action.subject.replace(\n \".\",\n process.cwd(),\n )}`.catch((err: unknown) => {\n console.log(err);\n });\n });\n }\n\n return result;\n}\n\nexport async function generateAll(\n dir: string,\n { watch = false, format = false } = {},\n) {\n const files = fs.readdirSync(dir, { withFileTypes: true });\n for (const directory of files.filter((f) => f.isDirectory())) {\n const documentModelPath = path.join(\n dir,\n directory.name,\n `${directory.name}.json`,\n );\n if (!fs.existsSync(documentModelPath)) {\n continue;\n }\n\n try {\n const documentModel = await loadDocumentModel(documentModelPath);\n await generateDocumentModel(documentModel, dir, { watch, format });\n } catch (error) {\n console.error(directory.name, error);\n }\n }\n}\n\nexport async function generateDocumentModel(\n documentModel: DocumentModel.DocumentModelState,\n dir: string,\n { watch = false, format = false } = {},\n) {\n // Generate the singular files for the document model logic\n await run(\n [\n \"powerhouse\",\n \"generate-document-model\",\n \"--document-model\",\n JSON.stringify(documentModel),\n \"--root-dir\",\n dir,\n ],\n { watch, format },\n );\n\n // Generate the module-specific files for the document model logic\n const latestSpec =\n documentModel.specifications[documentModel.specifications.length - 1];\n for (const module of latestSpec.modules) {\n await run(\n [\n \"powerhouse\",\n \"generate-document-model-module\",\n \"--document-model\",\n JSON.stringify(documentModel),\n \"--root-dir\",\n dir,\n \"--module\",\n module.name,\n ],\n { watch, format },\n );\n }\n}\n\nexport async function generateEditor(\n name: string,\n documentTypes: string[],\n documentTypesMap: Record<string, string>,\n dir: string,\n documentModelsDir: string,\n { format = false } = {},\n) {\n // Generate the singular files for the document model logic\n await run(\n [\n \"powerhouse\",\n \"generate-editor\",\n \"--name\",\n name,\n \"--root-dir\",\n dir,\n \"--document-types\",\n documentTypes.join(\",\"),\n \"--document-types-map\",\n JSON.stringify(documentTypesMap),\n \"--document-models-dir\",\n documentModelsDir,\n ],\n { format },\n );\n}\n"]}
@@ -15,8 +15,7 @@ var fs__default = /*#__PURE__*/_interopDefault(fs);
15
15
  function generateGraphqlSchema(documentModel) {
16
16
  const spec = documentModel.specifications[documentModel.specifications.length - 1];
17
17
  if (!spec) {
18
- console.log(`No spec found for ${documentModel.id}`);
19
- return;
18
+ throw new Error(`No spec found for ${documentModel.id}`);
20
19
  }
21
20
  const {
22
21
  modules,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/codegen/index.ts"],"names":["fs","resolve","pascalCase","generateSchemas","generateAll","path","loadDocumentModel","paramCase","join","generateSchema","generateDocumentModel","_generateEditor"],"mappings":"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","file":"index.js","sourcesContent":["#! /usr/bin/env node\nimport { DocumentModelState } from \"document-model/document-model\";\nimport {\n generateAll,\n generateEditor as _generateEditor,\n generateDocumentModel,\n} from \"./hygen\";\nimport { generateSchemas, generateSchema } from \"./graphql\";\nimport type { PowerhouseConfig } from \"../utils\";\nimport fs from \"node:fs\";\nimport { join, resolve } from \"path\";\nimport { paramCase, pascalCase } from \"change-case\";\nimport { loadDocumentModel } from \"./utils\";\n\nfunction generateGraphqlSchema(documentModel: DocumentModelState) {\n const spec =\n documentModel.specifications[documentModel.specifications.length - 1];\n\n if (!spec) {\n console.log(`No spec found for ${documentModel.id}`);\n return;\n }\n\n const {\n modules,\n state: { global, local },\n } = spec;\n const schemas = [\n global.schema,\n local.schema,\n ...modules\n .map((module) => [\n `# ${module.name}`,\n ...module.operations.map((op) => op.schema),\n ])\n .flat()\n .filter((schema) => schema && schema.length > 0),\n ];\n return schemas.join(\"\\n\\n\");\n}\n\nfunction getDocumentTypesMap(dir: string) {\n const documentTypesMap: Record<string, string> = {};\n fs.readdirSync(dir, { withFileTypes: true })\n .filter((dirent) => dirent.isDirectory())\n .map((dirent) => dirent.name)\n .forEach((name) => {\n const specPath = resolve(dir, name, `${name}.json`);\n if (!fs.existsSync(specPath)) {\n return;\n }\n\n const specRaw = fs.readFileSync(specPath, \"utf-8\");\n try {\n const spec = JSON.parse(specRaw) as DocumentModelState;\n if (spec.id) {\n documentTypesMap[spec.id] = pascalCase(name);\n }\n } catch {\n console.error(`Failed to parse ${specPath}`);\n }\n });\n return documentTypesMap;\n}\n\nexport async function generate(config: PowerhouseConfig) {\n const { format, watch } = config;\n await generateSchemas(config.documentModelsDir, { format, watch });\n await generateAll(config.documentModelsDir, { format, watch });\n}\n\nexport async function generateFromFile(path: string, config: PowerhouseConfig) {\n // load document model spec from file\n const documentModel = await loadDocumentModel(path);\n\n const name = paramCase(documentModel.name);\n\n // create document model folder and spec as json\n fs.mkdirSync(join(config.documentModelsDir, name), { recursive: true });\n fs.writeFileSync(\n join(config.documentModelsDir, name, `${name}.json`),\n JSON.stringify(documentModel, null, 4),\n );\n\n // bundle graphql schemas together\n const schemaStr = generateGraphqlSchema(documentModel);\n if (schemaStr) {\n fs.writeFileSync(\n join(config.documentModelsDir, name, `schema.graphql`),\n schemaStr,\n );\n }\n\n await generateSchema(name, config.documentModelsDir, config);\n await generateDocumentModel(documentModel, config.documentModelsDir, config);\n}\n\nexport async function generateEditor(\n name: string,\n documentTypes: string[],\n config: PowerhouseConfig,\n) {\n const { documentModelsDir, format } = config;\n const docummentTypesMap = getDocumentTypesMap(documentModelsDir);\n\n const invalidType = documentTypes.find(\n (type) => !Object.keys(docummentTypesMap).includes(type),\n );\n if (invalidType) {\n throw new Error(`Document model for ${invalidType} not found`);\n }\n return _generateEditor(\n name,\n documentTypes,\n docummentTypesMap,\n config.editorsDir,\n config.documentModelsDir,\n { format },\n );\n}\n"]}
1
+ {"version":3,"sources":["../../src/codegen/index.ts"],"names":["fs","resolve","pascalCase","generateSchemas","generateAll","path","loadDocumentModel","paramCase","join","generateSchema","generateDocumentModel","_generateEditor"],"mappings":"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","file":"index.js","sourcesContent":["#! /usr/bin/env node\nimport { DocumentModelState } from \"document-model/document-model\";\nimport {\n generateAll,\n generateEditor as _generateEditor,\n generateDocumentModel,\n} from \"./hygen\";\nimport { generateSchemas, generateSchema } from \"./graphql\";\nimport type { PowerhouseConfig } from \"../utils\";\nimport fs from \"node:fs\";\nimport { join, resolve } from \"path\";\nimport { paramCase, pascalCase } from \"change-case\";\nimport { loadDocumentModel } from \"./utils\";\n\nfunction generateGraphqlSchema(documentModel: DocumentModelState) {\n const spec =\n documentModel.specifications[documentModel.specifications.length - 1];\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!spec) {\n throw new Error(`No spec found for ${documentModel.id}`);\n }\n\n const {\n modules,\n state: { global, local },\n } = spec;\n const schemas = [\n global.schema,\n local.schema,\n ...modules\n .map((module) => [\n `# ${module.name}`,\n ...module.operations.map((op) => op.schema),\n ])\n .flat()\n .filter((schema) => schema && schema.length > 0),\n ];\n return schemas.join(\"\\n\\n\");\n}\n\nfunction getDocumentTypesMap(dir: string) {\n const documentTypesMap: Record<string, string> = {};\n fs.readdirSync(dir, { withFileTypes: true })\n .filter((dirent) => dirent.isDirectory())\n .map((dirent) => dirent.name)\n .forEach((name) => {\n const specPath = resolve(dir, name, `${name}.json`);\n if (!fs.existsSync(specPath)) {\n return;\n }\n\n const specRaw = fs.readFileSync(specPath, \"utf-8\");\n try {\n const spec = JSON.parse(specRaw) as DocumentModelState;\n if (spec.id) {\n documentTypesMap[spec.id] = pascalCase(name);\n }\n } catch {\n console.error(`Failed to parse ${specPath}`);\n }\n });\n return documentTypesMap;\n}\n\nexport async function generate(config: PowerhouseConfig) {\n const { format, watch } = config;\n await generateSchemas(config.documentModelsDir, { format, watch });\n await generateAll(config.documentModelsDir, { format, watch });\n}\n\nexport async function generateFromFile(path: string, config: PowerhouseConfig) {\n // load document model spec from file\n const documentModel = await loadDocumentModel(path);\n\n const name = paramCase(documentModel.name);\n\n // create document model folder and spec as json\n fs.mkdirSync(join(config.documentModelsDir, name), { recursive: true });\n fs.writeFileSync(\n join(config.documentModelsDir, name, `${name}.json`),\n JSON.stringify(documentModel, null, 4),\n );\n\n // bundle graphql schemas together\n const schemaStr = generateGraphqlSchema(documentModel);\n if (schemaStr) {\n fs.writeFileSync(\n join(config.documentModelsDir, name, `schema.graphql`),\n schemaStr,\n );\n }\n\n await generateSchema(name, config.documentModelsDir, config);\n await generateDocumentModel(documentModel, config.documentModelsDir, config);\n}\n\nexport async function generateEditor(\n name: string,\n documentTypes: string[],\n config: PowerhouseConfig,\n) {\n const { documentModelsDir, format } = config;\n const docummentTypesMap = getDocumentTypesMap(documentModelsDir);\n\n const invalidType = documentTypes.find(\n (type) => !Object.keys(docummentTypesMap).includes(type),\n );\n if (invalidType) {\n throw new Error(`Document model for ${invalidType} not found`);\n }\n return _generateEditor(\n name,\n documentTypes,\n docummentTypesMap,\n config.editorsDir,\n config.documentModelsDir,\n { format },\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/codegen/utils.ts"],"names":["documentModel","utils","fs"],"mappings":";;;;;;;;;AAGA,eAAsB,kBACpB,IAC6B,EAAA;AAC7B,EAAI,IAAAA,eAAA,CAAA;AACJ,EAAI,IAAA;AACF,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAM,MAAA,IAAI,MAAM,mCAAmC,CAAA,CAAA;AAAA,KAC1C,MAAA,IAAA,IAAA,CAAK,QAAS,CAAA,MAAM,CAAG,EAAA;AAChC,MAAA,MAAM,IAAO,GAAA,MAAMC,mBAAM,CAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAC1C,MAAAD,eAAA,GAAgB,KAAK,KAAM,CAAA,MAAA,CAAA;AAAA,KAClB,MAAA,IAAA,IAAA,CAAK,QAAS,CAAA,OAAO,CAAG,EAAA;AACjC,MAAA,MAAM,IAAO,GAAAE,mBAAA,CAAG,YAAa,CAAA,IAAA,EAAM,OAAO,CAAA,CAAA;AAC1C,MAAM,MAAA,QAAA,GAAW,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAEhC,MAAgBF,eAAA,GAAA,QAAA,CAAA;AAAA,KACX,MAAA;AACL,MAAM,MAAA,IAAI,MAAM,+CAA+C,CAAA,CAAA;AAAA,KACjE;AACA,IAAO,OAAAA,eAAA,CAAA;AAAA,WACA,KAAO,EAAA;AAEd,IAAA,MAAM,MAAM,IAAS,KAAA,kBAAA,GACjB,IAAI,KAAA,CAAM,2BAA2B,CACrC,GAAA,KAAA,CAAA;AAAA,GACN;AACF","file":"utils.js","sourcesContent":["import { DocumentModelState, utils, z } from \"document-model/document-model\";\nimport fs from \"node:fs\";\n\nexport async function loadDocumentModel(\n path: string,\n): Promise<DocumentModelState> {\n let documentModel: DocumentModelState;\n try {\n if (!path) {\n throw new Error(\"Document model file not specified\");\n } else if (path.endsWith(\".zip\")) {\n const file = await utils.loadFromFile(path);\n documentModel = file.state.global;\n } else if (path.endsWith(\".json\")) {\n const data = fs.readFileSync(path, \"utf-8\");\n const document = JSON.parse(data) as DocumentModelState;\n // z.DocumentModelStateSchema().parse(document);\n documentModel = document;\n } else {\n throw new Error(\"File type not supported. Must be zip or json.\");\n }\n return documentModel;\n } catch (error) {\n // @ts-expect-error\n throw error.code === \"MODULE_NOT_FOUND\"\n ? new Error(`Document model not found.`)\n : error;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/codegen/utils.ts"],"names":["documentModel","utils","fs"],"mappings":";;;;;;;;;AAGA,eAAsB,kBACpB,IAC6B,EAAA;AAC7B,EAAI,IAAAA,eAAA,CAAA;AACJ,EAAI,IAAA;AACF,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAM,MAAA,IAAI,MAAM,mCAAmC,CAAA,CAAA;AAAA,KAC1C,MAAA,IAAA,IAAA,CAAK,QAAS,CAAA,MAAM,CAAG,EAAA;AAChC,MAAA,MAAM,IAAO,GAAA,MAAMC,mBAAM,CAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAC1C,MAAAD,eAAA,GAAgB,KAAK,KAAM,CAAA,MAAA,CAAA;AAAA,KAClB,MAAA,IAAA,IAAA,CAAK,QAAS,CAAA,OAAO,CAAG,EAAA;AACjC,MAAA,MAAM,IAAO,GAAAE,mBAAA,CAAG,YAAa,CAAA,IAAA,EAAM,OAAO,CAAA,CAAA;AAC1C,MAAM,MAAA,QAAA,GAAW,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAChC,MAAgBF,eAAA,GAAA,QAAA,CAAA;AAAA,KACX,MAAA;AACL,MAAM,MAAA,IAAI,MAAM,+CAA+C,CAAA,CAAA;AAAA,KACjE;AACA,IAAO,OAAAA,eAAA,CAAA;AAAA,WACA,KAAO,EAAA;AACd,IAAA,MAAO,MAA4B,IAAS,KAAA,kBAAA,GACxC,IAAI,KAAA,CAAM,2BAA2B,CACrC,GAAA,KAAA,CAAA;AAAA,GACN;AACF","file":"utils.js","sourcesContent":["import { DocumentModelState, utils } from \"document-model/document-model\";\nimport fs from \"node:fs\";\n\nexport async function loadDocumentModel(\n path: string,\n): Promise<DocumentModelState> {\n let documentModel: DocumentModelState;\n try {\n if (!path) {\n throw new Error(\"Document model file not specified\");\n } else if (path.endsWith(\".zip\")) {\n const file = await utils.loadFromFile(path);\n documentModel = file.state.global;\n } else if (path.endsWith(\".json\")) {\n const data = fs.readFileSync(path, \"utf-8\");\n const document = JSON.parse(data) as DocumentModelState;\n documentModel = document;\n } else {\n throw new Error(\"File type not supported. Must be zip or json.\");\n }\n return documentModel;\n } catch (error) {\n throw (error as { code?: string }).code === \"MODULE_NOT_FOUND\"\n ? new Error(`Document model not found.`)\n : error;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/create-lib/command.ts"],"names":[],"mappings":";;AAAA,MAAM,eAAkB,GAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,QAAQ,KAAK,CAAA,CAAA;AACrD,MAAM,qBAAwB,GAAA,KAAA,CAAA;AAIvB,SAAS,kBAAkB,SAAoC,EAAA;AACpE,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAO,OAAA,qBAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,OAAU,GAAA,SAAA,CAAU,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA,CAAA;AACtC,EAAM,MAAA,UAAA,GAAa,OAAQ,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AACpC,EAAM,MAAA,IAAA,GAAO,WAAW,CAAC,CAAA,CAAA;AAEzB,EAAI,IAAA,eAAA,CAAgB,QAAS,CAAA,IAAsB,CAAG,EAAA;AACpD,IAAO,OAAA,IAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,qBAAA,CAAA;AAAA,GACT;AACF","file":"command.js","sourcesContent":["const packageManagers = [\"npm\", \"yarn\", \"pnpm\", \"bun\"] as const;\nconst defaultPackageManager = \"npm\";\n\nexport type PackageManager = (typeof packageManagers)[number];\n\nexport function getPackageManager(userAgent?: string): PackageManager {\n if (!userAgent) {\n return defaultPackageManager;\n }\n\n const pkgSpec = userAgent.split(\" \")[0];\n const pkgSpecArr = pkgSpec.split(\"/\");\n const name = pkgSpecArr[0];\n\n if (packageManagers.includes(name as PackageManager)) {\n return name as PackageManager;\n } else {\n return defaultPackageManager;\n }\n}\n\nfunction pkgFromUserAgent(userAgent: string | undefined) {\n if (!userAgent) return undefined;\n const pkgSpec = userAgent.split(\" \")[0];\n const pkgSpecArr = pkgSpec.split(\"/\");\n return {\n name: pkgSpecArr[0],\n version: pkgSpecArr[1],\n };\n}\n"]}
1
+ {"version":3,"sources":["../../src/create-lib/command.ts"],"names":[],"mappings":";;AAAA,MAAM,eAAkB,GAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,QAAQ,KAAK,CAAA,CAAA;AACrD,MAAM,qBAAwB,GAAA,KAAA,CAAA;AAIvB,SAAS,kBAAkB,SAAoC,EAAA;AACpE,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAO,OAAA,qBAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,OAAU,GAAA,SAAA,CAAU,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA,CAAA;AACtC,EAAM,MAAA,UAAA,GAAa,OAAQ,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AACpC,EAAM,MAAA,IAAA,GAAO,WAAW,CAAC,CAAA,CAAA;AAEzB,EAAI,IAAA,eAAA,CAAgB,QAAS,CAAA,IAAsB,CAAG,EAAA;AACpD,IAAO,OAAA,IAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,qBAAA,CAAA;AAAA,GACT;AACF","file":"command.js","sourcesContent":["const packageManagers = [\"npm\", \"yarn\", \"pnpm\", \"bun\"] as const;\nconst defaultPackageManager = \"npm\";\n\nexport type PackageManager = (typeof packageManagers)[number];\n\nexport function getPackageManager(userAgent?: string): PackageManager {\n if (!userAgent) {\n return defaultPackageManager;\n }\n\n const pkgSpec = userAgent.split(\" \")[0];\n const pkgSpecArr = pkgSpec.split(\"/\");\n const name = pkgSpecArr[0];\n\n if (packageManagers.includes(name as PackageManager)) {\n return name as PackageManager;\n } else {\n return defaultPackageManager;\n }\n}\n"]}
@@ -1,136 +1,10 @@
1
1
  #! /usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var child_process = require('child_process');
5
- var enquirer = require('enquirer');
6
- var fs = require('node:fs');
7
- var path = require('path');
8
- var cli = require('../utils/cli');
9
- var command = require('./command');
4
+ var init = require('./init');
10
5
 
11
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
-
13
- var fs__default = /*#__PURE__*/_interopDefault(fs);
14
- var path__default = /*#__PURE__*/_interopDefault(path);
15
-
16
- const BOILERPLATE_REPO = "https://github.com/powerhouse-inc/document-model-boilerplate.git";
17
- const packageManager = command.getPackageManager(process.env.npm_config_user_agent);
18
- const isNpm = packageManager === "npm";
19
- function buildPackageJson(appPath, projectName) {
20
- const packageJson = JSON.parse(
21
- fs__default.default.readFileSync(path__default.default.join(appPath, "package.json"), "utf-8")
22
- );
23
- const newPackage = {
24
- ...packageJson,
25
- name: projectName,
26
- version: "1.0.0",
27
- description: ""
28
- };
29
- fs__default.default.writeFileSync(
30
- path__default.default.join(appPath, "package.json"),
31
- JSON.stringify(newPackage, null, 2),
32
- "utf8"
33
- );
34
- }
35
- function buildPowerhouseConfig(appPath, documentModelsDir, editorsDir) {
36
- const filePath = path__default.default.join(appPath, "powerhouse.config.json");
37
- const packageJson = JSON.parse(fs__default.default.readFileSync(filePath, "utf-8"));
38
- const newPackage = {
39
- ...packageJson,
40
- documentModelsDir,
41
- editorsDir
42
- };
43
- fs__default.default.writeFileSync(filePath, JSON.stringify(newPackage, null, 2), "utf8");
44
- }
45
- function buildIndex(appPath, documentModelsDir, editorsDir) {
46
- fs__default.default.writeFileSync(
47
- path__default.default.join(appPath, "index.ts"),
48
- `import * as documentModelsExports from '${documentModelsDir}';
49
- import * as editorsExports from '${editorsDir}';
50
-
51
- export const documentModels = Object.values(documentModelsExports);
52
- export const editors = Object.values(editorsExports);`,
53
- "utf8"
54
- );
55
- }
56
- function runCmd(command) {
57
- try {
58
- child_process.execSync(command, { stdio: "inherit" });
59
- } catch (error) {
60
- console.log("\x1B[31m", error, "\x1B[0m");
61
- }
62
- }
63
- async function init() {
64
- const args = cli.parseArgs(process.argv.slice(2), cli.configSpec);
65
- let projectName = args._.shift();
66
- if (!projectName) {
67
- const result = await enquirer.prompt([
68
- {
69
- type: "input",
70
- name: "projectName",
71
- message: "What is the project name?",
72
- required: true
73
- }
74
- ]);
75
- if (!result.projectName) {
76
- console.log("\x1B[31m", "You have to provide name to your app.");
77
- process.exit(1);
78
- }
79
- projectName = result.projectName;
80
- }
81
- const { documentModelsDir, editorsDir } = args["--interactive"] ? await cli.promptDirectories() : cli.DEFAULT_CONFIG;
82
- const appPath = path__default.default.join(process.cwd(), projectName);
83
- try {
84
- fs__default.default.mkdirSync(appPath);
85
- } catch (err) {
86
- if (err.code === "EEXIST") {
87
- console.log(
88
- "\x1B[31m",
89
- `The folder ${projectName} already exists in the current directory, please give it another name.`,
90
- "\x1B[0m"
91
- );
92
- } else {
93
- console.log(err);
94
- }
95
- process.exit(1);
96
- }
97
- createProject(projectName, documentModelsDir, editorsDir);
98
- }
99
- function createProject(projectName, documentModelsDir, editorsDir) {
100
- try {
101
- console.log("\x1B[33m", "Downloading the project structure...", "\x1B[0m");
102
- runCmd(`git clone --depth 1 ${BOILERPLATE_REPO} ${projectName}`);
103
- const appPath = path__default.default.join(process.cwd(), projectName);
104
- process.chdir(appPath);
105
- console.log("\x1B[34m", "Installing dependencies...", "\x1B[0m");
106
- runCmd(`${packageManager} install`);
107
- fs__default.default.rmSync(path__default.default.join(appPath, "./.git"), { recursive: true });
108
- runCmd("git init");
109
- try {
110
- fs__default.default.mkdirSync(path__default.default.join(appPath, documentModelsDir));
111
- fs__default.default.writeFileSync(path__default.default.join(appPath, documentModelsDir, "index.ts"), "");
112
- fs__default.default.mkdirSync(path__default.default.join(appPath, editorsDir));
113
- fs__default.default.writeFileSync(path__default.default.join(appPath, editorsDir, "index.ts"), "");
114
- } catch (error) {
115
- if (!error.message.includes("EEXIST")) {
116
- throw error;
117
- }
118
- }
119
- buildPackageJson(appPath, projectName);
120
- buildPowerhouseConfig(appPath, documentModelsDir, editorsDir);
121
- buildIndex(appPath, documentModelsDir, editorsDir);
122
- console.log("\x1B[32m", "The installation is done!", "\x1B[0m");
123
- console.log();
124
- console.log("\x1B[34m", "You can start by typing:");
125
- console.log(` cd ${projectName}`);
126
- console.log(
127
- isNpm ? " npm run generate" : ` ${packageManager} generate`,
128
- "\x1B[0m"
129
- );
130
- } catch (error) {
131
- console.log(error);
132
- }
133
- }
134
- init();
6
+ init.init().catch((e) => {
7
+ throw e;
8
+ });
135
9
  //# sourceMappingURL=index.js.map
136
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/create-lib/index.ts"],"names":["getPackageManager","fs","path","execSync","parseArgs","configSpec","prompt","promptDirectories","DEFAULT_CONFIG"],"mappings":"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","file":"index.js","sourcesContent":["#! /usr/bin/env node\n\nimport { execSync } from \"child_process\";\nimport { prompt } from \"enquirer\";\nimport fs from \"node:fs\";\nimport path from \"path\";\nimport {\n DEFAULT_CONFIG,\n configSpec,\n parseArgs,\n promptDirectories,\n} from \"../utils/cli\";\nimport { getPackageManager } from \"./command\";\n\nconst BOILERPLATE_REPO =\n \"https://github.com/powerhouse-inc/document-model-boilerplate.git\";\n\nconst packageManager = getPackageManager(process.env.npm_config_user_agent);\nconst isNpm = packageManager === \"npm\";\n\nfunction buildPackageJson(appPath: string, projectName: string) {\n const packageJson = JSON.parse(\n fs.readFileSync(path.join(appPath, \"package.json\"), \"utf-8\"),\n ) as Record<string, any>;\n const newPackage = {\n ...packageJson,\n name: projectName,\n version: \"1.0.0\",\n description: \"\",\n };\n\n fs.writeFileSync(\n path.join(appPath, \"package.json\"),\n JSON.stringify(newPackage, null, 2),\n \"utf8\",\n );\n}\n\nfunction buildPowerhouseConfig(\n appPath: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n const filePath = path.join(appPath, \"powerhouse.config.json\");\n const packageJson = JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as Record<\n string,\n any\n >;\n const newPackage = {\n ...packageJson,\n documentModelsDir,\n editorsDir,\n };\n\n fs.writeFileSync(filePath, JSON.stringify(newPackage, null, 2), \"utf8\");\n}\n\nfunction buildIndex(\n appPath: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n fs.writeFileSync(\n path.join(appPath, \"index.ts\"),\n `import * as documentModelsExports from '${documentModelsDir}';\n import * as editorsExports from '${editorsDir}';\n\n export const documentModels = Object.values(documentModelsExports);\n export const editors = Object.values(editorsExports);`,\n \"utf8\",\n );\n}\n\nfunction runCmd(command: string) {\n try {\n execSync(command, { stdio: \"inherit\" });\n } catch (error) {\n console.log(\"\\x1b[31m\", error, \"\\x1b[0m\");\n }\n}\n\nasync function init() {\n const args = parseArgs(process.argv.slice(2), configSpec);\n\n // checks if a project name was provided\n let projectName = args._.shift();\n if (!projectName) {\n const result = await prompt<{ projectName: string }>([\n {\n type: \"input\",\n name: \"projectName\",\n message: \"What is the project name?\",\n required: true,\n },\n ]);\n if (!result.projectName) {\n console.log(\"\\x1b[31m\", \"You have to provide name to your app.\");\n process.exit(1);\n }\n projectName = result.projectName;\n }\n\n const { documentModelsDir, editorsDir } = args[\"--interactive\"]\n ? await promptDirectories()\n : DEFAULT_CONFIG;\n\n const appPath = path.join(process.cwd(), projectName);\n\n try {\n fs.mkdirSync(appPath);\n } catch (err) {\n if ((err as { code: string }).code === \"EEXIST\") {\n console.log(\n \"\\x1b[31m\",\n `The folder ${projectName} already exists in the current directory, please give it another name.`,\n \"\\x1b[0m\",\n );\n } else {\n console.log(err);\n }\n process.exit(1);\n }\n\n createProject(projectName, documentModelsDir, editorsDir);\n}\n\nfunction createProject(\n projectName: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n try {\n console.log(\"\\x1b[33m\", \"Downloading the project structure...\", \"\\x1b[0m\");\n runCmd(`git clone --depth 1 ${BOILERPLATE_REPO} ${projectName}`);\n\n const appPath = path.join(process.cwd(), projectName);\n process.chdir(appPath);\n\n console.log(\"\\x1b[34m\", \"Installing dependencies...\", \"\\x1b[0m\");\n runCmd(`${packageManager} install`);\n\n fs.rmSync(path.join(appPath, \"./.git\"), { recursive: true });\n runCmd(\"git init\");\n\n try {\n fs.mkdirSync(path.join(appPath, documentModelsDir));\n fs.writeFileSync(path.join(appPath, documentModelsDir, \"index.ts\"), \"\");\n fs.mkdirSync(path.join(appPath, editorsDir));\n fs.writeFileSync(path.join(appPath, editorsDir, \"index.ts\"), \"\");\n } catch (error) {\n if (!(error as Error).message.includes(\"EEXIST\")) {\n throw error;\n }\n }\n buildPackageJson(appPath, projectName);\n buildPowerhouseConfig(appPath, documentModelsDir, editorsDir);\n buildIndex(appPath, documentModelsDir, editorsDir);\n\n console.log(\"\\x1b[32m\", \"The installation is done!\", \"\\x1b[0m\");\n console.log();\n\n console.log(\"\\x1b[34m\", \"You can start by typing:\");\n console.log(` cd ${projectName}`);\n console.log(\n isNpm ? \" npm run generate\" : ` ${packageManager} generate`,\n \"\\x1b[0m\",\n );\n } catch (error) {\n console.log(error);\n }\n}\n\ninit();\n"]}
1
+ {"version":3,"sources":["../../src/create-lib/index.ts"],"names":["init"],"mappings":";;;;;AAIAA,SAAK,EAAA,CAAE,KAAM,CAAA,CAAC,CAAe,KAAA;AAC3B,EAAM,MAAA,CAAA,CAAA;AACR,CAAC,CAAA","file":"index.js","sourcesContent":["#! /usr/bin/env node\n\nimport { init } from \"./init\";\n\ninit().catch((e: unknown) => {\n throw e;\n});\n"]}
@@ -0,0 +1,136 @@
1
+ 'use strict';
2
+
3
+ var child_process = require('child_process');
4
+ var enquirer = require('enquirer');
5
+ var fs = require('node:fs');
6
+ var path = require('path');
7
+ var cli = require('../utils/cli');
8
+ var command = require('./command');
9
+
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
13
+ var path__default = /*#__PURE__*/_interopDefault(path);
14
+
15
+ const BOILERPLATE_REPO = "https://github.com/powerhouse-inc/document-model-boilerplate.git";
16
+ const packageManager = command.getPackageManager(process.env.npm_config_user_agent);
17
+ const isNpm = packageManager === "npm";
18
+ function buildPackageJson(appPath, projectName) {
19
+ const packageJson = JSON.parse(
20
+ fs__default.default.readFileSync(path__default.default.join(appPath, "package.json"), "utf-8")
21
+ );
22
+ const newPackage = {
23
+ ...packageJson,
24
+ name: projectName,
25
+ version: "1.0.0",
26
+ description: ""
27
+ };
28
+ fs__default.default.writeFileSync(
29
+ path__default.default.join(appPath, "package.json"),
30
+ JSON.stringify(newPackage, null, 2),
31
+ "utf8"
32
+ );
33
+ }
34
+ function buildPowerhouseConfig(appPath, documentModelsDir, editorsDir) {
35
+ const filePath = path__default.default.join(appPath, "powerhouse.config.json");
36
+ const packageJson = JSON.parse(fs__default.default.readFileSync(filePath, "utf-8"));
37
+ const newPackage = {
38
+ ...packageJson,
39
+ documentModelsDir,
40
+ editorsDir
41
+ };
42
+ fs__default.default.writeFileSync(filePath, JSON.stringify(newPackage, null, 2), "utf8");
43
+ }
44
+ function buildIndex(appPath, documentModelsDir, editorsDir) {
45
+ fs__default.default.writeFileSync(
46
+ path__default.default.join(appPath, "index.ts"),
47
+ `import * as documentModelsExports from '${documentModelsDir}';
48
+ import * as editorsExports from '${editorsDir}';
49
+
50
+ export const documentModels = Object.values(documentModelsExports);
51
+ export const editors = Object.values(editorsExports);`,
52
+ "utf8"
53
+ );
54
+ }
55
+ function runCmd(command) {
56
+ try {
57
+ child_process.execSync(command, { stdio: "inherit" });
58
+ } catch (error) {
59
+ console.log("\x1B[31m", error, "\x1B[0m");
60
+ }
61
+ }
62
+ async function init(_args) {
63
+ const args = _args || cli.parseArgs(process.argv.slice(2), cli.configSpec);
64
+ let projectName = args._.shift();
65
+ if (!projectName) {
66
+ const result = await enquirer.prompt([
67
+ {
68
+ type: "input",
69
+ name: "projectName",
70
+ message: "What is the project name?",
71
+ required: true
72
+ }
73
+ ]);
74
+ if (!result.projectName) {
75
+ console.log("\x1B[31m", "You have to provide name to your app.");
76
+ process.exit(1);
77
+ }
78
+ projectName = result.projectName;
79
+ }
80
+ const { documentModelsDir, editorsDir } = args["--interactive"] ? await cli.promptDirectories() : cli.DEFAULT_CONFIG;
81
+ const appPath = path__default.default.join(process.cwd(), projectName);
82
+ try {
83
+ fs__default.default.mkdirSync(appPath);
84
+ } catch (err) {
85
+ if (err.code === "EEXIST") {
86
+ console.log(
87
+ "\x1B[31m",
88
+ `The folder ${projectName} already exists in the current directory, please give it another name.`,
89
+ "\x1B[0m"
90
+ );
91
+ } else {
92
+ console.log(err);
93
+ }
94
+ process.exit(1);
95
+ }
96
+ createProject(projectName, documentModelsDir, editorsDir);
97
+ }
98
+ function createProject(projectName, documentModelsDir, editorsDir) {
99
+ try {
100
+ console.log("\x1B[33m", "Downloading the project structure...", "\x1B[0m");
101
+ runCmd(`git clone --depth 1 ${BOILERPLATE_REPO} ${projectName}`);
102
+ const appPath = path__default.default.join(process.cwd(), projectName);
103
+ process.chdir(appPath);
104
+ console.log("\x1B[34m", "Installing dependencies...", "\x1B[0m");
105
+ runCmd(`${packageManager} install`);
106
+ fs__default.default.rmSync(path__default.default.join(appPath, "./.git"), { recursive: true });
107
+ runCmd("git init");
108
+ try {
109
+ fs__default.default.mkdirSync(path__default.default.join(appPath, documentModelsDir));
110
+ fs__default.default.writeFileSync(path__default.default.join(appPath, documentModelsDir, "index.ts"), "");
111
+ fs__default.default.mkdirSync(path__default.default.join(appPath, editorsDir));
112
+ fs__default.default.writeFileSync(path__default.default.join(appPath, editorsDir, "index.ts"), "");
113
+ } catch (error) {
114
+ if (!error.message.includes("EEXIST")) {
115
+ throw error;
116
+ }
117
+ }
118
+ buildPackageJson(appPath, projectName);
119
+ buildPowerhouseConfig(appPath, documentModelsDir, editorsDir);
120
+ buildIndex(appPath, documentModelsDir, editorsDir);
121
+ console.log("\x1B[32m", "The installation is done!", "\x1B[0m");
122
+ console.log();
123
+ console.log("\x1B[34m", "You can start by typing:");
124
+ console.log(` cd ${projectName}`);
125
+ console.log(
126
+ isNpm ? " npm run generate" : ` ${packageManager} generate`,
127
+ "\x1B[0m"
128
+ );
129
+ } catch (error) {
130
+ console.log(error);
131
+ }
132
+ }
133
+
134
+ exports.init = init;
135
+ //# sourceMappingURL=init.js.map
136
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/create-lib/init.ts"],"names":["getPackageManager","fs","path","execSync","parseArgs","configSpec","prompt","promptDirectories","DEFAULT_CONFIG"],"mappings":"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","file":"init.js","sourcesContent":["import arg from \"arg\";\nimport { execSync } from \"child_process\";\nimport { prompt } from \"enquirer\";\nimport fs from \"node:fs\";\nimport path from \"path\";\nimport {\n DEFAULT_CONFIG,\n configSpec,\n parseArgs,\n promptDirectories,\n} from \"../utils/cli\";\nimport { getPackageManager } from \"./command\";\n\nconst BOILERPLATE_REPO =\n \"https://github.com/powerhouse-inc/document-model-boilerplate.git\";\n\nconst packageManager = getPackageManager(process.env.npm_config_user_agent);\nconst isNpm = packageManager === \"npm\";\n\nfunction buildPackageJson(appPath: string, projectName: string) {\n const packageJson = JSON.parse(\n fs.readFileSync(path.join(appPath, \"package.json\"), \"utf-8\"),\n ) as Record<string, any>;\n const newPackage = {\n ...packageJson,\n name: projectName,\n version: \"1.0.0\",\n description: \"\",\n };\n\n fs.writeFileSync(\n path.join(appPath, \"package.json\"),\n JSON.stringify(newPackage, null, 2),\n \"utf8\",\n );\n}\n\nfunction buildPowerhouseConfig(\n appPath: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n const filePath = path.join(appPath, \"powerhouse.config.json\");\n const packageJson = JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as Record<\n string,\n any\n >;\n const newPackage = {\n ...packageJson,\n documentModelsDir,\n editorsDir,\n };\n\n fs.writeFileSync(filePath, JSON.stringify(newPackage, null, 2), \"utf8\");\n}\n\nfunction buildIndex(\n appPath: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n fs.writeFileSync(\n path.join(appPath, \"index.ts\"),\n `import * as documentModelsExports from '${documentModelsDir}';\n import * as editorsExports from '${editorsDir}';\n\n export const documentModels = Object.values(documentModelsExports);\n export const editors = Object.values(editorsExports);`,\n \"utf8\",\n );\n}\n\nfunction runCmd(command: string) {\n try {\n execSync(command, { stdio: \"inherit\" });\n } catch (error) {\n console.log(\"\\x1b[31m\", error, \"\\x1b[0m\");\n }\n}\n\nexport async function init(_args?: arg.Result<typeof configSpec>) {\n const args = _args || parseArgs(process.argv.slice(2), configSpec);\n\n // checks if a project name was provided\n let projectName = args._.shift();\n if (!projectName) {\n const result = await prompt<{ projectName: string }>([\n {\n type: \"input\",\n name: \"projectName\",\n message: \"What is the project name?\",\n required: true,\n },\n ]);\n if (!result.projectName) {\n console.log(\"\\x1b[31m\", \"You have to provide name to your app.\");\n process.exit(1);\n }\n projectName = result.projectName;\n }\n\n const { documentModelsDir, editorsDir } = args[\"--interactive\"]\n ? await promptDirectories()\n : DEFAULT_CONFIG;\n\n const appPath = path.join(process.cwd(), projectName);\n\n try {\n fs.mkdirSync(appPath);\n } catch (err) {\n if ((err as { code: string }).code === \"EEXIST\") {\n console.log(\n \"\\x1b[31m\",\n `The folder ${projectName} already exists in the current directory, please give it another name.`,\n \"\\x1b[0m\",\n );\n } else {\n console.log(err);\n }\n process.exit(1);\n }\n\n createProject(projectName, documentModelsDir, editorsDir);\n}\n\nfunction createProject(\n projectName: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n try {\n console.log(\"\\x1b[33m\", \"Downloading the project structure...\", \"\\x1b[0m\");\n runCmd(`git clone --depth 1 ${BOILERPLATE_REPO} ${projectName}`);\n\n const appPath = path.join(process.cwd(), projectName);\n process.chdir(appPath);\n\n console.log(\"\\x1b[34m\", \"Installing dependencies...\", \"\\x1b[0m\");\n runCmd(`${packageManager} install`);\n\n fs.rmSync(path.join(appPath, \"./.git\"), { recursive: true });\n runCmd(\"git init\");\n\n try {\n fs.mkdirSync(path.join(appPath, documentModelsDir));\n fs.writeFileSync(path.join(appPath, documentModelsDir, \"index.ts\"), \"\");\n fs.mkdirSync(path.join(appPath, editorsDir));\n fs.writeFileSync(path.join(appPath, editorsDir, \"index.ts\"), \"\");\n } catch (error) {\n if (!(error as Error).message.includes(\"EEXIST\")) {\n throw error;\n }\n }\n buildPackageJson(appPath, projectName);\n buildPowerhouseConfig(appPath, documentModelsDir, editorsDir);\n buildIndex(appPath, documentModelsDir, editorsDir);\n\n console.log(\"\\x1b[32m\", \"The installation is done!\", \"\\x1b[0m\");\n console.log();\n\n console.log(\"\\x1b[34m\", \"You can start by typing:\");\n console.log(` cd ${projectName}`);\n console.log(\n isNpm ? \" npm run generate\" : ` ${packageManager} generate`,\n \"\\x1b[0m\",\n );\n } catch (error) {\n console.log(error);\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ #! /usr/bin/env node
@@ -0,0 +1,18 @@
1
+ import { CodegenConfig } from '@graphql-codegen/cli';
2
+ import { TypeScriptPluginConfig } from '@graphql-codegen/typescript';
3
+ import { plugin } from '@acaldas/graphql-codegen-typescript-validation-schema';
4
+
5
+ declare const tsConfig: TypeScriptPluginConfig;
6
+ type ValidationSchemaConfigType = Parameters<typeof plugin>[2];
7
+ declare const validationConfig: ValidationSchemaConfigType;
8
+ declare function schemaConfig(name: string, dir: string): CodegenConfig["generates"];
9
+ declare const generateSchema: (model: string, dir: string, { watch, format }?: {
10
+ watch?: boolean | undefined;
11
+ format?: boolean | undefined;
12
+ }) => Promise<any>;
13
+ declare const generateSchemas: (dir: string, { watch, format }?: {
14
+ watch?: boolean | undefined;
15
+ format?: boolean | undefined;
16
+ }) => Promise<any>;
17
+
18
+ export { type ValidationSchemaConfigType, generateSchema, generateSchemas, schemaConfig, tsConfig, validationConfig };
@@ -0,0 +1,15 @@
1
+ import { DocumentModel } from 'document-model';
2
+
3
+ declare function generateAll(dir: string, { watch, format }?: {
4
+ watch?: boolean | undefined;
5
+ format?: boolean | undefined;
6
+ }): Promise<void>;
7
+ declare function generateDocumentModel(documentModel: DocumentModel.DocumentModelState, dir: string, { watch, format }?: {
8
+ watch?: boolean | undefined;
9
+ format?: boolean | undefined;
10
+ }): Promise<void>;
11
+ declare function generateEditor(name: string, documentTypes: string[], documentTypesMap: Record<string, string>, dir: string, documentModelsDir: string, { format }?: {
12
+ format?: boolean | undefined;
13
+ }): Promise<void>;
14
+
15
+ export { generateAll, generateDocumentModel, generateEditor };
package/dist/index.d.ts CHANGED
@@ -1,35 +1,10 @@
1
- import arg from 'arg';
2
- import { generateMock as generateMock$1 } from '@anatine/zod-mock';
3
-
4
- type PowerhouseConfig = {
5
- documentModelsDir: string;
6
- editorsDir: string;
7
- interactive?: boolean;
8
- format?: boolean;
9
- watch?: boolean;
10
- };
11
- declare const DEFAULT_CONFIG: PowerhouseConfig;
12
- declare const configSpec: {
13
- readonly "--document-models": StringConstructor;
14
- readonly "--editors": StringConstructor;
15
- readonly "--interactive": BooleanConstructor;
16
- readonly "--format": BooleanConstructor;
17
- readonly "--watch": BooleanConstructor;
18
- readonly "-i": "--interactive";
19
- readonly "-f": "--format";
20
- readonly "-w": "--watch";
21
- };
22
- declare function getConfig(): PowerhouseConfig;
23
- declare function writeConfig(config: PowerhouseConfig): void;
24
- declare function parseArgs<T extends arg.Spec>(argv: string[], spec: T): arg.Result<T>;
25
- declare function parseConfig(argv: string[]): Partial<PowerhouseConfig>;
26
- declare function promptDirectories(config?: PowerhouseConfig): Promise<Pick<PowerhouseConfig, "documentModelsDir" | "editorsDir">>;
27
-
28
- type generateMockTypeFn = typeof generateMock$1;
29
- declare const generateMock: generateMockTypeFn;
1
+ import { PowerhouseConfig } from './utils.js';
2
+ export { DEFAULT_CONFIG, configSpec, createProject, generateMock, generateMockTypeFn, getConfig, getPackageManager, parseArgs, parseConfig, promptDirectories, writeConfig } from './utils.js';
3
+ import 'arg';
4
+ import '@anatine/zod-mock';
30
5
 
31
6
  declare function generate(config: PowerhouseConfig): Promise<void>;
32
7
  declare function generateFromFile(path: string, config: PowerhouseConfig): Promise<void>;
33
8
  declare function generateEditor(name: string, documentTypes: string[], config: PowerhouseConfig): Promise<void>;
34
9
 
35
- export { DEFAULT_CONFIG, type PowerhouseConfig, configSpec, generate, generateEditor, generateFromFile, generateMock, type generateMockTypeFn, getConfig, parseArgs, parseConfig, promptDirectories, writeConfig };
10
+ export { PowerhouseConfig, generate, generateEditor, generateFromFile };
@@ -2,20 +2,30 @@
2
2
 
3
3
  var cli = require('./cli');
4
4
  var mock = require('./mock');
5
+ var init = require('../create-lib/init');
6
+ var command = require('../create-lib/command');
5
7
 
6
8
 
7
9
 
10
+ Object.defineProperty(exports, "createProject", {
11
+ enumerable: true,
12
+ get: function () { return init.init; }
13
+ });
14
+ Object.defineProperty(exports, "getPackageManager", {
15
+ enumerable: true,
16
+ get: function () { return command.getPackageManager; }
17
+ });
8
18
  Object.keys(cli).forEach(function (k) {
9
- if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
10
- enumerable: true,
11
- get: function () { return cli[k]; }
12
- });
19
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
20
+ enumerable: true,
21
+ get: function () { return cli[k]; }
22
+ });
13
23
  });
14
24
  Object.keys(mock).forEach(function (k) {
15
- if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
16
- enumerable: true,
17
- get: function () { return mock[k]; }
18
- });
25
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
26
+ enumerable: true,
27
+ get: function () { return mock[k]; }
28
+ });
19
29
  });
20
30
  //# sourceMappingURL=index.js.map
21
31
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,37 @@
1
+ import arg from 'arg';
2
+ import { generateMock as generateMock$1 } from '@anatine/zod-mock';
3
+
4
+ type PowerhouseConfig = {
5
+ documentModelsDir: string;
6
+ editorsDir: string;
7
+ interactive?: boolean;
8
+ format?: boolean;
9
+ watch?: boolean;
10
+ };
11
+ declare const DEFAULT_CONFIG: PowerhouseConfig;
12
+ declare const configSpec: {
13
+ readonly "--document-models": StringConstructor;
14
+ readonly "--editors": StringConstructor;
15
+ readonly "--interactive": BooleanConstructor;
16
+ readonly "--format": BooleanConstructor;
17
+ readonly "--watch": BooleanConstructor;
18
+ readonly "-i": "--interactive";
19
+ readonly "-f": "--format";
20
+ readonly "-w": "--watch";
21
+ };
22
+ declare function getConfig(): PowerhouseConfig;
23
+ declare function writeConfig(config: PowerhouseConfig): void;
24
+ declare function parseArgs<T extends arg.Spec>(argv: string[], spec: T): arg.Result<T>;
25
+ declare function parseConfig(argv: string[]): Partial<PowerhouseConfig>;
26
+ declare function promptDirectories(config?: PowerhouseConfig): Promise<Pick<PowerhouseConfig, "documentModelsDir" | "editorsDir">>;
27
+
28
+ type generateMockTypeFn = typeof generateMock$1;
29
+ declare const generateMock: generateMockTypeFn;
30
+
31
+ declare function init(_args?: arg.Result<typeof configSpec>): Promise<void>;
32
+
33
+ declare const packageManagers: readonly ["npm", "yarn", "pnpm", "bun"];
34
+ type PackageManager = (typeof packageManagers)[number];
35
+ declare function getPackageManager(userAgent?: string): PackageManager;
36
+
37
+ export { DEFAULT_CONFIG, type PowerhouseConfig, configSpec, init as createProject, generateMock, type generateMockTypeFn, getConfig, getPackageManager, parseArgs, parseConfig, promptDirectories, writeConfig };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/codegen",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "license": "AGPL-3.0-only",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
@@ -12,6 +12,13 @@
12
12
  "files": [
13
13
  "/dist"
14
14
  ],
15
+ "exports": {
16
+ ".": "./dist/index.js",
17
+ "./graphql": "./dist/codegen/graphql.js",
18
+ "./hygen": "./dist/codegen/hygen.js",
19
+ "./create-lib": "./dist/create-lib/index.js",
20
+ "./utils": "./dist/utils/index.js"
21
+ },
15
22
  "dependencies": {
16
23
  "@acaldas/graphql-codegen-typescript-validation-schema": "^0.12.3",
17
24
  "@anatine/zod-mock": "^3.13.3",