rapida-partner 1.0.0

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 (107) hide show
  1. package/README.md +85 -0
  2. package/index.ts +13 -0
  3. package/package.json +27 -0
  4. package/rapidaObject.json +3024 -0
  5. package/src/constants/options/agendaStatus.ts +3 -0
  6. package/src/constants/options/citiesFromBrazil.ts +27852 -0
  7. package/src/constants/options/countriesFromEarth.ts +1761 -0
  8. package/src/constants/options/currencies.ts +142 -0
  9. package/src/constants/options/eventJobs.ts +94 -0
  10. package/src/constants/options/events.ts +22 -0
  11. package/src/constants/options/hours.ts +26 -0
  12. package/src/constants/options/languages.ts +34 -0
  13. package/src/constants/options/statesFromBrazil.ts +29 -0
  14. package/src/controllers/ts_project_to_json_project.ts +17 -0
  15. package/src/controllers/validate-project-json-schema.ts +11 -0
  16. package/src/examples/components/forms/character.form.ts +92 -0
  17. package/src/examples/components/forms/company.form.ts +648 -0
  18. package/src/examples/components/forms/movie.form.ts +205 -0
  19. package/src/examples/components/forms/movieGenre.form.ts +43 -0
  20. package/src/examples/components/forms/person.form.ts +474 -0
  21. package/src/examples/components/lists/character.list.ts +47 -0
  22. package/src/examples/components/lists/company.list.ts +49 -0
  23. package/src/examples/components/lists/movie.list.ts +60 -0
  24. package/src/examples/components/lists/movieGenre.list.ts +51 -0
  25. package/src/examples/components/lists/person.list.ts +50 -0
  26. package/src/examples/modules/character.ts +13 -0
  27. package/src/examples/modules/company.ts +13 -0
  28. package/src/examples/modules/movie.ts +17 -0
  29. package/src/examples/modules/person.ts +13 -0
  30. package/src/examples/projects/movieBackoffice.ts +110 -0
  31. package/src/interfaces/backend-framework-structure.interface.ts +44 -0
  32. package/src/interfaces/data-card.interface.ts +102 -0
  33. package/src/interfaces/data-chart.interface.ts +84 -0
  34. package/src/interfaces/data-detail.interface.ts +123 -0
  35. package/src/interfaces/data-grid.interface.ts +48 -0
  36. package/src/interfaces/data-table.interface.ts +84 -0
  37. package/src/interfaces/form-array.interface.ts +14 -0
  38. package/src/interfaces/form-autocomplete.interface.ts +79 -0
  39. package/src/interfaces/form-button.interface.ts +34 -0
  40. package/src/interfaces/form-condition.interface.ts +26 -0
  41. package/src/interfaces/form-datepicker.interface.ts +18 -0
  42. package/src/interfaces/form-fieldset.interface.ts +13 -0
  43. package/src/interfaces/form-file.interface.ts +57 -0
  44. package/src/interfaces/form-input.interface.ts +69 -0
  45. package/src/interfaces/form-numeric.interface.ts +22 -0
  46. package/src/interfaces/form-pattern.interface.ts +16 -0
  47. package/src/interfaces/form-radiogroup.interface.ts +21 -0
  48. package/src/interfaces/form-select.interface.ts +60 -0
  49. package/src/interfaces/form-switch.interface.ts +15 -0
  50. package/src/interfaces/form-tab.interface.ts +17 -0
  51. package/src/interfaces/form.interface.ts +73 -0
  52. package/src/interfaces/frontend-framework-structure.interface.ts +39 -0
  53. package/src/interfaces/layout-dashboard.interface.ts +52 -0
  54. package/src/interfaces/layout-panel.interface.ts +45 -0
  55. package/src/interfaces/list.interface.ts +50 -0
  56. package/src/interfaces/project-backend.interface.ts +48 -0
  57. package/src/interfaces/project-style.interface.ts +129 -0
  58. package/src/interfaces/project.interface.ts +79 -0
  59. package/src/interfaces/yaml-template-skeleton.interface.ts +35 -0
  60. package/src/schemas/backend-framework-structure.schema.json +194 -0
  61. package/src/schemas/backend.ref.json +77 -0
  62. package/src/schemas/bdd-and-e2e-narratives.ref.json +57 -0
  63. package/src/schemas/bdd-and-e2e.json +36 -0
  64. package/src/schemas/business-plan.ref.json +25 -0
  65. package/src/schemas/business-rules.ref.json +34 -0
  66. package/src/schemas/component-one-of.ref.json +15 -0
  67. package/src/schemas/dashboard.ref.json +111 -0
  68. package/src/schemas/data-card.ref.json +245 -0
  69. package/src/schemas/data-chart.ref.json +168 -0
  70. package/src/schemas/data-detail.ref.json +297 -0
  71. package/src/schemas/data-grid.ref.json +101 -0
  72. package/src/schemas/data-table.ref.json +181 -0
  73. package/src/schemas/external-application.ref.json +97 -0
  74. package/src/schemas/form-array.ref.json +35 -0
  75. package/src/schemas/form-autocomplete-options-api.ref.json +53 -0
  76. package/src/schemas/form-autocomplete.ref.json +204 -0
  77. package/src/schemas/form-button.ref.json +88 -0
  78. package/src/schemas/form-common-api-request.ref.json +29 -0
  79. package/src/schemas/form-common-filters-from-other-form-fields.ref.json +22 -0
  80. package/src/schemas/form-common-form-fields-filled-by-api-response.ref.json +28 -0
  81. package/src/schemas/form-condition.ref.json +70 -0
  82. package/src/schemas/form-datepicker.ref.json +50 -0
  83. package/src/schemas/form-fieldset.ref.json +28 -0
  84. package/src/schemas/form-file.ref.json +115 -0
  85. package/src/schemas/form-input.ref.json +105 -0
  86. package/src/schemas/form-numeric.ref.json +60 -0
  87. package/src/schemas/form-one-of.ref.json +22 -0
  88. package/src/schemas/form-pattern.ref.json +42 -0
  89. package/src/schemas/form-radiogroup.ref.json +64 -0
  90. package/src/schemas/form-select.ref.json +123 -0
  91. package/src/schemas/form-switch.ref.json +39 -0
  92. package/src/schemas/form-tab.ref.json +50 -0
  93. package/src/schemas/form.ref.json +107 -0
  94. package/src/schemas/frontend-framework-structure.schema.json +178 -0
  95. package/src/schemas/frontend.ref.json +30 -0
  96. package/src/schemas/list.ref.json +196 -0
  97. package/src/schemas/module.ref.json +39 -0
  98. package/src/schemas/panel.ref.json +127 -0
  99. package/src/schemas/project.schema.json +39 -0
  100. package/src/schemas/todo.ref.json +10 -0
  101. package/src/utils/email.ts +56 -0
  102. package/src/utils/env.ts +9 -0
  103. package/src/utils/file.ts +139 -0
  104. package/src/utils/json.ts +100 -0
  105. package/src/utils/path.ts +51 -0
  106. package/src/utils/rapida-project.ts +17 -0
  107. package/tsconfig.json +27 -0
