@postxl/generator 0.74.1 → 1.0.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 (189) hide show
  1. package/LICENSE +50 -0
  2. package/README.md +79 -1
  3. package/dist/generator-manager.class.d.ts +59 -0
  4. package/dist/generator-manager.class.js +221 -0
  5. package/dist/generator.class.d.ts +90 -0
  6. package/dist/generator.class.js +32 -0
  7. package/dist/generator.context.d.ts +174 -0
  8. package/dist/generator.context.js +125 -0
  9. package/dist/helpers/branded.types.d.ts +149 -0
  10. package/dist/helpers/branded.types.js +111 -0
  11. package/dist/helpers/config-builder.class.d.ts +27 -0
  12. package/dist/helpers/config-builder.class.js +54 -0
  13. package/dist/helpers/import-generator.class.d.ts +70 -0
  14. package/dist/helpers/import-generator.class.js +166 -0
  15. package/dist/helpers/importable.types.d.ts +52 -0
  16. package/dist/helpers/importable.types.js +15 -0
  17. package/dist/helpers/index-generator.class.d.ts +10 -0
  18. package/dist/helpers/index-generator.class.js +46 -0
  19. package/dist/helpers/index.d.ts +8 -0
  20. package/dist/helpers/index.js +24 -0
  21. package/dist/helpers/package-json.generator.d.ts +56 -0
  22. package/dist/helpers/package-json.generator.js +36 -0
  23. package/dist/helpers/tsconfig.generator.d.ts +1 -0
  24. package/dist/helpers/tsconfig.generator.js +14 -0
  25. package/dist/helpers/verify-context.d.ts +4 -0
  26. package/dist/helpers/verify-context.js +23 -0
  27. package/dist/index.d.ts +5 -0
  28. package/dist/index.js +21 -0
  29. package/dist/utils/checksum.d.ts +10 -0
  30. package/dist/utils/checksum.js +132 -0
  31. package/dist/utils/fs-utils.d.ts +34 -0
  32. package/dist/utils/fs-utils.js +126 -0
  33. package/dist/utils/index.d.ts +10 -0
  34. package/dist/utils/index.js +26 -0
  35. package/dist/utils/jsdoc.d.ts +12 -0
  36. package/dist/utils/jsdoc.js +37 -0
  37. package/dist/utils/lint.d.ts +46 -0
  38. package/dist/utils/lint.js +154 -0
  39. package/dist/utils/lockfile.d.ts +7 -0
  40. package/dist/utils/lockfile.js +80 -0
  41. package/dist/utils/logger.class.d.ts +25 -0
  42. package/dist/utils/logger.class.js +55 -0
  43. package/dist/utils/merge-conflict.d.ts +55 -0
  44. package/dist/utils/merge-conflict.js +264 -0
  45. package/dist/utils/path.d.ts +52 -0
  46. package/dist/utils/path.js +183 -0
  47. package/dist/utils/prettier-config.d.ts +2 -0
  48. package/dist/utils/prettier-config.js +13 -0
  49. package/dist/utils/prettier.d.ts +5 -0
  50. package/dist/utils/prettier.js +67 -0
  51. package/dist/utils/prettier.skiptest.d.ts +1 -0
  52. package/dist/utils/prettier.skiptest.js +22 -0
  53. package/dist/utils/promise.d.ts +2 -0
  54. package/dist/utils/promise.js +10 -0
  55. package/dist/utils/string-functions.d.ts +9 -0
  56. package/dist/utils/string-functions.js +23 -0
  57. package/dist/utils/sync-log-result.d.ts +9 -0
  58. package/dist/utils/sync-log-result.js +90 -0
  59. package/dist/utils/sync.d.ts +143 -0
  60. package/dist/utils/sync.js +325 -0
  61. package/dist/utils/template.d.ts +66 -0
  62. package/dist/utils/template.js +159 -0
  63. package/dist/utils/vfs.class.d.ts +115 -0
  64. package/dist/utils/vfs.class.js +239 -0
  65. package/dist/utils/zip.d.ts +13 -0
  66. package/dist/utils/zip.js +40 -0
  67. package/package.json +57 -34
  68. package/dist/generator.d.ts +0 -13
  69. package/dist/generator.js +0 -455
  70. package/dist/generators/enums/react.generator.d.ts +0 -10
  71. package/dist/generators/enums/react.generator.js +0 -110
  72. package/dist/generators/enums/types.generator.d.ts +0 -10
  73. package/dist/generators/enums/types.generator.js +0 -39
  74. package/dist/generators/indices/data/module.generator.d.ts +0 -9
  75. package/dist/generators/indices/data/module.generator.js +0 -60
  76. package/dist/generators/indices/data/service.generator.d.ts +0 -9
  77. package/dist/generators/indices/data/service.generator.js +0 -249
  78. package/dist/generators/indices/data/types.generator.d.ts +0 -9
  79. package/dist/generators/indices/data/types.generator.js +0 -49
  80. package/dist/generators/indices/dispatcher-service.generator.d.ts +0 -9
  81. package/dist/generators/indices/dispatcher-service.generator.js +0 -107
  82. package/dist/generators/indices/export/class.generator.d.ts +0 -9
  83. package/dist/generators/indices/export/class.generator.js +0 -140
  84. package/dist/generators/indices/export/encoder.generator.d.ts +0 -9
  85. package/dist/generators/indices/export/encoder.generator.js +0 -50
  86. package/dist/generators/indices/import/convert-functions.generator.d.ts +0 -9
  87. package/dist/generators/indices/import/convert-functions.generator.js +0 -509
  88. package/dist/generators/indices/import/decoder.generator.d.ts +0 -9
  89. package/dist/generators/indices/import/decoder.generator.js +0 -40
  90. package/dist/generators/indices/import/service.generator.d.ts +0 -9
  91. package/dist/generators/indices/import/service.generator.js +0 -573
  92. package/dist/generators/indices/import/types.generator.d.ts +0 -9
  93. package/dist/generators/indices/import/types.generator.js +0 -242
  94. package/dist/generators/indices/repositories.generator.d.ts +0 -9
  95. package/dist/generators/indices/repositories.generator.js +0 -25
  96. package/dist/generators/indices/routes.generator.d.ts +0 -9
  97. package/dist/generators/indices/routes.generator.js +0 -29
  98. package/dist/generators/indices/seed-migration.generator.d.ts +0 -9
  99. package/dist/generators/indices/seed-migration.generator.js +0 -36
  100. package/dist/generators/indices/seed-template.generator.d.ts +0 -9
  101. package/dist/generators/indices/seed-template.generator.js +0 -80
  102. package/dist/generators/indices/testids.generator.d.ts +0 -7
  103. package/dist/generators/indices/testids.generator.js +0 -71
  104. package/dist/generators/indices/types.generator.d.ts +0 -10
  105. package/dist/generators/indices/types.generator.js +0 -35
  106. package/dist/generators/indices/update/actiontypes.generator.d.ts +0 -9
  107. package/dist/generators/indices/update/actiontypes.generator.js +0 -49
  108. package/dist/generators/indices/update/module.generator.d.ts +0 -9
  109. package/dist/generators/indices/update/module.generator.js +0 -41
  110. package/dist/generators/indices/update/service.generator.d.ts +0 -9
  111. package/dist/generators/indices/update/service.generator.js +0 -34
  112. package/dist/generators/indices/view/module.generator.d.ts +0 -9
  113. package/dist/generators/indices/view/module.generator.js +0 -39
  114. package/dist/generators/indices/view/service.generator.d.ts +0 -9
  115. package/dist/generators/indices/view/service.generator.js +0 -34
  116. package/dist/generators/models/admin.page.generator.d.ts +0 -7
  117. package/dist/generators/models/admin.page.generator.js +0 -74
  118. package/dist/generators/models/export/encoder.generator.d.ts +0 -9
  119. package/dist/generators/models/export/encoder.generator.js +0 -51
  120. package/dist/generators/models/import/decoder.generator.d.ts +0 -9
  121. package/dist/generators/models/import/decoder.generator.js +0 -148
  122. package/dist/generators/models/react/context.generator.d.ts +0 -9
  123. package/dist/generators/models/react/context.generator.js +0 -71
  124. package/dist/generators/models/react/index.d.ts +0 -10
  125. package/dist/generators/models/react/index.js +0 -31
  126. package/dist/generators/models/react/library.generator.d.ts +0 -10
  127. package/dist/generators/models/react/library.generator.js +0 -94
  128. package/dist/generators/models/react/lookup.generator.d.ts +0 -9
  129. package/dist/generators/models/react/lookup.generator.js +0 -175
  130. package/dist/generators/models/react/modals.generator.d.ts +0 -23
  131. package/dist/generators/models/react/modals.generator.js +0 -710
  132. package/dist/generators/models/repository.generator.d.ts +0 -9
  133. package/dist/generators/models/repository.generator.js +0 -955
  134. package/dist/generators/models/route.generator.d.ts +0 -9
  135. package/dist/generators/models/route.generator.js +0 -92
  136. package/dist/generators/models/seed.generator.d.ts +0 -21
  137. package/dist/generators/models/seed.generator.js +0 -285
  138. package/dist/generators/models/stub.generator.d.ts +0 -9
  139. package/dist/generators/models/stub.generator.js +0 -92
  140. package/dist/generators/models/types.generator.d.ts +0 -9
  141. package/dist/generators/models/types.generator.js +0 -125
  142. package/dist/generators/models/update/service.generator.d.ts +0 -10
  143. package/dist/generators/models/update/service.generator.js +0 -302
  144. package/dist/generators/models/view/service.generator.d.ts +0 -10
  145. package/dist/generators/models/view/service.generator.js +0 -239
  146. package/dist/lib/attributes.d.ts +0 -114
  147. package/dist/lib/attributes.js +0 -2
  148. package/dist/lib/exports.d.ts +0 -45
  149. package/dist/lib/exports.js +0 -90
  150. package/dist/lib/imports.d.ts +0 -65
  151. package/dist/lib/imports.js +0 -114
  152. package/dist/lib/meta.d.ts +0 -1191
  153. package/dist/lib/meta.js +0 -434
  154. package/dist/lib/schema/fields.d.ts +0 -46
  155. package/dist/lib/schema/fields.js +0 -62
  156. package/dist/lib/schema/schema.d.ts +0 -466
  157. package/dist/lib/schema/schema.js +0 -18
  158. package/dist/lib/schema/types.d.ts +0 -201
  159. package/dist/lib/schema/types.js +0 -112
  160. package/dist/lib/serializer.d.ts +0 -15
  161. package/dist/lib/serializer.js +0 -24
  162. package/dist/lib/test-id-collector.d.ts +0 -42
  163. package/dist/lib/test-id-collector.js +0 -53
  164. package/dist/lib/types.d.ts +0 -7
  165. package/dist/lib/types.js +0 -13
  166. package/dist/lib/typescript.d.ts +0 -5
  167. package/dist/lib/typescript.js +0 -22
  168. package/dist/lib/utils/ast.d.ts +0 -29
  169. package/dist/lib/utils/ast.js +0 -23
  170. package/dist/lib/utils/error.d.ts +0 -17
  171. package/dist/lib/utils/error.js +0 -52
  172. package/dist/lib/utils/file.d.ts +0 -10
  173. package/dist/lib/utils/file.js +0 -56
  174. package/dist/lib/utils/jsdoc.d.ts +0 -9
  175. package/dist/lib/utils/jsdoc.js +0 -37
  176. package/dist/lib/utils/logger.d.ts +0 -17
  177. package/dist/lib/utils/logger.js +0 -12
  178. package/dist/lib/utils/string.d.ts +0 -40
  179. package/dist/lib/utils/string.js +0 -187
  180. package/dist/lib/utils/types.d.ts +0 -12
  181. package/dist/lib/utils/types.js +0 -2
  182. package/dist/lib/zod.d.ts +0 -8
  183. package/dist/lib/zod.js +0 -60
  184. package/dist/prisma/attributes.d.ts +0 -21
  185. package/dist/prisma/attributes.js +0 -175
  186. package/dist/prisma/client-path.d.ts +0 -7
  187. package/dist/prisma/client-path.js +0 -29
  188. package/dist/prisma/parse.d.ts +0 -12
  189. package/dist/prisma/parse.js +0 -452
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateModelLibraryComponents = void 0;
4
- const imports_1 = require("../../../lib/imports");
5
- const test_id_collector_1 = require("../../../lib/test-id-collector");
6
- /**
7
- * Generates components that may be used to list all entries of a given data type.
8
- *
9
- */
10
- function generateModelLibraryComponents({ model, meta }) {
11
- const { react: { context, components }, } = meta;
12
- const testIdCollector = test_id_collector_1.TestIdCollector.from(meta.seed.constantName + '-card');
13
- const titleProp = model.nameField.isRequired
14
- ? `title={item.${model.nameField.name}}`
15
- : `title={item.${model.nameField.name} ?? item.${model.idField.name}}`;
16
- const imports = imports_1.ImportsGenerator.from(meta.react.folderPath)
17
- .addTypeImport({
18
- items: [model.typeName],
19
- from: meta.types.importPath,
20
- })
21
- .addImport({
22
- items: [context.hookFnName, components.modals.editComponentName, components.modals.deleteComponentName],
23
- from: meta.react.folderPath,
24
- });
25
- return /* ts */ `
26
- import React, { useState } from 'react'
27
-
28
- import { Card } from '@components/atoms/Card'
29
- import { CardList } from '@components/atoms/CardList'
30
-
31
- ${imports.generate()}
32
-
33
- /**
34
- * Show all ${model.name} entries.
35
- */
36
- export const ${components.libraryComponentName} = () => {
37
- const { ready, list } = ${context.hookFnName}()
38
-
39
- return (
40
- <CardList loading={!ready}>
41
- {list.map(item => <${components.cardComponentName} key={item.id} item={item} />)}
42
- </CardList>
43
- )
44
- }
45
-
46
- /**
47
- * Show a single ${model.name} entry.
48
- */
49
- export const ${components.cardComponentName} = React.forwardRef<HTMLLIElement, { item: ${model.typeName} }>(
50
- ({ item }, forwardedRef) => {
51
- const [isEditModalOpen, setIsEditModalOpen] = useState(false)
52
- const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false)
53
-
54
- return (
55
- <>
56
- <Card
57
- ref={forwardedRef}
58
- ${titleProp}
59
- actions={[
60
- {
61
- label: 'Edit',
62
- icon: 'pencil-on-paper',
63
- onClick: () => setIsEditModalOpen(true),
64
- __e2e_action_test_id__: "${testIdCollector.idFor('edit', { typePrefix: 'actions' })}",
65
- },
66
- {
67
- label: 'Delete',
68
- icon: 'trash',
69
- onClick: () => setIsDeleteModalOpen(true),
70
- __e2e_action_test_id__: "${testIdCollector.idFor('delete', { typePrefix: 'actions' })}",
71
- },
72
- ]}
73
- />
74
-
75
- <${components.modals.editComponentName}
76
- data={item}
77
- show={isEditModalOpen}
78
- onHide={() => setIsEditModalOpen(false)}
79
- />
80
-
81
- <${components.modals.deleteComponentName}
82
- id={item.id}
83
- show={isDeleteModalOpen}
84
- onHide={() => setIsDeleteModalOpen(false)}
85
- />
86
- </>
87
- )
88
- }
89
- )
90
-
91
- ${components.cardComponentName}.displayName = '${components.cardComponentName}'
92
- `;
93
- }
94
- exports.generateModelLibraryComponents = generateModelLibraryComponents;
@@ -1,9 +0,0 @@
1
- import { ModelMetaData } from '../../../lib/meta';
2
- import { Model } from '../../../lib/schema/schema';
3
- /**
4
- * Utility generator that generates lookup components for a given model.
5
- */
6
- export declare function generateModelLookupComponents({ model, meta }: {
7
- model: Model;
8
- meta: ModelMetaData;
9
- }): string;
@@ -1,175 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateModelLookupComponents = void 0;
4
- const imports_1 = require("../../../lib/imports");
5
- const test_id_collector_1 = require("../../../lib/test-id-collector");
6
- /**
7
- * Generates a test id that that can be used to identify a component in E2E tests.
8
- */
9
- function testId(meta, typePrefix, options) {
10
- var _a;
11
- const testIdCollector = test_id_collector_1.TestIdCollector.from(meta.seed.constantName + '-formComponents');
12
- return testIdCollector.idFor((_a = options === null || options === void 0 ? void 0 : options.element) !== null && _a !== void 0 ? _a : '', { typePrefix });
13
- }
14
- /**
15
- * Utility generator that generates lookup components for a given model.
16
- */
17
- function generateModelLookupComponents({ model, meta }) {
18
- const { react: { context, components }, } = meta;
19
- const imports = imports_1.ImportsGenerator.from(meta.react.folderPath)
20
- .addImport({
21
- items: [context.hookFnName],
22
- from: meta.react.folderPath,
23
- })
24
- .addTypeImport({
25
- items: [model.typeName],
26
- from: meta.types.importPath,
27
- });
28
- const typeName = model.typeName;
29
- const tsOmittedFields = `'label' | 'options' | 'loading'`;
30
- const labelProp = model.nameField.isRequired
31
- ? `label={(l) => l.${model.nameField.name}}`
32
- : `label={(l) => l.${model.nameField.name} ?? l.${model.idField.name}}`;
33
- let description = '';
34
- if (model.description) {
35
- description = `
36
- /**
37
- * ${model.description}
38
- */`;
39
- }
40
- return /* ts */ `
41
- import React from 'react'
42
-
43
- import { MenuSelectInput, MenuSelectField } from '@components/atoms/MenuSelect'
44
- import { SelectInput, SelectField } from '@components/atoms/SelectInput'
45
- import { SearchInput, SearchField } from '@components/atoms/SearchInput'
46
- import { TableSelectInput, TableSelectField } from '@components/atoms/TableSelectInput'
47
-
48
-
49
- import { UnionOmit } from '@lib/types'
50
-
51
- ${imports.generate()}
52
-
53
- // Select
54
-
55
- ${description}
56
- export const ${components.forms.selectInputName} = ({
57
- ...delegated
58
- }: UnionOmit<React.ComponentPropsWithoutRef<typeof SelectInput<${typeName}>>, ${tsOmittedFields}>) => {
59
- const { list, ready } = ${context.hookFnName}()
60
- return <SelectInput<${typeName}>
61
- options={list}
62
- ${labelProp}
63
- loading={!ready}
64
- __e2e_field_test_id__="${testId(meta, 'selectInput')}"
65
- {...delegated}
66
- />
67
- }
68
-
69
- ${description}
70
- export const ${components.forms.selectFieldName} = ({
71
- ...delegated
72
- }: Omit<React.ComponentPropsWithoutRef<typeof SelectField<${typeName}>>, ${tsOmittedFields}>) => {
73
- const { list, ready } = ${context.hookFnName}()
74
- return <SelectField<${typeName}>
75
- options={list}
76
- ${labelProp}
77
- loading={!ready}
78
- __e2e_field_test_id__="${testId(meta, 'selectField')}"
79
- {...delegated}
80
- />
81
- }
82
-
83
- // Menu Select
84
-
85
- ${description}
86
- export const ${components.forms.menuSelectInputName} = ({
87
- ...delegated
88
- }: UnionOmit<React.ComponentPropsWithoutRef<typeof MenuSelectInput<${typeName}>>, ${tsOmittedFields}>) => {
89
- const { list, ready } = ${context.hookFnName}()
90
- return <MenuSelectInput<${typeName}>
91
- options={list}
92
- ${labelProp}
93
- loading={!ready}
94
- __e2e_options_test_id__="${testId(meta, 'menuSelectInput')}"
95
- {...delegated}
96
- />
97
- }
98
-
99
- ${description}
100
- export const ${components.forms.menuSelectFieldName} = ({
101
- ...delegated
102
- }: UnionOmit<React.ComponentPropsWithoutRef<typeof MenuSelectField<${typeName}>>, ${tsOmittedFields}>) => {
103
- const { list, ready } = ${context.hookFnName}()
104
- return <MenuSelectField<${typeName}>
105
- options={list}
106
- ${labelProp}
107
- loading={!ready}
108
- __e2e_options_test_id__="${testId(meta, 'menuSelectField')}"
109
- {...delegated}
110
- />
111
- }
112
-
113
- // Search
114
-
115
- ${description}
116
- export const ${components.forms.searchInputName} = ({
117
- ...delegated
118
- }: UnionOmit<React.ComponentPropsWithoutRef<typeof SearchInput<${typeName}>>, ${tsOmittedFields}>) => {
119
- const { list, ready } = ${context.hookFnName}()
120
- return <SearchInput<${typeName}>
121
- options={list}
122
- ${labelProp}
123
- loading={!ready}
124
- __e2e_combobox_test_id__="${testId(meta, 'searchInput', { element: 'field' })}"
125
- __e2e_options_test_id__="${testId(meta, 'searchInput', { element: 'options' })}"
126
- {...delegated}
127
- />
128
- }
129
-
130
- ${description}
131
- export const ${components.forms.searchFieldName} = ({
132
- ...delegated
133
- }: Omit<React.ComponentPropsWithoutRef<typeof SearchField<${typeName}>>, ${tsOmittedFields}>) => {
134
- const { list, ready } = ${context.hookFnName}()
135
- return <SearchField<${typeName}>
136
- options={list}
137
- ${labelProp}
138
- loading={!ready}
139
- __e2e_combobox_test_id__="${testId(meta, 'searchField', { element: 'field' })}"
140
- __e2e_options_test_id__="${testId(meta, 'searchField', { element: 'options' })}"
141
- {...delegated}
142
- />
143
- }
144
-
145
- // Table
146
- ${description}
147
- export const ${components.forms.tableSelectInputName} = ({
148
- ...delegated
149
- }: UnionOmit<React.ComponentPropsWithoutRef<typeof TableSelectInput<${typeName}>>, ${tsOmittedFields}>) => {
150
- const { list, ready } = ${context.hookFnName}()
151
- return <TableSelectInput<${typeName}>
152
- options={list}
153
- ${labelProp}
154
- loading={!ready}
155
- __e2e_input_field_test_id__="${testId(meta, 'tableSelectInput')}"
156
- {...delegated}
157
- />
158
- }
159
-
160
- ${description}
161
- export const ${components.forms.tableSelectFieldName} = ({
162
- ...delegated
163
- }: UnionOmit<React.ComponentPropsWithoutRef<typeof TableSelectField<${typeName}>>, ${tsOmittedFields}>) => {
164
- const { list, ready } = ${context.hookFnName}()
165
- return <TableSelectField<${typeName}>
166
- options={list}
167
- ${labelProp}
168
- loading={!ready}
169
- __e2e_input_field_test_id__="${testId(meta, 'tableSelectField')}"
170
- {...delegated}
171
- />
172
- }
173
- `;
174
- }
175
- exports.generateModelLookupComponents = generateModelLookupComponents;
@@ -1,23 +0,0 @@
1
- import { ModelMetaData } from '../../../lib/meta';
2
- import { Model } from '../../../lib/schema/schema';
3
- /**
4
- * Utility generator that creates a create modal component for a given model.
5
- */
6
- export declare function generateModelCreateModalComponent({ model, meta }: {
7
- model: Model;
8
- meta: ModelMetaData;
9
- }): string;
10
- /**
11
- * Returns a React component that lets you edit a model instance.
12
- */
13
- export declare function generateEditModalModelComponent({ model, meta }: {
14
- model: Model;
15
- meta: ModelMetaData;
16
- }): string;
17
- /**
18
- * Generates a modal component that lets you delete a model instance.
19
- */
20
- export declare function generateDeleteModalModelComponent({ model, meta }: {
21
- model: Model;
22
- meta: ModelMetaData;
23
- }): string;