arkos 1.4.0-canary.91 → 1.4.1-beta

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 (170) hide show
  1. package/dist/cjs/app.js +1 -1
  2. package/dist/cjs/app.js.map +1 -1
  3. package/dist/cjs/exports/index.js.map +1 -1
  4. package/dist/cjs/modules/auth/auth.controller.js +1 -1
  5. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  6. package/dist/cjs/modules/auth/auth.service.js +3 -4
  7. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  8. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +56 -8
  9. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
  10. package/dist/cjs/modules/base/base.controller.js +6 -3
  11. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  12. package/dist/cjs/modules/base/base.middlewares.js +17 -5
  13. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  14. package/dist/cjs/modules/error-handler/error-handler.controller.js +2 -2
  15. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  16. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
  17. package/dist/cjs/modules/swagger/swagger.router.js +6 -4
  18. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  19. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js +7 -0
  20. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js.map +1 -0
  21. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +326 -183
  22. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
  23. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +374 -288
  24. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +1 -1
  25. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -5
  26. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
  27. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +280 -243
  28. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -1
  29. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +3 -0
  30. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  31. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +8 -6
  32. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
  33. package/dist/cjs/server.js +17 -15
  34. package/dist/cjs/server.js.map +1 -1
  35. package/dist/cjs/types/index.js.map +1 -1
  36. package/dist/cjs/types/new-arkos-config.js.map +1 -1
  37. package/dist/cjs/utils/arkos-router/index.js +50 -10
  38. package/dist/cjs/utils/arkos-router/index.js.map +1 -1
  39. package/dist/cjs/utils/arkos-router/types/index.js.map +1 -1
  40. package/dist/cjs/utils/arkos-router/utils/helpers/index.js +11 -0
  41. package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +1 -1
  42. package/dist/cjs/utils/cli/dev.js +18 -57
  43. package/dist/cjs/utils/cli/dev.js.map +1 -1
  44. package/dist/cjs/utils/cli/export-auth-action.js +1 -1
  45. package/dist/cjs/utils/cli/export-auth-action.js.map +1 -1
  46. package/dist/cjs/utils/cli/generate.js +3 -3
  47. package/dist/cjs/utils/cli/generate.js.map +1 -1
  48. package/dist/cjs/utils/cli/index.js +1 -1
  49. package/dist/cjs/utils/cli/index.js.map +1 -1
  50. package/dist/cjs/utils/cli/start.js +19 -12
  51. package/dist/cjs/utils/cli/start.js.map +1 -1
  52. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -1
  53. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js +51 -6
  54. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js.map +1 -1
  55. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +3 -3
  56. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +1 -1
  57. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +3 -3
  58. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +1 -1
  59. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js +6 -3
  60. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js.map +1 -1
  61. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +3 -1
  62. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
  63. package/dist/cjs/utils/dotenv.helpers.js +15 -7
  64. package/dist/cjs/utils/dotenv.helpers.js.map +1 -1
  65. package/dist/cjs/utils/helpers/api.features.helpers.js +174 -81
  66. package/dist/cjs/utils/helpers/api.features.helpers.js.map +1 -1
  67. package/dist/cjs/utils/helpers/prisma.helpers.js +40 -1
  68. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  69. package/dist/cjs/utils/helpers/routers.helpers.js +0 -1
  70. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -1
  71. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +19 -4
  72. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  73. package/dist/cjs/utils/validate-dto.js +1 -5
  74. package/dist/cjs/utils/validate-dto.js.map +1 -1
  75. package/dist/cjs/utils/validate-schema.js +2 -7
  76. package/dist/cjs/utils/validate-schema.js.map +1 -1
  77. package/dist/esm/app.js +1 -1
  78. package/dist/esm/app.js.map +1 -1
  79. package/dist/esm/exports/index.js.map +1 -1
  80. package/dist/esm/modules/auth/auth.controller.js +1 -1
  81. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  82. package/dist/esm/modules/auth/auth.service.js +4 -5
  83. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  84. package/dist/esm/modules/auth/utils/services/auth-action.service.js +56 -5
  85. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  86. package/dist/esm/modules/base/base.controller.js +6 -3
  87. package/dist/esm/modules/base/base.controller.js.map +1 -1
  88. package/dist/esm/modules/base/base.middlewares.js +17 -5
  89. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  90. package/dist/esm/modules/error-handler/error-handler.controller.js +2 -2
  91. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  92. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
  93. package/dist/esm/modules/swagger/swagger.router.js +6 -4
  94. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  95. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js +5 -0
  96. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js.map +1 -0
  97. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +326 -183
  98. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
  99. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +374 -288
  100. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +1 -1
  101. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -2
  102. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
  103. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +280 -243
  104. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -1
  105. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +3 -0
  106. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  107. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +8 -6
  108. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
  109. package/dist/esm/server.js +17 -15
  110. package/dist/esm/server.js.map +1 -1
  111. package/dist/esm/types/index.js.map +1 -1
  112. package/dist/esm/types/new-arkos-config.js.map +1 -1
  113. package/dist/esm/utils/arkos-router/index.js +51 -11
  114. package/dist/esm/utils/arkos-router/index.js.map +1 -1
  115. package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
  116. package/dist/esm/utils/arkos-router/utils/helpers/index.js +10 -0
  117. package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
  118. package/dist/esm/utils/cli/dev.js +19 -58
  119. package/dist/esm/utils/cli/dev.js.map +1 -1
  120. package/dist/esm/utils/cli/export-auth-action.js +1 -1
  121. package/dist/esm/utils/cli/export-auth-action.js.map +1 -1
  122. package/dist/esm/utils/cli/generate.js +3 -3
  123. package/dist/esm/utils/cli/generate.js.map +1 -1
  124. package/dist/esm/utils/cli/index.js +1 -1
  125. package/dist/esm/utils/cli/index.js.map +1 -1
  126. package/dist/esm/utils/cli/start.js +19 -12
  127. package/dist/esm/utils/cli/start.js.map +1 -1
  128. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  129. package/dist/esm/utils/cli/utils/runtime-cli-commander.js +52 -7
  130. package/dist/esm/utils/cli/utils/runtime-cli-commander.js.map +1 -1
  131. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +3 -3
  132. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +1 -1
  133. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +3 -3
  134. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +1 -1
  135. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js +6 -3
  136. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js.map +1 -1
  137. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +3 -1
  138. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
  139. package/dist/esm/utils/dotenv.helpers.js +15 -7
  140. package/dist/esm/utils/dotenv.helpers.js.map +1 -1
  141. package/dist/esm/utils/helpers/api.features.helpers.js +174 -81
  142. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -1
  143. package/dist/esm/utils/helpers/prisma.helpers.js +39 -1
  144. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -1
  145. package/dist/esm/utils/helpers/routers.helpers.js +0 -1
  146. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  147. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +19 -4
  148. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  149. package/dist/esm/utils/validate-dto.js +1 -2
  150. package/dist/esm/utils/validate-dto.js.map +1 -1
  151. package/dist/esm/utils/validate-schema.js +2 -4
  152. package/dist/esm/utils/validate-schema.js.map +1 -1
  153. package/dist/types/exports/index.d.ts +2 -1
  154. package/dist/types/modules/auth/auth.router.d.ts +1 -1
  155. package/dist/types/modules/auth/auth.service.d.ts +2 -2
  156. package/dist/types/modules/base/base.router.d.ts +1 -1
  157. package/dist/types/modules/swagger/utils/built-in-route-path-object-manager.d.ts +4 -0
  158. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +1 -1
  159. package/dist/types/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.d.ts +1 -1
  160. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +1 -1
  161. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +1 -1
  162. package/dist/types/types/index.d.ts +5 -5
  163. package/dist/types/types/new-arkos-config.d.ts +1 -1
  164. package/dist/types/utils/arkos-router/index.d.ts +2 -1
  165. package/dist/types/utils/arkos-router/types/index.d.ts +15 -14
  166. package/dist/types/utils/arkos-router/utils/helpers/index.d.ts +1 -0
  167. package/dist/types/utils/cli/dev.d.ts +1 -1
  168. package/dist/types/utils/cli/start.d.ts +1 -1
  169. package/dist/types/utils/helpers/prisma.helpers.d.ts +1 -0
  170. package/package.json +2 -2
