@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.
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +39 -34
- package/dist/cli.js.map +1 -0
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +64 -53
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.js.map +1 -0
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +30 -24
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js.map +1 -0
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js +16 -14
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js.map +1 -0
- package/dist/codegen/graphql.js +84 -80
- package/dist/codegen/graphql.js.map +1 -0
- package/dist/codegen/hygen.js +100 -86
- package/dist/codegen/hygen.js.map +1 -0
- package/dist/codegen/index.js +90 -77
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/utils.js +30 -33
- package/dist/codegen/utils.js.map +1 -0
- package/dist/create-lib/command.js +17 -25
- package/dist/create-lib/command.js.map +1 -0
- package/dist/create-lib/index.js +113 -99
- package/dist/create-lib/index.js.map +1 -0
- package/dist/index.d.ts +35 -2
- package/dist/index.js +21 -18
- package/dist/index.js.map +1 -0
- package/dist/utils/cli.js +80 -75
- package/dist/utils/cli.js.map +1 -0
- package/dist/utils/index.js +21 -18
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/mock.js +8 -5
- package/dist/utils/mock.js.map +1 -0
- package/package.json +4 -5
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.d.ts +0 -27
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts +0 -23
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts +0 -19
- package/dist/codegen/graphql.d.ts +0 -8
- package/dist/codegen/hygen.d.ts +0 -12
- package/dist/codegen/index.d.ts +0 -5
- package/dist/codegen/utils.d.ts +0 -2
- package/dist/create-lib/command.d.ts +0 -4
- package/dist/create-lib/index.d.ts +0 -2
- package/dist/utils/cli.d.ts +0 -24
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/mock.d.ts +0 -3
package/dist/codegen/hygen.js
CHANGED
|
@@ -1,101 +1,115 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const logger = new
|
|
14
|
-
const defaultTemplates =
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
32
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
62
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
],
|
|
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"]}
|
package/dist/codegen/index.js
CHANGED
|
@@ -1,87 +1,100 @@
|
|
|
1
1
|
#! /usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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"]}
|
package/dist/codegen/utils.js
CHANGED
|
@@ -1,36 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
2
|
-
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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"]}
|