@appxdigital/appx-core 0.1.68

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 (196) hide show
  1. package/dist/appx-core.module.d.ts +7 -0
  2. package/dist/appx-core.module.d.ts.map +1 -0
  3. package/dist/appx-core.module.js +46 -0
  4. package/dist/common/config/default-permissions.config.d.ts +3 -0
  5. package/dist/common/config/default-permissions.config.d.ts.map +1 -0
  6. package/dist/common/config/default-permissions.config.js +6 -0
  7. package/dist/common/config/permissions.config.provider.d.ts +8 -0
  8. package/dist/common/config/permissions.config.provider.d.ts.map +1 -0
  9. package/dist/common/config/permissions.config.provider.js +12 -0
  10. package/dist/common/config/permissions.service.d.ts +7 -0
  11. package/dist/common/config/permissions.service.d.ts.map +1 -0
  12. package/dist/common/config/permissions.service.js +31 -0
  13. package/dist/common/config/permissionsConfigTypes.d.ts +18 -0
  14. package/dist/common/config/permissionsConfigTypes.d.ts.map +1 -0
  15. package/dist/common/config/permissionsConfigTypes.js +2 -0
  16. package/dist/common/contants.d.ts +3 -0
  17. package/dist/common/contants.d.ts.map +1 -0
  18. package/dist/common/contants.js +5 -0
  19. package/dist/common/decorators/guard.decorator.d.ts +5 -0
  20. package/dist/common/decorators/guard.decorator.d.ts.map +1 -0
  21. package/dist/common/decorators/guard.decorator.js +22 -0
  22. package/dist/common/decorators/permission.decorator.d.ts +3 -0
  23. package/dist/common/decorators/permission.decorator.d.ts.map +1 -0
  24. package/dist/common/decorators/permission.decorator.js +7 -0
  25. package/dist/common/decorators/transaction.decorator.d.ts +8 -0
  26. package/dist/common/decorators/transaction.decorator.d.ts.map +1 -0
  27. package/dist/common/decorators/transaction.decorator.js +12 -0
  28. package/dist/common/enums/role.enum.d.ts +6 -0
  29. package/dist/common/enums/role.enum.d.ts.map +1 -0
  30. package/dist/common/enums/role.enum.js +9 -0
  31. package/dist/common/guards/rbac.guard.d.ts +10 -0
  32. package/dist/common/guards/rbac.guard.d.ts.map +1 -0
  33. package/dist/common/guards/rbac.guard.js +56 -0
  34. package/dist/common/guards/role.guard.d.ts +12 -0
  35. package/dist/common/guards/role.guard.d.ts.map +1 -0
  36. package/dist/common/guards/role.guard.js +44 -0
  37. package/dist/common/interceptors/file.interceptor.d.ts +9 -0
  38. package/dist/common/interceptors/file.interceptor.d.ts.map +1 -0
  39. package/dist/common/interceptors/file.interceptor.js +74 -0
  40. package/dist/common/interceptors/prisma.interceptor.d.ts +14 -0
  41. package/dist/common/interceptors/prisma.interceptor.d.ts.map +1 -0
  42. package/dist/common/interceptors/prisma.interceptor.js +82 -0
  43. package/dist/common/interfaces/file-upload.interface.d.ts +13 -0
  44. package/dist/common/interfaces/file-upload.interface.d.ts.map +1 -0
  45. package/dist/common/interfaces/file-upload.interface.js +2 -0
  46. package/dist/common/interfaces/storage-service.interface.d.ts +4 -0
  47. package/dist/common/interfaces/storage-service.interface.d.ts.map +1 -0
  48. package/dist/common/interfaces/storage-service.interface.js +2 -0
  49. package/dist/common/interfaces/user.interface.d.ts +12 -0
  50. package/dist/common/interfaces/user.interface.d.ts.map +1 -0
  51. package/dist/common/interfaces/user.interface.js +2 -0
  52. package/dist/common/providers/aws-storage.service.d.ts +10 -0
  53. package/dist/common/providers/aws-storage.service.d.ts.map +1 -0
  54. package/dist/common/providers/aws-storage.service.js +60 -0
  55. package/dist/common/providers/gcp-storage.service.d.ts +10 -0
  56. package/dist/common/providers/gcp-storage.service.d.ts.map +1 -0
  57. package/dist/common/providers/gcp-storage.service.js +87 -0
  58. package/dist/common/providers/local-storage.service.d.ts +7 -0
  59. package/dist/common/providers/local-storage.service.d.ts.map +1 -0
  60. package/dist/common/providers/local-storage.service.js +80 -0
  61. package/dist/common/types.d.ts +21 -0
  62. package/dist/common/types.d.ts.map +1 -0
  63. package/dist/common/types.js +3 -0
  64. package/dist/common/utils/context-transformer.util.d.ts +6 -0
  65. package/dist/common/utils/context-transformer.util.d.ts.map +1 -0
  66. package/dist/common/utils/context-transformer.util.js +28 -0
  67. package/dist/common/utils/error-handler.d.ts +2 -0
  68. package/dist/common/utils/error-handler.d.ts.map +1 -0
  69. package/dist/common/utils/error-handler.js +38 -0
  70. package/dist/config/admin/create.d.ts +2 -0
  71. package/dist/config/admin/create.d.ts.map +1 -0
  72. package/dist/config/admin/create.js +25 -0
  73. package/dist/config/admin/generate-admin.d.ts +2 -0
  74. package/dist/config/admin/generate-admin.d.ts.map +1 -0
  75. package/dist/config/admin/generate-admin.js +75 -0
  76. package/dist/config/admin/templates/admin.template.d.ts +2 -0
  77. package/dist/config/admin/templates/admin.template.d.ts.map +1 -0
  78. package/dist/config/admin/templates/admin.template.js +131 -0
  79. package/dist/config/admin/templates/component-loader.template.d.ts +2 -0
  80. package/dist/config/admin/templates/component-loader.template.d.ts.map +1 -0
  81. package/dist/config/admin/templates/component-loader.template.js +17 -0
  82. package/dist/config/admin/templates/dashboard.template.d.ts +2 -0
  83. package/dist/config/admin/templates/dashboard.template.d.ts.map +1 -0
  84. package/dist/config/admin/templates/dashboard.template.js +40 -0
  85. package/dist/config/admin/templates/utils.template.d.ts +2 -0
  86. package/dist/config/admin/templates/utils.template.d.ts.map +1 -0
  87. package/dist/config/admin/templates/utils.template.js +135 -0
  88. package/dist/config/generate-all.d.ts +3 -0
  89. package/dist/config/generate-all.d.ts.map +1 -0
  90. package/dist/config/generate-all.js +64 -0
  91. package/dist/config/generate-controllers.d.ts +2 -0
  92. package/dist/config/generate-controllers.d.ts.map +1 -0
  93. package/dist/config/generate-controllers.js +83 -0
  94. package/dist/config/generate-modules.d.ts +2 -0
  95. package/dist/config/generate-modules.d.ts.map +1 -0
  96. package/dist/config/generate-modules.js +158 -0
  97. package/dist/config/generate-resolvers.d.ts +2 -0
  98. package/dist/config/generate-resolvers.d.ts.map +1 -0
  99. package/dist/config/generate-resolvers.js +97 -0
  100. package/dist/config/generate-services.d.ts +2 -0
  101. package/dist/config/generate-services.d.ts.map +1 -0
  102. package/dist/config/generate-services.js +72 -0
  103. package/dist/config/generate-session-schema.d.ts +2 -0
  104. package/dist/config/generate-session-schema.d.ts.map +1 -0
  105. package/dist/config/generate-session-schema.js +78 -0
  106. package/dist/config/setup-fileupload.d.ts +3 -0
  107. package/dist/config/setup-fileupload.d.ts.map +1 -0
  108. package/dist/config/setup-fileupload.js +265 -0
  109. package/dist/config/utils.d.ts +3 -0
  110. package/dist/config/utils.d.ts.map +1 -0
  111. package/dist/config/utils.js +55 -0
  112. package/dist/graphql/batch.payload.d.ts +4 -0
  113. package/dist/graphql/batch.payload.d.ts.map +1 -0
  114. package/dist/graphql/batch.payload.js +23 -0
  115. package/dist/graphql/generic.resolver.d.ts +15 -0
  116. package/dist/graphql/generic.resolver.d.ts.map +1 -0
  117. package/dist/graphql/generic.resolver.js +107 -0
  118. package/dist/graphql/graphql.module.d.ts +3 -0
  119. package/dist/graphql/graphql.module.d.ts.map +1 -0
  120. package/dist/graphql/graphql.module.js +28 -0
  121. package/dist/index.d.ts +24 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +39 -0
  124. package/dist/modules/auth/auth-field.decorator.d.ts +10 -0
  125. package/dist/modules/auth/auth-field.decorator.d.ts.map +1 -0
  126. package/dist/modules/auth/auth-field.decorator.js +18 -0
  127. package/dist/modules/auth/auth.controller.d.ts +25 -0
  128. package/dist/modules/auth/auth.controller.d.ts.map +1 -0
  129. package/dist/modules/auth/auth.controller.js +158 -0
  130. package/dist/modules/auth/auth.module.d.ts +3 -0
  131. package/dist/modules/auth/auth.module.d.ts.map +1 -0
  132. package/dist/modules/auth/auth.module.js +28 -0
  133. package/dist/modules/auth/auth.resolver.d.ts +6 -0
  134. package/dist/modules/auth/auth.resolver.d.ts.map +1 -0
  135. package/dist/modules/auth/auth.resolver.js +24 -0
  136. package/dist/modules/auth/auth.service.d.ts +28 -0
  137. package/dist/modules/auth/auth.service.d.ts.map +1 -0
  138. package/dist/modules/auth/auth.service.js +197 -0
  139. package/dist/modules/auth/authenticated.guard.d.ts +5 -0
  140. package/dist/modules/auth/authenticated.guard.d.ts.map +1 -0
  141. package/dist/modules/auth/authenticated.guard.js +20 -0
  142. package/dist/modules/auth/dto/register.dto.d.ts +6 -0
  143. package/dist/modules/auth/dto/register.dto.d.ts.map +1 -0
  144. package/dist/modules/auth/dto/register.dto.js +21 -0
  145. package/dist/modules/auth/dto/user.dto.d.ts +5 -0
  146. package/dist/modules/auth/dto/user.dto.d.ts.map +1 -0
  147. package/dist/modules/auth/dto/user.dto.js +36 -0
  148. package/dist/modules/auth/local-auth.guard.d.ts +7 -0
  149. package/dist/modules/auth/local-auth.guard.d.ts.map +1 -0
  150. package/dist/modules/auth/local-auth.guard.js +31 -0
  151. package/dist/modules/auth/local.strategy.d.ts +15 -0
  152. package/dist/modules/auth/local.strategy.d.ts.map +1 -0
  153. package/dist/modules/auth/local.strategy.js +48 -0
  154. package/dist/modules/auth/session/session-auth.guard.d.ts +5 -0
  155. package/dist/modules/auth/session/session-auth.guard.d.ts.map +1 -0
  156. package/dist/modules/auth/session/session-auth.guard.js +30 -0
  157. package/dist/modules/auth/session/session-serializer.d.ts +9 -0
  158. package/dist/modules/auth/session/session-serializer.d.ts.map +1 -0
  159. package/dist/modules/auth/session/session-serializer.js +44 -0
  160. package/dist/modules/auth/session/session-store.d.ts +11 -0
  161. package/dist/modules/auth/session/session-store.d.ts.map +1 -0
  162. package/dist/modules/auth/session/session-store.js +97 -0
  163. package/dist/modules/common.module.d.ts +3 -0
  164. package/dist/modules/common.module.d.ts.map +1 -0
  165. package/dist/modules/common.module.js +20 -0
  166. package/dist/modules/core/core.controller.d.ts +14 -0
  167. package/dist/modules/core/core.controller.d.ts.map +1 -0
  168. package/dist/modules/core/core.controller.js +114 -0
  169. package/dist/modules/core/core.module.d.ts +3 -0
  170. package/dist/modules/core/core.module.d.ts.map +1 -0
  171. package/dist/modules/core/core.module.js +22 -0
  172. package/dist/modules/core/core.service.d.ts +44 -0
  173. package/dist/modules/core/core.service.d.ts.map +1 -0
  174. package/dist/modules/core/core.service.js +121 -0
  175. package/dist/modules/file/file-upload.controller.d.ts +11 -0
  176. package/dist/modules/file/file-upload.controller.d.ts.map +1 -0
  177. package/dist/modules/file/file-upload.controller.js +52 -0
  178. package/dist/modules/file/file-upload.module.d.ts +6 -0
  179. package/dist/modules/file/file-upload.module.d.ts.map +1 -0
  180. package/dist/modules/file/file-upload.module.js +62 -0
  181. package/dist/modules/file/file-upload.service.d.ts +27 -0
  182. package/dist/modules/file/file-upload.service.d.ts.map +1 -0
  183. package/dist/modules/file/file-upload.service.js +69 -0
  184. package/dist/modules/user/user.module.d.ts +3 -0
  185. package/dist/modules/user/user.module.d.ts.map +1 -0
  186. package/dist/modules/user/user.module.js +20 -0
  187. package/dist/modules/user/user.service.d.ts +10 -0
  188. package/dist/modules/user/user.service.d.ts.map +1 -0
  189. package/dist/modules/user/user.service.js +49 -0
  190. package/dist/prisma/prisma.service.d.ts +128 -0
  191. package/dist/prisma/prisma.service.d.ts.map +1 -0
  192. package/dist/prisma/prisma.service.js +512 -0
  193. package/dist/tasks/session-cleanup.service.d.ts +7 -0
  194. package/dist/tasks/session-cleanup.service.d.ts.map +1 -0
  195. package/dist/tasks/session-cleanup.service.js +38 -0
  196. package/package.json +66 -0
