@keshavsoft/kschema-cli 1.3.7 → 1.4.1

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.
Files changed (62) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/bin/cli copy.js +40 -0
  3. package/bin/cli.js +8 -19
  4. package/bin/core/getLatestVersion.js +13 -0
  5. package/bin/core/loadRunner.js +9 -0
  6. package/bin/v2/start.js +2 -2
  7. package/bin/v3/start.js +2 -2
  8. package/bin/v4/commands/init.js +23 -0
  9. package/bin/v4/commands/steps/announce.js +3 -0
  10. package/bin/v4/commands/steps/createProject.js +6 -0
  11. package/bin/v4/commands/steps/decideTemplate.js +3 -0
  12. package/bin/v4/commands/steps/locateDestination.js +5 -0
  13. package/bin/v4/commands/steps/locateSource.js +14 -0
  14. package/bin/v4/commands/template/basic/.vscode/launch.json +12 -0
  15. package/bin/v4/commands/template/basic/Config/Schemas/BillsTable.json +165 -0
  16. package/bin/v4/commands/template/basic/Config/Schemas/ItemsTable.json +200 -0
  17. package/bin/v4/commands/template/basic/Config/Schemas/LedgerNames.json +50 -0
  18. package/bin/v4/commands/template/basic/Config/Schemas/StockItems.json +45 -0
  19. package/bin/v4/commands/template/basic/Config/api.json +8 -0
  20. package/bin/v4/commands/template/basic/Config/schema.json +8 -0
  21. package/bin/v4/commands/template/basic/Config/ui.json +8 -0
  22. package/bin/v4/commands/template/basic/Data/BillsTable.json +165 -0
  23. package/bin/v4/commands/template/basic/Data/ItemsTable.json +200 -0
  24. package/bin/v4/commands/template/basic/Data/LedgerNames.json +6 -0
  25. package/bin/v4/commands/template/basic/Data/StockItems.json +45 -0
  26. package/bin/v4/commands/template/basic/app.js +4 -0
  27. package/bin/v4/commands/template/basic/config.json +4 -0
  28. package/bin/v4/commands/template/basic/package-lock.json +21 -0
  29. package/bin/v4/commands/template/basic/package.json +13 -0
  30. package/bin/v4/commands/template/basic/read.js +8 -0
  31. package/bin/v4/commands/template/basic/write.js +8 -0
  32. package/bin/v4/commands/template/express/.env +8 -0
  33. package/bin/v4/commands/template/express/.env.local +7 -0
  34. package/bin/v4/commands/template/express/.vscode/launch.json +12 -0
  35. package/bin/v4/commands/template/express/Config/Schemas/BillsTable.json +166 -0
  36. package/bin/v4/commands/template/express/Config/Schemas/ItemsTable.json +206 -0
  37. package/bin/v4/commands/template/express/Config/Schemas/LedgerNames.json +50 -0
  38. package/bin/v4/commands/template/express/Config/Schemas/StockItems.json +45 -0
  39. package/bin/v4/commands/template/express/Config/api.json +8 -0
  40. package/bin/v4/commands/template/express/Config/schema.json +8 -0
  41. package/bin/v4/commands/template/express/Config/ui.json +8 -0
  42. package/bin/v4/commands/template/express/ForFrontEnd/NonSecured/Builder/build.js +6 -0
  43. package/bin/v4/commands/template/express/ForFrontEnd/NonSecured/Builder/config.js +12 -0
  44. package/bin/v4/commands/template/express/ForFrontEnd/NonSecured/Builder/main.js +29 -0
  45. package/bin/v4/commands/template/express/ForFrontEnd/NonSecured/Builder/publish.js +22 -0
  46. package/bin/v4/commands/template/express/ForFrontEnd/NonSecured/Builder/repo.js +20 -0
  47. package/bin/v4/commands/template/express/ForFrontEnd/NonSecured/Builder/schema.js +16 -0
  48. package/bin/v4/commands/template/express/ForFrontEnd/NonSecured/Builder/utils.js +26 -0
  49. package/bin/v4/commands/template/express/ForFrontEnd/NonSecured/Builder/version.js +25 -0
  50. package/bin/v4/commands/template/express/ForFrontEnd/NonSecured/buildAndCopy.js +166 -0
  51. package/bin/v4/commands/template/express/ForFrontEnd/NonSecured/latestVersion.js +38 -0
  52. package/bin/v4/commands/template/express/ForFrontEnd/Secured/buildProtected.js +108 -0
  53. package/bin/v4/commands/template/express/ForFrontEnd/Secured/latestVersion.js +38 -0
  54. package/bin/v4/commands/template/express/app.js +33 -0
  55. package/bin/v4/commands/template/express/config.json +4 -0
  56. package/bin/v4/commands/template/express/package.json +18 -0
  57. package/bin/v4/commands/test.js +36 -0
  58. package/bin/v4/core/parseInput.js +10 -0
  59. package/bin/v4/core/resolveCommand.js +11 -0
  60. package/bin/v4/core/resolveFolderName.js +17 -0
  61. package/bin/v4/start.js +23 -0
  62. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -22,4 +22,9 @@ The format is based on Keep a Changelog.