@@ -0,0 +1,77 @@
1
+ {
2
+ "$id": "backend.ref.json",
3
+ "type": "object",
4
+ "properties": {
5
+ "framework": {
6
+ "type": "string",
7
+ "enum": ["functions", "lambda", "laravel", "nest", "dotnet"]
8
+ },
9
+ "database": {
10
+ "type": "object",
11
+ "properties": {
12
+ "provider": {
13
+ "type": "string",
14
+ "enum": [
15
+ "mariadb",
16
+ "mongodb",
17
+ "oracle",
18
+ "postgresql",
19
+ "mysql",
20
+ "sqlserver"
21
+ ]
22
+ },
23
+ "connectionString": { "type": "string" },
24
+ "credentials": {
25
+ "type": "object",
26
+ "properties": {
27
+ "username": { "type": "string" },
28
+ "password": { "type": "string" },
29
+ "host": { "type": "string" },
30
+ "port": { "type": "integer" },
31
+ "databaseName": { "type": "string" }
32
+ },
33
+ "required": ["username", "password", "host", "databaseName"]
34
+ }
35
+ },
36
+ "required": ["provider", "connectionString", "credentials"]
37
+ },
38
+ "storage": {
39
+ "type": "object",
40
+ "properties": {
41
+ "provider": { "type": "string", "enum": ["gcs", "s3", "azure"] },
42
+ "publicBucketName": { "type": "string" },
43
+ "privateBucketName": { "type": "string" },
44
+ "credentials": {
45
+ "type": "object",
46
+ "properties": {
47
+ "projectId": { "type": "string" },
48
+ "privateKey": { "type": "string" },
49
+ "clientEmail": { "type": "string" }
50
+ },
51
+ "required": ["projectId", "privateKey", "clientEmail"]
52
+ }
53
+ },
54
+ "required": [
55
+ "provider",
56
+ "publicBucketName",
57
+ "privateBucketName",
58
+ "credentials"
59
+ ]
60
+ },
61
+ "logging": {
62
+ "type": "object",
63
+ "properties": {
64
+ "discordWebhookUrl": { "type": "string" }
65
+ }
66
+ },
67
+ "email": {
68
+ "type": "object",
69
+ "properties": {
70
+ "smtpUser": { "type": "string" },
71
+ "smtpPass": { "type": "string" },
72
+ "smtpFrom": { "type": "string" }
73
+ }
74
+ }
75
+ },
76
+ "required": ["framework", "database", "jwtSecret"]
77
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "$id": "bdd-and-e2e-narratives.ref.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "type": "array",
5
+ "items": {
6
+ "type": "object",
7
+ "properties": {
8
+ "title": {
9
+ "type": "string"
10
+ },
11
+ "description": {
12
+ "type": "string"
13
+ },
14
+ "businessRules": {
15
+ "$ref": "business-rules.ref.json"
16
+ },
17
+ "scenarios": {
18
+ "type": "array",
19
+ "items": {
20
+ "type": "object",
21
+ "properties": {
22
+ "title": {
23
+ "type": "string"
24
+ },
25
+ "description": {
26
+ "type": "string"
27
+ },
28
+ "businessRules": {
29
+ "$ref": "business-rules.ref.json"
30
+ }
31
+ },
32
+ "required": [
33
+ "title",
34
+ "description"
35
+ ]
36
+ }
37
+ },
38
+ "e2e": {
39
+ "type": "object",
40
+ "properties": {
41
+ "cypress": {
42
+ "type": "string"
43
+ }
44
+ },
45
+ "required": [
46
+ "cypress"
47
+ ]
48
+ }
49
+ },
50
+ "required": [
51
+ "title",
52
+ "description",
53
+ "scenarios",
54
+ "e2e"
55
+ ]
56
+ }
57
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "bddTitle": {
6
+ "type": "string"
7
+ },
8
+ "businessRules": {
9
+ "$ref": "business-rules.ref.json"
10
+ },
11
+ "forms": {
12
+ "type": "array",
13
+ "elements": {
14
+ "type": "object",
15
+ "properties": {
16
+ "forms": {
17
+ "$ref": "form.ref.json",
18
+ "narratives": {
19
+ "$ref": "bdd-and-e2e-narratives.ref.json"
20
+ }
21
+ },
22
+ "lists": {
23
+ "$ref": "list.ref.json",
24
+ "narratives": {
25
+ "$ref": "bdd-and-e2e-narratives.ref.json"
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ },
32
+ "required": [
33
+ "bddTitle",
34
+ "narratives"
35
+ ]
36
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$id": "business-plan.ref.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "type": "object",
5
+ "properties": {
6
+ "businessValue": {
7
+ "type": "string"
8
+ },
9
+ "targetMarket": {
10
+ "type": "string"
11
+ },
12
+ "benchmarkings": {
13
+ "type": "string"
14
+ },
15
+ "legalIssues": {
16
+ "type": "string"
17
+ },
18
+ "ethicalIssues": {
19
+ "type": "string"
20
+ },
21
+ "afterSale": {
22
+ "type": "string"
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "$id": "business-rules.ref.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "type": "array",
5
+ "items": {
6
+ "type": "object",
7
+ "properties": {
8
+ "rule": {
9
+ "type": "object",
10
+ "properties": {
11
+ "description": {
12
+ "type": "string"
13
+ },
14
+ "subrules": {
15
+ "type": "array",
16
+ "items": {
17
+ "type": "object",
18
+ "properties": {
19
+ "subrule": {
20
+ "type": "object",
21
+ "properties": {
22
+ "description": {
23
+ "type": "string"
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$id": "component-one-of.ref.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "oneOf": [
5
+ { "$ref": "form.ref.json" },
6
+ { "$ref": "list.ref.json" },
7
+ { "$ref": "data-table.ref.json" },
8
+ { "$ref": "data-card.ref.json" },
9
+ { "$ref": "data-grid.ref.json" },
10
+ { "$ref": "data-detail.ref.json" },
11
+ { "$ref": "data-chart.ref.json" },
12
+ { "$ref": "dashboard.ref.json" },
13
+ { "$ref": "panel.ref.json" }
14
+ ]
15
+ }
@@ -0,0 +1,111 @@
1
+ {
2
+ "$id": "dashboard.ref.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "type": "object",
5
+ "properties": {
6
+ "componentType": { "const": "dashboard" },
7
+ "id": { "type": "string" },
8
+ "title": { "type": "string" },
9
+ "icon": { "type": "string" },
10
+ "guards": {
11
+ "type": "string",
12
+ "enum": ["isAuthenticated", "isAuthorized"]
13
+ },
14
+ "businessRules": { "$ref": "business-rules.ref.json" },
15
+ "userStory": { "type": "string" },
16
+ "layout": {
17
+ "type": "array",
18
+ "items": {
19
+ "type": "object",
20
+ "properties": {
21
+ "id": { "type": "string" },
22
+ "title": { "type": "string" },
23
+ "columns": { "type": "number" },
24
+ "widgets": {
25
+ "type": "array",
26
+ "items": {
27
+ "type": "object",
28
+ "properties": {
29
+ "id": { "type": "string" },
30
+ "title": { "type": "string" },
31
+ "type": {
32
+ "type": "string",
33
+ "enum": ["stats", "chart", "table", "list", "component"]
34
+ },
35
+ "width": {
36
+ "type": "number",
37
+ "enum": [1, 2, 3, 4, 6, 12]
38
+ },
39
+ "height": {
40
+ "type": "string",
41
+ "enum": ["auto", "small", "medium", "large"]
42
+ },
43
+ "dataSource": { "$ref": "form-common-api-request.ref.json" },
44
+ "refreshInterval": { "type": "number" },
45
+ "component": {
46
+ "type": "object",
47
+ "properties": {
48
+ "type": {
49
+ "type": "string",
50
+ "enum": ["dataTable", "dataGrid", "dataCard", "dataChart"]
51
+ },
52
+ "config": {}
53
+ },
54
+ "required": ["type", "config"]
55
+ },
56
+ "statsConfig": {
57
+ "type": "object",
58
+ "properties": {
59
+ "property": { "type": "string" },
60
+ "format": { "type": "string" },
61
+ "icon": { "type": "string" },
62
+ "subtitle": { "type": "string" },
63
+ "trend": {
64
+ "type": "object",
65
+ "properties": {
66
+ "property": { "type": "string" },
67
+ "upIsGood": { "type": "boolean" }
68
+ },
69
+ "required": ["property"]
70
+ }
71
+ },
72
+ "required": ["property"]
73
+ },
74
+ "chartConfig": {
75
+ "type": "object",
76
+ "properties": {
77
+ "type": {
78
+ "type": "string",
79
+ "enum": ["line", "bar", "pie", "doughnut", "radar"]
80
+ },
81
+ "properties": {
82
+ "type": "object",
83
+ "properties": {
84
+ "x": { "type": "string" },
85
+ "y": {
86
+ "oneOf": [
87
+ { "type": "string" },
88
+ {
89
+ "type": "array",
90
+ "items": { "type": "string" }
91
+ }
92
+ ]
93
+ }
94
+ },
95
+ "required": ["x", "y"]
96
+ },
97
+ "options": {}
98
+ },
99
+ "required": ["type", "properties"]
100
+ }
101
+ },
102
+ "required": ["id", "title", "type", "width"]
103
+ }
104
+ }
105
+ },
106
+ "required": ["id", "columns", "widgets"]
107
+ }
108
+ }
109
+ },
110
+ "required": ["componentType", "id", "title", "layout"]
111
+ }
@@ -0,0 +1,245 @@
1
+ {
2
+ "$id": "data-card.ref.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "type": "object",
5
+ "properties": {
6
+ "componentType": {
7
+ "const": "dataCard"
8
+ },
9
+ "id": {
10
+ "type": "string"
11
+ },
12
+ "title": {
13
+ "type": "string"
14
+ },
15
+ "icon": {
16
+ "type": "string"
17
+ },
18
+ "guards": {
19
+ "type": "string",
20
+ "enum": ["isAuthenticated", "isAuthorized"]
21
+ },
22
+ "businessRules": {
23
+ "$ref": "business-rules.ref.json"
24
+ },
25
+ "userStory": {
26
+ "type": "string"
27
+ },
28
+ "dataSource": {
29
+ "$ref": "form-common-api-request.ref.json"
30
+ },
31
+ "layout": {
32
+ "type": "string",
33
+ "enum": ["horizontal", "vertical"]
34
+ },
35
+ "imageConfig": {
36
+ "type": "object",
37
+ "properties": {
38
+ "property": {
39
+ "type": "string"
40
+ },
41
+ "fallbackUrl": {
42
+ "type": "string"
43
+ },
44
+ "position": {
45
+ "type": "string",
46
+ "enum": ["top", "left", "right"]
47
+ },
48
+ "aspectRatio": {
49
+ "type": "string",
50
+ "enum": ["1:1", "4:3", "16:9"]
51
+ }
52
+ },
53
+ "required": ["property"]
54
+ },
55
+ "titleConfig": {
56
+ "type": "object",
57
+ "properties": {
58
+ "property": {
59
+ "type": "string"
60
+ },
61
+ "isLink": {
62
+ "type": "boolean"
63
+ },
64
+ "linkRoute": {
65
+ "type": "string"
66
+ },
67
+ "linkParamProperty": {
68
+ "type": "string"
69
+ }
70
+ },
71
+ "required": ["property"]
72
+ },
73
+ "subtitleConfig": {
74
+ "type": "object",
75
+ "properties": {
76
+ "property": {
77
+ "type": "string"
78
+ }
79
+ },
80
+ "required": ["property"]
81
+ },
82
+ "descriptionConfig": {
83
+ "type": "object",
84
+ "properties": {
85
+ "property": {
86
+ "type": "string"
87
+ },
88
+ "maxLength": {
89
+ "type": "number"
90
+ },
91
+ "showReadMore": {
92
+ "type": "boolean"
93
+ }
94
+ },
95
+ "required": ["property"]
96
+ },
97
+ "properties": {
98
+ "type": "array",
99
+ "items": {
100
+ "type": "object",
101
+ "properties": {
102
+ "property": {
103
+ "type": "string"
104
+ },
105
+ "label": {
106
+ "type": "string"
107
+ },
108
+ "type": {
109
+ "type": "string",
110
+ "enum": [
111
+ "text",
112
+ "date",
113
+ "currency",
114
+ "number",
115
+ "boolean",
116
+ "badge",
117
+ "icon",
118
+ "char",
119
+ "nchar",
120
+ "varchar",
121
+ "varchar2",
122
+ "nvarchar",
123
+ "longtext",
124
+ "clob",
125
+ "nclob",
126
+ "decimal",
127
+ "numeric",
128
+ "integer",
129
+ "float",
130
+ "double",
131
+ "real",
132
+ "timestamp",
133
+ "datetime",
134
+ "datetime2",
135
+ "uniqueidentifier"
136
+ ]
137
+ },
138
+ "format": {
139
+ "type": "string"
140
+ },
141
+ "isHtml": {
142
+ "type": "boolean"
143
+ }
144
+ },
145
+ "required": ["property", "label"]
146
+ }
147
+ },
148
+ "actions": {
149
+ "type": "array",
150
+ "items": {
151
+ "type": "object",
152
+ "properties": {
153
+ "icon": {
154
+ "type": "string"
155
+ },
156
+ "label": {
157
+ "type": "string"
158
+ },
159
+ "action": {
160
+ "type": "object",
161
+ "properties": {
162
+ "type": {
163
+ "type": "string",
164
+ "enum": ["link", "request", "event"]
165
+ },
166
+ "link": {
167
+ "type": "object",
168
+ "properties": {
169
+ "route": {
170
+ "type": "string"
171
+ },
172
+ "paramProperty": {
173
+ "type": "string"
174
+ }
175
+ },
176
+ "required": ["route"]
177
+ },
178
+ "request": {
179
+ "type": "object",
180
+ "properties": {
181
+ "endpoint": {
182
+ "type": "string"
183
+ },
184
+ "method": {
185
+ "type": "string",
186
+ "enum": ["GET", "POST", "PUT", "DELETE"]
187
+ },
188
+ "confirmMessage": {
189
+ "type": "string"
190
+ }
191
+ },
192
+ "required": ["endpoint", "method"]
193
+ },
194
+ "event": {
195
+ "type": "object",
196
+ "properties": {
197
+ "name": {
198
+ "type": "string"
199
+ },
200
+ "data": {}
201
+ },
202
+ "required": ["name"]
203
+ }
204
+ },
205
+ "required": ["type"]
206
+ },
207
+ "styling": {
208
+ "type": "object",
209
+ "properties": {
210
+ "variant": {
211
+ "type": "string",
212
+ "enum": ["primary", "secondary", "text", "outlined"]
213
+ },
214
+ "size": {
215
+ "type": "string",
216
+ "enum": ["sm", "md", "lg"]
217
+ }
218
+ }
219
+ }
220
+ },
221
+ "required": ["label", "action"]
222
+ }
223
+ },
224
+ "styling": {
225
+ "type": "object",
226
+ "properties": {
227
+ "variant": {
228
+ "type": "string",
229
+ "enum": ["default", "elevated", "flat", "outlined"]
230
+ },
231
+ "cardClickable": {
232
+ "type": "boolean"
233
+ }
234
+ }
235
+ }
236
+ },
237
+ "required": [
238
+ "componentType",
239
+ "id",
240
+ "dataSource",
241
+ "layout",
242
+ "titleConfig",
243
+ "properties"
244
+ ]
245
+ }