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,52 @@
1
+ import type { IApiRequest } from "./form-input.interface";
2
+ import type { IBusinessRule } from "./project.interface";
3
+
4
+ export interface IDashboard {
5
+ componentType: "dashboard";
6
+ id: string;
7
+ title: string;
8
+ icon?: string;
9
+ guards?: "isAuthenticated" | "isAuthorized";
10
+ businessRules?: IBusinessRule[];
11
+ userStory?: string;
12
+ layout: IDashboardSection[];
13
+ }
14
+
15
+ export interface IDashboardSection {
16
+ id: string;
17
+ title?: string;
18
+ columns: number;
19
+ widgets: IDashboardWidget[];
20
+ }
21
+
22
+ export interface IDashboardWidget {
23
+ id: string;
24
+ title: string;
25
+ type: "stats" | "chart" | "table" | "list" | "component";
26
+ width: 1 | 2 | 3 | 4 | 6 | 12; // Colunas que o widget ocupa em um grid de 12 colunas
27
+ height?: "auto" | "small" | "medium" | "large";
28
+ dataSource?: IApiRequest;
29
+ refreshInterval?: number; // Em segundos
30
+ component?: {
31
+ type: "dataTable" | "dataGrid" | "dataCard" | "dataChart";
32
+ config: any; // Referência para outra configuração de componente
33
+ };
34
+ statsConfig?: {
35
+ property: string;
36
+ format?: string;
37
+ icon?: string;
38
+ subtitle?: string;
39
+ trend?: {
40
+ property: string;
41
+ upIsGood?: boolean;
42
+ };
43
+ };
44
+ chartConfig?: {
45
+ type: "line" | "bar" | "pie" | "doughnut" | "radar";
46
+ properties: {
47
+ x: string;
48
+ y: string | string[];
49
+ };
50
+ options?: any; // Opções específicas do chart
51
+ };
52
+ }
@@ -0,0 +1,45 @@
1
+ export interface IPanel {
2
+ componentType: "panel";
3
+ id: string;
4
+ title?: string;
5
+ subtitle?: string;
6
+ userStory?: string;
7
+ icon?: string;
8
+ collapsible?: boolean;
9
+ collapsed?: boolean;
10
+ headerActions?: IPanelAction[];
11
+ content: {
12
+ type: "component" | "html" | "markdown";
13
+ component?: {
14
+ type: "dataTable" | "dataGrid" | "dataCard" | "dataChart" | "form";
15
+ config: any; // Referência para outra configuração de componente
16
+ };
17
+ html?: string;
18
+ markdown?: string;
19
+ };
20
+ styling?: {
21
+ variant?: "default" | "outlined" | "elevated" | "flat";
22
+ padding?: "none" | "small" | "medium" | "large";
23
+ maxHeight?: string;
24
+ scrollable?: boolean;
25
+ };
26
+ }
27
+
28
+ export interface IPanelAction {
29
+ icon?: string;
30
+ label?: string;
31
+ action: {
32
+ type: "link" | "request" | "event";
33
+ link?: {
34
+ route: string;
35
+ };
36
+ request?: {
37
+ endpoint: string;
38
+ method: "GET" | "POST" | "PUT" | "DELETE";
39
+ };
40
+ event?: {
41
+ name: string;
42
+ data?: any;
43
+ };
44
+ };
45
+ }
@@ -0,0 +1,50 @@
1
+ import type { IApiRequest } from "./form-input.interface";
2
+ import type { IBusinessRule } from "./project.interface";
3
+
4
+ export interface IList {
5
+ componentType: "list";
6
+ id: string; // named according to component file name (<id>.<componentType>.ts)
7
+ title: string;
8
+ userStory?: string;
9
+ guards?: string[];
10
+ dataSource: IApiRequest;
11
+ businessRules?: IBusinessRule[];
12
+ properties: {
13
+ property: string; // property taken from dataSource response. e.g.: "email"
14
+ label?: string; // label to property. e.g.: "E-mail"
15
+ type?: "title" | "subtitle" | "description" | "video" | "image" | "images" | "icon";
16
+ isHtml?: boolean;
17
+ isLink?: boolean;
18
+ isTimestamp?: boolean;
19
+ callToAction?: {
20
+ link: string; // e.g.: "/user"
21
+ usePropertyAsQuery?: boolean; // if true then "/user/<email>"
22
+ };
23
+ }[]; // properties taken from dataSource
24
+ cardAsALink?: {
25
+ link: string; // e.g.: "/user"
26
+ propertiesAsQueryParam?: string[]; // if, for example, ["_id", "email"], then "/user?_id=value&email=value"
27
+ propertiesAsPathParam?: string[]; // if, for example, ["_id", "email"], then "/user/<_id>/<email>"
28
+ };
29
+ callsToActionMenu?: {
30
+ icon: string; // Material icons e.g: "pencil"
31
+ label: string; // e.g: "Editar"
32
+ action: {
33
+ link: { // frontend url to be redirected on action completition
34
+ endpoint: string; // e.g.: "/user"
35
+ propertiesAsQueryParam?: string[]; // if, for example, ["_id", "email"], then "/user?_id=value&email=value"
36
+ propertiesAsPathParam?: string[]; // if, for example, ["_id", "email"], then "/user/<_id>/<email>"
37
+ };
38
+ request?: { // backend request endpoint that must be processed before link redirection
39
+ endpoint: string; // e.g.: "/user"
40
+ propertiesAsQueryParam?: string[]; // if, for example, ["_id", "email"], then "/user?_id=value&email=value"
41
+ propertiesAsPathParam?: string[]; // if, for example, ["_id", "email"], then "/user/<_id>/<email>"
42
+ verb: "get" | "post" | "put" | "delete";
43
+ dialog?: {
44
+ title: string;
45
+ message: string;
46
+ };
47
+ };
48
+ };
49
+ }[];
50
+ }
@@ -0,0 +1,48 @@
1
+ interface IDatabase {
2
+ provider:
3
+ | "mariadb"
4
+ | "mongodb"
5
+ | "oracle"
6
+ | "postgresql"
7
+ | "mysql"
8
+ | "sqlserver";
9
+ connectionString: string;
10
+ credentials: {
11
+ username: string;
12
+ password: string;
13
+ host: string;
14
+ databaseName: string;
15
+ port?: number;
16
+ };
17
+ }
18
+
19
+ interface IStorage {
20
+ provider: "gcs" | "s3" | "azure";
21
+ publicBucketName: string;
22
+ privateBucketName: string;
23
+ credentials: {
24
+ projectId: string;
25
+ privateKey: string;
26
+ clientEmail: string;
27
+ };
28
+ }
29
+
30
+ interface ILogging {
31
+ discordWebhookUrl?: string;
32
+ }
33
+
34
+ interface IEmail {
35
+ smtpUser?: string;
36
+ smtpPass?: string;
37
+ smtpFrom?: string;
38
+ }
39
+
40
+ export interface IBackend {
41
+ framework: "functions" | "lambda" | "laravel" | "nest" | "dotnet";
42
+ database: IDatabase;
43
+ jwtSecret: string;
44
+ baseUrl?: string;
45
+ storage?: IStorage;
46
+ logging?: ILogging;
47
+ email?: IEmail;
48
+ }
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Defines the color palette for a theme.
3
+ * Includes primary, secondary, tertiary, and status colors.
4
+ */
5
+ interface IColorPalette {
6
+ primary?: string;
7
+ primaryContrast?: string;
8
+ secondary?: string;
9
+ secondaryContrast?: string;
10
+ tertiary?: string;
11
+ tertiaryContrast?: string;
12
+ quaternary?: string;
13
+ quaternaryContrast?: string;
14
+ background?: string;
15
+ error?: string;
16
+ success?: string;
17
+ warning?: string;
18
+ info?: string;
19
+ }
20
+
21
+ /**
22
+ * Defines typography styles for a theme.
23
+ */
24
+ interface ITypography {
25
+ fontFamily?: string;
26
+ fontSize?: string;
27
+ }
28
+
29
+ /**
30
+ * Defines border styles for a theme.
31
+ */
32
+ interface IBorders {
33
+ radius?: string;
34
+ }
35
+
36
+ /**
37
+ * Defines shadow styles for a theme.
38
+ */
39
+ interface IShadows {
40
+ boxShadow?: string;
41
+ }
42
+
43
+ /**
44
+ * Defines styles for form input elements.
45
+ */
46
+ interface IInputStyles {
47
+ background?: string;
48
+ text?: string;
49
+ border?: string;
50
+ borderRadius?: string;
51
+ focusBorder?: string;
52
+ placeholder?: string;
53
+ width?: string;
54
+ }
55
+
56
+ /**
57
+ * Defines styles for button elements.
58
+ */
59
+ interface IButtonStyles {
60
+ background?: string;
61
+ text?: string;
62
+ border?: string;
63
+ borderRadius?: string;
64
+ hoverBackground?: string;
65
+ hoverText?: string;
66
+ hoverBorder?: string;
67
+ disabledBackground?: string;
68
+ disabledText?: string;
69
+ disabledBorder?: string;
70
+ }
71
+
72
+ /**
73
+ * Defines styles for label elements.
74
+ */
75
+ interface ILabelStyles {
76
+ text?: string;
77
+ fontSize?: string;
78
+ fontWeight?: string;
79
+ }
80
+
81
+ /**
82
+ * Defines styles for fieldset elements.
83
+ */
84
+ interface IFieldsetStyles {
85
+ border?: string;
86
+ borderRadius?: string;
87
+ legendText?: string;
88
+ legendFontSize?: string;
89
+ legendFontWeight?: string;
90
+ }
91
+
92
+ /**
93
+ * Groups all component-specific styles.
94
+ */
95
+ interface IComponentStyles {
96
+ input?: IInputStyles;
97
+ button?: IButtonStyles;
98
+ label?: ILabelStyles;
99
+ fieldset?: IFieldsetStyles;
100
+ }
101
+
102
+ /**
103
+ * Represents a complete theme definition, combining palette, typography,
104
+ * and component-specific styles.
105
+ */
106
+ interface ITheme {
107
+ colors?: IColorPalette;
108
+ typography?: ITypography;
109
+ borders?: IBorders;
110
+ shadows?: IShadows;
111
+ spacing?: string;
112
+ maxWidth?: string;
113
+ headerHeight?: string;
114
+ footerHeight?: string;
115
+ components?: IComponentStyles;
116
+ }
117
+
118
+ /**
119
+ * Defines the style structure for the entire project, allowing for
120
+ * different themes to be applied to different layout sections.
121
+ */
122
+ export interface IStyle {
123
+ themeName: string;
124
+ overall?: ITheme;
125
+ main?: ITheme;
126
+ navBar?: ITheme;
127
+ sideBar?: ITheme;
128
+ footer?: ITheme;
129
+ }
@@ -0,0 +1,79 @@
1
+ import type { IDataCard } from "./data-card.interface";
2
+ import type { IDataChart } from "./data-chart.interface";
3
+ import type { IDataDetail } from "./data-detail.interface";
4
+ import type { IDataGrid } from "./data-grid.interface";
5
+ import type { IDataTable } from "./data-table.interface";
6
+ import type { IForm } from "./form.interface";
7
+ import type { IDashboard } from "./layout-dashboard.interface";
8
+ import type { IPanel } from "./layout-panel.interface";
9
+ import type { IList } from "./list.interface";
10
+ import type { IBackend } from "./project-backend.interface";
11
+ import type { IStyle } from "./project-style.interface";
12
+
13
+ export interface IProject {
14
+ id: string;
15
+ title: string;
16
+ description: string;
17
+ businessPlan?: IBusinessPLan;
18
+ businessRules?: IBusinessRule[];
19
+ flow:
20
+ | "autentikigo"
21
+ | "invito"
22
+ | "permeson"
23
+ | "komerco"
24
+ | "labotablo"
25
+ | "reto";
26
+ frontend?: IFrontend;
27
+ backend?: IBackend;
28
+ modules?: IModule[];
29
+ styles?: IStyle[];
30
+ }
31
+
32
+ interface IFrontend {
33
+ framework: "angular" | "flutter" | "react" | "reactnative" | "svelte" | "vue";
34
+ uiKit: "antdesign" | "bootstrap" | "material" | "flowbite";
35
+ }
36
+
37
+ interface IBusinessPLan {
38
+ businessValue: string;
39
+ targetMarket: string;
40
+ benchmarkings: string;
41
+ legalIssues: string;
42
+ ethicalIssues: string;
43
+ afterSales: string;
44
+ monetization?: string;
45
+ }
46
+
47
+ export interface IBusinessRule {
48
+ rule: {
49
+ description: string;
50
+ subrules?: {
51
+ description: string;
52
+ }[];
53
+ };
54
+ }
55
+
56
+ export interface IModule {
57
+ id: string;
58
+ title: string;
59
+ icon: string;
60
+ components: IComponent[];
61
+ businessRules?: IBusinessRule[];
62
+ todo?: ITodo[];
63
+ }
64
+
65
+ export interface ITodo {
66
+ title: string;
67
+ description: string;
68
+ }
69
+
70
+ export type IComponent =
71
+ | IForm
72
+ | IList
73
+ | IDataTable
74
+ | IDataCard
75
+ | IDataGrid
76
+ | IDataDetail
77
+ | IDataChart
78
+ | IDashboard
79
+ | IPanel;
@@ -0,0 +1,35 @@
1
+ export interface IYamlTemplateSkeleton {
2
+ controller: {
3
+ skeleton: string;
4
+ },
5
+ template: {
6
+ skeleton: string;
7
+ rapidaReplacement1Label: string;
8
+ rapidaReplacement2Label: string;
9
+ rapidaReplacement1Placeholder: string;
10
+ rapidaReplacement2Placeholder: string;
11
+ rapidaReplacement1Tooltip: string;
12
+ rapidaReplacement2Tooltip: string;
13
+ rapidaReplacement1Autofocus: string;
14
+ rapidaReplacement2Autofocus: string;
15
+ rapidaReplacement1Disabled: string;
16
+ rapidaReplacement2Disabled: string;
17
+ rapidaReplacement1Required: string;
18
+ rapidaReplacement2Required: string;
19
+ rapidaReplacement1Unique: string;
20
+ rapidaReplacement2Unique: string;
21
+ rapidaReplacement1Maxlength: string;
22
+ rapidaReplacement2Maxlength: string;
23
+ rapidaReplacement1Minlength: string;
24
+ rapidaReplacement2Minlength: string;
25
+ rapidaReplacement1Conditions: string;
26
+ rapidaReplacement2Conditions: string;
27
+ },
28
+ style: {
29
+ skeleton: string;
30
+ }
31
+ }
32
+
33
+ export interface IYamlStyleSkeleton {
34
+ skeleton: string;
35
+ }
@@ -0,0 +1,194 @@
1
+ {
2
+ "$id": "framework-structure-vue.json",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "type": "object",
5
+ "properties": {
6
+ "projectFolderCase": {
7
+ "type": "string",
8
+ "enum": ["kebab", "snake", "pascal", "camel"]
9
+ },
10
+ "controllerFileNomenclature": {
11
+ "type": "object",
12
+ "properties": {
13
+ "case": {
14
+ "type": "string",
15
+ "enum": ["kebab", "snake", "pascal", "camel"]
16
+ },
17
+ "keyword": {
18
+ "type": "string"
19
+ }
20
+ },
21
+ "required": ["case"]
22
+ },
23
+ "modelFileNomenclature": {
24
+ "type": "object",
25
+ "properties": {
26
+ "case": {
27
+ "type": "string",
28
+ "enum": ["kebab", "snake", "pascal", "camel"]
29
+ },
30
+ "keyword": {
31
+ "type": "string"
32
+ }
33
+ },
34
+ "required": ["case"]
35
+ },
36
+ "moduleFileNomenclature": {
37
+ "type": "object",
38
+ "properties": {
39
+ "case": {
40
+ "type": "string",
41
+ "enum": ["kebab", "snake", "pascal", "camel"]
42
+ },
43
+ "keyword": {
44
+ "type": "string"
45
+ }
46
+ },
47
+ "required": ["case"]
48
+ },
49
+ "repositoryFileNomenclature": {
50
+ "type": "object",
51
+ "properties": {
52
+ "case": {
53
+ "type": "string",
54
+ "enum": ["kebab", "snake", "pascal", "camel"]
55
+ },
56
+ "keyword": {
57
+ "type": "string"
58
+ }
59
+ },
60
+ "required": ["case"]
61
+ },
62
+ "componentPath": {
63
+ "type": "string"
64
+ },
65
+ "controllerPath": {
66
+ "type": "string"
67
+ },
68
+ "modelPath": {
69
+ "type": "string"
70
+ },
71
+ "modulePath": {
72
+ "type": "string"
73
+ },
74
+ "repositoryPath": {
75
+ "type": "string"
76
+ },
77
+ "controllerFile": {
78
+ "type": "object",
79
+ "properties": {
80
+ "hasControllerFile": {
81
+ "type": "boolean"
82
+ },
83
+ "controllerFileExtension": {
84
+ "type": "string"
85
+ }
86
+ },
87
+ "required": ["hasControllerFile"]
88
+ },
89
+ "modelFile": {
90
+ "type": "object",
91
+ "properties": {
92
+ "hasModelFile": {
93
+ "type": "boolean"
94
+ },
95
+ "modelFileExtension": {
96
+ "type": "string"
97
+ }
98
+ },
99
+ "required": ["hasModelFile"]
100
+ },
101
+ "moduleFile": {
102
+ "type": "object",
103
+ "properties": {
104
+ "hasModuleFile": {
105
+ "type": "boolean"
106
+ },
107
+ "moduleFileExtension": {
108
+ "type": "string"
109
+ }
110
+ },
111
+ "required": ["hasModuleFile"]
112
+ },
113
+ "repositoryFile": {
114
+ "type": "object",
115
+ "properties": {
116
+ "hasRepositoryFile": {
117
+ "type": "boolean"
118
+ },
119
+ "repositoryFileExtension": {
120
+ "type": "string"
121
+ }
122
+ },
123
+ "required": ["hasRepositoryFile"]
124
+ },
125
+ "uniqueFile": {
126
+ "type": "object",
127
+ "properties": {
128
+ "hasUniqueFile": {
129
+ "type": "boolean"
130
+ },
131
+ "uniqueFileExtension": {
132
+ "type": "string"
133
+ }
134
+ },
135
+ "required": ["hasUniqueFile"]
136
+ },
137
+ "sourcePath": {
138
+ "type": "string",
139
+ "description": "The source path of the framework"
140
+ },
141
+ "hasComponentSpecificFolder": {
142
+ "type": "boolean"
143
+ },
144
+ "dependencies": {
145
+ "type": "object",
146
+ "description": "Dependencies according to components elements",
147
+ "properties": {
148
+ "array": {
149
+ "type": "array",
150
+ "elements": [
151
+ {
152
+ "type": "string",
153
+ "description": "Package name"
154
+ }
155
+ ]
156
+ },
157
+ "autocomplete": {
158
+ "type": "array",
159
+ "elements": [
160
+ {
161
+ "type": "string",
162
+ "description": "Package name"
163
+ }
164
+ ]
165
+ },
166
+ "wysiwyg": {
167
+ "type": "array",
168
+ "elements": [
169
+ {
170
+ "type": "string",
171
+ "description": "Package name"
172
+ }
173
+ ]
174
+ }
175
+ }
176
+ }
177
+ },
178
+ "required": [
179
+ "projectFolderCase",
180
+ "controllerFileNomenclature",
181
+ "modelFileNomenclature",
182
+ "moduleFileNomenclature",
183
+ "repositoryFileNomenclature",
184
+ "componentPath",
185
+ "controllerPath",
186
+ "modelFile",
187
+ "moduleFile",
188
+ "repositoryFile",
189
+ "uniqueFile",
190
+ "sourcePath",
191
+ "hasComponentSpecificFolder",
192
+ "dependencies"
193
+ ]
194
+ }