@powerhousedao/codegen 0.5.0 → 0.6.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.
Files changed (43) hide show
  1. package/dist/cli.d.ts +0 -1
  2. package/dist/cli.js +39 -34
  3. package/dist/cli.js.map +1 -0
  4. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +64 -53
  5. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.js.map +1 -0
  6. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +30 -24
  7. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js.map +1 -0
  8. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js +16 -14
  9. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js.map +1 -0
  10. package/dist/codegen/graphql.js +84 -80
  11. package/dist/codegen/graphql.js.map +1 -0
  12. package/dist/codegen/hygen.js +100 -86
  13. package/dist/codegen/hygen.js.map +1 -0
  14. package/dist/codegen/index.js +90 -77
  15. package/dist/codegen/index.js.map +1 -0
  16. package/dist/codegen/utils.js +30 -33
  17. package/dist/codegen/utils.js.map +1 -0
  18. package/dist/create-lib/command.js +17 -25
  19. package/dist/create-lib/command.js.map +1 -0
  20. package/dist/create-lib/index.js +113 -99
  21. package/dist/create-lib/index.js.map +1 -0
  22. package/dist/index.d.ts +35 -2
  23. package/dist/index.js +21 -18
  24. package/dist/index.js.map +1 -0
  25. package/dist/utils/cli.js +80 -75
  26. package/dist/utils/cli.js.map +1 -0
  27. package/dist/utils/index.js +21 -18
  28. package/dist/utils/index.js.map +1 -0
  29. package/dist/utils/mock.js +8 -5
  30. package/dist/utils/mock.js.map +1 -0
  31. package/package.json +4 -5
  32. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.d.ts +0 -27
  33. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts +0 -23
  34. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts +0 -19
  35. package/dist/codegen/graphql.d.ts +0 -8
  36. package/dist/codegen/hygen.d.ts +0 -12
  37. package/dist/codegen/index.d.ts +0 -5
  38. package/dist/codegen/utils.d.ts +0 -2
  39. package/dist/create-lib/command.d.ts +0 -4
  40. package/dist/create-lib/index.d.ts +0 -2
  41. package/dist/utils/cli.d.ts +0 -24
  42. package/dist/utils/index.d.ts +0 -2
  43. package/dist/utils/mock.d.ts +0 -3
