@powerhousedao/codegen 0.36.1 → 0.37.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 +0 -78
- package/dist/create-lib/index.js +0 -7
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -4
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.d.ts +25 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.d.ts.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +60 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts +24 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +25 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.d.ts +22 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.d.ts.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.js +19 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts +21 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js +13 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.d.ts +14 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.d.ts.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.js +8 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.d.ts +21 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.d.ts.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js +13 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.d.ts +20 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.d.ts.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.js +13 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.d.ts +16 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.d.ts.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js +9 -0
- package/dist/src/codegen/graphql.d.ts +16 -0
- package/dist/src/codegen/graphql.d.ts.map +1 -0
- package/dist/src/codegen/graphql.js +91 -0
- package/dist/src/codegen/hygen.d.ts +23 -0
- package/dist/src/codegen/hygen.d.ts.map +1 -0
- package/dist/src/codegen/hygen.js +162 -0
- package/dist/src/codegen/index.d.ts +13 -0
- package/dist/src/codegen/index.d.ts.map +1 -0
- package/dist/src/codegen/index.js +123 -0
- package/dist/src/codegen/utils.d.ts +4 -0
- package/dist/src/codegen/utils.d.ts.map +1 -0
- package/dist/src/codegen/utils.js +40 -0
- package/dist/src/create-lib/create-project.d.ts +25 -0
- package/dist/src/create-lib/create-project.d.ts.map +1 -0
- package/dist/src/create-lib/create-project.js +158 -0
- package/dist/src/create-lib/index.d.ts +2 -0
- package/dist/src/create-lib/index.d.ts.map +1 -0
- package/dist/src/create-lib/index.js +1 -0
- package/dist/src/utils/cli.d.ts +26 -0
- package/dist/src/utils/cli.d.ts.map +1 -0
- package/dist/src/utils/cli.js +56 -0
- package/dist/src/utils/index.d.ts +4 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +3 -0
- package/dist/src/utils/mock.d.ts +4 -0
- package/dist/src/utils/mock.d.ts.map +1 -0
- package/dist/src/utils/mock.js +4 -0
- package/dist/src/utils/package-manager.d.ts +5 -0
- package/dist/src/utils/package-manager.d.ts.map +1 -0
- package/dist/src/utils/package-manager.js +16 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +12 -19
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/codegen/.hygen/templates/package.json +0 -3
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/actions.esm.t +0 -16
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/creators.esm.t +0 -8
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/customUtils.esm.t +0 -5
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/documentModel.esm.t +0 -7
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/documentModelTest.esm.t +0 -25
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.esm.t +0 -9
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +0 -73
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.js.map +0 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/lib.esm.t +0 -9
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/lib.inject_export.esm.t +0 -7
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/object.esm.t +0 -49
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/reducer.esm.t +0 -35
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/rootIndex.esm.t +0 -41
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/schema.esm.t +0 -6
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/types.esm.t +0 -19
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/utils.esm.t +0 -43
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/actions.esm.t +0 -22
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/creators.esm.t +0 -34
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/customReducers.esm.t +0 -20
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +0 -53
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +0 -40
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +0 -33
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js.map +0 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/object.esm.t +0 -37
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/operations.esm.t +0 -17
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.js +0 -25
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.js.map +0 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/resolvers.esm.t +0 -62
- package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/schema.esm.t +0 -31
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/editor.esm.t +0 -23
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.esm.t +0 -22
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js +0 -17
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js.map +0 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/lib.esm.t +0 -9
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/lib.inject_export.esm.t +0 -7
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/story.esm.t +0 -31
- package/dist/codegen/.hygen/templates/powerhouse/generate-import-script/index.esm.t +0 -59
- package/dist/codegen/.hygen/templates/powerhouse/generate-import-script/index.js +0 -14
- package/dist/codegen/.hygen/templates/powerhouse/generate-import-script/index.js.map +0 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-import-script/utils.esm.t +0 -100
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.esm.t +0 -66
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js +0 -17
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js.map +0 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.esm.t +0 -9
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_export.esm.t +0 -7
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.esm.t +0 -62
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.js +0 -17
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.js.map +0 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/lib.esm.t +0 -9
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/lib.inject_export.esm.t +0 -8
- package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/index.esm.t +0 -61
- package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js +0 -15
- package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js.map +0 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/lib.esm.t +0 -9
- package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/lib.inject_export.esm.t +0 -7
- package/dist/codegen/graphql.js +0 -97
- package/dist/codegen/graphql.js.map +0 -1
- package/dist/codegen/hygen.js +0 -179
- package/dist/codegen/hygen.js.map +0 -1
- package/dist/codegen/index.js +0 -146
- package/dist/codegen/index.js.map +0 -1
- package/dist/codegen/utils.js +0 -38
- package/dist/codegen/utils.js.map +0 -1
- package/dist/create-lib/index.js.map +0 -1
- package/dist/create-lib/init.js +0 -182
- package/dist/create-lib/init.js.map +0 -1
- package/dist/create-lib/utils.js +0 -19
- package/dist/create-lib/utils.js.map +0 -1
- package/dist/create-lib.d.ts +0 -1
- package/dist/graphql.d.ts +0 -18
- package/dist/hygen.d.ts +0 -28
- package/dist/index-DT1dkT-t.d.ts +0 -15
- package/dist/index.js.map +0 -1
- package/dist/utils/cli.js +0 -61
- package/dist/utils/cli.js.map +0 -1
- package/dist/utils/index.js +0 -6
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/mock.js +0 -9
- package/dist/utils/mock.js.map +0 -1
- package/dist/utils.d.ts +0 -59
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { Logger, runner } from "hygen";
|
|
6
|
+
import { loadDocumentModel } from "./utils.js";
|
|
7
|
+
import { pascalCase } from "change-case";
|
|
8
|
+
const require = createRequire(import.meta.url);
|
|
9
|
+
const __dirname = import.meta.dirname || path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const logger = new Logger(console.log.bind(console));
|
|
11
|
+
const defaultTemplates = path.join(__dirname, ".hygen", "templates");
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
13
|
+
async function run(args, { watch = false, skipFormat = false } = {}) {
|
|
14
|
+
const result = await runner(args, {
|
|
15
|
+
templates: defaultTemplates,
|
|
16
|
+
cwd: process.cwd(),
|
|
17
|
+
logger,
|
|
18
|
+
createPrompter: () => {
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
20
|
+
return require("enquirer");
|
|
21
|
+
},
|
|
22
|
+
exec: (action, body) => {
|
|
23
|
+
const opts = body && body.length > 0 ? { input: body } : {};
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
25
|
+
return require("execa").shell(action, opts);
|
|
26
|
+
},
|
|
27
|
+
debug: !!process.env.DEBUG,
|
|
28
|
+
});
|
|
29
|
+
if (!skipFormat) {
|
|
30
|
+
const execa = await import("execa");
|
|
31
|
+
const actions = result.actions;
|
|
32
|
+
actions
|
|
33
|
+
.filter((action) => ["added", "inject"].includes(action.status))
|
|
34
|
+
.forEach((action) => {
|
|
35
|
+
execa.$ `prettier --ignore-path --write ${action.subject.replace(".", process.cwd())}`.catch((err) => {
|
|
36
|
+
console.log(err);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
export async function generateAll(dir, { watch = false, skipFormat = false } = {}) {
|
|
43
|
+
const files = fs.readdirSync(dir, { withFileTypes: true });
|
|
44
|
+
for (const directory of files.filter((f) => f.isDirectory())) {
|
|
45
|
+
const documentModelPath = path.join(dir, directory.name, `${directory.name}.json`);
|
|
46
|
+
if (!fs.existsSync(documentModelPath)) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const documentModel = await loadDocumentModel(documentModelPath);
|
|
51
|
+
await generateDocumentModel(documentModel, dir, { watch, skipFormat });
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error(directory.name, error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export async function generateDocumentModel(documentModelState, dir, { watch = false, skipFormat = false } = {}) {
|
|
59
|
+
// Generate the singular files for the document model logic
|
|
60
|
+
await run([
|
|
61
|
+
"powerhouse",
|
|
62
|
+
"generate-document-model",
|
|
63
|
+
"--document-model",
|
|
64
|
+
JSON.stringify(documentModelState),
|
|
65
|
+
"--root-dir",
|
|
66
|
+
dir,
|
|
67
|
+
], { watch, skipFormat });
|
|
68
|
+
const latestSpec = documentModelState.specifications[documentModelState.specifications.length - 1];
|
|
69
|
+
// Generate the module-specific files for the document model logic
|
|
70
|
+
for (const module of latestSpec.modules) {
|
|
71
|
+
await run([
|
|
72
|
+
"powerhouse",
|
|
73
|
+
"generate-document-model-module",
|
|
74
|
+
"--document-model",
|
|
75
|
+
JSON.stringify(documentModelState),
|
|
76
|
+
"--root-dir",
|
|
77
|
+
dir,
|
|
78
|
+
"--module",
|
|
79
|
+
module.name,
|
|
80
|
+
], { watch, skipFormat });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export async function generateEditor(name, documentTypes, documentTypesMap, dir, documentModelsDir, { skipFormat = false } = {}) {
|
|
84
|
+
// Generate the singular files for the document model logic
|
|
85
|
+
await run([
|
|
86
|
+
"powerhouse",
|
|
87
|
+
"generate-editor",
|
|
88
|
+
"--name",
|
|
89
|
+
name,
|
|
90
|
+
"--root-dir",
|
|
91
|
+
dir,
|
|
92
|
+
"--document-types",
|
|
93
|
+
documentTypes.join(","),
|
|
94
|
+
"--document-types-map",
|
|
95
|
+
JSON.stringify(documentTypesMap),
|
|
96
|
+
"--document-models-dir",
|
|
97
|
+
documentModelsDir,
|
|
98
|
+
], { skipFormat });
|
|
99
|
+
}
|
|
100
|
+
export async function generateProcessor(name, documentTypes, documentTypesMap, dir, documentModelsDir, type = "analytics", { skipFormat = false } = {}) {
|
|
101
|
+
// Generate the singular files for the document model logic
|
|
102
|
+
const processorType = type === "operational" ? "operational" : "analytics";
|
|
103
|
+
await run([
|
|
104
|
+
"powerhouse",
|
|
105
|
+
`generate-processor-${processorType}`,
|
|
106
|
+
"--name",
|
|
107
|
+
name,
|
|
108
|
+
"--pascalName",
|
|
109
|
+
pascalCase(name),
|
|
110
|
+
"--root-dir",
|
|
111
|
+
dir,
|
|
112
|
+
"--document-types",
|
|
113
|
+
documentTypes.join(","),
|
|
114
|
+
"--document-types-map",
|
|
115
|
+
JSON.stringify(documentTypesMap),
|
|
116
|
+
"--document-models-dir",
|
|
117
|
+
documentModelsDir,
|
|
118
|
+
], { skipFormat });
|
|
119
|
+
}
|
|
120
|
+
export async function generateSubgraph(name, documentModel, dir, { skipFormat = false } = {}) {
|
|
121
|
+
const params = [
|
|
122
|
+
"powerhouse",
|
|
123
|
+
`generate-subgraph`,
|
|
124
|
+
"--name",
|
|
125
|
+
name,
|
|
126
|
+
"--pascalName",
|
|
127
|
+
pascalCase(name),
|
|
128
|
+
"--root-dir",
|
|
129
|
+
dir,
|
|
130
|
+
];
|
|
131
|
+
if (documentModel) {
|
|
132
|
+
params.push("--loadFromFile", "1");
|
|
133
|
+
}
|
|
134
|
+
// Generate the singular files for the document model logic
|
|
135
|
+
await run(params, { skipFormat });
|
|
136
|
+
if (documentModel) {
|
|
137
|
+
// Generate the GraphQL mutation schemas
|
|
138
|
+
await run([
|
|
139
|
+
"powerhouse",
|
|
140
|
+
"generate-document-model-mutations",
|
|
141
|
+
"--subgraph",
|
|
142
|
+
name,
|
|
143
|
+
"--document-model",
|
|
144
|
+
JSON.stringify(documentModel),
|
|
145
|
+
"--root-dir",
|
|
146
|
+
dir,
|
|
147
|
+
], { skipFormat });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
export async function generateImportScript(name, dir, { skipFormat = false } = {}) {
|
|
151
|
+
// Generate the singular files for the document model logic
|
|
152
|
+
await run([
|
|
153
|
+
"powerhouse",
|
|
154
|
+
`generate-import-script`,
|
|
155
|
+
"--name",
|
|
156
|
+
name,
|
|
157
|
+
"--pascalName",
|
|
158
|
+
pascalCase(name),
|
|
159
|
+
"--root-dir",
|
|
160
|
+
dir,
|
|
161
|
+
], { skipFormat });
|
|
162
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#! /usr/bin/env node
|
|
2
|
+
import { PowerhouseConfig } from "@powerhousedao/config/powerhouse";
|
|
3
|
+
export type DocumentTypesMap = Record<string, {
|
|
4
|
+
name: string;
|
|
5
|
+
importPath: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function generate(config: PowerhouseConfig): Promise<void>;
|
|
8
|
+
export declare function generateFromFile(path: string, config: PowerhouseConfig): Promise<void>;
|
|
9
|
+
export declare function generateEditor(name: string, documentTypes: string[], config: PowerhouseConfig): Promise<void>;
|
|
10
|
+
export declare function generateSubgraph(name: string, file: string | null, config: PowerhouseConfig): Promise<void>;
|
|
11
|
+
export declare function generateProcessor(name: string, type: "analytics" | "operational", documentTypes: string[], config: PowerhouseConfig): Promise<void>;
|
|
12
|
+
export declare function generateImportScript(name: string, config: PowerhouseConfig): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AA4CpE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CACnC,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CACrC,CAAC;AAyDF,wBAAsB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,iBAItD;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,iBA4B5E;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,gBAAgB,iBAwBzB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,gBAAgB,iBAQzB;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAAG,aAAa,EACjC,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,gBAAgB,iBAqBzB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,iBAGzB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
#! /usr/bin/env node
|
|
2
|
+
import { typeDefs } from "@powerhousedao/scalars";
|
|
3
|
+
import { paramCase, pascalCase } from "change-case";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import { join, resolve } from "path";
|
|
6
|
+
import { generateSchema, generateSchemas } from "./graphql.js";
|
|
7
|
+
import { generateEditor as _generateEditor, generateImportScript as _generateImportScript, generateProcessor as _generateProcessor, generateSubgraph as _generateSubgraph, generateAll, generateDocumentModel, } from "./hygen.js";
|
|
8
|
+
import { loadDocumentModel } from "./utils.js";
|
|
9
|
+
function generateGraphqlSchema(documentModel) {
|
|
10
|
+
const spec = documentModel.specifications[documentModel.specifications.length - 1];
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
12
|
+
if (!spec) {
|
|
13
|
+
throw new Error(`No spec found for ${documentModel.id}`);
|
|
14
|
+
}
|
|
15
|
+
const { modules, state: { global, local }, } = spec;
|
|
16
|
+
const schemas = [
|
|
17
|
+
global.schema,
|
|
18
|
+
local.schema,
|
|
19
|
+
...modules
|
|
20
|
+
.map((module) => [
|
|
21
|
+
`# ${module.name}`,
|
|
22
|
+
...module.operations.map((op) => op.schema),
|
|
23
|
+
])
|
|
24
|
+
.flat()
|
|
25
|
+
.filter((schema) => schema && schema.length > 0),
|
|
26
|
+
];
|
|
27
|
+
return schemas.join("\n\n");
|
|
28
|
+
}
|
|
29
|
+
// returns map of document model id to document model name in pascal case and import path
|
|
30
|
+
async function getDocumentTypesMap(dir, pathOrigin = "../../../") {
|
|
31
|
+
const documentTypesMap = {};
|
|
32
|
+
// add document types from provided dir
|
|
33
|
+
if (fs.existsSync(dir)) {
|
|
34
|
+
fs.readdirSync(dir, { withFileTypes: true })
|
|
35
|
+
.filter((dirent) => dirent.isDirectory())
|
|
36
|
+
.map((dirent) => dirent.name)
|
|
37
|
+
.forEach((name) => {
|
|
38
|
+
const specPath = resolve(dir, name, `${name}.json`);
|
|
39
|
+
if (!fs.existsSync(specPath)) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const specRaw = fs.readFileSync(specPath, "utf-8");
|
|
43
|
+
try {
|
|
44
|
+
const spec = JSON.parse(specRaw);
|
|
45
|
+
if (spec.id) {
|
|
46
|
+
documentTypesMap[spec.id] = {
|
|
47
|
+
name: pascalCase(name),
|
|
48
|
+
importPath: join(pathOrigin, dir, name),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
console.error(`Failed to parse ${specPath}`);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
// add documents from document-model-libs if lib is installed
|
|
58
|
+
try {
|
|
59
|
+
/* eslint-disable */
|
|
60
|
+
// @ts-ignore-error TS2307 this import is expected to fail if document-model-libs is not available
|
|
61
|
+
const documentModels = await import("document-model-libs/document-models");
|
|
62
|
+
Object.keys(documentModels).forEach((name) => {
|
|
63
|
+
const documentModel = documentModels[name];
|
|
64
|
+
documentTypesMap[documentModel.documentModel.id] = {
|
|
65
|
+
name,
|
|
66
|
+
importPath: `document-model-libs/${paramCase(name)}`,
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
/* eslint-enable */
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
/* document-model-libs is not available */
|
|
73
|
+
}
|
|
74
|
+
return documentTypesMap;
|
|
75
|
+
}
|
|
76
|
+
export async function generate(config) {
|
|
77
|
+
const { skipFormat, watch } = config;
|
|
78
|
+
await generateSchemas(config.documentModelsDir, { skipFormat, watch });
|
|
79
|
+
await generateAll(config.documentModelsDir, { skipFormat, watch });
|
|
80
|
+
}
|
|
81
|
+
export async function generateFromFile(path, config) {
|
|
82
|
+
// load document model spec from file
|
|
83
|
+
const documentModel = await loadDocumentModel(path);
|
|
84
|
+
const name = paramCase(documentModel.name);
|
|
85
|
+
// create document model folder and spec as json
|
|
86
|
+
fs.mkdirSync(join(config.documentModelsDir, name), { recursive: true });
|
|
87
|
+
fs.writeFileSync(join(config.documentModelsDir, name, `${name}.json`), JSON.stringify(documentModel, null, 4));
|
|
88
|
+
// bundle graphql schemas together
|
|
89
|
+
const schemaStr = [
|
|
90
|
+
typeDefs.join("\n"), // inject ph scalars
|
|
91
|
+
generateGraphqlSchema(documentModel),
|
|
92
|
+
].join("\n");
|
|
93
|
+
if (schemaStr) {
|
|
94
|
+
fs.writeFileSync(join(config.documentModelsDir, name, `schema.graphql`), schemaStr);
|
|
95
|
+
}
|
|
96
|
+
await generateSchema(name, config.documentModelsDir, config);
|
|
97
|
+
await generateDocumentModel(documentModel, config.documentModelsDir, config);
|
|
98
|
+
}
|
|
99
|
+
export async function generateEditor(name, documentTypes, config) {
|
|
100
|
+
const pathOrigin = "../../";
|
|
101
|
+
const { documentModelsDir, skipFormat } = config;
|
|
102
|
+
const documentTypesMap = await getDocumentTypesMap(documentModelsDir, pathOrigin);
|
|
103
|
+
const invalidType = documentTypes.find((type) => !Object.keys(documentTypesMap).includes(type));
|
|
104
|
+
if (invalidType) {
|
|
105
|
+
throw new Error(`Document model for ${invalidType} not found`);
|
|
106
|
+
}
|
|
107
|
+
return _generateEditor(name, documentTypes, documentTypesMap, config.editorsDir, config.documentModelsDir, { skipFormat });
|
|
108
|
+
}
|
|
109
|
+
export async function generateSubgraph(name, file, config) {
|
|
110
|
+
return _generateSubgraph(name, file !== null ? await loadDocumentModel(file) : null, config.subgraphsDir, config);
|
|
111
|
+
}
|
|
112
|
+
export async function generateProcessor(name, type, documentTypes, config) {
|
|
113
|
+
const { documentModelsDir, skipFormat } = config;
|
|
114
|
+
const documentTypesMap = await getDocumentTypesMap(documentModelsDir);
|
|
115
|
+
const invalidType = documentTypes.find((type) => !Object.keys(documentTypesMap).includes(type));
|
|
116
|
+
if (invalidType) {
|
|
117
|
+
throw new Error(`Document model for ${invalidType} not found`);
|
|
118
|
+
}
|
|
119
|
+
return _generateProcessor(name, documentTypes, documentTypesMap, config.processorsDir, config.documentModelsDir, type, { skipFormat });
|
|
120
|
+
}
|
|
121
|
+
export async function generateImportScript(name, config) {
|
|
122
|
+
return _generateImportScript(name, config.importScriptsDir, config);
|
|
123
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type DocumentModelState } from "document-model";
|
|
2
|
+
export declare function loadDocumentModel(path: string): Promise<DocumentModelState>;
|
|
3
|
+
export declare function formatWithPrettierBeforeWrite(outputFile: string, content: string): Promise<string>;
|
|
4
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/codegen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAIxB,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,kBAAkB,CAAC,CA2B7B;AAED,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,mBAMhB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { documentModelLoadFromFile, } from "document-model";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import { format } from "prettier";
|
|
4
|
+
export async function loadDocumentModel(path) {
|
|
5
|
+
let documentModel;
|
|
6
|
+
try {
|
|
7
|
+
if (!path) {
|
|
8
|
+
throw new Error("Document model file not specified");
|
|
9
|
+
}
|
|
10
|
+
else if (path.endsWith(".zip")) {
|
|
11
|
+
const file = await documentModelLoadFromFile(path);
|
|
12
|
+
documentModel = file.state.global;
|
|
13
|
+
}
|
|
14
|
+
else if (path.endsWith(".json")) {
|
|
15
|
+
const data = fs.readFileSync(path, "utf-8");
|
|
16
|
+
const parsedData = JSON.parse(data);
|
|
17
|
+
if ("state" in parsedData) {
|
|
18
|
+
documentModel = parsedData.state.global;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
documentModel = parsedData;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
throw new Error("File type not supported. Must be zip or json.");
|
|
26
|
+
}
|
|
27
|
+
return documentModel;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
throw error.code === "MODULE_NOT_FOUND"
|
|
31
|
+
? new Error(`Document model not found.`)
|
|
32
|
+
: error;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export async function formatWithPrettierBeforeWrite(outputFile, content) {
|
|
36
|
+
const modifiedContent = await format(content, {
|
|
37
|
+
parser: "typescript",
|
|
38
|
+
});
|
|
39
|
+
return modifiedContent;
|
|
40
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare const createCommandSpec: {
|
|
2
|
+
readonly "--name": StringConstructor;
|
|
3
|
+
readonly "--project-name": "--name";
|
|
4
|
+
readonly "--version": StringConstructor;
|
|
5
|
+
readonly "--interactive": BooleanConstructor;
|
|
6
|
+
readonly "--dev": BooleanConstructor;
|
|
7
|
+
readonly "--staging": BooleanConstructor;
|
|
8
|
+
readonly "-p": "--name";
|
|
9
|
+
readonly "-v": "--version";
|
|
10
|
+
readonly "--package-manager": StringConstructor;
|
|
11
|
+
};
|
|
12
|
+
export interface ICreateProjectOptions {
|
|
13
|
+
name: string | undefined;
|
|
14
|
+
version: string;
|
|
15
|
+
interactive: boolean;
|
|
16
|
+
packageManager?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function parseVersion(args: {
|
|
19
|
+
version?: string;
|
|
20
|
+
dev?: boolean;
|
|
21
|
+
staging?: boolean;
|
|
22
|
+
}): string;
|
|
23
|
+
export declare function initCli(): Promise<void>;
|
|
24
|
+
export declare function createProject(options: ICreateProjectOptions): Promise<void>;
|
|
25
|
+
//# sourceMappingURL=create-project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../../../src/create-lib/create-project.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,iBAAiB;;;;;;;;;;CAUpB,CAAC;AAEX,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAiED,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,UAWA;AAUD,wBAAgB,OAAO,kBAQtB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,qBAAqB,iBAmDjE"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { parseArgs, promptDirectories } from "#utils/cli";
|
|
2
|
+
import { getPackageManager } from "#utils/package-manager";
|
|
3
|
+
import { execSync } from "child_process";
|
|
4
|
+
import enquirer from "enquirer";
|
|
5
|
+
import fs from "node:fs";
|
|
6
|
+
import path from "path";
|
|
7
|
+
const BOILERPLATE_REPO = "https://github.com/powerhouse-inc/document-model-boilerplate.git";
|
|
8
|
+
const envPackageManager = getPackageManager(process.env.npm_config_user_agent);
|
|
9
|
+
const defaultDirectories = {
|
|
10
|
+
documentModelsDir: "./document-models",
|
|
11
|
+
editorsDir: "./editors",
|
|
12
|
+
};
|
|
13
|
+
export const createCommandSpec = {
|
|
14
|
+
"--name": String,
|
|
15
|
+
"--project-name": "--name",
|
|
16
|
+
"--version": String,
|
|
17
|
+
"--interactive": Boolean,
|
|
18
|
+
"--dev": Boolean,
|
|
19
|
+
"--staging": Boolean,
|
|
20
|
+
"-p": "--name",
|
|
21
|
+
"-v": "--version",
|
|
22
|
+
"--package-manager": String,
|
|
23
|
+
};
|
|
24
|
+
const { prompt } = enquirer;
|
|
25
|
+
function buildPackageJson(appPath, projectName) {
|
|
26
|
+
const packageJson = JSON.parse(fs.readFileSync(path.join(appPath, "package.json"), "utf-8"));
|
|
27
|
+
const newPackage = {
|
|
28
|
+
...packageJson,
|
|
29
|
+
name: projectName,
|
|
30
|
+
version: "1.0.0",
|
|
31
|
+
description: "",
|
|
32
|
+
};
|
|
33
|
+
fs.writeFileSync(path.join(appPath, "package.json"), JSON.stringify(newPackage, null, 2), "utf8");
|
|
34
|
+
}
|
|
35
|
+
function buildPowerhouseConfig(appPath, documentModelsDir, editorsDir) {
|
|
36
|
+
const filePath = path.join(appPath, "powerhouse.config.json");
|
|
37
|
+
const packageJson = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
38
|
+
const newPackage = {
|
|
39
|
+
...packageJson,
|
|
40
|
+
documentModelsDir,
|
|
41
|
+
editorsDir,
|
|
42
|
+
};
|
|
43
|
+
fs.writeFileSync(filePath, JSON.stringify(newPackage, null, 2), "utf8");
|
|
44
|
+
}
|
|
45
|
+
function buildIndex(appPath, documentModelsDir, editorsDir) {
|
|
46
|
+
fs.writeFileSync(path.join(appPath, "index.ts"), `import * as documentModelsExports from '${documentModelsDir}';
|
|
47
|
+
import * as editorsExports from '${editorsDir}';
|
|
48
|
+
|
|
49
|
+
export const documentModels = Object.values(documentModelsExports);
|
|
50
|
+
export const editors = Object.values(editorsExports);`, "utf8");
|
|
51
|
+
}
|
|
52
|
+
function runCmd(command) {
|
|
53
|
+
try {
|
|
54
|
+
execSync(command, { stdio: "inherit" });
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.log("\x1b[31m", error, "\x1b[0m");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function parseVersion(args) {
|
|
61
|
+
if (args.version) {
|
|
62
|
+
return args.version;
|
|
63
|
+
}
|
|
64
|
+
if (args.dev) {
|
|
65
|
+
return "dev";
|
|
66
|
+
}
|
|
67
|
+
else if (args.staging) {
|
|
68
|
+
return "staging";
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return "main";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function parseVersionArgs(args) {
|
|
75
|
+
return parseVersion({
|
|
76
|
+
version: args["--version"],
|
|
77
|
+
dev: args["--dev"],
|
|
78
|
+
staging: args["--staging"],
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
export function initCli() {
|
|
82
|
+
const args = parseArgs(process.argv.slice(2), createCommandSpec);
|
|
83
|
+
const options = {
|
|
84
|
+
name: args["--name"] ?? args._.shift(),
|
|
85
|
+
interactive: args["--interactive"] ?? false,
|
|
86
|
+
version: parseVersionArgs(args),
|
|
87
|
+
};
|
|
88
|
+
return createProject(options);
|
|
89
|
+
}
|
|
90
|
+
export async function createProject(options) {
|
|
91
|
+
// checks if a project name was provided
|
|
92
|
+
let projectName = options.name;
|
|
93
|
+
if (!projectName) {
|
|
94
|
+
const result = await prompt([
|
|
95
|
+
{
|
|
96
|
+
type: "input",
|
|
97
|
+
name: "projectName",
|
|
98
|
+
message: "What is the project name?",
|
|
99
|
+
required: true,
|
|
100
|
+
result: (value) => value.toLowerCase().trim().replace(/\s+/g, "-"),
|
|
101
|
+
},
|
|
102
|
+
]);
|
|
103
|
+
if (!result.projectName) {
|
|
104
|
+
console.log("\x1b[31m", "You have to provide name to your app.");
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
projectName = result.projectName;
|
|
108
|
+
}
|
|
109
|
+
const { documentModelsDir, editorsDir, } = options.interactive
|
|
110
|
+
? await promptDirectories(defaultDirectories)
|
|
111
|
+
: defaultDirectories;
|
|
112
|
+
const appPath = path.join(process.cwd(), projectName);
|
|
113
|
+
try {
|
|
114
|
+
fs.mkdirSync(appPath);
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
if (err.code === "EEXIST") {
|
|
118
|
+
console.log("\x1b[31m", `The folder ${projectName} already exists in the current directory, please give it another name.`, "\x1b[0m");
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
console.log(err);
|
|
122
|
+
}
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
handleCreateProject(projectName, documentModelsDir, editorsDir, options.version, options.packageManager);
|
|
126
|
+
}
|
|
127
|
+
function handleCreateProject(projectName, documentModelsDir, editorsDir, version = "main", packageManager) {
|
|
128
|
+
packageManager = packageManager ?? envPackageManager;
|
|
129
|
+
try {
|
|
130
|
+
console.log("\x1b[33m", "Downloading the project structure...", "\x1b[0m");
|
|
131
|
+
runCmd(`git clone --depth 1 -b ${version} ${BOILERPLATE_REPO} ${projectName}`);
|
|
132
|
+
const appPath = path.join(process.cwd(), projectName);
|
|
133
|
+
process.chdir(appPath);
|
|
134
|
+
console.log("\x1b[34m", `Installing dependencies with ${packageManager}...`, "\x1b[0m");
|
|
135
|
+
runCmd(`${packageManager} install --loglevel error`);
|
|
136
|
+
fs.rmSync(path.join(appPath, "./.git"), { recursive: true });
|
|
137
|
+
runCmd(`git init -b ${version}`);
|
|
138
|
+
try {
|
|
139
|
+
fs.mkdirSync(path.join(appPath, documentModelsDir));
|
|
140
|
+
fs.writeFileSync(path.join(appPath, documentModelsDir, "index.ts"), "");
|
|
141
|
+
fs.mkdirSync(path.join(appPath, editorsDir));
|
|
142
|
+
fs.writeFileSync(path.join(appPath, editorsDir, "index.ts"), "");
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
if (!error.message.includes("EEXIST")) {
|
|
146
|
+
throw error;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
buildPackageJson(appPath, projectName);
|
|
150
|
+
buildPowerhouseConfig(appPath, documentModelsDir, editorsDir);
|
|
151
|
+
buildIndex(appPath, documentModelsDir, editorsDir);
|
|
152
|
+
console.log("\x1b[32m", "The installation is done!", "\x1b[0m");
|
|
153
|
+
console.log();
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
console.log(error);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/create-lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./create-project.js";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import arg from "arg";
|
|
2
|
+
export declare const configSpec: {
|
|
3
|
+
readonly "--document-models": StringConstructor;
|
|
4
|
+
readonly "--editors": StringConstructor;
|
|
5
|
+
readonly "--interactive": BooleanConstructor;
|
|
6
|
+
readonly "--skip-format": BooleanConstructor;
|
|
7
|
+
readonly "--watch": BooleanConstructor;
|
|
8
|
+
readonly "-i": "--interactive";
|
|
9
|
+
readonly "-sf": "--skip-format";
|
|
10
|
+
readonly "-w": "--watch";
|
|
11
|
+
};
|
|
12
|
+
export declare function parseArgs<T extends arg.Spec>(argv: string[], spec: T): arg.Result<T>;
|
|
13
|
+
export declare function parseConfig(argv: string[]): Partial<{
|
|
14
|
+
documentModelsDir?: string;
|
|
15
|
+
editorsDir?: string;
|
|
16
|
+
skipFormat?: boolean;
|
|
17
|
+
interactive?: boolean;
|
|
18
|
+
watch?: boolean;
|
|
19
|
+
}>;
|
|
20
|
+
type DefaultDirectories = {
|
|
21
|
+
documentModelsDir: string;
|
|
22
|
+
editorsDir: string;
|
|
23
|
+
};
|
|
24
|
+
export declare function promptDirectories(defaultDirs: DefaultDirectories): Promise<DefaultDirectories>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/utils/cli.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAKtB,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAC;AAEX,wBAAgB,SAAS,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,iBAOpE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE;wBAElB,MAAM;iBACb,MAAM;iBACN,OAAO;kBACN,OAAO;YACb,OAAO;GAuBlB;AAED,KAAK,kBAAkB,GAAG;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,+BAetE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import arg from "arg";
|
|
2
|
+
import enquirer from "enquirer";
|
|
3
|
+
const { prompt } = enquirer;
|
|
4
|
+
export const configSpec = {
|
|
5
|
+
"--document-models": String,
|
|
6
|
+
"--editors": String,
|
|
7
|
+
"--interactive": Boolean,
|
|
8
|
+
"--skip-format": Boolean,
|
|
9
|
+
"--watch": Boolean,
|
|
10
|
+
"-i": "--interactive",
|
|
11
|
+
"-sf": "--skip-format",
|
|
12
|
+
"-w": "--watch",
|
|
13
|
+
};
|
|
14
|
+
export function parseArgs(argv, spec) {
|
|
15
|
+
const args = arg(spec, {
|
|
16
|
+
permissive: true,
|
|
17
|
+
argv,
|
|
18
|
+
});
|
|
19
|
+
return args;
|
|
20
|
+
}
|
|
21
|
+
export function parseConfig(argv) {
|
|
22
|
+
const config = {};
|
|
23
|
+
const args = parseArgs(argv, configSpec);
|
|
24
|
+
if ("--document-models" in args) {
|
|
25
|
+
config.documentModelsDir = args["--document-models"];
|
|
26
|
+
}
|
|
27
|
+
if ("--editors" in args) {
|
|
28
|
+
config.editorsDir = args["--editors"];
|
|
29
|
+
}
|
|
30
|
+
if ("--skip-format" in args) {
|
|
31
|
+
config.skipFormat = true;
|
|
32
|
+
}
|
|
33
|
+
if ("--interactive" in args) {
|
|
34
|
+
config.interactive = true;
|
|
35
|
+
}
|
|
36
|
+
if ("--watch" in args) {
|
|
37
|
+
config.watch = true;
|
|
38
|
+
}
|
|
39
|
+
return config;
|
|
40
|
+
}
|
|
41
|
+
export async function promptDirectories(defaultDirs) {
|
|
42
|
+
return prompt([
|
|
43
|
+
{
|
|
44
|
+
type: "input",
|
|
45
|
+
name: "documentModelsDir",
|
|
46
|
+
message: "Where to place the Document Models?",
|
|
47
|
+
initial: defaultDirs.documentModelsDir,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: "input",
|
|
51
|
+
name: "editorsDir",
|
|
52
|
+
message: "Where to place the Editors?",
|
|
53
|
+
initial: defaultDirs.editorsDir,
|
|
54
|
+
},
|
|
55
|
+
]);
|
|
56
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/utils/mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,OAAO,eAAe,CAAC;AAExD,eAAO,MAAM,YAAY,EAAE,kBAE1B,CAAC"}
|