@@ -19,8 +19,8 @@ const getSchemaMode = (action, arkosConfig) => {
19
19
  return swaggerMode;
20
20
  };
21
21
  exports.getSchemaMode = getSchemaMode;
22
- function getAuthenticationJsonSchemaPaths(arkosConfig) {
23
- const paths = {};
22
+ function getAuthenticationJsonSchemaPaths(arkosConfig, existingPaths) {
23
+ const paths = { ...existingPaths };
24
24
  if (!arkosConfig.swagger?.mode)
25
25
  return paths;
26
26
  const AuthModuleComponents = (0, dynamic_loader_1.getModuleComponents)("auth");
@@ -32,201 +32,251 @@ function getAuthenticationJsonSchemaPaths(arkosConfig) {
32
32
  return (0, base_router_helpers_1.isEndpointDisabled)(routerConfig, endpoint);
33
33
  };
34
34
  if (!isAuthEndpointDisabled("login")) {
35
+ const pathname = "/api/auth/login";
36
+ if (!paths[pathname])
37
+ paths[pathname] = {};
35
38
  const loginMode = (0, exports.getSchemaMode)("login", arkosConfig);
36
- paths["/api/auth/login"] = {
37
- post: {
38
- tags: ["Authentication"],
39
- summary: "Login to the system",
40
- description: "Authenticates a user and returns an access token",
41
- operationId: "login",
42
- requestBody: {
43
- description: "User credentials",
44
- required: true,
45
- content: {
46
- "application/json": {
47
- schema: {
48
- $ref: (0, swagger_router_helpers_1.getSchemaRef)("Login", loginMode),
49
- },
39
+ const currentPath = paths[pathname].post;
40
+ const defaultSpec = {
41
+ tags: ["Authentication", ...(currentPath?.tags || [])].filter((tag) => tag !== "Defaults"),
42
+ summary: currentPath?.summary === pathname || !currentPath?.summary
43
+ ? "Login to the system"
44
+ : currentPath?.summary,
45
+ description: currentPath?.description ||
46
+ "Authenticates a user and returns an access token",
47
+ operationId: currentPath?.operationId?.includes(pathname)
48
+ ? "login"
49
+ : currentPath?.operationId,
50
+ requestBody: currentPath?.requestBody || {
51
+ description: "User credentials",
52
+ required: true,
53
+ content: {
54
+ "application/json": {
55
+ schema: {
56
+ $ref: (0, swagger_router_helpers_1.getSchemaRef)("Login", loginMode),
50
57
  },
51
58
  },
52
59
  },
53
- responses: {
54
- "200": {
55
- description: "Login successful",
56
- content: {
57
- "application/json": {
58
- schema: {
59
- type: "object",
60
- properties: {
61
- accessToken: {
62
- type: "string",
63
- description: "JWT access token",
64
- },
60
+ },
61
+ responses: {
62
+ ...(currentPath?.responses || {}),
63
+ "200": currentPath?.responses?.["200"] || {
64
+ description: "Login successful",
65
+ content: {
66
+ "application/json": {
67
+ schema: {
68
+ type: "object",
69
+ properties: {
70
+ accessToken: {
71
+ type: "string",
72
+ description: "JWT access token",
65
73
  },
66
74
  },
67
75
  },
68
76
  },
69
77
  },
70
- "400": {
71
- description: "Invalid input data",
72
- },
73
- "401": {
74
- description: "Invalid credentials",
75
- },
78
+ },
79
+ "400": currentPath?.responses?.["400"] || {
80
+ description: "Invalid input data",
81
+ },
82
+ "401": currentPath?.responses?.["401"] || {
83
+ description: "Invalid credentials",
76
84
  },
77
85
  },
78
86
  };
87
+ paths[pathname].post = { ...(currentPath || {}), ...defaultSpec };
79
88
  }
80
89
  if (!isAuthEndpointDisabled("logout")) {
81
- paths["/api/auth/logout"] = {
82
- delete: {
83
- tags: ["Authentication"],
84
- summary: "Logout from the system",
85
- description: "Invalidates the current user's JWT token",
86
- operationId: "logout",
87
- security: [{ BearerAuth: [] }],
88
- responses: {
89
- "204": {
90
- description: "Logout successful",
91
- },
92
- "401": {
93
- description: "Authentication required",
94
- },
90
+ const pathname = "/api/auth/logout";
91
+ if (!paths[pathname])
92
+ paths[pathname] = {};
93
+ const currentPath = paths[pathname].delete;
94
+ const defaultSpec = {
95
+ tags: ["Authentication", ...(currentPath?.tags || [])].filter((tag) => tag !== "Defaults"),
96
+ summary: currentPath?.summary === pathname || !currentPath?.summary
97
+ ? "Logout from the system"
98
+ : currentPath?.summary,
99
+ description: currentPath?.description || "Invalidates the current user's JWT token",
100
+ operationId: currentPath?.operationId?.includes(pathname)
101
+ ? "logout"
102
+ : currentPath?.operationId,
103
+ security: [{ BearerAuth: [] }],
104
+ responses: {
105
+ ...(currentPath?.responses || {}),
106
+ "204": currentPath?.responses?.["204"] || {
107
+ description: "Logout successful",
108
+ },
109
+ "401": currentPath?.responses?.["401"] || {
110
+ description: "Authentication required",
95
111
  },
96
112
  },
97
113
  };
114
+ paths[pathname].delete = { ...(currentPath || {}), ...defaultSpec };
98
115
  }
99
116
  if (!isAuthEndpointDisabled("signup")) {
117
+ const pathname = "/api/auth/signup";
118
+ if (!paths[pathname])
119
+ paths[pathname] = {};
100
120
  const signupMode = (0, exports.getSchemaMode)("signup", arkosConfig);
101
121
  const userMode = (0, exports.getSchemaMode)("user", arkosConfig);
102
- paths["/api/auth/signup"] = {
103
- post: {
104
- tags: ["Authentication"],
105
- summary: "Register a new user",
106
- description: "Creates a new user account",
107
- operationId: "signup",
108
- requestBody: {
109
- description: "User registration data",
110
- required: true,
122
+ const currentPath = paths[pathname].post;
123
+ const defaultSpec = {
124
+ tags: ["Authentication", ...(currentPath?.tags || [])].filter((tag) => tag !== "Defaults"),
125
+ summary: currentPath?.summary === pathname || !currentPath?.summary
126
+ ? "Register a new user"
127
+ : currentPath?.summary,
128
+ description: currentPath?.description || "Creates a new user account",
129
+ operationId: currentPath?.operationId?.includes(pathname)
130
+ ? "signup"
131
+ : currentPath?.operationId,
132
+ requestBody: currentPath?.requestBody || {
133
+ description: "User registration data",
134
+ required: true,
135
+ content: {
136
+ "application/json": {
137
+ schema: {
138
+ $ref: (0, swagger_router_helpers_1.getSchemaRef)("Signup", signupMode),
139
+ },
140
+ },
141
+ },
142
+ },
143
+ responses: {
144
+ ...(currentPath?.responses || {}),
145
+ "201": currentPath?.responses?.["201"] || {
146
+ description: "User created successfully",
111
147
  content: {
112
148
  "application/json": {
113
149
  schema: {
114
- $ref: (0, swagger_router_helpers_1.getSchemaRef)("Signup", signupMode),
150
+ $ref: (0, swagger_router_helpers_1.getSchemaRef)("User", userMode),
115
151
  },
116
152
  },
117
153
  },
118
154
  },
119
- responses: {
120
- "201": {
121
- description: "User created successfully",
122
- content: {
123
- "application/json": {
124
- schema: {
125
- $ref: (0, swagger_router_helpers_1.getSchemaRef)("User", userMode),
126
- },
127
- },
128
- },
129
- },
130
- "400": {
131
- description: "Invalid input data",
132
- },
133
- "409": {
134
- description: "User already exists",
135
- },
155
+ "400": currentPath?.responses?.["400"] || {
156
+ description: "Invalid input data",
157
+ },
158
+ "409": currentPath?.responses?.["409"] || {
159
+ description: "User already exists",
136
160
  },
137
161
  },
138
162
  };
163
+ paths[pathname].post = { ...(currentPath || {}), ...defaultSpec };
139
164
  }
140
165
  if (!isAuthEndpointDisabled("updatePassword")) {
166
+ const pathname = "/api/auth/update-password";
167
+ if (!paths[pathname])
168
+ paths[pathname] = {};
141
169
  const updatePasswordMode = (0, exports.getSchemaMode)("updatePassword", arkosConfig);
142
- paths["/api/auth/update-password"] = {
143
- post: {
144
- tags: ["Authentication"],
145
- summary: "Update user password",
146
- description: "Changes the password for the authenticated user",
147
- operationId: "updatePassword",
148
- security: [{ BearerAuth: [] }],
149
- requestBody: {
150
- description: "Current and new password",
151
- required: true,
152
- content: {
153
- "application/json": {
154
- schema: {
155
- $ref: (0, swagger_router_helpers_1.getSchemaRef)("UpdatePassword", updatePasswordMode),
156
- },
170
+ const currentPath = paths[pathname].post;
171
+ const defaultSpec = {
172
+ tags: ["Authentication", ...(currentPath?.tags || [])].filter((tag) => tag !== "Defaults"),
173
+ summary: currentPath?.summary === pathname || !currentPath?.summary
174
+ ? "Update user password"
175
+ : currentPath?.summary,
176
+ description: currentPath?.description ||
177
+ "Changes the password for the authenticated user",
178
+ operationId: currentPath?.operationId?.includes(pathname)
179
+ ? "updatePassword"
180
+ : currentPath?.operationId,
181
+ security: [{ BearerAuth: [] }],
182
+ requestBody: currentPath?.requestBody || {
183
+ description: "Current and new password",
184
+ required: true,
185
+ content: {
186
+ "application/json": {
187
+ schema: {
188
+ $ref: (0, swagger_router_helpers_1.getSchemaRef)("UpdatePassword", updatePasswordMode),
157
189
  },
158
190
  },
159
191
  },
160
- responses: {
161
- "200": {
162
- description: "Password updated successfully",
163
- content: {
164
- "application/json": {
165
- schema: {
166
- type: "object",
167
- properties: {
168
- status: {
169
- type: "string",
170
- example: "success",
171
- },
172
- message: {
173
- type: "string",
174
- example: "Password updated successfully!",
175
- },
192
+ },
193
+ responses: {
194
+ ...(currentPath?.responses || {}),
195
+ "200": currentPath?.responses?.["200"] || {
196
+ description: "Password updated successfully",
197
+ content: {
198
+ "application/json": {
199
+ schema: {
200
+ type: "object",
201
+ properties: {
202
+ status: {
203
+ type: "string",
204
+ example: "success",
205
+ },
206
+ message: {
207
+ type: "string",
208
+ example: "Password updated successfully!",
176
209
  },
177
210
  },
178
211
  },
179
212
  },
180
213
  },
181
- "400": {
182
- description: "Invalid input data or current password incorrect",
183
- },
184
- "401": {
185
- description: "Authentication required",
186
- },
214
+ },
215
+ "400": currentPath?.responses?.["400"] || {
216
+ description: "Invalid input data or current password incorrect",
217
+ },
218
+ "401": currentPath?.responses?.["401"] || {
219
+ description: "Authentication required",
187
220
  },
188
221
  },
189
222
  };
223
+ paths[pathname].post = { ...(currentPath || {}), ...defaultSpec };
190
224
  }
191
225
  if (!isAuthEndpointDisabled("getMe")) {
226
+ const pathname = "/api/users/me";
227
+ if (!paths[pathname])
228
+ paths[pathname] = {};
192
229
  const findMeMode = (0, exports.getSchemaMode)("getMe", arkosConfig);
193
- paths["/api/users/me"] = {
194
- get: {
195
- tags: ["Authentication"],
196
- summary: "Get current user information",
197
- description: "Retrieves information about the currently authenticated user",
198
- operationId: "getMe",
199
- security: [{ BearerAuth: [] }],
200
- responses: {
201
- "200": {
202
- description: "User information retrieved successfully",
203
- content: {
204
- "application/json": {
205
- schema: {
206
- $ref: (0, swagger_router_helpers_1.getSchemaRef)("GetMe", findMeMode),
207
- },
230
+ const currentPath = paths[pathname].get;
231
+ const defaultSpec = {
232
+ tags: ["Authentication", ...(currentPath?.tags || [])].filter((tag) => tag !== "Defaults"),
233
+ summary: currentPath?.summary === pathname || !currentPath?.summary
234
+ ? "Get current user information"
235
+ : currentPath?.summary,
236
+ description: currentPath?.description ||
237
+ "Retrieves information about the currently authenticated user",
238
+ operationId: currentPath?.operationId?.includes(pathname)
239
+ ? "getMe"
240
+ : currentPath?.operationId,
241
+ security: [{ BearerAuth: [] }],
242
+ responses: {
243
+ ...(currentPath?.responses || {}),
244
+ "200": currentPath?.responses?.["200"] || {
245
+ description: "User information retrieved successfully",
246
+ content: {
247
+ "application/json": {
248
+ schema: {
249
+ $ref: (0, swagger_router_helpers_1.getSchemaRef)("GetMe", findMeMode),
208
250
  },
209
251
  },
210
252
  },
211
- "401": {
212
- description: "Authentication required",
213
- },
253
+ },
254
+ "401": currentPath?.responses?.["401"] || {
255
+ description: "Authentication required",
214
256
  },
215
257
  },
216
258
  };
259
+ paths[pathname].get = { ...(currentPath || {}), ...defaultSpec };
217
260
  }
218
261
  if (!isAuthEndpointDisabled("updateMe")) {
262
+ const pathname = "/api/users/me";
263
+ if (!paths[pathname])
264
+ paths[pathname] = {};
219
265
  const updateMeMode = (0, exports.getSchemaMode)("updateMe", arkosConfig);
220
266
  const userMode = (0, exports.getSchemaMode)("user", arkosConfig);
221
- if (!paths["/api/users/me"])
222
- paths["/api/users/me"] = {};
223
- paths["/api/users/me"].patch = {
224
- tags: ["Authentication"],
225
- summary: "Update current user information",
226
- description: "Updates information for the currently authenticated user",
227
- operationId: "updateMe",
267
+ const currentPath = paths[pathname].patch;
268
+ const defaultSpec = {
269
+ tags: ["Authentication", ...(currentPath?.tags || [])].filter((tag) => tag !== "Defaults"),
270
+ summary: currentPath?.summary === pathname || !currentPath?.summary
271
+ ? "Update current user information"
272
+ : currentPath?.summary,
273
+ description: currentPath?.description ||
274
+ "Updates information for the currently authenticated user",
275
+ operationId: currentPath?.operationId?.includes(pathname)
276
+ ? "updateMe"
277
+ : currentPath?.operationId,
228
278
  security: [{ BearerAuth: [] }],
229
- requestBody: {
279
+ requestBody: currentPath?.requestBody || {
230
280
  description: "User data to update",
231
281
  required: true,
232
282
  content: {
@@ -238,7 +288,8 @@ function getAuthenticationJsonSchemaPaths(arkosConfig) {
238
288
  },
239
289
  },
240
290
  responses: {
241
- "200": {
291
+ ...(currentPath?.responses || {}),
292
+ "200": currentPath?.responses?.["200"] || {
242
293
  description: "User updated successfully",
243
294
  content: {
244
295
  "application/json": {
@@ -248,26 +299,35 @@ function getAuthenticationJsonSchemaPaths(arkosConfig) {
248
299
  },
249
300
  },
250
301
  },
251
- "400": {
302
+ "400": currentPath?.responses?.["400"] || {
252
303
  description: "Invalid input data",
253
304
  },
254
- "401": {
305
+ "401": currentPath?.responses?.["401"] || {
255
306
  description: "Authentication required",
256
307
  },
257
308
  },
258
309
  };
310
+ paths[pathname].patch = { ...(currentPath || {}), ...defaultSpec };
259
311
  }
260
312
  if (!isAuthEndpointDisabled("deleteMe")) {
261
- if (!paths["/api/users/me"])
262
- paths["/api/users/me"] = {};
263
- paths["/api/users/me"].delete = {
264
- tags: ["Authentication"],
265
- summary: "Delete current user account",
266
- description: "Marks the current user's account as deleted",
267
- operationId: "deleteMe",
313
+ const pathname = "/api/users/me";
314
+ if (!paths[pathname])
315
+ paths[pathname] = {};
316
+ const currentPath = paths[pathname].delete;
317
+ const defaultSpec = {
318
+ tags: ["Authentication", ...(currentPath?.tags || [])].filter((tag) => tag !== "Defaults"),
319
+ summary: currentPath?.summary === pathname || !currentPath?.summary
320
+ ? "Delete current user account"
321
+ : currentPath?.summary,
322
+ description: currentPath?.description ||
323
+ "Marks the current user's account as deleted",
324
+ operationId: currentPath?.operationId?.includes(pathname)
325
+ ? "deleteMe"
326
+ : currentPath?.operationId,
268
327
  security: [{ BearerAuth: [] }],
269
328
  responses: {
270
- "200": {
329
+ ...(currentPath?.responses || {}),
330
+ "200": currentPath?.responses?.["200"] || {
271
331
  description: "Account deleted successfully",
272
332
  content: {
273
333
  "application/json": {
@@ -283,56 +343,139 @@ function getAuthenticationJsonSchemaPaths(arkosConfig) {
283
343
  },
284
344
  },
285
345
  },
286
- "401": {
346
+ "401": currentPath?.responses?.["401"] || {
287
347
  description: "Authentication required",
288
348
  },
289
349
  },
290
350
  };
351
+ paths[pathname].delete = { ...(currentPath || {}), ...defaultSpec };
291
352
  }
292
353
  if (!isAuthEndpointDisabled("findManyAuthAction")) {
293
- paths["/api/auth-actions"] = {
294
- get: {
295
- tags: ["Authentication"],
296
- summary: "Get all authentication actions",
297
- description: "Retrieves a list of all available authentication actions and permissions",
298
- operationId: "findManyAuthAction",
299
- security: [{ BearerAuth: [] }],
300
- responses: {
301
- "200": {
302
- description: "Auth actions retrieved successfully",
303
- content: {
304
- "application/json": {
305
- schema: {
306
- type: "object",
307
- properties: {
308
- total: {
309
- type: "number",
310
- description: "Total number of auth actions",
311
- },
312
- results: {
313
- type: "number",
314
- description: "Number of auth actions returned",
315
- },
316
- data: {
317
- type: "array",
318
- items: {
319
- $ref: "#/components/schemas/FindManyAuthActionSystemSchema",
320
- },
354
+ const pathname = "/api/auth-actions";
355
+ if (!paths[pathname])
356
+ paths[pathname] = {};
357
+ const currentPath = paths[pathname].get;
358
+ const defaultSpec = {
359
+ tags: ["Authentication", ...(currentPath?.tags || [])].filter((tag) => tag !== "Defaults"),
360
+ summary: currentPath?.summary === pathname || !currentPath?.summary
361
+ ? "Get all authentication actions"
362
+ : currentPath?.summary,
363
+ description: currentPath?.description ||
364
+ "Retrieves a list of all available authentication actions and permissions",
365
+ operationId: currentPath?.operationId?.includes(pathname)
366
+ ? "findManyAuthAction"
367
+ : currentPath?.operationId,
368
+ security: [{ BearerAuth: [] }],
369
+ responses: {
370
+ ...(currentPath?.responses || {}),
371
+ "200": currentPath?.responses?.["200"] || {
372
+ description: "Auth actions retrieved successfully",
373
+ content: {
374
+ "application/json": {
375
+ schema: {
376
+ type: "object",
377
+ properties: {
378
+ total: {
379
+ type: "number",
380
+ description: "Total number of auth actions",
381
+ },
382
+ results: {
383
+ type: "number",
384
+ description: "Number of auth actions returned",
385
+ },
386
+ data: {
387
+ type: "array",
388
+ items: {
389
+ $ref: "#/components/schemas/FindManyAuthActionSystemSchema",
321
390
  },
322
391
  },
323
392
  },
324
393
  },
325
394
  },
326
395
  },
327
- "401": {
328
- description: "Authentication required",
329
- },
330
- "403": {
331
- description: "Insufficient permissions",
396
+ },
397
+ "401": currentPath?.responses?.["401"] || {
398
+ description: "Authentication required",
399
+ },
400
+ "403": currentPath?.responses?.["403"] || {
401
+ description: "Insufficient permissions",
402
+ },
403
+ },
404
+ };
405
+ paths[pathname].get = { ...(currentPath || {}), ...defaultSpec };
406
+ }
407
+ if (!isAuthEndpointDisabled("findOneAuthAction")) {
408
+ const pathname = "/api/auth-actions/{resourceName}";
409
+ if (!paths[pathname])
410
+ paths[pathname] = {};
411
+ const currentPath = paths[pathname].get;
412
+ const defaultParameters = [
413
+ {
414
+ name: "resourceName",
415
+ in: "path",
416
+ description: "Name of the resource to retrieve auth actions for",
417
+ required: true,
418
+ schema: { type: "string" },
419
+ },
420
+ ];
421
+ const existingParams = currentPath?.parameters || [];
422
+ const existingParamKeys = new Set(existingParams.map((p) => `${p.in}-${p.name}`));
423
+ const mergedParameters = [
424
+ ...existingParams,
425
+ ...defaultParameters.filter((p) => !existingParamKeys.has(`${p.in}-${p.name}`)),
426
+ ];
427
+ const defaultSpec = {
428
+ tags: ["Authentication", ...(currentPath?.tags || [])].filter((tag) => tag !== "Defaults"),
429
+ summary: currentPath?.summary === pathname || !currentPath?.summary
430
+ ? "Get authentication actions by resource"
431
+ : currentPath?.summary,
432
+ description: currentPath?.description ||
433
+ "Retrieves all authentication actions for a specific resource",
434
+ operationId: currentPath?.operationId?.includes(pathname)
435
+ ? "findOneAuthAction"
436
+ : currentPath?.operationId,
437
+ security: [{ BearerAuth: [] }],
438
+ parameters: mergedParameters,
439
+ responses: {
440
+ ...(currentPath?.responses || {}),
441
+ "200": currentPath?.responses?.["200"] || {
442
+ description: "Auth actions for resource retrieved successfully",
443
+ content: {
444
+ "application/json": {
445
+ schema: {
446
+ type: "object",
447
+ properties: {
448
+ total: {
449
+ type: "number",
450
+ description: "Total number of auth actions for this resource",
451
+ },
452
+ results: {
453
+ type: "number",
454
+ description: "Number of auth actions returned",
455
+ },
456
+ data: {
457
+ type: "array",
458
+ items: {
459
+ $ref: "#/components/schemas/FindManyAuthActionSystemSchema",
460
+ },
461
+ },
462
+ },
463
+ },
464
+ },
332
465
  },
333
466
  },
467
+ "401": currentPath?.responses?.["401"] || {
468
+ description: "Authentication required",
469
+ },
470
+ "403": currentPath?.responses?.["403"] || {
471
+ description: "Insufficient permissions",
472
+ },
473
+ "404": currentPath?.responses?.["404"] || {
474
+ description: "Resource not found",
475
+ },
334
476
  },
335
477
  };
478
+ paths[pathname].get = { ...(currentPath || {}), ...defaultSpec };
336
479
  }
337
480
  return paths;
338
481
  }