@husar.ai/cli 0.1.2
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/index.d.ts +2 -0
- package/dist/index.js +121 -0
- package/dist/index.js.map +1 -0
- package/dist/zeus/const.d.ts +5 -0
- package/dist/zeus/const.js +1458 -0
- package/dist/zeus/const.js.map +1 -0
- package/dist/zeus/index.d.ts +6169 -0
- package/dist/zeus/index.js +574 -0
- package/dist/zeus/index.js.map +1 -0
- package/package.json +20 -0
- package/src/index.ts +144 -0
- package/src/zeus/const.ts +1515 -0
- package/src/zeus/index.ts +6286 -0
- package/tsconfig.json +46 -0
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import fs, { constants } from 'node:fs/promises';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { generateReactCode, generateZeus } from '@husar.ai/ssr';
|
|
6
|
+
import { Chain } from "./zeus/index.js";
|
|
7
|
+
import { ConfigMaker } from 'config-maker';
|
|
8
|
+
const config = new ConfigMaker('husar', {
|
|
9
|
+
decoders: {},
|
|
10
|
+
});
|
|
11
|
+
const program = new Command();
|
|
12
|
+
program.name('husar').description('HUSAR CLI for complete generation').version('0.0.5');
|
|
13
|
+
program
|
|
14
|
+
.command('generate [folderPath]')
|
|
15
|
+
.description('Generate cms structure in the given path')
|
|
16
|
+
.action(async (folderPath = '.') => {
|
|
17
|
+
const host = await config.getValueOrThrow('host', { saveOnInput: true });
|
|
18
|
+
const cmsPath = path.join(folderPath, 'cms');
|
|
19
|
+
try {
|
|
20
|
+
await fs.access(cmsPath, constants.F_OK);
|
|
21
|
+
await fs.rm(cmsPath, { recursive: true, force: true });
|
|
22
|
+
console.log('Folder deleted.');
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
}
|
|
26
|
+
const zeusPath = path.join(cmsPath, 'zeus');
|
|
27
|
+
const shapesPath = path.join(cmsPath, 'shapes');
|
|
28
|
+
const viewsPath = path.join(cmsPath, 'views');
|
|
29
|
+
const modelsPath = path.join(cmsPath, 'models');
|
|
30
|
+
await fs.mkdir(shapesPath, { recursive: true });
|
|
31
|
+
await fs.mkdir(viewsPath, { recursive: true });
|
|
32
|
+
await fs.mkdir(modelsPath, { recursive: true });
|
|
33
|
+
await fs.mkdir(zeusPath, { recursive: true });
|
|
34
|
+
const zeusCode = await generateZeus(host, { esModule: false, env: 'browser' });
|
|
35
|
+
await fs.writeFile(path.join(zeusPath, 'index.ts'), zeusCode.index);
|
|
36
|
+
await fs.writeFile(path.join(zeusPath, 'const.ts'), zeusCode.const);
|
|
37
|
+
await fs.writeFile(path.join(cmsPath, 'client.ts'), `import * as zeus from './zeus';
|
|
38
|
+
import { husarClient } from '@husar.ai/ssr';
|
|
39
|
+
|
|
40
|
+
export const getCmsHost = () => {
|
|
41
|
+
const envHOST = process.env.HUSAR_HOST || process.env.NEXT_PUBLIC_HUSAR_HOST || process.env.VITE_HUSAR_HOST;
|
|
42
|
+
if (envHOST)
|
|
43
|
+
return [
|
|
44
|
+
new URL('content/graphql', envHOST).toString(),
|
|
45
|
+
{
|
|
46
|
+
...(process.env.HUSAR_API_KEY
|
|
47
|
+
? {
|
|
48
|
+
headers: {
|
|
49
|
+
husar_token: process.env.HUSAR_API_KEY,
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
: {}),
|
|
53
|
+
},
|
|
54
|
+
] as const;
|
|
55
|
+
return [zeus.HOST, {}] as const;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const husar = husarClient<typeof zeus, zeus.ModelTypes>(zeus, ...getCmsHost());
|
|
59
|
+
`);
|
|
60
|
+
const query = Chain(host)('query');
|
|
61
|
+
const r = await query({
|
|
62
|
+
listShapes: { name: true, slug: true },
|
|
63
|
+
listViews: { name: true, slug: true },
|
|
64
|
+
navigation: { name: true },
|
|
65
|
+
rootParams: {
|
|
66
|
+
name: true,
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
const rootParamsNames = r.rootParams?.map((rp) => rp.name) || [];
|
|
70
|
+
const shapes = await Promise.all(r.listShapes?.map(async (s) => {
|
|
71
|
+
const response = await fetch(host, {
|
|
72
|
+
headers: { 'Content-type': 'application/json' },
|
|
73
|
+
method: 'POST',
|
|
74
|
+
body: JSON.stringify({
|
|
75
|
+
query: `query { modelShape${s.name} }`,
|
|
76
|
+
}),
|
|
77
|
+
}).then((r) => r.json());
|
|
78
|
+
return {
|
|
79
|
+
...s,
|
|
80
|
+
fields: response.data[`modelShape${s.name}`].fields,
|
|
81
|
+
};
|
|
82
|
+
}) || []);
|
|
83
|
+
for (const shape of shapes) {
|
|
84
|
+
await fs.writeFile(path.join(shapesPath, `${shape.name}.tsx`), (await generateReactCode(`Shape${shape.name}`)({ fields: shape.fields, rootParams: rootParamsNames }))
|
|
85
|
+
.code);
|
|
86
|
+
}
|
|
87
|
+
const views = await Promise.all(r.listViews?.map(async (s) => {
|
|
88
|
+
const response = await fetch(host, {
|
|
89
|
+
headers: { 'Content-type': 'application/json' },
|
|
90
|
+
method: 'POST',
|
|
91
|
+
body: JSON.stringify({
|
|
92
|
+
query: `query { modelView${s.name} }`,
|
|
93
|
+
}),
|
|
94
|
+
}).then((r) => r.json());
|
|
95
|
+
return {
|
|
96
|
+
...s,
|
|
97
|
+
fields: response.data[`modelView${s.name}`].fields,
|
|
98
|
+
};
|
|
99
|
+
}) || []);
|
|
100
|
+
for (const view of views) {
|
|
101
|
+
await fs.writeFile(path.join(viewsPath, `${view.name}.tsx`), (await generateReactCode(`View${view.name}`)({ fields: view.fields, rootParams: rootParamsNames })).code);
|
|
102
|
+
}
|
|
103
|
+
const models = await Promise.all(r.navigation?.map(async (s) => {
|
|
104
|
+
const response = await fetch(host, {
|
|
105
|
+
headers: { 'Content-type': 'application/json' },
|
|
106
|
+
method: 'POST',
|
|
107
|
+
body: JSON.stringify({
|
|
108
|
+
query: `query { model${s.name} }`,
|
|
109
|
+
}),
|
|
110
|
+
}).then((r) => r.json());
|
|
111
|
+
return {
|
|
112
|
+
...s,
|
|
113
|
+
fields: response.data[`model${s.name}`].fields,
|
|
114
|
+
};
|
|
115
|
+
}) || []);
|
|
116
|
+
for (const model of models) {
|
|
117
|
+
await fs.writeFile(path.join(modelsPath, `${model.name}.tsx`), (await generateReactCode(`${model.name}`)({ fields: model.fields, rootParams: rootParamsNames })).code);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
program.parse(process.argv);
|
|
121
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|