@@ -0,0 +1,265 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const inquirer_1 = __importDefault(require("inquirer"));
43
+ const FileTypes = {
44
+ IMAGE: 'image',
45
+ DOCUMENT: 'document',
46
+ VIDEO: 'video',
47
+ AUDIO: 'audio',
48
+ };
49
+ const MimeTypes = {
50
+ image: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'],
51
+ document: [
52
+ 'application/pdf',
53
+ 'application/msword',
54
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
55
+ ],
56
+ video: ['video/mp4', 'video/avi', 'video/mpeg'],
57
+ audio: ['audio/mpeg', 'audio/wav', 'audio/ogg'],
58
+ };
59
+ function objectToTypeScript(obj, indentLevel = 0) {
60
+ const indent = ' '.repeat(indentLevel);
61
+ if (Array.isArray(obj)) {
62
+ const items = obj
63
+ .map((item) => objectToTypeScript(item, indentLevel + 1))
64
+ .join(`,\n`);
65
+ return `[\n${items}\n${indent}]`;
66
+ }
67
+ else if (typeof obj === 'object' && obj !== null) {
68
+ const props = Object.entries(obj)
69
+ .map(([key, value]) => `${indent} ${key}: ${objectToTypeScript(value, indentLevel + 1)}`)
70
+ .join(`,\n`);
71
+ return `{\n${props}\n${indent}}`;
72
+ }
73
+ else if (typeof obj === 'string') {
74
+ return `'${obj}'`;
75
+ }
76
+ else {
77
+ return String(obj);
78
+ }
79
+ }
80
+ function getEnvVariables(provider, providerConfig) {
81
+ if (provider === 'aws') {
82
+ return {
83
+ AWS_BUCKET_NAME: providerConfig.bucket,
84
+ AWS_REGION: providerConfig.region,
85
+ AWS_ACCESS_KEY_ID: providerConfig.accessKeyId,
86
+ AWS_SECRET_ACCESS_KEY: providerConfig.secretAccessKey,
87
+ };
88
+ }
89
+ else if (provider === 'gcp') {
90
+ return {
91
+ GCP_BUCKET_NAME: providerConfig.bucket,
92
+ GCP_PROJECT_ID: providerConfig.projectId,
93
+ GCP_KEY_FILE_PATH: providerConfig.keyFilePath,
94
+ };
95
+ }
96
+ else {
97
+ return {};
98
+ }
99
+ }
100
+ async function configureProvider() {
101
+ const { provider } = await inquirer_1.default.prompt({
102
+ type: 'list',
103
+ name: 'provider',
104
+ message: 'Select the storage provider:',
105
+ choices: ['aws', 'gcp', 'local'],
106
+ });
107
+ let providerConfig = {};
108
+ if (provider === 'aws') {
109
+ providerConfig = await inquirer_1.default.prompt([
110
+ { type: 'input', name: 'bucket', message: 'Enter AWS S3 bucket name:' },
111
+ { type: 'input', name: 'region', message: 'Enter AWS region:' },
112
+ { type: 'input', name: 'accessKeyId', message: 'Enter AWS access key ID:' },
113
+ { type: 'input', name: 'secretAccessKey', message: 'Enter AWS secret access key:' },
114
+ ]);
115
+ }
116
+ else if (provider === 'gcp') {
117
+ providerConfig = await inquirer_1.default.prompt([
118
+ { type: 'input', name: 'bucket', message: 'Enter GCP bucket name:' },
119
+ { type: 'input', name: 'projectId', message: 'Enter GCP project ID:' },
120
+ { type: 'input', name: 'keyFilePath', message: 'Enter the path to the GCP service account key file:' },
121
+ ]);
122
+ }
123
+ const envVariables = getEnvVariables(provider, providerConfig);
124
+ const envContent = Object.entries(envVariables)
125
+ .map(([key, value]) => `${key}=${value}`)
126
+ .join('\n');
127
+ fs.appendFileSync(path.resolve(process.cwd(), '.env'), `\n${envContent}\n`);
128
+ return { provider };
129
+ }
130
+ async function configureEndpoint() {
131
+ const { endpoint, maxSize, fileType, multiple } = await inquirer_1.default.prompt([
132
+ {
133
+ type: 'input',
134
+ name: 'endpoint',
135
+ message: 'Enter the endpoint (e.g., "avatar" for /upload/avatar):',
136
+ },
137
+ {
138
+ type: 'input',
139
+ name: 'maxSize',
140
+ message: 'Enter the maximum file size (in MB):',
141
+ validate: (input) => !isNaN(Number(input)) && Number(input) > 0 ? true : 'Please enter a valid positive number',
142
+ filter: (input) => Number(input) * 1024 * 1024,
143
+ },
144
+ {
145
+ type: 'list',
146
+ name: 'fileType',
147
+ message: 'Select file category:',
148
+ choices: Object.values(FileTypes),
149
+ },
150
+ {
151
+ type: 'confirm',
152
+ name: 'multiple',
153
+ message: 'Allow multiple file uploads?',
154
+ },
155
+ ]);
156
+ let allowedTypes = [];
157
+ if (fileType in MimeTypes) {
158
+ const result = await inquirer_1.default.prompt({
159
+ type: 'checkbox',
160
+ name: 'selectedMimeTypes',
161
+ message: `Select allowed MIME types for ${fileType}:`,
162
+ choices: [...MimeTypes[fileType]],
163
+ validate: (answer) => {
164
+ if (!Array.isArray(answer) || answer.length === 0) {
165
+ return 'You must select at least one MIME type.';
166
+ }
167
+ return true;
168
+ },
169
+ });
170
+ allowedTypes = result.selectedMimeTypes;
171
+ }
172
+ const { roles } = await inquirer_1.default.prompt({
173
+ type: 'input',
174
+ name: 'roles',
175
+ message: 'Enter allowed roles (comma-separated, or "ALL" for unrestricted access):',
176
+ filter: (input) => input.split(',').map((role) => role.trim()),
177
+ });
178
+ return {
179
+ endpoint: `/upload/${endpoint}`,
180
+ aliases: [],
181
+ maxSize,
182
+ allowedTypes,
183
+ multiple,
184
+ roles,
185
+ };
186
+ }
187
+ function findMatchingBracketIndex(content, startIndex) {
188
+ let stack = [];
189
+ for (let i = startIndex; i < content.length; i++) {
190
+ const char = content[i];
191
+ if (char === '[') {
192
+ stack.push('[');
193
+ }
194
+ else if (char === ']') {
195
+ stack.pop();
196
+ if (stack.length === 0) {
197
+ return i;
198
+ }
199
+ }
200
+ }
201
+ return -1;
202
+ }
203
+ function appendEndpointToFile(configPath, newEndpointConfig) {
204
+ const fileContent = fs.readFileSync(configPath, 'utf-8');
205
+ const endpointsIndex = fileContent.indexOf('endpoints: [');
206
+ if (endpointsIndex === -1) {
207
+ console.error("Couldn't locate 'endpoints' array in file-upload.config.ts.");
208
+ process.exit(1);
209
+ }
210
+ const arrayStartIndex = fileContent.indexOf('[', endpointsIndex);
211
+ const arrayEndIndex = findMatchingBracketIndex(fileContent, arrayStartIndex);
212
+ if (arrayEndIndex === -1) {
213
+ console.error("Couldn't locate the end of 'endpoints' array in file-upload.config.ts.");
214
+ process.exit(1);
215
+ }
216
+ let existingEndpointsContent = fileContent.substring(arrayStartIndex + 1, arrayEndIndex).trim();
217
+ const newEndpointString = objectToTypeScript(newEndpointConfig, 2);
218
+ let updatedEndpointsContent;
219
+ if (existingEndpointsContent.length === 0) {
220
+ updatedEndpointsContent = `\n${newEndpointString}\n`;
221
+ }
222
+ else {
223
+ existingEndpointsContent = existingEndpointsContent.replace(/,\s*$/, '');
224
+ updatedEndpointsContent = `${existingEndpointsContent},\n${newEndpointString}`;
225
+ }
226
+ const updatedFileContent = `${fileContent.substring(0, arrayStartIndex + 1)}\n${updatedEndpointsContent}\n${fileContent.substring(arrayEndIndex)}`;
227
+ fs.writeFileSync(configPath, updatedFileContent);
228
+ console.log(`New endpoint added to ${configPath} successfully.`);
229
+ }
230
+ async function main() {
231
+ const configPath = path.resolve(process.cwd(), 'src/config/file-upload.config.ts');
232
+ const appModulePath = path.resolve(process.cwd(), 'src/app.module.ts');
233
+ const isEndpointMode = process.argv.includes('endpoint');
234
+ if (isEndpointMode) {
235
+ if (!fs.existsSync(configPath)) {
236
+ console.error(`Configuration file at ${configPath} not found. Please run the full setup first.`);
237
+ process.exit(1);
238
+ }
239
+ const newEndpointConfig = await configureEndpoint();
240
+ appendEndpointToFile(configPath, newEndpointConfig);
241
+ }
242
+ else {
243
+ const { provider } = await configureProvider();
244
+ const newEndpointConfig = await configureEndpoint();
245
+ const configContent = `import { FileUploadModuleOptions } from 'appx-core';
246
+
247
+ export const fileUploadConfig: FileUploadModuleOptions = {
248
+ cloudProvider: '${provider}',
249
+ endpoints: [
250
+ ${objectToTypeScript(newEndpointConfig, 2)}
251
+ ],
252
+ };`;
253
+ fs.mkdirSync(path.dirname(configPath), { recursive: true });
254
+ fs.writeFileSync(configPath, configContent);
255
+ let appModuleContent = fs.readFileSync(appModulePath, 'utf-8');
256
+ if (!appModuleContent.includes(`import { fileUploadConfig } from './config/file-upload.config';`)) {
257
+ appModuleContent = `import { fileUploadConfig } from './config/file-upload.config';\n` + appModuleContent;
258
+ }
259
+ appModuleContent = appModuleContent.replace(/AppxCoreModule\.forRoot\(([^)]+)\)/, 'AppxCoreModule.forRoot(PermissionsConfig, fileUploadConfig)');
260
+ fs.writeFileSync(appModulePath, appModuleContent);
261
+ }
262
+ }
263
+ main().catch((error) => {
264
+ console.error('Error during file upload configuration:', error);
265
+ });
@@ -0,0 +1,3 @@
1
+ export declare const kebabToPascalCase: (str: string) => string;
2
+ export declare const createFileIfNotExists: (filePath: string, content: string) => void;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,WAK5C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,EAAE,SAAS,MAAM,SAQtE,CAAC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createFileIfNotExists = exports.kebabToPascalCase = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const kebabToPascalCase = (str) => {
39
+ return str
40
+ .split("-")
41
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
42
+ .join("");
43
+ };
44
+ exports.kebabToPascalCase = kebabToPascalCase;
45
+ const createFileIfNotExists = (filePath, content) => {
46
+ console.log(`Creating ${filePath}...`);
47
+ if (!fs.existsSync(filePath)) {
48
+ fs.writeFileSync(filePath, content);
49
+ console.log(`${filePath} created.`);
50
+ }
51
+ else {
52
+ console.log(`${filePath} already exists, skipping.`);
53
+ }
54
+ };
55
+ exports.createFileIfNotExists = createFileIfNotExists;
@@ -0,0 +1,4 @@
1
+ export declare class BatchPayload {
2
+ count: number;
3
+ }
4
+ //# sourceMappingURL=batch.payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.payload.d.ts","sourceRoot":"","sources":["../../src/graphql/batch.payload.ts"],"names":[],"mappings":"AAEA,qBACa,YAAY;IAErB,KAAK,EAAG,MAAM,CAAC;CAClB"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BatchPayload = void 0;
13
+ const graphql_1 = require("@nestjs/graphql");
14
+ let BatchPayload = class BatchPayload {
15
+ };
16
+ exports.BatchPayload = BatchPayload;
17
+ __decorate([
18
+ (0, graphql_1.Field)(() => graphql_1.Int),
19
+ __metadata("design:type", Number)
20
+ ], BatchPayload.prototype, "count", void 0);
21
+ exports.BatchPayload = BatchPayload = __decorate([
22
+ (0, graphql_1.ObjectType)()
23
+ ], BatchPayload);
@@ -0,0 +1,15 @@
1
+ import { Type } from '../common/types';
2
+ import { GraphQLResolveInfo } from 'graphql';
3
+ import { PrismaService } from '../prisma/prisma.service';
4
+ export declare function GenericResolverFactory<ModelType, CreateInput, UpdateInput, WhereInput, WhereUniqueInput, FindManyArgsType, AggregateArgsType, AggregateOutputType, CreateManyArgsType, CreateManyInput>(model: string, returnType: Type<ModelType>, createInputType: Type<CreateInput>, updateInputType: Type<UpdateInput>, whereInputType: Type<WhereInput>, whereUniqueInputType: Type<WhereUniqueInput>, findManyArgsType: Type<FindManyArgsType>, aggregateArgsType: Type<AggregateArgsType>, aggregateOutputType: Type<AggregateOutputType>, createManyArgsType: Type<CreateManyArgsType>, createManyInputType: Type<CreateManyInput>, guardedMethods?: {
5
+ [key: string]: string[];
6
+ }): {
7
+ new (prisma: PrismaService): {
8
+ readonly prisma: PrismaService;
9
+ findAll(args: FindManyArgsType, info: GraphQLResolveInfo): Promise<ModelType[]>;
10
+ findOne(where: WhereUniqueInput, info: GraphQLResolveInfo): Promise<ModelType>;
11
+ findFirst(args: FindManyArgsType, info: GraphQLResolveInfo): Promise<ModelType>;
12
+ aggregate(args: AggregateArgsType, info: GraphQLResolveInfo): Promise<AggregateOutputType>;
13
+ };
14
+ };
15
+ //# sourceMappingURL=generic.resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic.resolver.d.ts","sourceRoot":"","sources":["../../src/graphql/generic.resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAGvD,wBAAgB,sBAAsB,CAAC,SAAS,EAC5C,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EAEf,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAC3B,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,EAClC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,EAClC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,EAChC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAC5C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,EACxC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAC1C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAC9C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAC5C,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,EAC1C,cAAc,CAAC,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAC;iBAIF,aAAa;yBAAb,aAAa;sBAWnC,gBAAgB,QACZ,kBAAkB,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC;uBAcR,gBAAgB,QACb,kBAAkB,GACjC,OAAO,CAAC,SAAS,CAAC;wBAcP,gBAAgB,QACZ,kBAAkB,GACjC,OAAO,CAAC,SAAS,CAAC;wBAcP,iBAAiB,QACb,kBAAkB,GACjC,OAAO,CAAC,mBAAmB,CAAC;;EA0ItC"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.GenericResolverFactory = GenericResolverFactory;
16
+ const graphql_1 = require("@nestjs/graphql");
17
+ const plugins_1 = require("@paljs/plugins");
18
+ const guard_decorator_1 = require("../common/decorators/guard.decorator");
19
+ const prisma_service_1 = require("../prisma/prisma.service");
20
+ function GenericResolverFactory(model, returnType, createInputType, updateInputType, whereInputType, whereUniqueInputType, findManyArgsType, aggregateArgsType, aggregateOutputType, createManyArgsType, createManyInputType, guardedMethods) {
21
+ var GenericResolverClass_1;
22
+ let GenericResolverClass = GenericResolverClass_1 = class GenericResolverClass {
23
+ constructor(prisma) {
24
+ this.prisma = prisma;
25
+ if (guardedMethods) {
26
+ (0, guard_decorator_1.applyMethodGuards)(GenericResolverClass_1, guardedMethods);
27
+ }
28
+ }
29
+ async findAll(args, info) {
30
+ const select = new plugins_1.PrismaSelect(info).value;
31
+ const modelDelegate = this.prisma.getModelDelegate(model);
32
+ return await modelDelegate.findMany({
33
+ ...args,
34
+ ...select,
35
+ });
36
+ }
37
+ async findOne(where, info) {
38
+ const select = new plugins_1.PrismaSelect(info).value;
39
+ const modelDelegate = this.prisma.getModelDelegate(model);
40
+ return modelDelegate.findUnique({
41
+ where,
42
+ ...select,
43
+ });
44
+ }
45
+ async findFirst(args, info) {
46
+ const select = new plugins_1.PrismaSelect(info).value;
47
+ const modelDelegate = this.prisma.getModelDelegate(model);
48
+ return modelDelegate.findFirst({
49
+ ...args,
50
+ ...select,
51
+ });
52
+ }
53
+ async aggregate(args, info) {
54
+ const select = new plugins_1.PrismaSelect(info).value;
55
+ const modelDelegate = this.prisma.getModelDelegate(model);
56
+ return modelDelegate.aggregate({
57
+ ...args,
58
+ ...select,
59
+ });
60
+ }
61
+ };
62
+ __decorate([
63
+ (0, graphql_1.Query)(() => [returnType], {
64
+ name: `findAll${model.charAt(0).toUpperCase() + model.slice(1)}s`,
65
+ }),
66
+ __param(0, (0, graphql_1.Args)({ type: () => findManyArgsType, nullable: true })),
67
+ __param(1, (0, graphql_1.Info)()),
68
+ __metadata("design:type", Function),
69
+ __metadata("design:paramtypes", [Object, Object]),
70
+ __metadata("design:returntype", Promise)
71
+ ], GenericResolverClass.prototype, "findAll", null);
72
+ __decorate([
73
+ (0, graphql_1.Query)(() => returnType, {
74
+ name: `findOne${model.charAt(0).toUpperCase() + model.slice(1)}`,
75
+ }),
76
+ __param(0, (0, graphql_1.Args)('where', { type: () => whereUniqueInputType, nullable: false })),
77
+ __param(1, (0, graphql_1.Info)()),
78
+ __metadata("design:type", Function),
79
+ __metadata("design:paramtypes", [Object, Object]),
80
+ __metadata("design:returntype", Promise)
81
+ ], GenericResolverClass.prototype, "findOne", null);
82
+ __decorate([
83
+ (0, graphql_1.Query)(() => returnType, {
84
+ name: `findFirst${model.charAt(0).toUpperCase() + model.slice(1)}`,
85
+ }),
86
+ __param(0, (0, graphql_1.Args)({ type: () => findManyArgsType, nullable: true })),
87
+ __param(1, (0, graphql_1.Info)()),
88
+ __metadata("design:type", Function),
89
+ __metadata("design:paramtypes", [Object, Object]),
90
+ __metadata("design:returntype", Promise)
91
+ ], GenericResolverClass.prototype, "findFirst", null);
92
+ __decorate([
93
+ (0, graphql_1.Query)(() => aggregateOutputType, {
94
+ name: `aggregate${model.charAt(0).toUpperCase() + model.slice(1)}`,
95
+ }),
96
+ __param(0, (0, graphql_1.Args)({ type: () => aggregateArgsType, nullable: true })),
97
+ __param(1, (0, graphql_1.Info)()),
98
+ __metadata("design:type", Function),
99
+ __metadata("design:paramtypes", [Object, Object]),
100
+ __metadata("design:returntype", Promise)
101
+ ], GenericResolverClass.prototype, "aggregate", null);
102
+ GenericResolverClass = GenericResolverClass_1 = __decorate([
103
+ (0, graphql_1.Resolver)({ isAbstract: true }),
104
+ __metadata("design:paramtypes", [prisma_service_1.PrismaService])
105
+ ], GenericResolverClass);
106
+ return GenericResolverClass;
107
+ }
@@ -0,0 +1,3 @@
1
+ export declare class GraphqlModule {
2
+ }
3
+ //# sourceMappingURL=graphql.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.module.d.ts","sourceRoot":"","sources":["../../src/graphql/graphql.module.ts"],"names":[],"mappings":"AAMA,qBAUa,aAAa;CAAG"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.GraphqlModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const graphql_1 = require("@nestjs/graphql");
12
+ const path_1 = require("path");
13
+ const apollo_1 = require("@nestjs/apollo");
14
+ let GraphqlModule = class GraphqlModule {
15
+ };
16
+ exports.GraphqlModule = GraphqlModule;
17
+ exports.GraphqlModule = GraphqlModule = __decorate([
18
+ (0, common_1.Module)({
19
+ imports: [
20
+ graphql_1.GraphQLModule.forRoot({
21
+ driver: apollo_1.ApolloDriver,
22
+ context: ({ req, res }) => ({ req, res }),
23
+ autoSchemaFile: (0, path_1.join)(process.cwd(), 'src/generated/schema.gql'),
24
+ sortSchema: true,
25
+ }),
26
+ ],
27
+ })
28
+ ], GraphqlModule);
@@ -0,0 +1,24 @@
1
+ export * from './modules/core/core.module';
2
+ export * from './modules/core/core.service';
3
+ export * from './modules/core/core.controller';
4
+ export * from './prisma/prisma.service';
5
+ export * from './graphql/graphql.module';
6
+ export * from './graphql/generic.resolver';
7
+ export * from './tasks/session-cleanup.service';
8
+ export * from './modules/auth/auth.module';
9
+ export * from './modules/auth/session/session-store';
10
+ export * from './common/guards/rbac.guard';
11
+ export * from './modules/common.module';
12
+ export * from './common/interceptors/prisma.interceptor';
13
+ export * from './common/config/permissionsConfigTypes';
14
+ export * from './common/config/permissions.config.provider';
15
+ export * from './appx-core.module';
16
+ export * from './modules/file/file-upload.module';
17
+ export * from './common/interfaces/file-upload.interface';
18
+ export * from './common/providers/aws-storage.service';
19
+ export * from './common/interfaces/storage-service.interface';
20
+ export * from './modules/file/file-upload.controller';
21
+ export * from './modules/file/file-upload.service';
22
+ export * from './common/decorators/permission.decorator';
23
+ export * from './common/interceptors/file.interceptor';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./modules/core/core.module"), exports);
18
+ __exportStar(require("./modules/core/core.service"), exports);
19
+ __exportStar(require("./modules/core/core.controller"), exports);
20
+ __exportStar(require("./prisma/prisma.service"), exports);
21
+ __exportStar(require("./graphql/graphql.module"), exports);
22
+ __exportStar(require("./graphql/generic.resolver"), exports);
23
+ __exportStar(require("./tasks/session-cleanup.service"), exports);
24
+ __exportStar(require("./modules/auth/auth.module"), exports);
25
+ __exportStar(require("./modules/auth/session/session-store"), exports);
26
+ __exportStar(require("./common/guards/rbac.guard"), exports);
27
+ __exportStar(require("./modules/common.module"), exports);
28
+ __exportStar(require("./common/interceptors/prisma.interceptor"), exports);
29
+ __exportStar(require("./common/config/permissionsConfigTypes"), exports);
30
+ __exportStar(require("./common/config/permissions.config.provider"), exports);
31
+ __exportStar(require("./appx-core.module"), exports);
32
+ __exportStar(require("./modules/file/file-upload.module"), exports);
33
+ __exportStar(require("./common/interfaces/file-upload.interface"), exports);
34
+ __exportStar(require("./common/providers/aws-storage.service"), exports);
35
+ __exportStar(require("./common/interfaces/storage-service.interface"), exports);
36
+ __exportStar(require("./modules/file/file-upload.controller"), exports);
37
+ __exportStar(require("./modules/file/file-upload.service"), exports);
38
+ __exportStar(require("./common/decorators/permission.decorator"), exports);
39
+ __exportStar(require("./common/interceptors/file.interceptor"), exports);
@@ -0,0 +1,10 @@
1
+ import 'reflect-metadata';
2
+ /**
3
+ * A decorator to mark a property in a class as the username or password field
4
+ * for local authentication.
5
+ *
6
+ * @param {('username' | 'password')} type - Specifies if the field is a username or password.
7
+ * @returns A decorator function that stores metadata about the field in the class constructor.
8
+ */
9
+ export declare function AuthField(type: 'username' | 'password'): (target: any, propertyKey: string | symbol) => void;
10
+ //# sourceMappingURL=auth-field.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-field.decorator.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/auth-field.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,IAC3C,QAAQ,GAAG,EAAE,aAAa,MAAM,GAAG,MAAM,UAMpD"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthField = AuthField;
4
+ require("reflect-metadata");
5
+ /**
6
+ * A decorator to mark a property in a class as the username or password field
7
+ * for local authentication.
8
+ *
9
+ * @param {('username' | 'password')} type - Specifies if the field is a username or password.
10
+ * @returns A decorator function that stores metadata about the field in the class constructor.
11
+ */
12
+ function AuthField(type) {
13
+ return (target, propertyKey) => {
14
+ const existingFields = Reflect.getMetadata('authFields', target.constructor) || {};
15
+ existingFields[type] = propertyKey;
16
+ Reflect.defineMetadata('authFields', existingFields, target.constructor);
17
+ };
18
+ }
@@ -0,0 +1,25 @@
1
+ import { AuthService } from './auth.service';
2
+ import { RegisterDto } from './dto/register.dto';
3
+ import { Request, Response } from 'express';
4
+ export declare class AuthController {
5
+ private readonly authService;
6
+ constructor(authService: AuthService);
7
+ register(registerDto: RegisterDto): Promise<{
8
+ message: string;
9
+ user: any;
10
+ }>;
11
+ login(req: Request, res: Response): Promise<void>;
12
+ logout(req: Request, res: Response): Promise<void>;
13
+ me(req: Request): Promise<{
14
+ user: any;
15
+ }>;
16
+ getActiveSessions(req: Request): Promise<{
17
+ sessions: any;
18
+ }>;
19
+ closeAllSessions(req: Request, res: Response): Promise<void>;
20
+ getAllSessions(userId: string, req: Request): Promise<{
21
+ sessions: any;
22
+ }>;
23
+ closeSpecificSession(sessionId: string, req: Request, res: Response): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=auth.controller.d.ts.map