22
22
 
23
23
  ### Notes
24
24
  - Designed as a wrapper over kschema ecosystem
25
- - Focused on simplicity and fast project setup
25
+ - Focused on simplicity and fast project setup
26
+
27
+ ## [1.4.1] - 2026-04-23
28
+
29
+ ### Added
30
+ - made auto code, no cliversion in package, major change
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+
3
+ import fs from "fs";
4
+ import { fileURLToPath } from "url";
5
+
6
+ const __dirname = fileURLToPath(new URL('.', import.meta.url));
7
+
8
+ const run = async () => {
9
+ try {
10
+ // pick folders like v2, v3, v4
11
+ const versions = fs.readdirSync(__dirname)
12
+ .filter(name => /^v\d+$/.test(name))
13
+ .sort((a, b) => {
14
+ const na = parseInt(a.replace('v', ''), 10);
15
+ const nb = parseInt(b.replace('v', ''), 10);
16
+ return na - nb;
17
+ });
18
+
19
+ const latest = versions.at(-1);
20
+
21
+ if (!latest) {
22
+ console.log("No CLI versions found");
23
+ return;
24
+ }
25
+
26
+ const mod = await import(`./${latest}/start.js`);
27
+
28
+ if (typeof mod.default !== "function") {
29
+ console.log(`Invalid start.js in ${latest}`);
30
+ return;
31
+ };
32
+
33
+ await mod.default();
34
+ } catch (e) {
35
+ console.log("CLI failed:", e?.message || e);
36
+ process.exit(1);
37
+ };
38
+ };
39
+
40
+ run();
package/bin/cli.js CHANGED
@@ -1,23 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { createRequire } from "module";
4
- const require = createRequire(import.meta.url);
3
+ import getLatestVersion from "./core/getLatestVersion.js";
4
+ import loadRunner from "./core/loadRunner.js";
5
5
 
6
- const packageJson = require("../package.json");
6
+ const run = async () => {
7
+ const version = getLatestVersion();
8
+ const runner = await loadRunner(version);
9
+ await runner();
10
+ };
7
11
 
8
- import { v2Func } from "./v2/start.js";
9
- import { v3Func } from "./v3/start.js";
10
-
11
- switch (packageJson?.cliVersion) {
12
- case "2":
13
- v2Func();
14
- break;
15
-
16
- case "3":
17
- v3Func();
18
- break;
19
-
20
- default:
21
- console.log(`Unsupported CLI version: ${packageJson?.cliVersion}`);
22
- console.log("Usage: kschema <init|test> [name]");
23
- };
12
+ run();
@@ -0,0 +1,13 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { fileURLToPath } from "url";
4
+
5
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
6
+
7
+ export default function getLatestVersion() {
8
+ const versions = fs.readdirSync(path.join(__dirname, ".."))
9
+ .filter(n => /^v\d+$/.test(n))
10
+ .sort((a, b) => parseInt(a.slice(1)) - parseInt(b.slice(1)));
11
+
12
+ return versions.at(-1);
13
+ };
@@ -0,0 +1,9 @@
1
+ export default async function loadRunner(version) {
2
+ const mod = await import(`../${version}/start.js`);
3
+
4
+ if (typeof mod.default !== "function") {
5
+ throw new Error(`Invalid start.js in ${version}`);
6
+ }
7
+
8
+ return mod.default;
9
+ };
package/bin/v2/start.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import init from "./commands/init.js";
2
2
  import test from "./commands/test.js";