@@ -1,101 +1,115 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateAll = generateAll;
7
- exports.generateDocumentModel = generateDocumentModel;
8
- exports.generateEditor = generateEditor;
9
- const fs_1 = __importDefault(require("fs"));
10
- const hygen_1 = require("hygen");
11
- const path_1 = __importDefault(require("path"));
12
- const utils_1 = require("./utils");
13
- const logger = new hygen_1.Logger(console.log.bind(console));
14
- const defaultTemplates = path_1.default.join(__dirname, ".hygen", "templates");
1
+ 'use strict';
2
+
3
+ var fs = require('node:fs');
4
+ var hygen = require('hygen');
5
+ var path = require('path');
6
+ var utils = require('./utils');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
11
+ var path__default = /*#__PURE__*/_interopDefault(path);
12
+
13
+ const logger = new hygen.Logger(console.log.bind(console));
14
+ const defaultTemplates = path__default.default.join(__dirname, ".hygen", "templates");
15
15
  async function run(args, { watch = false, format = false } = {}) {
16
- const result = await (0, hygen_1.runner)(args, {
17
- templates: defaultTemplates,
18
- cwd: process.cwd(),
19
- logger,
20
- createPrompter: () => {
21
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-require-imports
22
- return require("enquirer");
23
- },
24
- exec: (action, body) => {
25
- const opts = body && body.length > 0 ? { input: body } : {};
26
- // 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
27
- return require("execa").shell(action, opts);
28
- },
29
- debug: !!process.env.DEBUG,
16
+ const result = await hygen.runner(args, {
17
+ templates: defaultTemplates,
18
+ cwd: process.cwd(),
19
+ logger,
20
+ createPrompter: () => {
21
+ return require("enquirer");
22
+ },
23
+ exec: (action, body) => {
24
+ const opts = body && body.length > 0 ? { input: body } : {};
25
+ return require("execa").shell(action, opts);
26
+ },
27
+ debug: !!process.env.DEBUG
28
+ });
29
+ if (format) {
30
+ const execa = await import('execa');
31
+ const actions = result.actions;
32
+ actions.filter((action) => ["added", "inject"].includes(action.status)).forEach((action) => {
33
+ execa.$`prettier --ignore-path --write ${action.subject.replace(
34
+ ".",
35
+ process.cwd()
36
+ )}`.catch((err) => {
37
+ console.log(err);
38
+ });
30
39
  });
31
- if (format) {
32
- const execa = await import("execa");
33
- const actions = result.actions;
34
- actions
35
- .filter((action) => ["added", "inject"].includes(action.status))
36
- .forEach((action) => {
37
- execa.$ `prettier --ignore-path --write ${action.subject.replace(".", process.cwd())}`.catch((err) => {
38
- console.log(err);
39
- });
40
- });
41
- }
42
- return result;
40
+ }
41
+ return result;
43
42
  }
44
43
  async function generateAll(dir, { watch = false, format = false } = {}) {
45
- const files = fs_1.default.readdirSync(dir, { withFileTypes: true });
46
- for (const directory of files.filter((f) => f.isDirectory())) {
47
- const documentModelPath = path_1.default.join(dir, directory.name, `${directory.name}.json`);
48
- if (!fs_1.default.existsSync(documentModelPath)) {
49
- continue;
50
- }
51
- try {
52
- const documentModel = await (0, utils_1.loadDocumentModel)(documentModelPath);
53
- await generateDocumentModel(documentModel, dir, { watch, format });
54
- }
55
- catch (error) {
56
- console.error(directory.name, error);
57
- }
44
+ const files = fs__default.default.readdirSync(dir, { withFileTypes: true });
45
+ for (const directory of files.filter((f) => f.isDirectory())) {
46
+ const documentModelPath = path__default.default.join(
47
+ dir,
48
+ directory.name,
49
+ `${directory.name}.json`
50
+ );
51
+ if (!fs__default.default.existsSync(documentModelPath)) {
52
+ continue;
53
+ }
54
+ try {
55
+ const documentModel = await utils.loadDocumentModel(documentModelPath);
56
+ await generateDocumentModel(documentModel, dir, { watch, format });
57
+ } catch (error) {
58
+ console.error(directory.name, error);
58
59
  }
60
+ }
59
61
  }
60
62
  async function generateDocumentModel(documentModel, dir, { watch = false, format = false } = {}) {
61
- // Generate the singular files for the document model logic
62
- await run([
63
+ await run(
64
+ [
65
+ "powerhouse",
66
+ "generate-document-model",
67
+ "--document-model",
68
+ JSON.stringify(documentModel),
69
+ "--root-dir",
70
+ dir
71
+ ],
72
+ { watch, format }
73
+ );
74
+ const latestSpec = documentModel.specifications[documentModel.specifications.length - 1];
75
+ for (const module of latestSpec.modules) {
76
+ await run(
77
+ [
63
78
  "powerhouse",
64
- "generate-document-model",
79
+ "generate-document-model-module",
65
80
  "--document-model",
66
81
  JSON.stringify(documentModel),
67
82
  "--root-dir",
68
83
  dir,
69
- ], { watch, format });
70
- // Generate the module-specific files for the document model logic
71
- const latestSpec = documentModel.specifications[documentModel.specifications.length - 1];
72
- for (const module of latestSpec.modules) {
73
- await run([
74
- "powerhouse",
75
- "generate-document-model-module",
76
- "--document-model",
77
- JSON.stringify(documentModel),
78
- "--root-dir",
79
- dir,
80
- "--module",
81
- module.name,
82
- ], { watch, format });
83
- }
84
+ "--module",
85
+ module.name
86
+ ],
87
+ { watch, format }
88
+ );
89
+ }
84
90
  }
85
91
  async function generateEditor(name, documentTypes, documentTypesMap, dir, documentModelsDir, { format = false } = {}) {
86
- // Generate the singular files for the document model logic
87
- await run([
88
- "powerhouse",
89
- "generate-editor",
90
- "--name",
91
- name,
92
- "--root-dir",
93
- dir,
94
- "--document-types",
95
- documentTypes.join(","),
96
- "--document-types-map",
97
- JSON.stringify(documentTypesMap),
98
- "--document-models-dir",
99
- documentModelsDir,
100
- ], { format });
92
+ await run(
93
+ [
94
+ "powerhouse",
95
+ "generate-editor",
96
+ "--name",
97
+ name,
98
+ "--root-dir",
99
+ dir,
100
+ "--document-types",
101
+ documentTypes.join(","),
102
+ "--document-types-map",
103
+ JSON.stringify(documentTypesMap),
104
+ "--document-models-dir",
105
+ documentModelsDir
106
+ ],
107
+ { format }
108
+ );
101
109
  }
110
+
111
+ exports.generateAll = generateAll;
112
+ exports.generateDocumentModel = generateDocumentModel;
113
+ exports.generateEditor = generateEditor;
114
+ //# sourceMappingURL=hygen.js.map
115
+ //# sourceMappingURL=hygen.js.map
@@ -0,0 +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,87 +1,100 @@
1
1
  #! /usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.generate = generate;
8
- exports.generateFromFile = generateFromFile;
9
- exports.generateEditor = generateEditor;
10
- const hygen_1 = require("./hygen");
11
- const graphql_1 = require("./graphql");
12
- const fs_1 = __importDefault(require("fs"));
13
- const path_1 = require("path");
14
- const change_case_1 = require("change-case");
15
- const utils_1 = require("./utils");
2
+ 'use strict';
3
+
4
+ var hygen = require('./hygen');
5
+ var graphql = require('./graphql');
6
+ var fs = require('node:fs');
7
+ var path = require('path');
8
+ var changeCase = require('change-case');
9
+ var utils = require('./utils');
10
+
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
14
+
16
15
  function generateGraphqlSchema(documentModel) {
17
- const spec = documentModel.specifications[documentModel.specifications.length - 1];
18
- if (!spec) {
19
- console.log(`No spec found for ${documentModel.id}`);
20
- return;
21
- }
22
- const { modules, state: { global, local }, } = spec;
23
- const schemas = [
24
- global.schema,
25
- local.schema,
26
- ...modules
27
- .map((module) => [
28
- `# ${module.name}`,
29
- ...module.operations.map((op) => op.schema),
30
- ])
31
- .flat()
32
- .filter((schema) => schema && schema.length > 0),
33
- ];
34
- return schemas.join("\n\n");
16
+ const spec = documentModel.specifications[documentModel.specifications.length - 1];
17
+ if (!spec) {
18
+ console.log(`No spec found for ${documentModel.id}`);
19
+ return;
20
+ }
21
+ const {
22
+ modules,
23
+ state: { global, local }
24
+ } = spec;
25
+ const schemas = [
26
+ global.schema,
27
+ local.schema,
28
+ ...modules.map((module) => [
29
+ `# ${module.name}`,
30
+ ...module.operations.map((op) => op.schema)
31
+ ]).flat().filter((schema) => schema && schema.length > 0)
32
+ ];
33
+ return schemas.join("\n\n");
35
34
  }
36
35
  function getDocumentTypesMap(dir) {
37
- const documentTypesMap = {};
38
- fs_1.default.readdirSync(dir, { withFileTypes: true })
39
- .filter((dirent) => dirent.isDirectory())
40
- .map((dirent) => dirent.name)
41
- .forEach((name) => {
42
- const specPath = (0, path_1.resolve)(dir, name, `${name}.json`);
43
- if (!fs_1.default.existsSync(specPath)) {
44
- return;
45
- }
46
- const specRaw = fs_1.default.readFileSync(specPath, "utf-8");
47
- try {
48
- const spec = JSON.parse(specRaw);
49
- if (spec.id) {
50
- documentTypesMap[spec.id] = (0, change_case_1.pascalCase)(name);
51
- }
52
- }
53
- catch {
54
- console.error(`Failed to parse ${specPath}`);
55
- }
56
- });
57
- return documentTypesMap;
36
+ const documentTypesMap = {};
37
+ fs__default.default.readdirSync(dir, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name).forEach((name) => {
38
+ const specPath = path.resolve(dir, name, `${name}.json`);
39
+ if (!fs__default.default.existsSync(specPath)) {
40
+ return;
41
+ }
42
+ const specRaw = fs__default.default.readFileSync(specPath, "utf-8");
43
+ try {
44
+ const spec = JSON.parse(specRaw);
45
+ if (spec.id) {
46
+ documentTypesMap[spec.id] = changeCase.pascalCase(name);
47
+ }
48
+ } catch {
49
+ console.error(`Failed to parse ${specPath}`);
50
+ }
51
+ });
52
+ return documentTypesMap;
58
53
  }
59
54
  async function generate(config) {
60
- const { format, watch } = config;
61
- await (0, graphql_1.generateSchemas)(config.documentModelsDir, { format, watch });
62
- await (0, hygen_1.generateAll)(config.documentModelsDir, { format, watch });
55
+ const { format, watch } = config;
56
+ await graphql.generateSchemas(config.documentModelsDir, { format, watch });
57
+ await hygen.generateAll(config.documentModelsDir, { format, watch });
63
58
  }
64
- async function generateFromFile(path, config) {
65
- // load document model spec from file
66
- const documentModel = await (0, utils_1.loadDocumentModel)(path);
67
- const name = (0, change_case_1.paramCase)(documentModel.name);
68
- // create document model folder and spec as json
69
- fs_1.default.mkdirSync((0, path_1.join)(config.documentModelsDir, name), { recursive: true });
70
- fs_1.default.writeFileSync((0, path_1.join)(config.documentModelsDir, name, `${name}.json`), JSON.stringify(documentModel, null, 4));
71
- // bundle graphql schemas together
72
- const schemaStr = generateGraphqlSchema(documentModel);
73
- if (schemaStr) {
74
- fs_1.default.writeFileSync((0, path_1.join)(config.documentModelsDir, name, `schema.graphql`), schemaStr);
75
- }
76
- await (0, graphql_1.generateSchema)(name, config.documentModelsDir, config);
77
- await (0, hygen_1.generateDocumentModel)(documentModel, config.documentModelsDir, config);
59
+ async function generateFromFile(path$1, config) {
60
+ const documentModel = await utils.loadDocumentModel(path$1);
61
+ const name = changeCase.paramCase(documentModel.name);
62
+ fs__default.default.mkdirSync(path.join(config.documentModelsDir, name), { recursive: true });
63
+ fs__default.default.writeFileSync(
64
+ path.join(config.documentModelsDir, name, `${name}.json`),
65
+ JSON.stringify(documentModel, null, 4)
66
+ );
67
+ const schemaStr = generateGraphqlSchema(documentModel);
68
+ if (schemaStr) {
69
+ fs__default.default.writeFileSync(
70
+ path.join(config.documentModelsDir, name, `schema.graphql`),
71
+ schemaStr
72
+ );
73
+ }
74
+ await graphql.generateSchema(name, config.documentModelsDir, config);
75
+ await hygen.generateDocumentModel(documentModel, config.documentModelsDir, config);
78
76
  }
79
77
  async function generateEditor(name, documentTypes, config) {
80
- const { documentModelsDir, format } = config;
81
- const docummentTypesMap = getDocumentTypesMap(documentModelsDir);
82
- const invalidType = documentTypes.find((type) => !Object.keys(docummentTypesMap).includes(type));
83
- if (invalidType) {
84
- throw new Error(`Document model for ${invalidType} not found`);
85
- }
86
- return (0, hygen_1.generateEditor)(name, documentTypes, docummentTypesMap, config.editorsDir, config.documentModelsDir, { format });
78
+ const { documentModelsDir, format } = config;
79
+ const docummentTypesMap = getDocumentTypesMap(documentModelsDir);
80
+ const invalidType = documentTypes.find(
81
+ (type) => !Object.keys(docummentTypesMap).includes(type)
82
+ );
83
+ if (invalidType) {
84
+ throw new Error(`Document model for ${invalidType} not found`);
85
+ }
86
+ return hygen.generateEditor(
87
+ name,
88
+ documentTypes,
89
+ docummentTypesMap,
90
+ config.editorsDir,
91
+ config.documentModelsDir,
92
+ { format }
93
+ );
87
94
  }
95
+
96
+ exports.generate = generate;
97
+ exports.generateEditor = generateEditor;
98
+ exports.generateFromFile = generateFromFile;
99
+ //# sourceMappingURL=index.js.map
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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,36 +1,33 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.loadDocumentModel = loadDocumentModel;
7
- const document_model_1 = require("document-model/document-model");
8
- const fs_1 = __importDefault(require("fs"));
1
+ 'use strict';
2
+
3
+ var documentModel = require('document-model/document-model');
4
+ var fs = require('node:fs');
5
+
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
9
+
9
10
  async function loadDocumentModel(path) {
10
- let documentModel;
11
- try {
12
- if (!path) {
13
- throw new Error("Document model file not specified");
14
- }
15
- else if (path.endsWith(".zip")) {
16
- const file = await document_model_1.utils.loadFromFile(path);
17
- documentModel = file.state.global;
18
- }
19
- else if (path.endsWith(".json")) {
20
- const data = fs_1.default.readFileSync(path, "utf-8");
21
- const document = JSON.parse(data);
22
- // z.DocumentModelStateSchema().parse(document);
23
- documentModel = document;
24
- }
25
- else {
26
- throw new Error("File type not supported. Must be zip or json.");
27
- }
28
- return documentModel;
29
- }
30
- catch (error) {
31
- // @ts-expect-error
32
- throw error.code === "MODULE_NOT_FOUND"
33
- ? new Error(`Document model not found.`)
34
- : error;
11
+ let documentModel$1;
12
+ try {
13
+ if (!path) {
14
+ throw new Error("Document model file not specified");
15
+ } else if (path.endsWith(".zip")) {
16
+ const file = await documentModel.utils.loadFromFile(path);
17
+ documentModel$1 = file.state.global;
18
+ } else if (path.endsWith(".json")) {
19
+ const data = fs__default.default.readFileSync(path, "utf-8");
20
+ const document = JSON.parse(data);
21
+ documentModel$1 = document;
22
+ } else {
23
+ throw new Error("File type not supported. Must be zip or json.");
35
24
  }
25
+ return documentModel$1;
26
+ } catch (error) {
27
+ throw error.code === "MODULE_NOT_FOUND" ? new Error(`Document model not found.`) : error;
28
+ }
36
29
  }
30
+
31
+ exports.loadDocumentModel = loadDocumentModel;
32
+ //# sourceMappingURL=utils.js.map
33
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +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,29 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPackageManager = getPackageManager;
1
+ 'use strict';
2
+
4
3
  const packageManagers = ["npm", "yarn", "pnpm", "bun"];
5
4
  const defaultPackageManager = "npm";
6
5
  function getPackageManager(userAgent) {
7
- if (!userAgent) {
8
- return defaultPackageManager;
9
- }
10
- const pkgSpec = userAgent.split(" ")[0];
11
- const pkgSpecArr = pkgSpec.split("/");
12
- const name = pkgSpecArr[0];
13
- if (packageManagers.includes(name)) {
14
- return name;
15
- }
16
- else {
17
- return defaultPackageManager;
18
- }
19
- }
20
- function pkgFromUserAgent(userAgent) {
21
- if (!userAgent)
22
- return undefined;
23
- const pkgSpec = userAgent.split(" ")[0];
24
- const pkgSpecArr = pkgSpec.split("/");
25
- return {
26
- name: pkgSpecArr[0],
27
- version: pkgSpecArr[1],
28
- };
6
+ if (!userAgent) {
7
+ return defaultPackageManager;
8
+ }
9
+ const pkgSpec = userAgent.split(" ")[0];
10
+ const pkgSpecArr = pkgSpec.split("/");
11
+ const name = pkgSpecArr[0];
12
+ if (packageManagers.includes(name)) {
13
+ return name;
14
+ } else {
15
+ return defaultPackageManager;
16
+ }
29
17
  }
18
+
19
+ exports.getPackageManager = getPackageManager;
20
+ //# sourceMappingURL=command.js.map
21
+ //# sourceMappingURL=command.js.map
@@ -0,0 +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"]}