@ramathibodi/nuxt-commons 0.1.73 → 0.1.75

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 (111) hide show
  1. package/README.md +115 -96
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +1 -0
  4. package/dist/runtime/components/Alert.vue +58 -54
  5. package/dist/runtime/components/BarcodeReader.vue +130 -122
  6. package/dist/runtime/components/ExportCSV.vue +110 -102
  7. package/dist/runtime/components/FileBtn.vue +79 -67
  8. package/dist/runtime/components/ImportCSV.vue +151 -139
  9. package/dist/runtime/components/MrzReader.vue +168 -0
  10. package/dist/runtime/components/SplitterPanel.vue +67 -59
  11. package/dist/runtime/components/TabsGroup.vue +39 -31
  12. package/dist/runtime/components/TextBarcode.vue +66 -54
  13. package/dist/runtime/components/device/IdCardButton.vue +95 -83
  14. package/dist/runtime/components/device/IdCardWebSocket.vue +207 -195
  15. package/dist/runtime/components/device/Scanner.vue +350 -338
  16. package/dist/runtime/components/dialog/Confirm.vue +112 -100
  17. package/dist/runtime/components/dialog/Host.vue +88 -84
  18. package/dist/runtime/components/dialog/Index.vue +84 -72
  19. package/dist/runtime/components/dialog/Loading.vue +51 -39
  20. package/dist/runtime/components/dialog/default/Confirm.vue +112 -100
  21. package/dist/runtime/components/dialog/default/Loading.vue +60 -48
  22. package/dist/runtime/components/dialog/default/Notify.vue +82 -70
  23. package/dist/runtime/components/dialog/default/Printing.vue +46 -34
  24. package/dist/runtime/components/dialog/default/VerifyUser.vue +144 -132
  25. package/dist/runtime/components/document/Form.vue +50 -42
  26. package/dist/runtime/components/document/TemplateBuilder.vue +536 -524
  27. package/dist/runtime/components/form/ActionPad.vue +156 -144
  28. package/dist/runtime/components/form/Birthdate.vue +116 -104
  29. package/dist/runtime/components/form/CheckboxGroup.vue +99 -87
  30. package/dist/runtime/components/form/CodeEditor.vue +45 -37
  31. package/dist/runtime/components/form/Date.vue +270 -258
  32. package/dist/runtime/components/form/DateTime.vue +220 -208
  33. package/dist/runtime/components/form/Dialog.vue +178 -166
  34. package/dist/runtime/components/form/EditPad.vue +157 -145
  35. package/dist/runtime/components/form/File.vue +295 -283
  36. package/dist/runtime/components/form/Hidden.vue +44 -32
  37. package/dist/runtime/components/form/Iterator.vue +538 -526
  38. package/dist/runtime/components/form/Login.vue +143 -131
  39. package/dist/runtime/components/form/Pad.vue +399 -387
  40. package/dist/runtime/components/form/SignPad.vue +226 -218
  41. package/dist/runtime/components/form/System.vue +34 -26
  42. package/dist/runtime/components/form/Table.vue +391 -379
  43. package/dist/runtime/components/form/TableData.vue +236 -224
  44. package/dist/runtime/components/form/Time.vue +177 -165
  45. package/dist/runtime/components/form/images/Capture.vue +245 -237
  46. package/dist/runtime/components/form/images/Edit.vue +133 -121
  47. package/dist/runtime/components/form/images/Field.vue +331 -320
  48. package/dist/runtime/components/form/images/Pad.vue +54 -42
  49. package/dist/runtime/components/label/Date.vue +37 -29
  50. package/dist/runtime/components/label/DateAgo.vue +102 -94
  51. package/dist/runtime/components/label/DateCount.vue +152 -144
  52. package/dist/runtime/components/label/Field.vue +111 -103
  53. package/dist/runtime/components/label/FormatMoney.vue +37 -29
  54. package/dist/runtime/components/label/Mask.vue +46 -38
  55. package/dist/runtime/components/label/Object.vue +21 -13
  56. package/dist/runtime/components/master/Autocomplete.vue +89 -81
  57. package/dist/runtime/components/master/Combobox.vue +88 -80
  58. package/dist/runtime/components/master/RadioGroup.vue +90 -78
  59. package/dist/runtime/components/master/Select.vue +70 -62
  60. package/dist/runtime/components/master/label.vue +55 -47
  61. package/dist/runtime/components/model/Autocomplete.vue +91 -79
  62. package/dist/runtime/components/model/Combobox.vue +90 -78
  63. package/dist/runtime/components/model/Pad.vue +114 -102
  64. package/dist/runtime/components/model/Select.vue +78 -72
  65. package/dist/runtime/components/model/Table.vue +370 -358
  66. package/dist/runtime/components/model/iterator.vue +497 -489
  67. package/dist/runtime/components/model/label.vue +58 -50
  68. package/dist/runtime/components/pdf/Print.vue +75 -63
  69. package/dist/runtime/components/pdf/View.vue +146 -134
  70. package/dist/runtime/composables/alert.d.ts +4 -0
  71. package/dist/runtime/composables/api.d.ts +4 -0
  72. package/dist/runtime/composables/dialog.d.ts +1 -1
  73. package/dist/runtime/composables/document/templateFormHidden.d.ts +4 -0
  74. package/dist/runtime/composables/graphql.d.ts +1 -1
  75. package/dist/runtime/composables/graphqlModel.d.ts +9 -9
  76. package/dist/runtime/composables/graphqlModelItem.d.ts +7 -7
  77. package/dist/runtime/composables/graphqlModelOperation.d.ts +6 -6
  78. package/dist/runtime/composables/localStorageModel.d.ts +4 -0
  79. package/dist/runtime/composables/lookupList.d.ts +4 -0
  80. package/dist/runtime/composables/menu.d.ts +4 -0
  81. package/dist/runtime/composables/useMrzReader.d.ts +48 -0
  82. package/dist/runtime/composables/useMrzReader.js +423 -0
  83. package/dist/runtime/composables/useTesseract.d.ts +16 -0
  84. package/dist/runtime/composables/useTesseract.js +45 -0
  85. package/dist/runtime/composables/userPermission.d.ts +1 -1
  86. package/dist/runtime/labs/Calendar.vue +99 -99
  87. package/dist/runtime/labs/form/EditMobile.vue +152 -152
  88. package/dist/runtime/labs/form/TextFieldMask.vue +43 -43
  89. package/dist/runtime/plugins/clientConfig.d.ts +1 -1
  90. package/dist/runtime/plugins/default.d.ts +1 -1
  91. package/dist/runtime/plugins/dialogManager.d.ts +1 -1
  92. package/dist/runtime/plugins/permission.d.ts +1 -1
  93. package/dist/runtime/types/alert.d.ts +11 -11
  94. package/dist/runtime/types/clientConfig.d.ts +13 -13
  95. package/dist/runtime/types/dialogManager.d.ts +35 -35
  96. package/dist/runtime/types/formDialog.d.ts +5 -5
  97. package/dist/runtime/types/graphqlOperation.d.ts +23 -23
  98. package/dist/runtime/types/menu.d.ts +31 -31
  99. package/dist/runtime/types/modules.d.ts +7 -7
  100. package/dist/runtime/types/permission.d.ts +13 -13
  101. package/dist/runtime/utils/asset.d.ts +2 -0
  102. package/dist/runtime/utils/asset.js +49 -0
  103. package/package.json +131 -122
  104. package/scripts/enrich-vue-docs-from-ai.mjs +197 -0
  105. package/scripts/generate-ai-summary.mjs +321 -0
  106. package/scripts/generate-composables-md.mjs +129 -0
  107. package/scripts/postInstall.cjs +70 -70
  108. package/templates/.codegen/codegen.ts +32 -32
  109. package/templates/.codegen/plugin-schema-object.js +161 -161
  110. package/templates/public/tesseract/mrz.traineddata.gz +0 -0
  111. package/templates/public/tesseract/ocrb.traineddata.gz +0 -0