3
3
 
4
- const v2Func = () => {
4
+ const run = () => {
5
5
  const cmd = process.argv[2];
6
6
  const arg = process.argv[3];
7
7
 
@@ -20,4 +20,4 @@ const v2Func = () => {
20
20
 
21
21
  };
22
22
 
23
- export { v2Func };
23
+ export default run;
package/bin/v3/start.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import init from "./commands/init.js";
2
2
  import test from "./commands/test.js";
3
3
 
4
- const v3Func = () => {
4
+ const run = () => {
5
5
  const cmd = process.argv[2];
6
6
  const template = process.argv[3];
7
7
  const folderName = process.argv[4];
@@ -24,4 +24,4 @@ const v3Func = () => {
24
24
 
25
25
  };
26
26
 
27
- export { v3Func };
27
+ export default run;
@@ -0,0 +1,23 @@
1
+ import { decideTemplate } from "./steps/decideTemplate.js";
2
+
3
+ import { locateSource } from "./steps/locateSource.js";
4
+ import { locateDestination } from "./steps/locateDestination.js";
5
+ import { createProject } from "./steps/createProject.js";
6
+ import { announce } from "./steps/announce.js";
7
+
8
+ import resolveFolderName from "../core/resolveFolderName.js";
9
+
10
+ export default ({ template, folderName }) => {
11
+ const finalTemplate = decideTemplate({ inTemplate: template });
12
+
13
+ const resolvedFolderName = resolveFolderName({
14
+ name: folderName
15
+ });
16
+
17
+ const source = locateSource({ template: finalTemplate });
18
+ const destination = locateDestination({ inResolvedFolderName: resolvedFolderName });
19
+
20
+ createProject({ source, destination });
21
+
22
+ announce({ inResolvedFolderName: resolvedFolderName });
23
+ };
@@ -0,0 +1,3 @@
1
+ export const announce = ({ inResolvedFolderName }) => {
2
+ console.log(`[keshavsoft] Project created: ${inResolvedFolderName}`);
3
+ };
@@ -0,0 +1,6 @@
1
+ import fs from "fs";
2
+
3
+ export const createProject = ({ source, destination }) => {
4
+ fs.mkdirSync(destination, { recursive: true });
5
+ fs.cpSync(source, destination, { recursive: true });
6
+ };
@@ -0,0 +1,3 @@
1
+ export const decideTemplate = ({ inTemplate }) => {
2
+ return inTemplate || "basic";
3
+ };
@@ -0,0 +1,5 @@
1
+ import path from "path";
2
+
3
+ export const locateDestination = ({ inResolvedFolderName }) => {
4
+ return path.join(process.cwd(), inResolvedFolderName);
5
+ };
@@ -0,0 +1,14 @@
1
+ import path from "path";
2
+ import { fileURLToPath } from "url";
3
+
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = path.dirname(__filename);
6
+
7
+ export const locateSource = ({ template }) => {
8
+ return path.join(
9
+ __dirname,
10
+ "..",
11
+ "template",
12
+ template === "express" ? "express" : "basic"
13
+ );
14
+ };
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": "0.2.0",
3
+ "configurations": [
4
+ {
5
+ "type": "node",
6
+ "request": "launch",
7
+ "name": "Debug App",
8
+ "program": "${workspaceFolder}/app.js",
9
+ "envFile": "${workspaceFolder}/.env"
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,165 @@
1
+ {
2
+ "tableName": "BillsTable",
3
+ "columns": [
4
+ {
5
+ "field": "LedgerName",
6
+ "title": "LedgerName",
7
+ "type": "text",
8
+ "isInput": false,
9
+ "isAutoFocus": true,
10
+ "WidthOptions": {
11
+ "inPx": 200
12
+ },
13
+ "defaultvalue": "Keshav",
14
+ "isDataList": true,
15
+ "dataListId": "LedgerNames",
16
+ "isConsider": true
17
+ },
18
+ {
19
+ "field": "LedgerParentName",
20
+ "title": "LedgerParentName",
21
+ "type": "text",
22
+ "isInput": true,
23
+ "WidthOptions": {
24
+ "inPx": 200
25
+ },
26
+ "isConsider": true,
27
+ "showInUi": false
28
+ },
29
+ {
30
+ "field": "LedgerGST",
31
+ "title": "LedgerGST",
32
+ "type": "text",
33
+ "isInput": true,
34
+ "isAutoFocus": true,
35
+ "WidthOptions": {
36
+ "inPx": 200
37
+ },
38
+ "isConsider": true,
39
+ "showInUi": false
40
+ },
41
+ {
42
+ "field": "InvoiceNo",
43
+ "title": "InvoiceNo",
44
+ "type": "number",
45
+ "isInput": true,
46
+ "WidthOptions": {
47
+ "inPx": 200
48
+ },
49
+ "isConsider": true
50
+ },
51
+ {
52
+ "field": "InvoiceDate",
53
+ "title": "InvoiceDate",
54
+ "isDate": true,
55
+ "type": "date",
56
+ "WidthOptions": {
57
+ "inPx": 200
58
+ },
59
+ "defaultvalue": "today",
60
+ "isConsider": true
61
+ },
62
+ {
63
+ "field": "InvoiceStateCode",
64
+ "title": "InvoiceStateCode",
65
+ "defaultvalue": "37",
66
+ "isInput": true,
67
+ "WidthOptions": {
68
+ "inPx": 200
69
+ },
70
+ "isConsider": true,
71
+ "showInUi": false
72
+ },
73
+ {
74
+ "field": "pk",
75
+ "title": "pk",
76
+ "primary": true
77
+ }
78
+ ],
79
+ "data": [],
80
+ "Vertical": [
81
+ {
82
+ "field": "LedgerName",
83
+ "title": "LedgerName",
84
+ "type": "text",
85
+ "isInput": false,
86
+ "isAutoFocus": true,
87
+ "WidthOptions": {
88
+ "inPx": 200
89
+ },
90
+ "defaultvalue": "Keshav",
91
+ "isDataList": true,
92
+ "dataListId": "LedgerNames"
93
+ },
94
+ {
95
+ "field": "LedgerParentName",
96
+ "title": "LedgerParentName",
97
+ "type": "text",
98
+ "isInput": true,
99
+ "WidthOptions": {
100
+ "inPx": 200
101
+ }
102
+ },
103
+ {
104
+ "field": "LedgerGST",
105
+ "title": "LedgerGST",
106
+ "type": "text",
107
+ "isInput": true,
108
+ "isAutoFocus": true,
109
+ "WidthOptions": {
110
+ "inPx": 200
111
+ }
112
+ },
113
+ {
114
+ "field": "InvoiceNo",
115
+ "title": "InvoiceNo",
116
+ "type": "number",
117
+ "isInput": true,
118
+ "WidthOptions": {
119
+ "inPx": 200
120
+ }
121
+ },
122
+ {
123
+ "field": "InvoiceDate",
124
+ "title": "InvoiceDate",
125
+ "isDate": true,
126
+ "type": "date",
127
+ "WidthOptions": {
128
+ "inPx": 200
129
+ },
130
+ "defaultvalue": "today"
131
+ },
132
+ {
133
+ "field": "InvoiceStateCode",
134
+ "title": "InvoiceStateCode",
135
+ "defaultvalue": "37",
136
+ "isInput": true,
137
+ "WidthOptions": {
138
+ "inPx": 200
139
+ }
140
+ }
141
+ ],
142
+ "DataTableOptions": {
143
+ "Header": {
144
+ "autoFocus": "LedgerName"
145
+ }
146
+ },
147
+ "ForeignkeyTables": [
148
+ "ItemsTable"
149
+ ],
150
+ "DependantTables": [
151
+ "LedgerNames"
152
+ ],
153
+ "NonSecured": {
154
+ "SubRoutes": [
155
+ "ShowAll",
156
+ "Insert",
157
+ "Find",
158
+ "InsertAndReturnPk",
159
+ "FindWithForeignData",
160
+ "InsertToTally"
161
+ ]
162
+ },
163
+ "PrimarykeyTableNames": [],
164
+ "PrimarykeyTables": []
165
+ }
@@ -0,0 +1,200 @@
1
+ {
2
+ "tableName": "ItemsTable",
3
+ "columns": [
4
+ {
5
+ "field": "StockItemName",
6
+ "title": "StockItemName",
7
+ "unique": false,
8
+ "type": "text",
9
+ "isInput": false,
10
+ "isAutoFocus": true,
11
+ "WidthOptions": {
12
+ "inPx": 300
13
+ },
14
+ "isDataList": true,
15
+ "dataListId": "StockItems",
16
+ "isConsider": true,
17
+ "showInUi": true
18
+ },
19
+ {
20
+ "field": "Rate",
21
+ "title": "Rate",
22
+ "unique": false,
23
+ "type": "number",
24
+ "isNumber": true,
25
+ "ShowTotal": false,
26
+ "footerFormatter": "",
27
+ "showRupee": true,
28
+ "align": "right",
29
+ "WidthOptions": {
30
+ "inPx": 250
31
+ },
32
+ "isConsider": true,
33
+ "showInUi": true
34
+ },
35
+ {
36
+ "field": "Qty",
37
+ "title": "Qty",
38
+ "unique": false,
39
+ "type": "number",
40
+ "isNumber": true,
41
+ "ShowTotal": true,
42
+ "footerFormatter": "TotalFormatter",
43
+ "showRupee": false,
44
+ "WidthOptions": {
45
+ "inPx": 200
46
+ },
47
+ "isConsider": true,
48
+ "showInUi": true
49
+ },
50
+ {
51
+ "field": "Amount",
52
+ "title": "Amount",
53
+ "unique": false,
54
+ "type": "number",
55
+ "isNumber": true,
56
+ "ShowTotal": true,
57
+ "footerFormatter": "TotalFormatter",
58
+ "enterCal": "Rate*Qty",
59
+ "showRupee": true,
60
+ "align": "right",
61
+ "WidthOptions": {
62
+ "inPx": 250
63
+ },
64
+ "isConsider": true,
65
+ "showInUi": false
66
+ },
67
+ {
68
+ "field": "TaxPer",
69
+ "title": "TaxPer",
70
+ "unique": false,
71
+ "type": "number",
72
+ "isNumber": true,
73
+ "defaultvalue": 18,
74
+ "isConsider": true,
75
+ "showInUi": true
76
+ },
77
+ {
78
+ "field": "Uom",
79
+ "title": "Uom",
80
+ "unique": false,
81
+ "type": "number",
82
+ "isNumber": true,
83
+ "defaultvalue": 18,
84
+ "isConsider": true,
85
+ "showInUi": true
86
+ },
87
+ {
88
+ "field": "ParentPk",
89
+ "title": "ParentPk",
90
+ "unique": false,
91
+ "isConsider": true,
92
+ "showInUi": true
93
+ },
94
+ {
95
+ "field": "pk",
96
+ "title": "pk",
97
+ "primary": true
98
+ }
99
+ ],
100
+ "data": [],
101
+ "Vertical": [
102
+ {
103
+ "field": "StockItemName",
104
+ "title": "StockItemName",
105
+ "unique": false,
106
+ "type": "text",
107
+ "isInput": false,
108
+ "isAutoFocus": true,
109
+ "WidthOptions": {
110
+ "inPx": 300
111
+ },
112
+ "isDataList": true,
113
+ "dataListId": "StockItems"
114
+ },
115
+ {
116
+ "field": "Rate",
117
+ "title": "Rate",
118
+ "unique": false,
119
+ "type": "number",
120
+ "isNumber": true,
121
+ "ShowTotal": false,
122
+ "footerFormatter": "",
123
+ "showRupee": true,
124
+ "align": "right",
125
+ "WidthOptions": {
126
+ "inPx": 250
127
+ }
128
+ },
129
+ {
130
+ "field": "Qty",
131
+ "title": "Qty",
132
+ "unique": false,
133
+ "type": "number",
134
+ "isNumber": true,
135
+ "ShowTotal": true,
136
+ "footerFormatter": "TotalFormatter",
137
+ "showRupee": false,
138
+ "WidthOptions": {
139
+ "inPx": 200
140
+ }
141
+ },
142
+ {
143
+ "field": "Amount",
144
+ "title": "Amount",
145
+ "unique": false,
146
+ "type": "number",
147
+ "isNumber": true,
148
+ "ShowTotal": true,
149
+ "footerFormatter": "TotalFormatter",
150
+ "showRupee": true,
151
+ "align": "right",
152
+ "WidthOptions": {
153
+ "inPx": 250
154
+ }
155
+ },
156
+ {
157
+ "field": "TaxPer",
158
+ "title": "TaxPer",
159
+ "unique": false,
160
+ "type": "number",
161
+ "isNumber": true,
162
+ "defaultvalue": 18,
163
+ "isConsider": true,
164
+ "showInUi": true
165
+ },
166
+ {
167
+ "field": "Uom",
168
+ "title": "Uom",
169
+ "unique": false,
170
+ "type": "number",
171
+ "isNumber": true,
172
+ "defaultvalue": 18,
173
+ "isConsider": true,
174
+ "showInUi": true
175
+ }
176
+ ],
177
+ "DataTableOptions": {
178
+ "Header": {
179
+ "autoFocus": "StockItemName"
180
+ }
181
+ },
182
+ "NonSecured": {
183
+ "SubRoutes": [
184
+ "ShowAll",
185
+ "Insert",
186
+ "InsertAndReturnPk",
187
+ "InsertWithDefaults"
188
+ ]
189
+ },
190
+ "DependantTables": [
191
+ "StockItems"
192
+ ],
193
+ "ForeignkeyTables": [
194
+ "BillsTable"
195
+ ],
196
+ "PrimarykeyTableNames": [
197
+ "BillsTable"
198
+ ],
199
+ "PrimarykeyTables": []
200
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "tableName": "LedgerNames",
3
+ "columns": [
4
+ {
5
+ "field": "LedgerName",
6
+ "title": "LedgerName",
7
+ "unique": true,
8
+ "type": "text",
9
+ "isInput": true,
10
+ "isAutoFocus": true,
11
+ "defaultvalue": "KeshavSoft",
12
+ "isConsider": true
13
+ },
14
+ {
15
+ "field": "LedgerParentName",
16
+ "title": "LedgerParentName",
17
+ "type": "text",
18
+ "isInput": true,
19
+ "isConsider": true
20
+ },
21
+ {
22
+ "field": "LedgerType",
23
+ "title": "LedgerType",
24
+ "type": "text",
25
+ "isInput": true,
26
+ "isConsider": true
27
+ },
28
+ {
29
+ "field": "pk",
30
+ "title": "pk",
31
+ "primary": true
32
+ }
33
+ ],
34
+ "data": [],
35
+ "Vertical": [],
36
+ "DataTableOptions": {
37
+ "Header": {
38
+ "autoFocus": "LedgerName"
39
+ }
40
+ },
41
+ "NonSecured": {
42
+ "SubRoutes": [
43
+ "ShowAll",
44
+ "Insert",
45
+ "Pipe"
46
+ ]
47
+ },
48
+ "PrimarykeyTableNames": [],
49
+ "PrimarykeyTables": []
50
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "tableName": "StockItems",
3
+ "columns": [
4
+ {
5
+ "field": "StockItemName",
6
+ "title": "StockItemName",
7
+ "unique": true,
8
+ "type": "text",
9
+ "isInput": true,
10
+ "isAutoFocus": true,
11
+ "defaultvalue": "KeshavSoft",
12
+ "isConsider": true
13
+ },
14
+ {
15
+ "field": "StockItemReservedName",
16
+ "title": "StockItemReservedName",
17
+ "type": "text",
18
+ "isInput": true,
19
+ "isConsider": true
20
+ },
21
+ {
22
+ "field": "StockItemType",
23
+ "title": "StockItemType",
24
+ "type": "text",
25
+ "isInput": true,
26
+ "isConsider": true
27
+ }
28
+ ],
29
+ "data": [],
30
+ "Vertical": [],
31
+ "DataTableOptions": {
32
+ "Header": {
33
+ "autoFocus": "StockItemName"
34
+ }
35
+ },
36
+ "NonSecured": {
37
+ "SubRoutes": [
38
+ "ShowAll",
39
+ "Pipe",
40
+ "Insert"
41
+ ]
42
+ },
43
+ "PrimarykeyTableNames": [],
44
+ "PrimarykeyTables": []
45
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "Tables": [
3
+ "BillsTable",
4
+ "ItemsTable",
5
+ "LedgerNames",
6
+ "StockItems"
7
+ ]
8
+ }