@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.
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
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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"}
@@ -0,0 +1,5 @@
1
+ export declare const AllTypesProps: Record<string, any>;
2
+ export declare const ReturnTypes: Record<string, any>;
3
+ export declare const Ops: {
4
+ query: "Query";
5
+ };