@husar.ai/cli 0.2.3 → 0.2.5

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 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/cli.js ADDED
@@ -0,0 +1,82 @@
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 { generateZeus } from '@husar.ai/ssr';
6
+ import { ConfigMaker } from 'config-maker';
7
+ import { parser } from './functions/parser.js';
8
+ const config = new ConfigMaker('husar', { decoders: {} });
9
+ const program = new Command();
10
+ program.name('husar').description('HUSAR CLI for complete generation').version('0.0.5');
11
+ program
12
+ .command('generate [folderPath]')
13
+ .description('Generate cms structure in the given path')
14
+ .action(async (folderPath = '.') => {
15
+ const host = await config.getValueOrThrow('host', { saveOnInput: true });
16
+ const conf = config.get();
17
+ const hostEnv = conf.hostEnvironmentVariable;
18
+ const authenticationEnv = conf.authenticationEnvironmentVariable;
19
+ const cmsPath = path.join(folderPath, 'cms');
20
+ try {
21
+ await fs.access(cmsPath, constants.F_OK);
22
+ await fs.rm(cmsPath, { recursive: true, force: true });
23
+ console.log('Folder deleted.');
24
+ }
25
+ catch (err) {
26
+ }
27
+ const zeusPath = path.join(cmsPath, 'zeus');
28
+ await fs.mkdir(zeusPath, { recursive: true });
29
+ const zeusCode = await generateZeus(new URL('content/graphql', host).toString(), {
30
+ esModule: false,
31
+ env: 'browser',
32
+ });
33
+ await fs.writeFile(path.join(zeusPath, 'index.ts'), zeusCode.index);
34
+ await fs.writeFile(path.join(zeusPath, 'const.ts'), zeusCode.const);
35
+ let hostFile = `import * as zeus from './zeus';\n`;
36
+ if (hostEnv) {
37
+ hostFile += `export const HUSAR_HOST = process.env.${hostEnv};\n`;
38
+ }
39
+ else {
40
+ hostFile += `export const HUSAR_HOST =
41
+ process.env.HUSAR_HOST ||
42
+ process.env.NEXT_PUBLIC_HUSAR_HOST ||
43
+ process.env.VITE_HUSAR_HOST || '${host}';\n`;
44
+ }
45
+ hostFile += `
46
+ export const getCmsHost = () => {
47
+ const husar_token = process.env.${authenticationEnv || 'HUSAR_API_KEY'};
48
+ const host = HUSAR_HOST ? new URL('content/graphql', HUSAR_HOST).toString() : zeus.HOST;
49
+ return [host, { ...(husar_token ? { headers: { husar_token } } : {}) }] as const;
50
+ };
51
+ `;
52
+ await fs.writeFile(path.join(cmsPath, 'host.ts'), hostFile);
53
+ await fs.writeFile(path.join(cmsPath, 'ssr.ts'), `import * as zeus from './zeus';
54
+ import { husarClient } from '@husar.ai/ssr';
55
+ import { getCmsHost } from './host';
56
+
57
+ export const husar = husarClient<typeof zeus, zeus.ModelTypes>(zeus, ...getCmsHost());
58
+ `);
59
+ await fs.writeFile(path.join(cmsPath, 'react.ts'), `import * as zeus from './zeus';
60
+ import { HusarComponents } from '@husar.ai/render';
61
+ import { getCmsHost } from './host';
62
+
63
+ const { Shape, View, Model, Form } = HusarComponents<typeof zeus, zeus.ModelTypes>(getCmsHost());
64
+ export { Shape, View, Model, Form };
65
+ `);
66
+ });
67
+ program
68
+ .command('copy <file> <name>')
69
+ .description('AI-parse HTML/JSX and upsert into CMS (model/shape) using gpt-5')
70
+ .option('-t, --type <type>', 'target type: model|shape', 'shape')
71
+ .action((inputFile, name, opts) => {
72
+ const conf = config.get();
73
+ if (!conf.host) {
74
+ throw new Error('Host is not configured. Please run "husar generate" first.');
75
+ }
76
+ if (!conf.adminToken) {
77
+ throw new Error('Admin token is not configured. Please set it in the config or use environment variable.');
78
+ }
79
+ return parser(inputFile, { name, type: opts?.type }, { HUSAR_MCP_HOST: conf.host, HUSAR_MCP_ADMIN_TOKEN: conf.adminToken });
80
+ });
81
+ program.parse(process.argv);
82
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const parser: (inputFile: string, opts: {
2
+ name: string;
3
+ type: "model" | "shape";
4
+ }, authentication: {
5
+ HUSAR_MCP_HOST: string;
6
+ HUSAR_MCP_ADMIN_TOKEN: string;
7
+ }) => Promise<any>;
@@ -0,0 +1,30 @@
1
+ import * as path from 'node:path';
2
+ import * as fs from 'node:fs/promises';
3
+ import { DOWNLOADABLE } from '@husar.ai/shared-frontend-backend';
4
+ export const parser = async (inputFile, opts, authentication) => {
5
+ const { HUSAR_MCP_ADMIN_TOKEN, HUSAR_MCP_HOST } = authentication;
6
+ const filename = path.basename(inputFile);
7
+ const body = await fs.readFile(path.resolve(process.cwd(), inputFile), 'utf8');
8
+ const prefix = [DOWNLOADABLE, 'parse'].join('/');
9
+ const key = `${opts.name}-${filename}-${new Date().getTime()}.txt`;
10
+ const put = await fetch(new URL('api/graphql', HUSAR_MCP_HOST).toString(), {
11
+ method: 'POST',
12
+ headers: { 'Content-Type': 'application/json', husar_token: HUSAR_MCP_ADMIN_TOKEN },
13
+ body: JSON.stringify({
14
+ query: `mutation GetUploadURL($input: UploadFileInput!) { admin { uploadFile(file: $input) { putURL } } }`,
15
+ variables: { input: { prefix, key } },
16
+ }),
17
+ });
18
+ const putURL = (await put.json())?.data?.admin?.uploadFile?.putURL;
19
+ await fetch(putURL, { method: 'PUT', headers: { 'Content-Type': 'text/plain' }, body });
20
+ const result = await fetch(new URL('api/graphql', HUSAR_MCP_HOST).toString(), {
21
+ method: 'POST',
22
+ headers: { 'Content-Type': 'application/json', husar_token: HUSAR_MCP_ADMIN_TOKEN },
23
+ body: JSON.stringify({
24
+ query: `mutation ParseFile($input: ParseFileInput!) { admin { parseFile(input: $input) { name type status } } }`,
25
+ variables: { input: { key: [prefix, key].join('/'), name: opts.name, type: opts.type.toUpperCase() } },
26
+ }),
27
+ });
28
+ return (await result.json())?.data?.admin?.parseFile;
29
+ };
30
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/functions/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EACzB,SAAiB,EACjB,IAA+C,EAC/C,cAAyE,EACzE,EAAE;IACF,MAAM,EAAE,qBAAqB,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IACnE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;QACzE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,qBAAqB,EAAE;QACnF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,mGAAmG;YAC1G,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;SACtC,CAAC;KACH,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;IACnE,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC5E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,qBAAqB,EAAE;QACnF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,yGAAyG;YAChH,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;SACvG,CAAC;KACH,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;AACvD,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1 @@
1
- #!/usr/bin/env node
2
- export {};
1
+ export * from './functions/parser.js';
package/dist/index.js CHANGED
@@ -1,69 +1,2 @@
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 { generateZeus } from '@husar.ai/ssr';
6
- import { ConfigMaker } from 'config-maker';
7
- const config = new ConfigMaker('husar', {
8
- decoders: {},
9
- });
10
- const program = new Command();
11
- program.name('husar').description('HUSAR CLI for complete generation').version('0.0.5');
12
- program
13
- .command('generate [folderPath]')
14
- .description('Generate cms structure in the given path')
15
- .action(async (folderPath = '.') => {
16
- const host = await config.getValueOrThrow('host', { saveOnInput: true });
17
- const conf = await config.get();
18
- const hostEnv = conf.hostEnvironmentVariable;
19
- const authenticationEnv = conf.authenticationEnvironmentVariable;
20
- const cmsPath = path.join(folderPath, 'cms');
21
- try {
22
- await fs.access(cmsPath, constants.F_OK);
23
- await fs.rm(cmsPath, { recursive: true, force: true });
24
- console.log('Folder deleted.');
25
- }
26
- catch (err) {
27
- }
28
- const zeusPath = path.join(cmsPath, 'zeus');
29
- await fs.mkdir(zeusPath, { recursive: true });
30
- const zeusCode = await generateZeus(new URL('content/graphql', host).toString(), {
31
- esModule: false,
32
- env: 'browser',
33
- });
34
- await fs.writeFile(path.join(zeusPath, 'index.ts'), zeusCode.index);
35
- await fs.writeFile(path.join(zeusPath, 'const.ts'), zeusCode.const);
36
- let hostFile = `import * as zeus from './zeus';\n`;
37
- if (hostEnv) {
38
- hostFile += `export const HUSAR_HOST = process.env.${hostEnv};\n`;
39
- }
40
- else {
41
- hostFile += `export const HUSAR_HOST =
42
- process.env.HUSAR_HOST ||
43
- process.env.NEXT_PUBLIC_HUSAR_HOST ||
44
- process.env.VITE_HUSAR_HOST || '${host}';\n`;
45
- }
46
- hostFile += `
47
- export const getCmsHost = () => {
48
- const husar_token = process.env.${authenticationEnv || 'HUSAR_API_KEY'};
49
- const host = HUSAR_HOST ? new URL('content/graphql', HUSAR_HOST).toString() : zeus.HOST;
50
- return [host, { ...(husar_token ? { headers: { husar_token } } : {}) }] as const;
51
- };
52
- `;
53
- await fs.writeFile(path.join(cmsPath, 'host.ts'), hostFile);
54
- await fs.writeFile(path.join(cmsPath, 'ssr.ts'), `import * as zeus from './zeus';
55
- import { husarClient } from '@husar.ai/ssr';
56
- import { getCmsHost } from './host';
57
-
58
- export const husar = husarClient<typeof zeus, zeus.ModelTypes>(zeus, ...getCmsHost());
59
- `);
60
- await fs.writeFile(path.join(cmsPath, 'react.ts'), `import * as zeus from './zeus';
61
- import { HusarComponents } from '@husar.ai/render';
62
- import { getCmsHost } from './host';
63
-
64
- const { Shape, View, Model, Form } = HusarComponents<typeof zeus, zeus.ModelTypes>(getCmsHost());
65
- export { Shape, View, Model, Form };
66
- `);
67
- });
68
- program.parse(process.argv);
1
+ export * from './functions/parser.js';
69
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}