@comet/admin-generator 9.0.0-canary-20251002124333 → 9.0.0-canary-20251113142723
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/lib/commands/generate/config/transformConfig.d.ts +6 -0
- package/lib/commands/generate/config/transformConfig.js +36 -8
- package/lib/commands/generate/generate-command.d.ts +49 -15
- package/lib/commands/generate/generate-command.js +5 -0
- package/lib/commands/generate/generateForm/asyncSelect/generateAsyncSelect.js +46 -22
- package/lib/commands/generate/generateForm/flatFormFieldsFromFormConfig.d.ts +2 -0
- package/lib/commands/generate/generateForm/flatFormFieldsFromFormConfig.js +22 -0
- package/lib/commands/generate/generateForm/formField/findIntrospectionFieldType.d.ts +6 -0
- package/lib/commands/generate/generateForm/formField/findIntrospectionFieldType.js +22 -0
- package/lib/commands/generate/generateForm/formField/options.d.ts +1 -5
- package/lib/commands/generate/generateForm/formField/options.js +2 -11
- package/lib/commands/generate/generateForm/generateComponentFormField.js +0 -1
- package/lib/commands/generate/generateForm/generateFields.d.ts +9 -4
- package/lib/commands/generate/generateForm/generateFields.js +0 -3
- package/lib/commands/generate/generateForm/generateForm.js +99 -132
- package/lib/commands/generate/generateForm/generateFormField.js +34 -44
- package/lib/commands/generate/generateForm/generateFormLayout.js +23 -44
- package/lib/commands/generate/generateForm/generateFormValues.d.ts +39 -0
- package/lib/commands/generate/generateForm/generateFormValues.js +217 -0
- package/lib/commands/generate/generateForm/generateFragmentByFormFragmentFields.d.ts +1 -1
- package/lib/commands/generate/generateForm/generateFragmentByFormFragmentFields.js +3 -36
- package/lib/commands/generate/generateForm/getForwardedGqlArgs.d.ts +4 -5
- package/lib/commands/generate/generateForm/getForwardedGqlArgs.js +18 -17
- package/lib/commands/generate/generateGrid/generateGrid.js +49 -35
- package/lib/commands/generate/generateGrid/getForwardedGqlArgs.d.ts +3 -3
- package/lib/commands/generate/generateGrid/getForwardedGqlArgs.js +12 -16
- package/lib/commands/generate/generateGrid/usableFields.d.ts +6 -1
- package/lib/commands/generate/utils/convertConfigImport.d.ts +1 -0
- package/lib/commands/generate/utils/convertConfigImport.js +1 -1
- package/lib/commands/generate/utils/generateGqlOperation.d.ts +12 -0
- package/lib/commands/generate/utils/generateGqlOperation.js +87 -0
- package/lib/commands/generate/utils/generateImportsCode.d.ts +1 -0
- package/lib/commands/generate/utils/generateImportsCode.js +6 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -1
- package/package.json +11 -8
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function generateGqlQueryTreeFromFields(fields: string[]): string;
|
|
2
|
+
export declare function generateGqlOperation(options: {
|
|
3
|
+
type: "query" | "mutation";
|
|
4
|
+
operationName: string;
|
|
5
|
+
rootOperation: string;
|
|
6
|
+
variables?: {
|
|
7
|
+
name: string;
|
|
8
|
+
type: string;
|
|
9
|
+
}[];
|
|
10
|
+
fields: string[];
|
|
11
|
+
fragmentVariables?: string[];
|
|
12
|
+
}): string;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateGqlQueryTreeFromFields = generateGqlQueryTreeFromFields;
|
|
4
|
+
exports.generateGqlOperation = generateGqlOperation;
|
|
5
|
+
function generateGqlQueryTreeFromFields(fields) {
|
|
6
|
+
// Helper to get or create a node at a given path
|
|
7
|
+
function getOrCreateNode(root, path) {
|
|
8
|
+
let node = root;
|
|
9
|
+
for (const part of path) {
|
|
10
|
+
if (!node.children[part]) {
|
|
11
|
+
node.children[part] = { children: {}, fragments: [] };
|
|
12
|
+
}
|
|
13
|
+
node = node.children[part];
|
|
14
|
+
}
|
|
15
|
+
return node;
|
|
16
|
+
}
|
|
17
|
+
// 1. create tree out of dot separated fields
|
|
18
|
+
const root = { children: {}, fragments: [] };
|
|
19
|
+
for (const field of fields) {
|
|
20
|
+
const fragmentMatch = field.match(/(.*)(\.{3}.*)/);
|
|
21
|
+
if (fragmentMatch) {
|
|
22
|
+
// e.g. foo.bar...Fragment
|
|
23
|
+
const key = fragmentMatch[1].trim();
|
|
24
|
+
const fragment = fragmentMatch[2].trim();
|
|
25
|
+
if (key === "") {
|
|
26
|
+
root.fragments.push(fragment);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const path = key.split(".").filter(Boolean);
|
|
30
|
+
const node = getOrCreateNode(root, path);
|
|
31
|
+
node.fragments.push(fragment);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// e.g. foo.bar.baz
|
|
36
|
+
const path = field.split(".").filter(Boolean);
|
|
37
|
+
if (path.length === 0)
|
|
38
|
+
continue;
|
|
39
|
+
// Mark the leaf node (no need to store field names, just ensure the path exists)
|
|
40
|
+
getOrCreateNode(root, path);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// 2. create fragment string out of tree
|
|
44
|
+
function recursiveStringify(node) {
|
|
45
|
+
const parts = [];
|
|
46
|
+
// Add fields (children)
|
|
47
|
+
for (const key of Object.keys(node.children)) {
|
|
48
|
+
const child = node.children[key];
|
|
49
|
+
const childStr = recursiveStringify(child);
|
|
50
|
+
if (childStr) {
|
|
51
|
+
parts.push(`${key} { ${childStr} }`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
parts.push(key);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Add fragments
|
|
58
|
+
if (node.fragments.length > 0) {
|
|
59
|
+
parts.push(...node.fragments);
|
|
60
|
+
}
|
|
61
|
+
return parts.join(" ");
|
|
62
|
+
}
|
|
63
|
+
return recursiveStringify(root);
|
|
64
|
+
}
|
|
65
|
+
function generateGqlOperation(options) {
|
|
66
|
+
var _a;
|
|
67
|
+
let queryArgs = "";
|
|
68
|
+
if (options.variables && options.variables.length > 0) {
|
|
69
|
+
queryArgs += `(`;
|
|
70
|
+
queryArgs += options.variables.map((v) => `$${v.name}: ${v.type}`).join(", ");
|
|
71
|
+
queryArgs += `)`;
|
|
72
|
+
}
|
|
73
|
+
let rootQueryArgs = "";
|
|
74
|
+
if (options.variables && options.variables.length > 0) {
|
|
75
|
+
rootQueryArgs += `(`;
|
|
76
|
+
rootQueryArgs += options.variables.map((v) => `${v.name}: $${v.name}`).join(", ");
|
|
77
|
+
rootQueryArgs += `)`;
|
|
78
|
+
}
|
|
79
|
+
return `
|
|
80
|
+
${options.type} ${options.operationName}${queryArgs} {
|
|
81
|
+
${options.rootOperation}${rootQueryArgs} {
|
|
82
|
+
${generateGqlQueryTreeFromFields(options.fields)}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
${((_a = options.fragmentVariables) !== null && _a !== void 0 ? _a : []).join("\n")}
|
|
86
|
+
`;
|
|
87
|
+
}
|
|
@@ -19,7 +19,12 @@ function generateImportsCode(imports) {
|
|
|
19
19
|
});
|
|
20
20
|
const importsString = filteredImports
|
|
21
21
|
.map((imp) => {
|
|
22
|
-
|
|
22
|
+
if (imp.defaultImport) {
|
|
23
|
+
return `import ${imp.name} from "${imp.importPath}";`;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return `import { ${imp.name} } from "${imp.importPath}";`;
|
|
27
|
+
}
|
|
23
28
|
})
|
|
24
29
|
.join("\n");
|
|
25
30
|
return importsString;
|
package/lib/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { FormConfig, FormFieldConfig, GeneratorConfig, GridColumnConfig, GridColumnStaticSelectValue, GridConfig, StaticSelectValue, } from "./commands/generate/generate-command";
|
|
2
|
-
export { defineConfig } from "./commands/generate/generate-command";
|
|
1
|
+
export type { FormConfig, FormFieldConfig, GeneratorConfig, GridColumnConfig, GridColumnStaticSelectValue, GridConfig, InjectedFormVariables, StaticSelectValue, } from "./commands/generate/generate-command";
|
|
2
|
+
export { defineConfig, injectFormVariables } from "./commands/generate/generate-command";
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defineConfig = void 0;
|
|
3
|
+
exports.injectFormVariables = exports.defineConfig = void 0;
|
|
4
4
|
var generate_command_1 = require("./commands/generate/generate-command");
|
|
5
5
|
Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return generate_command_1.defineConfig; } });
|
|
6
|
+
Object.defineProperty(exports, "injectFormVariables", { enumerable: true, get: function () { return generate_command_1.injectFormVariables; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comet/admin-generator",
|
|
3
|
-
"version": "9.0.0-canary-
|
|
3
|
+
"version": "9.0.0-canary-20251113142723",
|
|
4
4
|
"description": "Comet Admin Generator CLI tool",
|
|
5
5
|
"repository": {
|
|
6
6
|
"directory": "packages/admin/admin-generator",
|
|
@@ -30,27 +30,30 @@
|
|
|
30
30
|
"ts-node": "^10.9.2"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
+
"@apollo/client": "^3.7.0",
|
|
33
34
|
"@mui/material": "^7.2.0",
|
|
34
35
|
"@mui/x-data-grid": "^7.29.8",
|
|
35
36
|
"@types/jest": "^29.5.14",
|
|
36
|
-
"@types/node": "^
|
|
37
|
+
"@types/node": "^24.9.1",
|
|
37
38
|
"@types/object-path": "^0.11.4",
|
|
38
39
|
"@types/pluralize": "^0.0.33",
|
|
39
40
|
"@types/react": "^18.3.23",
|
|
41
|
+
"@types/react-dom": "^18.3.7",
|
|
40
42
|
"eslint": "^9.30.1",
|
|
41
43
|
"final-form": "^4.20.10",
|
|
42
44
|
"jest": "^29.7.0",
|
|
43
45
|
"npm-run-all2": "^8.0.0",
|
|
44
46
|
"prettier": "^3.6.2",
|
|
45
47
|
"react": "^18.3.1",
|
|
48
|
+
"react-dom": "^18.3.1",
|
|
46
49
|
"react-intl": "^7.1.11",
|
|
47
50
|
"rimraf": "^6.0.1",
|
|
48
51
|
"ts-jest": "^29.4.0",
|
|
49
52
|
"typescript": "5.8.3",
|
|
50
|
-
"@comet/admin": "9.0.0-canary-
|
|
51
|
-
"@comet/admin-icons": "9.0.0-canary-
|
|
52
|
-
"@comet/cms-admin": "9.0.0-canary-
|
|
53
|
-
"@comet/eslint-config": "9.0.0-canary-
|
|
53
|
+
"@comet/admin": "9.0.0-canary-20251113142723",
|
|
54
|
+
"@comet/admin-icons": "9.0.0-canary-20251113142723",
|
|
55
|
+
"@comet/cms-admin": "9.0.0-canary-20251113142723",
|
|
56
|
+
"@comet/eslint-config": "9.0.0-canary-20251113142723"
|
|
54
57
|
},
|
|
55
58
|
"engines": {
|
|
56
59
|
"node": ">=22.0.0"
|
|
@@ -60,12 +63,12 @@
|
|
|
60
63
|
"registry": "https://registry.npmjs.org"
|
|
61
64
|
},
|
|
62
65
|
"scripts": {
|
|
63
|
-
"build": "
|
|
66
|
+
"build": "pnpm run clean && tsc -p tsconfig.build.json",
|
|
64
67
|
"clean": "rimraf lib",
|
|
65
68
|
"dev": "tsc --watch --preserveWatchOutput -p tsconfig.build.json",
|
|
66
69
|
"lint": "run-p lint:prettier lint:eslint lint:tsc",
|
|
67
70
|
"lint:eslint": "eslint --max-warnings 0 src/ **/*.json --no-warn-ignored",
|
|
68
|
-
"lint:prettier": "
|
|
71
|
+
"lint:prettier": "pnpm exec prettier --check './**/*.{js,json,md,yml,yaml}'",
|
|
69
72
|
"lint:tsc": "tsc",
|
|
70
73
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest --passWithNoTests",
|
|
71
74
|
"test:updateSnapshot": "NODE_OPTIONS=--experimental-vm-modules jest --updateSnapshot",
|