@@ -1,70 +1,70 @@
1
- const fs = require('node:fs')
2
- const path = require('node:path')
3
- const { execSync } = require('node:child_process')
4
-
5
- // Function to copy a file from source to destination
6
- function copyFile(src, dest) {
7
- fs.mkdirSync(path.dirname(dest), { recursive: true })
8
- fs.copyFileSync(src, dest)
9
- console.log(`Copied ${src} to ${dest}`)
10
- }
11
-
12
- // Function to copy all files in a directory recursively
13
- function copyDirectory(srcDir, destDir) {
14
- const entries = fs.readdirSync(srcDir, { withFileTypes: true })
15
-
16
- for (let entry of entries) {
17
- const srcPath = path.join(srcDir, entry.name)
18
- const destPath = path.join(destDir, entry.name)
19
-
20
- if (entry.isDirectory()) {
21
- copyDirectory(srcPath, destPath)
22
- }
23
- else {
24
- copyFile(srcPath, destPath)
25
- }
26
- }
27
- }
28
-
29
- // Function to modify package.json to add a new script
30
- function addScriptToPackageJson(scriptName, scriptCommand) {
31
- const packageJsonPath = path.join(process.env.INIT_CWD, 'package.json')
32
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))
33
-
34
- packageJson.scripts = packageJson.scripts || {}
35
- packageJson.scripts[scriptName] = scriptCommand
36
-
37
- fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2))
38
- console.log(`Added script "${scriptName}": "${scriptCommand}" to package.json`)
39
- }
40
-
41
- // Function to run npm run codegen safely
42
- function runCodegen(projectRoot) {
43
- try {
44
- execSync('npm run codegen', { cwd: projectRoot, stdio: 'inherit' })
45
- console.log('Successfully ran npm run codegen')
46
- }
47
- catch (error) {
48
- console.log('npm run codegen failed or script not found, continuing...')
49
- }
50
- }
51
-
52
- if (process.env.INIT_CWD === process.cwd()) process.exit()
53
-
54
- // Define source and destination directories
55
- const srcDir = path.join(__dirname, '..', 'templates')
56
- const destDir = process.env.INIT_CWD // Project root
57
-
58
- // Copy all files from templates directory to project root
59
- copyDirectory(srcDir, destDir)
60
-
61
- // Add new script to package.json
62
- addScriptToPackageJson('codegen', 'graphql-codegen --require dotenv/config --config ./.codegen/codegen.ts dotenv_config_path=.env')
63
-
64
- // Run npm run codegen safely
65
- if (!fs.existsSync(path.join(destDir, 'types', 'graphql.ts')) || !fs.existsSync(path.join(destDir, 'composables', 'graphqlObject.ts'))) {
66
- if (process.env.NUXT_PUBLIC_WS_GRAPHQL) runCodegen(destDir)
67
- }
68
- else {
69
- console.log('Skipping codegen')
70
- }
1
+ const fs = require('node:fs')
2
+ const path = require('node:path')
3
+ const { execSync } = require('node:child_process')
4
+
5
+ // Function to copy a file from source to destination
6
+ function copyFile(src, dest) {
7
+ fs.mkdirSync(path.dirname(dest), { recursive: true })
8
+ fs.copyFileSync(src, dest)
9
+ console.log(`Copied ${src} to ${dest}`)
10
+ }
11
+
12
+ // Function to copy all files in a directory recursively
13
+ function copyDirectory(srcDir, destDir) {
14
+ const entries = fs.readdirSync(srcDir, { withFileTypes: true })
15
+
16
+ for (let entry of entries) {
17
+ const srcPath = path.join(srcDir, entry.name)
18
+ const destPath = path.join(destDir, entry.name)
19
+
20
+ if (entry.isDirectory()) {
21
+ copyDirectory(srcPath, destPath)
22
+ }
23
+ else {
24
+ copyFile(srcPath, destPath)
25
+ }
26
+ }
27
+ }
28
+
29
+ // Function to modify package.json to add a new script
30
+ function addScriptToPackageJson(scriptName, scriptCommand) {
31
+ const packageJsonPath = path.join(process.env.INIT_CWD, 'package.json')
32
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))
33
+
34
+ packageJson.scripts = packageJson.scripts || {}
35
+ packageJson.scripts[scriptName] = scriptCommand
36
+
37
+ fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2))
38
+ console.log(`Added script "${scriptName}": "${scriptCommand}" to package.json`)
39
+ }
40
+
41
+ // Function to run npm run codegen safely
42
+ function runCodegen(projectRoot) {
43
+ try {
44
+ execSync('npm run codegen', { cwd: projectRoot, stdio: 'inherit' })
45
+ console.log('Successfully ran npm run codegen')
46
+ }
47
+ catch (error) {
48
+ console.log('npm run codegen failed or script not found, continuing...')
49
+ }
50
+ }
51
+
52
+ if (process.env.INIT_CWD === process.cwd()) process.exit()
53
+
54
+ // Define source and destination directories
55
+ const srcDir = path.join(__dirname, '..', 'templates')
56
+ const destDir = process.env.INIT_CWD // Project root
57
+
58
+ // Copy all files from templates directory to project root
59
+ copyDirectory(srcDir, destDir)
60
+
61
+ // Add new script to package.json
62
+ addScriptToPackageJson('codegen', 'graphql-codegen --require dotenv/config --config ./.codegen/codegen.ts dotenv_config_path=.env')
63
+
64
+ // Run npm run codegen safely
65
+ if (!fs.existsSync(path.join(destDir, 'types', 'graphql.ts')) || !fs.existsSync(path.join(destDir, 'composables', 'graphqlObject.ts'))) {
66
+ if (process.env.NUXT_PUBLIC_WS_GRAPHQL) runCodegen(destDir)
67
+ }
68
+ else {
69
+ console.log('Skipping codegen')
70
+ }
@@ -1,32 +1,32 @@
1
- import type {CodegenConfig} from '@graphql-codegen/cli'
2
-
3
- const config: CodegenConfig = {
4
- overwrite: true,
5
- schema: process.env.NUXT_PUBLIC_WS_GRAPHQL,
6
- generates: {
7
- './types/graphql.ts': {
8
- plugins: [{
9
- add: {
10
- content: '//Auto-generated file, do not make any change. Content could be overwritten.',
11
- },
12
- }, 'typescript'],
13
- config: {
14
- maybeValue: 'T | null | undefined',
15
- inputMaybeValue: 'T | null | undefined',
16
- declarationKind: 'class',
17
- enumsAsTypes: true,
18
- skipTypename: true,
19
- },
20
- },
21
- './composables/graphqlObject.ts': {
22
- plugins: [{
23
- add: {
24
- content: '//Auto-generated file, do not make any change. Content could be overwritten.',
25
- },
26
- }, './.codegen/plugin-schema-object.js'],
27
- },
28
- },
29
- hooks: { afterAllFileWrite: ['prettier --parser typescript --tab-width 4 --write'] },
30
- }
31
-
32
- export default config
1
+ import type {CodegenConfig} from '@graphql-codegen/cli'
2
+
3
+ const config: CodegenConfig = {
4
+ overwrite: true,
5
+ schema: process.env.NUXT_PUBLIC_WS_GRAPHQL,
6
+ generates: {
7
+ './types/graphql.ts': {
8
+ plugins: [{
9
+ add: {
10
+ content: '//Auto-generated file, do not make any change. Content could be overwritten.',
11
+ },
12
+ }, 'typescript'],
13
+ config: {
14
+ maybeValue: 'T | null | undefined',
15
+ inputMaybeValue: 'T | null | undefined',
16
+ declarationKind: 'class',
17
+ enumsAsTypes: true,
18
+ skipTypename: true,
19
+ },
20
+ },
21
+ './composables/graphqlObject.ts': {
22
+ plugins: [{
23
+ add: {
24
+ content: '//Auto-generated file, do not make any change. Content could be overwritten.',
25
+ },
26
+ }, './.codegen/plugin-schema-object.js'],
27
+ },
28
+ },
29
+ hooks: { afterAllFileWrite: ['prettier --parser typescript --tab-width 4 --write'] },
30
+ }
31
+
32
+ export default config
@@ -1,161 +1,161 @@
1
- const { getCachedDocumentNodeFromSchema } = require('@graphql-codegen/plugin-helpers')
2
- const { visit } = require('graphql')
3
- const { camelCase } = require('lodash')
4
-
5
- function capitalizeFirstLetter(string) {
6
- return string.charAt(0).toUpperCase() + string.slice(1)
7
- }
8
-
9
- function inputTypeToObject(inputType, result) {
10
- if (inputType.kind === 'NonNullType') {
11
- result['required'] = true
12
- inputTypeToObject(inputType.type, result)
13
- }
14
- if (inputType.kind === 'ListType') {
15
- result['list'] = true
16
- inputTypeToObject(inputType.type, result)
17
- }
18
- if (inputType.kind === 'NamedType') {
19
- result['type'] = inputType.name.value
20
- }
21
- }
22
-
23
- module.exports = {
24
- plugin(schema, _documents, _config) {
25
- const astNode = getCachedDocumentNodeFromSchema(schema) // Transforms the GraphQLSchema into ASTNode
26
-
27
- const operationNode = []
28
- const typeNode = []
29
- const inputNode = []
30
-
31
- const scalarType = ['ID', 'String', 'Boolean', 'Int', 'Float']
32
-
33
- const result = visit(astNode, {
34
- ObjectTypeDefinition(node) {
35
- if (node.name.value === 'Query' || node.name.value === 'Mutation') {
36
- node.fields.forEach((field) => {
37
- let fieldType = {}
38
- let fieldVariables = []
39
- inputTypeToObject(field.type, fieldType)
40
- field.arguments.forEach((argument) => {
41
- let fieldVariablesItem = { name: argument.name.value }
42
- if (argument.defaultValue) fieldVariablesItem.value = argument.defaultValue.value
43
- if (argument.type) inputTypeToObject(argument.type, fieldVariablesItem)
44
- fieldVariables.push(fieldVariablesItem)
45
- })
46
- operationNode.push({
47
- name: field.name.value,
48
- variables: fieldVariables,
49
- type: fieldType.type,
50
- operationType: node.name.value,
51
- })
52
- })
53
- }
54
- else {
55
- let fields = []
56
- node.fields.forEach((field) => {
57
- let fieldVariablesItem = { name: field.name.value }
58
- if (field.type) inputTypeToObject(field.type, fieldVariablesItem)
59
- fields.push(fieldVariablesItem)
60
- })
61
- typeNode.push({
62
- name: node.name.value,
63
- fields: fields,
64
- })
65
- }
66
- },
67
- InputObjectTypeDefinition(node) {
68
- let fields = []
69
- node.fields.forEach((field) => {
70
- let fieldVariablesItem = { name: field.name.value }
71
- if (field.defaultValue) fieldVariablesItem.value = field.defaultValue.value
72
- if (field.type) inputTypeToObject(field.type, fieldVariablesItem)
73
- fields.push(fieldVariablesItem)
74
- })
75
- inputNode.push({
76
- name: node.name.value,
77
- variables: fields,
78
- })
79
- },
80
- ScalarTypeDefinition(node) {
81
- scalarType.push(node.name.value)
82
- },
83
- })
84
-
85
- typeNode.map((node) => {
86
- let scalars = []
87
- let relations = []
88
- node.fields.forEach((field) => {
89
- if (scalarType.includes(field.type)) scalars.push(field.name)
90
- else relations.push(field)
91
- })
92
- node.scalars = scalars
93
- node.relations = relations
94
- })
95
-
96
- return `
97
- import * as graphQlClass from "~/types/graphql"
98
- import { useGraphQlOperation } from "#imports";
99
- import type {
100
- graphqlInputObject,
101
- graphqlOperationObject,
102
- graphqlTypeObject,
103
- graphqlVariable
104
- } from "#build/types/graphqlOperation";
105
-
106
- export const scalarType = ${JSON.stringify(scalarType)}
107
-
108
- function operationCall${'<' + 'T,U>'}(operationType:string, operation: string,fields?: ${'Array' + '<string | Object>'},variables?: U,cache: boolean | number = false) {
109
- return useGraphQlOperation${'<' + 'T>'}(operationType,operation,fields,variables as {[p: string] : any} | undefined,cache)
110
- }
111
-
112
- function createGraphQLOperation${'<' + 'T,U>'}(operationType: "Query" | "Mutation",name: string,variables?: graphqlVariable[],fields?: graphqlTypeObject): graphqlOperationObject${'<' + 'T,U>'} {
113
- let returnGraphqlOperation : ${'Record' + '<string,any>'} = {
114
- operationType,
115
- name,
116
- variables,
117
- fields,
118
- }
119
- if (operationType === "Mutation") {
120
- returnGraphqlOperation['call'] = async function(fields?: ${'Array' + '<string | Object>'}, variables?: U): Promise${'<' + 'T>'} {
121
- return operationCall(operationType,name, fields, variables);
122
- }
123
- } else {
124
- returnGraphqlOperation['call'] = async function(fields?: ${'Array' + '<string | Object>'}, variables?: U,cache: boolean | number = false): Promise${'<' + 'T>'} {
125
- return operationCall(operationType,name, fields, variables,cache);
126
- }
127
- }
128
- return returnGraphqlOperation as graphqlOperationObject${'<' + 'T,U>'}
129
- }
130
-
131
- interface graphqlTypeObjects extends ${'Record<string,' + 'graphqlTypeObject>'} {
132
- ${typeNode.map(node => `${node.name}: graphqlTypeObject`).join('\n')}
133
- }
134
-
135
- export const graphqlType: graphqlTypeObjects= {
136
- ${typeNode.map(node => `${node.name} : {
137
- fields : ${JSON.stringify(node.scalars)},
138
- relations: ${JSON.stringify(node.relations)}
139
- } as graphqlTypeObject `).join(',')}
140
- }
141
-
142
- interface graphqlInputObjects extends ${'Record<string,' + 'graphqlInputObject>'} {
143
- ${inputNode.map(node => `${node.name}: graphqlInputObject`).join('\n')}
144
- }
145
-
146
- export const graphqlInputType: graphqlInputObjects = {
147
- ${inputNode.map(node => `${node.name} : {
148
- variables: ${JSON.stringify(node.variables)},
149
- }`).join(',')}
150
- }
151
-
152
- interface graphqlOperationObjects extends ${'Record<string,' + 'graphqlOperationObject' + '<' + 'any' + ',any>' + '>'} {
153
- ${operationNode.map(node => `${node.name}: graphqlOperationObject${'<graphQlClass' + '.' + node.operationType + '[\'' + node.name + '\'],' + ((node.variables.length) ? 'graphQlClass.' + node.operationType + capitalizeFirstLetter(camelCase(node.name)) + 'Args' : 'undefined') + '>'}`).join('\n')}
154
- }
155
-
156
- export const graphqlOperation: graphqlOperationObjects = {
157
- ${operationNode.map(node => `${node.name}: createGraphQLOperation${'<graphQlClass' + '.' + node.operationType + '[\'' + node.name + '\'],' + ((node.variables.length) ? 'graphQlClass.' + node.operationType + capitalizeFirstLetter(camelCase(node.name)) + 'Args' : 'undefined') + '>'}('${node.operationType}','${node.name}',${JSON.stringify(node.variables)},${typeNode.find(type => type.name === node.type) ? 'graphqlType.' + node.type : 'undefined'})`).join(',')}
158
- }
159
- `
160
- },
161
- }
1
+ const { getCachedDocumentNodeFromSchema } = require('@graphql-codegen/plugin-helpers')
2
+ const { visit } = require('graphql')
3
+ const { camelCase } = require('lodash')
4
+
5
+ function capitalizeFirstLetter(string) {
6
+ return string.charAt(0).toUpperCase() + string.slice(1)
7
+ }
8
+
9
+ function inputTypeToObject(inputType, result) {
10
+ if (inputType.kind === 'NonNullType') {
11
+ result['required'] = true
12
+ inputTypeToObject(inputType.type, result)
13
+ }
14
+ if (inputType.kind === 'ListType') {
15
+ result['list'] = true
16
+ inputTypeToObject(inputType.type, result)
17
+ }
18
+ if (inputType.kind === 'NamedType') {
19
+ result['type'] = inputType.name.value
20
+ }
21
+ }
22
+
23
+ module.exports = {
24
+ plugin(schema, _documents, _config) {
25
+ const astNode = getCachedDocumentNodeFromSchema(schema) // Transforms the GraphQLSchema into ASTNode
26
+
27
+ const operationNode = []
28
+ const typeNode = []
29
+ const inputNode = []
30
+
31
+ const scalarType = ['ID', 'String', 'Boolean', 'Int', 'Float']
32
+
33
+ const result = visit(astNode, {
34
+ ObjectTypeDefinition(node) {
35
+ if (node.name.value === 'Query' || node.name.value === 'Mutation') {
36
+ node.fields.forEach((field) => {
37
+ let fieldType = {}
38
+ let fieldVariables = []
39
+ inputTypeToObject(field.type, fieldType)
40
+ field.arguments.forEach((argument) => {
41
+ let fieldVariablesItem = { name: argument.name.value }
42
+ if (argument.defaultValue) fieldVariablesItem.value = argument.defaultValue.value
43
+ if (argument.type) inputTypeToObject(argument.type, fieldVariablesItem)
44
+ fieldVariables.push(fieldVariablesItem)
45
+ })
46
+ operationNode.push({
47
+ name: field.name.value,
48
+ variables: fieldVariables,
49
+ type: fieldType.type,
50
+ operationType: node.name.value,
51
+ })
52
+ })
53
+ }
54
+ else {
55
+ let fields = []
56
+ node.fields.forEach((field) => {
57
+ let fieldVariablesItem = { name: field.name.value }
58
+ if (field.type) inputTypeToObject(field.type, fieldVariablesItem)
59
+ fields.push(fieldVariablesItem)
60
+ })
61
+ typeNode.push({
62
+ name: node.name.value,
63
+ fields: fields,
64
+ })
65
+ }
66
+ },
67
+ InputObjectTypeDefinition(node) {
68
+ let fields = []
69
+ node.fields.forEach((field) => {
70
+ let fieldVariablesItem = { name: field.name.value }
71
+ if (field.defaultValue) fieldVariablesItem.value = field.defaultValue.value
72
+ if (field.type) inputTypeToObject(field.type, fieldVariablesItem)
73
+ fields.push(fieldVariablesItem)
74
+ })
75
+ inputNode.push({
76
+ name: node.name.value,
77
+ variables: fields,
78
+ })
79
+ },
80
+ ScalarTypeDefinition(node) {
81
+ scalarType.push(node.name.value)
82
+ },
83
+ })
84
+
85
+ typeNode.map((node) => {
86
+ let scalars = []
87
+ let relations = []
88
+ node.fields.forEach((field) => {
89
+ if (scalarType.includes(field.type)) scalars.push(field.name)
90
+ else relations.push(field)
91
+ })
92
+ node.scalars = scalars
93
+ node.relations = relations
94
+ })
95
+
96
+ return `
97
+ import * as graphQlClass from "~/types/graphql"
98
+ import { useGraphQlOperation } from "#imports";
99
+ import type {
100
+ graphqlInputObject,
101
+ graphqlOperationObject,
102
+ graphqlTypeObject,
103
+ graphqlVariable
104
+ } from "#build/types/graphqlOperation";
105
+
106
+ export const scalarType = ${JSON.stringify(scalarType)}
107
+
108
+ function operationCall${'<' + 'T,U>'}(operationType:string, operation: string,fields?: ${'Array' + '<string | Object>'},variables?: U,cache: boolean | number = false) {
109
+ return useGraphQlOperation${'<' + 'T>'}(operationType,operation,fields,variables as {[p: string] : any} | undefined,cache)
110
+ }
111
+
112
+ function createGraphQLOperation${'<' + 'T,U>'}(operationType: "Query" | "Mutation",name: string,variables?: graphqlVariable[],fields?: graphqlTypeObject): graphqlOperationObject${'<' + 'T,U>'} {
113
+ let returnGraphqlOperation : ${'Record' + '<string,any>'} = {
114
+ operationType,
115
+ name,
116
+ variables,
117
+ fields,
118
+ }
119
+ if (operationType === "Mutation") {
120
+ returnGraphqlOperation['call'] = async function(fields?: ${'Array' + '<string | Object>'}, variables?: U): Promise${'<' + 'T>'} {
121
+ return operationCall(operationType,name, fields, variables);
122
+ }
123
+ } else {
124
+ returnGraphqlOperation['call'] = async function(fields?: ${'Array' + '<string | Object>'}, variables?: U,cache: boolean | number = false): Promise${'<' + 'T>'} {
125
+ return operationCall(operationType,name, fields, variables,cache);
126
+ }
127
+ }
128
+ return returnGraphqlOperation as graphqlOperationObject${'<' + 'T,U>'}
129
+ }
130
+
131
+ interface graphqlTypeObjects extends ${'Record<string,' + 'graphqlTypeObject>'} {
132
+ ${typeNode.map(node => `${node.name}: graphqlTypeObject`).join('\n')}
133
+ }
134
+
135
+ export const graphqlType: graphqlTypeObjects= {
136
+ ${typeNode.map(node => `${node.name} : {
137
+ fields : ${JSON.stringify(node.scalars)},
138
+ relations: ${JSON.stringify(node.relations)}
139
+ } as graphqlTypeObject `).join(',')}
140
+ }
141
+
142
+ interface graphqlInputObjects extends ${'Record<string,' + 'graphqlInputObject>'} {
143
+ ${inputNode.map(node => `${node.name}: graphqlInputObject`).join('\n')}
144
+ }
145
+
146
+ export const graphqlInputType: graphqlInputObjects = {
147
+ ${inputNode.map(node => `${node.name} : {
148
+ variables: ${JSON.stringify(node.variables)},
149
+ }`).join(',')}
150
+ }
151
+
152
+ interface graphqlOperationObjects extends ${'Record<string,' + 'graphqlOperationObject' + '<' + 'any' + ',any>' + '>'} {
153
+ ${operationNode.map(node => `${node.name}: graphqlOperationObject${'<graphQlClass' + '.' + node.operationType + '[\'' + node.name + '\'],' + ((node.variables.length) ? 'graphQlClass.' + node.operationType + capitalizeFirstLetter(camelCase(node.name)) + 'Args' : 'undefined') + '>'}`).join('\n')}
154
+ }
155
+
156
+ export const graphqlOperation: graphqlOperationObjects = {
157
+ ${operationNode.map(node => `${node.name}: createGraphQLOperation${'<graphQlClass' + '.' + node.operationType + '[\'' + node.name + '\'],' + ((node.variables.length) ? 'graphQlClass.' + node.operationType + capitalizeFirstLetter(camelCase(node.name)) + 'Args' : 'undefined') + '>'}('${node.operationType}','${node.name}',${JSON.stringify(node.variables)},${typeNode.find(type => type.name === node.type) ? 'graphqlType.' + node.type : 'undefined'})`).join(',')}
158
+ }
159
+ `
160
+ },
161
+ }