arkos 1.0.17 → 1.0.19-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.
- package/dist/cjs/app.js +1 -1
- package/dist/cjs/app.js.map +1 -1
- package/dist/cjs/exports/utils/index.js.map +1 -1
- package/dist/cjs/modules/auth/auth.controller.js +8 -12
- package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
- package/dist/cjs/modules/auth/auth.service.js +4 -4
- package/dist/cjs/modules/auth/auth.service.js.map +1 -1
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +4 -8
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -1
- package/dist/cjs/modules/auth/utils/helpers/auth.helpers.js +19 -0
- package/dist/cjs/modules/auth/utils/helpers/auth.helpers.js.map +1 -0
- package/dist/cjs/modules/base/base.middlewares.js +6 -1
- package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.helpers.js +183 -0
- package/dist/cjs/modules/base/utils/helpers/base.helpers.js.map +1 -0
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +5 -5
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
- package/dist/cjs/modules/file-uploader/file-uploader.service.js +3 -3
- package/dist/cjs/modules/file-uploader/file-uploader.service.js.map +1 -1
- package/dist/cjs/types/arkos-config.js.map +1 -1
- package/dist/cjs/types/prisma-model-router-config.js +3 -0
- package/dist/cjs/types/prisma-model-router-config.js.map +1 -0
- package/dist/cjs/utils/features/api.features.js +2 -2
- package/dist/cjs/utils/features/api.features.js.map +1 -1
- package/dist/cjs/utils/helpers/api.features.helpers.js +4 -3
- package/dist/cjs/utils/helpers/api.features.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/change-case.helpers.js +2 -2
- package/dist/cjs/utils/helpers/change-case.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/fs.helpers.js +14 -45
- package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/models.helpers.js +27 -27
- package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/prisma.helpers.js +5 -3
- package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
- package/dist/cjs/utils/scripts/export-prisma-types.js +3 -3
- package/dist/cjs/utils/scripts/export-prisma-types.js.map +1 -1
- package/dist/cjs/utils/scripts/generate-zod-schemas.js +4 -3
- package/dist/cjs/utils/scripts/generate-zod-schemas.js.map +1 -1
- package/dist/es2020/app.js +1 -1
- package/dist/es2020/app.js.map +1 -1
- package/dist/es2020/exports/utils/index.js.map +1 -1
- package/dist/es2020/modules/auth/auth.controller.js +8 -12
- package/dist/es2020/modules/auth/auth.controller.js.map +1 -1
- package/dist/es2020/modules/auth/auth.service.js +4 -4
- package/dist/es2020/modules/auth/auth.service.js.map +1 -1
- package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js +4 -8
- package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -1
- package/dist/es2020/modules/auth/utils/helpers/auth.helpers.js +12 -0
- package/dist/es2020/modules/auth/utils/helpers/auth.helpers.js.map +1 -0
- package/dist/es2020/modules/base/base.middlewares.js +6 -1
- package/dist/es2020/modules/base/base.middlewares.js.map +1 -1
- package/dist/es2020/modules/base/utils/helpers/base.helpers.js +177 -0
- package/dist/es2020/modules/base/utils/helpers/base.helpers.js.map +1 -0
- package/dist/es2020/modules/base/utils/helpers/base.service.helpers.js +5 -5
- package/dist/es2020/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
- package/dist/es2020/modules/file-uploader/file-uploader.service.js +3 -3
- package/dist/es2020/modules/file-uploader/file-uploader.service.js.map +1 -1
- package/dist/es2020/types/arkos-config.js.map +1 -1
- package/dist/es2020/types/prisma-model-router-config.js +2 -0
- package/dist/es2020/types/prisma-model-router-config.js.map +1 -0
- package/dist/es2020/utils/features/api.features.js +2 -2
- package/dist/es2020/utils/features/api.features.js.map +1 -1
- package/dist/es2020/utils/helpers/api.features.helpers.js +4 -3
- package/dist/es2020/utils/helpers/api.features.helpers.js.map +1 -1
- package/dist/es2020/utils/helpers/change-case.helpers.js +2 -2
- package/dist/es2020/utils/helpers/change-case.helpers.js.map +1 -1
- package/dist/es2020/utils/helpers/fs.helpers.js +13 -44
- package/dist/es2020/utils/helpers/fs.helpers.js.map +1 -1
- package/dist/es2020/utils/helpers/models.helpers.js +28 -28
- package/dist/es2020/utils/helpers/models.helpers.js.map +1 -1
- package/dist/es2020/utils/helpers/prisma.helpers.js +6 -4
- package/dist/es2020/utils/helpers/prisma.helpers.js.map +1 -1
- package/dist/es2020/utils/scripts/export-prisma-types.js +3 -3
- package/dist/es2020/utils/scripts/export-prisma-types.js.map +1 -1
- package/dist/es2020/utils/scripts/generate-zod-schemas.js +4 -3
- package/dist/es2020/utils/scripts/generate-zod-schemas.js.map +1 -1
- package/dist/types/exports/utils/index.d.ts +1 -0
- package/dist/types/modules/auth/utils/helpers/auth.helpers.d.ts +2 -0
- package/dist/types/modules/base/utils/helpers/base.helpers.d.ts +5 -0
- package/dist/types/types/arkos-config.d.ts +5 -0
- package/dist/types/types/prisma-model-router-config.d.ts +18 -0
- package/dist/types/utils/helpers/fs.helpers.d.ts +2 -2
- package/package.json +46 -34
|
@@ -70,38 +70,38 @@ function getFileModelModulesFileStructure(modelName) {
|
|
|
70
70
|
const isAuthModule = modelName.toLowerCase() === "auth";
|
|
71
71
|
return {
|
|
72
72
|
core: {
|
|
73
|
-
service: `${kebabModelName}.service.${fs_helpers_1.
|
|
74
|
-
controller: `${kebabModelName}.controller.${fs_helpers_1.
|
|
75
|
-
middlewares: `${kebabModelName}.middlewares.${fs_helpers_1.
|
|
76
|
-
authConfigs: `${kebabModelName}.auth-configs.${fs_helpers_1.
|
|
77
|
-
prismaQueryOptions: `${kebabModelName}.prisma-query-options.${fs_helpers_1.
|
|
78
|
-
router: `${kebabModelName}.router.${fs_helpers_1.
|
|
73
|
+
service: `${kebabModelName}.service.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
74
|
+
controller: `${kebabModelName}.controller.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
75
|
+
middlewares: `${kebabModelName}.middlewares.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
76
|
+
authConfigs: `${kebabModelName}.auth-configs.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
77
|
+
prismaQueryOptions: `${kebabModelName}.prisma-query-options.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
78
|
+
router: `${kebabModelName}.router.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
79
79
|
},
|
|
80
80
|
dtos: isAuthModule
|
|
81
81
|
? {
|
|
82
|
-
login: `login.dto.${fs_helpers_1.
|
|
83
|
-
signup: `signup.dto.${fs_helpers_1.
|
|
84
|
-
updateMe: `update-me.dto.${fs_helpers_1.
|
|
85
|
-
updatePassword: `update-password.dto.${fs_helpers_1.
|
|
82
|
+
login: `login.dto.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
83
|
+
signup: `signup.dto.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
84
|
+
updateMe: `update-me.dto.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
85
|
+
updatePassword: `update-password.dto.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
86
86
|
}
|
|
87
87
|
: {
|
|
88
|
-
model: `${lowerModelName}.dto.${fs_helpers_1.
|
|
89
|
-
create: `create-${lowerModelName}.dto.${fs_helpers_1.
|
|
90
|
-
update: `update-${lowerModelName}.dto.${fs_helpers_1.
|
|
91
|
-
query: `query-${lowerModelName}.dto.${fs_helpers_1.
|
|
88
|
+
model: `${lowerModelName}.dto.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
89
|
+
create: `create-${lowerModelName}.dto.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
90
|
+
update: `update-${lowerModelName}.dto.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
91
|
+
query: `query-${lowerModelName}.dto.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
92
92
|
},
|
|
93
93
|
schemas: isAuthModule
|
|
94
94
|
? {
|
|
95
|
-
login: `login.schema.${fs_helpers_1.
|
|
96
|
-
signup: `signup.schema.${fs_helpers_1.
|
|
97
|
-
updateMe: `update-me.schema.${fs_helpers_1.
|
|
98
|
-
updatePassword: `update-password.schema.${fs_helpers_1.
|
|
95
|
+
login: `login.schema.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
96
|
+
signup: `signup.schema.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
97
|
+
updateMe: `update-me.schema.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
98
|
+
updatePassword: `update-password.schema.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
99
99
|
}
|
|
100
100
|
: {
|
|
101
|
-
model: `${lowerModelName}.schema.${fs_helpers_1.
|
|
102
|
-
create: `create-${lowerModelName}.schema.${fs_helpers_1.
|
|
103
|
-
update: `update-${lowerModelName}.schema.${fs_helpers_1.
|
|
104
|
-
query: `query-${lowerModelName}.schema.${fs_helpers_1.
|
|
101
|
+
model: `${lowerModelName}.schema.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
102
|
+
create: `create-${lowerModelName}.schema.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
103
|
+
update: `update-${lowerModelName}.schema.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
104
|
+
query: `query-${lowerModelName}.schema.${(0, fs_helpers_1.getUserFileExtension)()}`,
|
|
105
105
|
},
|
|
106
106
|
};
|
|
107
107
|
}
|
|
@@ -194,13 +194,13 @@ function initializePrismaModels(testName) {
|
|
|
194
194
|
const files = getAllPrismaFiles("./prisma");
|
|
195
195
|
for (const file of files) {
|
|
196
196
|
const content = fs_1.default.readFileSync(file, "utf-8");
|
|
197
|
-
if (!prismaContent.includes(content))
|
|
197
|
+
if (!(prismaContent === null || prismaContent === void 0 ? void 0 : prismaContent.includes(content)))
|
|
198
198
|
prismaContent.push(content);
|
|
199
199
|
}
|
|
200
200
|
const content = prismaContent
|
|
201
201
|
.join("\n")
|
|
202
202
|
.replace(modelRegex, (_, modelName) => {
|
|
203
|
-
if (!exports.models.includes(modelName))
|
|
203
|
+
if (!(exports.models === null || exports.models === void 0 ? void 0 : exports.models.includes(modelName)))
|
|
204
204
|
exports.models.push((0, change_case_helpers_1.camelCase)(modelName.trim()));
|
|
205
205
|
return `model ${modelName} {`;
|
|
206
206
|
});
|
|
@@ -221,7 +221,7 @@ function initializePrismaModels(testName) {
|
|
|
221
221
|
trimmedLine.startsWith("//"))
|
|
222
222
|
continue;
|
|
223
223
|
const [fieldName, type] = trimmedLine.split(/\s+/);
|
|
224
|
-
const isUnique = trimmedLine.includes("@unique");
|
|
224
|
+
const isUnique = trimmedLine === null || trimmedLine === void 0 ? void 0 : trimmedLine.includes("@unique");
|
|
225
225
|
if (isUnique) {
|
|
226
226
|
const existingFields = exports.prismaModelsUniqueFields[model] || [];
|
|
227
227
|
const alreadyExists = existingFields.some((field) => field.name === fieldName &&
|
|
@@ -235,9 +235,9 @@ function initializePrismaModels(testName) {
|
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
237
|
const cleanType = type === null || type === void 0 ? void 0 : type.replace("[]", "").replace("?", "");
|
|
238
|
-
if (trimmedLine.includes("@relation") ||
|
|
238
|
+
if ((trimmedLine === null || trimmedLine === void 0 ? void 0 : trimmedLine.includes("@relation")) ||
|
|
239
239
|
trimmedLine.match(/\s+\w+(\[\])?(\s+@|$)/) ||
|
|
240
|
-
exports.models.includes((0, change_case_helpers_1.camelCase)(cleanType || ""))) {
|
|
240
|
+
(exports.models === null || exports.models === void 0 ? void 0 : exports.models.includes((0, change_case_helpers_1.camelCase)(cleanType || "")))) {
|
|
241
241
|
const modelStart = content.indexOf(`enum ${cleanType} {`);
|
|
242
242
|
if (!cleanType ||
|
|
243
243
|
modelStart >= 0 ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport { userFileExtension } from \"./fs.helpers\";\nimport { importModule } from \"./global.helpers\";\n\nexport let prismaModelsModules: Record<\n string,\n Awaited<ReturnType<typeof importPrismaModelModules>>\n> = {};\n\nexport function getModelModules(modelName: string) {\n return prismaModelsModules[kebabCase(modelName)];\n}\n\nexport function getFileModelModulesFileStructure(modelName: string) {\n const kebabModelName = kebabCase(modelName).toLowerCase();\n const lowerModelName = kebabModelName.toLowerCase();\n const isAuthModule = modelName.toLowerCase() === \"auth\";\n\n return {\n core: {\n service: `${kebabModelName}.service.${userFileExtension}`,\n controller: `${kebabModelName}.controller.${userFileExtension}`,\n middlewares: `${kebabModelName}.middlewares.${userFileExtension}`,\n authConfigs: `${kebabModelName}.auth-configs.${userFileExtension}`,\n prismaQueryOptions: `${kebabModelName}.prisma-query-options.${userFileExtension}`,\n router: `${kebabModelName}.router.${userFileExtension}`,\n },\n dtos: isAuthModule\n ? {\n login: `login.dto.${userFileExtension}`,\n signup: `signup.dto.${userFileExtension}`,\n updateMe: `update-me.dto.${userFileExtension}`,\n updatePassword: `update-password.dto.${userFileExtension}`,\n }\n : {\n model: `${lowerModelName}.dto.${userFileExtension}`,\n create: `create-${lowerModelName}.dto.${userFileExtension}`,\n update: `update-${lowerModelName}.dto.${userFileExtension}`,\n query: `query-${lowerModelName}.dto.${userFileExtension}`,\n },\n schemas: isAuthModule\n ? {\n login: `login.schema.${userFileExtension}`,\n signup: `signup.schema.${userFileExtension}`,\n updateMe: `update-me.schema.${userFileExtension}`,\n updatePassword: `update-password.schema.${userFileExtension}`,\n }\n : {\n model: `${lowerModelName}.schema.${userFileExtension}`,\n create: `create-${lowerModelName}.schema.${userFileExtension}`,\n update: `update-${lowerModelName}.schema.${userFileExtension}`,\n query: `query-${lowerModelName}.schema.${userFileExtension}`,\n },\n };\n}\n\nexport async function processSubdir(\n modelName: string,\n type: \"dtos\" | \"schemas\",\n result: Record<string, any>\n) {\n const moduleDir = path.resolve(\n process.cwd(),\n \"src\",\n \"modules\",\n kebabCase(modelName)\n );\n\n const subdir = path.join(moduleDir, type);\n const pascalModelName = pascalCase(modelName);\n const fileStructure = getFileModelModulesFileStructure(modelName);\n const isAuthModule = modelName.toLowerCase() === \"auth\";\n\n // Skip if directory doesn't exist\n try {\n await fs.promises.access(subdir).catch(() => {\n return; // Directory doesn't exist\n });\n\n await Promise.all(\n Object.entries(fileStructure[type]).map(async ([key, fileName]) => {\n const filePath = path.join(subdir, fileName);\n try {\n const module = await import(filePath).catch(() => null);\n if (module) {\n if (isAuthModule) {\n // Auth module uses different naming conventions\n const pascalKey = key.charAt(0).toUpperCase() + key.slice(1);\n const expectedName = `${pascalKey}${\n type === \"dtos\" ? \"Dto\" : \"Schema\"\n }`;\n result[type][key] = module.default;\n } else {\n // Standard modules\n const expectedName =\n key === \"model\"\n ? `${pascalModelName}${type === \"dtos\" ? \"Dto\" : \"Schema\"}`\n : `${\n key.charAt(0).toUpperCase() + key.slice(1)\n }${pascalModelName}${type === \"dtos\" ? \"Dto\" : \"Schema\"}`;\n\n result[type][key] = module.default;\n }\n }\n } catch (error) {\n // Silent fail - file might not exist\n }\n })\n );\n } catch (error) {\n // Directory doesn't exist, continue silently\n }\n}\n\n/**\n * Dynamically imports model-specific modules for a given model with optimized file handling.\n * Includes special handling for the Auth module.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\", \"Post\", \"Auth\").\n * @returns {Promise<Object>} An object containing the imported modules\n */\nexport async function importPrismaModelModules(\n modelName: string\n): Promise<Record<string, any>> {\n const moduleDir = path.resolve(process.cwd(), \"src\", \"modules\", modelName);\n\n const result: {\n service?: any;\n controller?: any;\n middlewares?: any;\n authConfigs?: any;\n prismaQueryOptions?: any;\n router?: any;\n dtos: Record<string, any>;\n schemas: Record<string, any>;\n } = {\n dtos: {},\n schemas: {},\n };\n\n const fileStructure = getFileModelModulesFileStructure(modelName);\n // Batch process core files\n await Promise.all(\n Object.entries(fileStructure.core).map(async ([key, fileName]) => {\n const filePath = path.join(moduleDir, fileName);\n try {\n const module = await importModule(filePath).catch(() => null);\n if (module) {\n if (key === \"middlewares\") result[key] = module;\n else result[key as keyof typeof result] = module.default || module;\n }\n } catch {}\n })\n );\n\n await Promise.all([\n processSubdir(modelName, \"dtos\", result),\n processSubdir(modelName, \"schemas\", result),\n ]);\n\n // Cache the result\n prismaModelsModules[modelName] = result;\n\n return result;\n}\n\nexport type ModelFieldDefition = {\n name: string;\n type: string;\n isUnique: boolean;\n};\n\n/**\n * Represents the structure of relation fields for Prisma models.\n * It includes both singular (one-to-one) and list (one-to-many) relationships.\n *\n * @typedef {Object} RelationFields\n * @property {Array<{name: string, type: string}>} singular - List of singular relationships.\n * @property {Array<{name: string, type: string}>} list - List of list relationships.\n */\nexport type RelationFields = {\n singular: Omit<ModelFieldDefition, \"isUnique\">[];\n list: Omit<ModelFieldDefition, \"isUnique\">[];\n};\n\n/**\n * Reads the Prisma schema files and extracts all model definitions,\n * identifying their relations (one-to-one and one-to-many).\n */\nexport const prismaModelRelationFields: Record<string, RelationFields> = {};\n\nexport function getAllPrismaFiles(dirPath: string, fileList: string[] = []) {\n const files = fs.readdirSync(dirPath);\n\n files?.forEach((file) => {\n const filePath = path.join(dirPath, file);\n const stat = fs.statSync(filePath);\n\n // Skip migrations folder\n if (stat.isDirectory() && file !== \"migrations\") {\n fileList = getAllPrismaFiles(filePath, fileList);\n } else if (stat.isFile() && file.endsWith(\".prisma\")) {\n fileList.push(filePath);\n }\n });\n\n return fileList;\n}\n\nconst modelRegex = /model\\s+(\\w+)\\s*{/g;\nexport const models: string[] = [];\nexport const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]> =\n [] as any;\n\nexport function initializePrismaModels(testName?: string) {\n const prismaContent: string[] = [];\n\n const files = getAllPrismaFiles(\"./prisma\");\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\");\n\n if (!prismaContent.includes(content)) prismaContent.push(content);\n }\n\n const content = prismaContent\n .join(\"\\n\")\n .replace(modelRegex, (_, modelName) => {\n if (!models.includes(modelName)) models.push(camelCase(modelName.trim()));\n return `model ${modelName} {`;\n });\n\n for (const model of models) {\n const modelName = pascalCase(model);\n\n // let modelFile;\n // for (const file of files) {\n // const filePath = path.join(file);\n // const stats = fs.statSync(filePath);\n\n // if (stats.isFile()) {\n // const content = fs.readFileSync(filePath, \"utf-8\");\n // prismaContent.push(content);\n // if (content.includes(`model ${modelName} {`)) {\n // modelFile = file;\n // break;\n // }\n // }\n // }\n\n // if (!modelFile) {\n // return;\n // }\n\n // const content = fs.readFileSync(path.join(modelFile), \"utf-8\");\n const modelStart = content.indexOf(`model ${modelName} {`);\n const modelEnd = content.indexOf(\"}\", modelStart);\n const modelDefinition = content.slice(modelStart, modelEnd);\n\n const relations: RelationFields = {\n singular: [],\n list: [],\n };\n const lines = modelDefinition.split(\"\\n\");\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (\n !trimmedLine ||\n trimmedLine.startsWith(\"model\") ||\n trimmedLine.startsWith(\"//\")\n )\n continue;\n\n const [fieldName, type] = trimmedLine.split(/\\s+/);\n const isUnique = trimmedLine.includes(\"@unique\");\n\n if (isUnique) {\n const existingFields = prismaModelsUniqueFields[model] || [];\n\n const alreadyExists = existingFields.some(\n (field) =>\n field.name === fieldName &&\n field.type === type &&\n field.isUnique === isUnique\n );\n\n if (!alreadyExists) {\n prismaModelsUniqueFields[model] = [\n ...existingFields,\n { name: fieldName, type, isUnique },\n ];\n }\n }\n\n const cleanType = type?.replace(\"[]\", \"\").replace(\"?\", \"\");\n\n if (\n trimmedLine.includes(\"@relation\") ||\n trimmedLine.match(/\\s+\\w+(\\[\\])?(\\s+@|$)/) ||\n models.includes(camelCase(cleanType || \"\"))\n ) {\n const modelStart = content.indexOf(`enum ${cleanType} {`);\n\n if (\n !cleanType ||\n modelStart >= 0 ||\n cleanType === \"String\" ||\n cleanType === \"Int\" ||\n cleanType === \"Float\" ||\n cleanType === \"Boolean\" ||\n cleanType === \"DateTime\" ||\n cleanType === \"Bytes\" ||\n cleanType === \"Decimal\" ||\n cleanType === \"BigInt\" ||\n cleanType === \"Json\"\n ) {\n continue;\n }\n\n if (!type?.includes(\"[]\")) {\n relations.singular.push({\n name: fieldName,\n type: cleanType,\n });\n } else {\n relations.list.push({\n name: fieldName,\n type: cleanType,\n });\n }\n }\n\n prismaModelRelationFields[modelName] = relations;\n }\n }\n}\n\ninitializePrismaModels();\n\n/**\n * Retrieves the relations for a given Prisma model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\").\n * @returns {RelationFields|undefined} The relation fields for the model, or `undefined` if no relations are found.\n */\nexport function getPrismaModelRelations(modelName: string) {\n modelName = pascalCase(modelName);\n\n if (!(modelName in prismaModelRelationFields)) return;\n return prismaModelRelationFields[modelName];\n}\n\n/**\n * Retrieves all the model names from the Prisma schema.\n *\n * @returns {string[]} An array of model names (e.g., [\"User\", \"Post\"]).\n */\nfunction getModels() {\n return models;\n}\n\n/** Retuns a given model unique fields\n * @param {string} modelName - The name of model in PascalCase\n * @returns {string[]} An array of all unique fields,\n */\nfunction getModelUniqueFields(modelName: string) {\n return prismaModelsUniqueFields[modelName];\n}\n\nexport { getModels, getModelUniqueFields };\n"]}
|
|
1
|
+
{"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport { getUserFileExtension } from \"./fs.helpers\";\nimport { importModule } from \"./global.helpers\";\n\nexport let prismaModelsModules: Record<\n string,\n Awaited<ReturnType<typeof importPrismaModelModules>>\n> = {};\n\nexport function getModelModules(modelName: string) {\n return prismaModelsModules[kebabCase(modelName)];\n}\n\nexport function getFileModelModulesFileStructure(modelName: string) {\n const kebabModelName = kebabCase(modelName).toLowerCase();\n const lowerModelName = kebabModelName.toLowerCase();\n const isAuthModule = modelName.toLowerCase() === \"auth\";\n\n return {\n core: {\n service: `${kebabModelName}.service.${getUserFileExtension()}`,\n controller: `${kebabModelName}.controller.${getUserFileExtension()}`,\n middlewares: `${kebabModelName}.middlewares.${getUserFileExtension()}`,\n authConfigs: `${kebabModelName}.auth-configs.${getUserFileExtension()}`,\n prismaQueryOptions: `${kebabModelName}.prisma-query-options.${getUserFileExtension()}`,\n router: `${kebabModelName}.router.${getUserFileExtension()}`,\n },\n dtos: isAuthModule\n ? {\n login: `login.dto.${getUserFileExtension()}`,\n signup: `signup.dto.${getUserFileExtension()}`,\n updateMe: `update-me.dto.${getUserFileExtension()}`,\n updatePassword: `update-password.dto.${getUserFileExtension()}`,\n }\n : {\n model: `${lowerModelName}.dto.${getUserFileExtension()}`,\n create: `create-${lowerModelName}.dto.${getUserFileExtension()}`,\n update: `update-${lowerModelName}.dto.${getUserFileExtension()}`,\n query: `query-${lowerModelName}.dto.${getUserFileExtension()}`,\n },\n schemas: isAuthModule\n ? {\n login: `login.schema.${getUserFileExtension()}`,\n signup: `signup.schema.${getUserFileExtension()}`,\n updateMe: `update-me.schema.${getUserFileExtension()}`,\n updatePassword: `update-password.schema.${getUserFileExtension()}`,\n }\n : {\n model: `${lowerModelName}.schema.${getUserFileExtension()}`,\n create: `create-${lowerModelName}.schema.${getUserFileExtension()}`,\n update: `update-${lowerModelName}.schema.${getUserFileExtension()}`,\n query: `query-${lowerModelName}.schema.${getUserFileExtension()}`,\n },\n };\n}\n\nexport async function processSubdir(\n modelName: string,\n type: \"dtos\" | \"schemas\",\n result: Record<string, any>\n) {\n const moduleDir = path.resolve(\n process.cwd(),\n \"src\",\n \"modules\",\n kebabCase(modelName)\n );\n\n const subdir = path.join(moduleDir, type);\n const pascalModelName = pascalCase(modelName);\n const fileStructure = getFileModelModulesFileStructure(modelName);\n const isAuthModule = modelName.toLowerCase() === \"auth\";\n\n // Skip if directory doesn't exist\n try {\n await fs.promises.access(subdir).catch(() => {\n return; // Directory doesn't exist\n });\n\n await Promise.all(\n Object.entries(fileStructure[type]).map(async ([key, fileName]) => {\n const filePath = path.join(subdir, fileName);\n try {\n const module = await import(filePath).catch(() => null);\n if (module) {\n if (isAuthModule) {\n // Auth module uses different naming conventions\n const pascalKey = key.charAt(0).toUpperCase() + key.slice(1);\n const expectedName = `${pascalKey}${\n type === \"dtos\" ? \"Dto\" : \"Schema\"\n }`;\n result[type][key] = module.default;\n } else {\n // Standard modules\n const expectedName =\n key === \"model\"\n ? `${pascalModelName}${type === \"dtos\" ? \"Dto\" : \"Schema\"}`\n : `${\n key.charAt(0).toUpperCase() + key.slice(1)\n }${pascalModelName}${type === \"dtos\" ? \"Dto\" : \"Schema\"}`;\n\n result[type][key] = module.default;\n }\n }\n } catch (error) {\n // Silent fail - file might not exist\n }\n })\n );\n } catch (error) {\n // Directory doesn't exist, continue silently\n }\n}\n\n/**\n * Dynamically imports model-specific modules for a given model with optimized file handling.\n * Includes special handling for the Auth module.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\", \"Post\", \"Auth\").\n * @returns {Promise<Object>} An object containing the imported modules\n */\nexport async function importPrismaModelModules(\n modelName: string\n): Promise<Record<string, any>> {\n const moduleDir = path.resolve(process.cwd(), \"src\", \"modules\", modelName);\n\n const result: {\n service?: any;\n controller?: any;\n middlewares?: any;\n authConfigs?: any;\n prismaQueryOptions?: any;\n router?: any;\n dtos: Record<string, any>;\n schemas: Record<string, any>;\n } = {\n dtos: {},\n schemas: {},\n };\n\n const fileStructure = getFileModelModulesFileStructure(modelName);\n // Batch process core files\n await Promise.all(\n Object.entries(fileStructure.core).map(async ([key, fileName]) => {\n const filePath = path.join(moduleDir, fileName);\n try {\n const module = await importModule(filePath).catch(() => null);\n if (module) {\n if (key === \"middlewares\") result[key] = module;\n else result[key as keyof typeof result] = module.default || module;\n }\n } catch {}\n })\n );\n\n await Promise.all([\n processSubdir(modelName, \"dtos\", result),\n processSubdir(modelName, \"schemas\", result),\n ]);\n\n // Cache the result\n prismaModelsModules[modelName] = result;\n\n return result;\n}\n\nexport type ModelFieldDefition = {\n name: string;\n type: string;\n isUnique: boolean;\n};\n\n/**\n * Represents the structure of relation fields for Prisma models.\n * It includes both singular (one-to-one) and list (one-to-many) relationships.\n *\n * @typedef {Object} RelationFields\n * @property {Array<{name: string, type: string}>} singular - List of singular relationships.\n * @property {Array<{name: string, type: string}>} list - List of list relationships.\n */\nexport type RelationFields = {\n singular: Omit<ModelFieldDefition, \"isUnique\">[];\n list: Omit<ModelFieldDefition, \"isUnique\">[];\n};\n\n/**\n * Reads the Prisma schema files and extracts all model definitions,\n * identifying their relations (one-to-one and one-to-many).\n */\nexport const prismaModelRelationFields: Record<string, RelationFields> = {};\n\nexport function getAllPrismaFiles(dirPath: string, fileList: string[] = []) {\n const files = fs.readdirSync(dirPath);\n\n files?.forEach((file) => {\n const filePath = path.join(dirPath, file);\n const stat = fs.statSync(filePath);\n\n // Skip migrations folder\n if (stat.isDirectory() && file !== \"migrations\") {\n fileList = getAllPrismaFiles(filePath, fileList);\n } else if (stat.isFile() && file.endsWith(\".prisma\")) {\n fileList.push(filePath);\n }\n });\n\n return fileList;\n}\n\nconst modelRegex = /model\\s+(\\w+)\\s*{/g;\nexport const models: string[] = [];\nexport const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]> =\n [] as any;\n\nexport function initializePrismaModels(testName?: string) {\n const prismaContent: string[] = [];\n\n const files = getAllPrismaFiles(\"./prisma\");\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\");\n\n if (!prismaContent?.includes(content)) prismaContent.push(content);\n }\n\n const content = prismaContent\n .join(\"\\n\")\n .replace(modelRegex, (_, modelName) => {\n if (!models?.includes(modelName))\n models.push(camelCase(modelName.trim()));\n return `model ${modelName} {`;\n });\n\n for (const model of models) {\n const modelName = pascalCase(model);\n\n // let modelFile;\n // for (const file of files) {\n // const filePath = path.join(file);\n // const stats = fs.statSync(filePath);\n\n // if (stats.isFile()) {\n // const content = fs.readFileSync(filePath, \"utf-8\");\n // prismaContent.push(content);\n // if (content?.includes(`model ${modelName} {`)) {\n // modelFile = file;\n // break;\n // }\n // }\n // }\n\n // if (!modelFile) {\n // return;\n // }\n\n // const content = fs.readFileSync(path.join(modelFile), \"utf-8\");\n const modelStart = content.indexOf(`model ${modelName} {`);\n const modelEnd = content.indexOf(\"}\", modelStart);\n const modelDefinition = content.slice(modelStart, modelEnd);\n\n const relations: RelationFields = {\n singular: [],\n list: [],\n };\n const lines = modelDefinition.split(\"\\n\");\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (\n !trimmedLine ||\n trimmedLine.startsWith(\"model\") ||\n trimmedLine.startsWith(\"//\")\n )\n continue;\n\n const [fieldName, type] = trimmedLine.split(/\\s+/);\n const isUnique = trimmedLine?.includes(\"@unique\");\n\n if (isUnique) {\n const existingFields = prismaModelsUniqueFields[model] || [];\n\n const alreadyExists = existingFields.some(\n (field) =>\n field.name === fieldName &&\n field.type === type &&\n field.isUnique === isUnique\n );\n\n if (!alreadyExists) {\n prismaModelsUniqueFields[model] = [\n ...existingFields,\n { name: fieldName, type, isUnique },\n ];\n }\n }\n\n const cleanType = type?.replace(\"[]\", \"\").replace(\"?\", \"\");\n\n if (\n trimmedLine?.includes(\"@relation\") ||\n trimmedLine.match(/\\s+\\w+(\\[\\])?(\\s+@|$)/) ||\n models?.includes(camelCase(cleanType || \"\"))\n ) {\n const modelStart = content.indexOf(`enum ${cleanType} {`);\n\n if (\n !cleanType ||\n modelStart >= 0 ||\n cleanType === \"String\" ||\n cleanType === \"Int\" ||\n cleanType === \"Float\" ||\n cleanType === \"Boolean\" ||\n cleanType === \"DateTime\" ||\n cleanType === \"Bytes\" ||\n cleanType === \"Decimal\" ||\n cleanType === \"BigInt\" ||\n cleanType === \"Json\"\n ) {\n continue;\n }\n\n if (!type?.includes(\"[]\")) {\n relations.singular.push({\n name: fieldName,\n type: cleanType,\n });\n } else {\n relations.list.push({\n name: fieldName,\n type: cleanType,\n });\n }\n }\n\n prismaModelRelationFields[modelName] = relations;\n }\n }\n}\n\ninitializePrismaModels();\n\n/**\n * Retrieves the relations for a given Prisma model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\").\n * @returns {RelationFields|undefined} The relation fields for the model, or `undefined` if no relations are found.\n */\nexport function getPrismaModelRelations(modelName: string) {\n modelName = pascalCase(modelName);\n\n if (!(modelName in prismaModelRelationFields)) return;\n return prismaModelRelationFields[modelName];\n}\n\n/**\n * Retrieves all the model names from the Prisma schema.\n *\n * @returns {string[]} An array of model names (e.g., [\"User\", \"Post\"]).\n */\nfunction getModels() {\n return models;\n}\n\n/** Retuns a given model unique fields\n * @param {string} modelName - The name of model in PascalCase\n * @returns {string[]} An array of all unique fields,\n */\nfunction getModelUniqueFields(modelName: string) {\n return prismaModelsUniqueFields[modelName];\n}\n\nexport { getModels, getModelUniqueFields };\n"]}
|
|
@@ -25,9 +25,9 @@ function loadPrismaModule(a) {
|
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
26
|
if (!exports.prismaInstance) {
|
|
27
27
|
try {
|
|
28
|
-
let prismaPath = `${process.cwd()}/src/utils/prisma.${fs_helpers_1.
|
|
28
|
+
let prismaPath = `${process.cwd()}/src/utils/prisma.${(0, fs_helpers_1.getUserFileExtension)()}`;
|
|
29
29
|
if (!fs_1.default.existsSync(prismaPath)) {
|
|
30
|
-
prismaPath = `${process.cwd()}/src/utils/prisma/index.${fs_helpers_1.
|
|
30
|
+
prismaPath = `${process.cwd()}/src/utils/prisma/index.${(0, fs_helpers_1.getUserFileExtension)()}`;
|
|
31
31
|
}
|
|
32
32
|
const prismaModule = yield (0, global_helpers_1.importModule)(prismaPath);
|
|
33
33
|
exports.prismaInstance = prismaModule.default || prismaModule.prisma;
|
|
@@ -35,7 +35,9 @@ function loadPrismaModule(a) {
|
|
|
35
35
|
throw new Error("not found");
|
|
36
36
|
}
|
|
37
37
|
catch (error) {
|
|
38
|
-
throw new app_error_1.default("Could not initialize Prisma module.", 500, {
|
|
38
|
+
throw new app_error_1.default("Could not initialize Prisma module.", 500, {
|
|
39
|
+
tip: `Make sure your prisma instance is exported under src/utils/prisma.${(0, fs_helpers_1.getUserFileExtension)()}, read more about Arkos' Project Structure under https://www.arkosjs.com/docs/project-structure#root-structure`,
|
|
40
|
+
});
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
43
|
return exports.prismaInstance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/prisma.helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AASA,
|
|
1
|
+
{"version":3,"file":"prisma.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/prisma.helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AASA,4CAoBC;AAED,8CAEC;AAjCD,4CAAoB;AAEpB,gGAAuE;AACvE,4FAAmE;AACnE,6CAAoD;AACpD,qDAAgD;AAErC,QAAA,cAAc,GAAQ,IAAI,CAAC;AAEtC,SAAsB,gBAAgB,CAAC,CAAU;;QAC/C,IAAI,CAAC,sBAAc,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,IAAI,UAAU,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,qBAAqB,IAAA,iCAAoB,GAAE,EAAE,CAAC;gBAE/E,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC/B,UAAU,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,2BAA2B,IAAA,iCAAoB,GAAE,EAAE,CAAC;gBACnF,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,IAAA,6BAAY,EAAC,UAAU,CAAC,CAAC;gBACpD,sBAAc,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC;gBAE7D,IAAI,CAAC,sBAAc;oBAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,mBAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;oBAC7D,GAAG,EAAE,qEAAqE,IAAA,iCAAoB,GAAE,gHAAgH;iBACjN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,sBAAc,CAAC;IACxB,CAAC;CAAA;AAED,SAAgB,iBAAiB;IAC/B,OAAO,sBAAc,CAAC;AACxB,CAAC;AAEY,QAAA,uBAAuB,GAAG,IAAA,qBAAU,EAC/C,CAAO,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,EAAE,CAAC;IACT,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,mBAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC,CAAA,CACF,CAAC","sourcesContent":["import fs from \"fs\";\nimport { Request, Response, NextFunction } from \"express\";\nimport catchAsync from \"../../modules/error-handler/utils/catch-async\";\nimport AppError from \"../../modules/error-handler/utils/app-error\";\nimport { getUserFileExtension } from \"./fs.helpers\";\nimport { importModule } from \"./global.helpers\";\n\nexport let prismaInstance: any = null;\n\nexport async function loadPrismaModule(a?: string) {\n if (!prismaInstance) {\n try {\n let prismaPath = `${process.cwd()}/src/utils/prisma.${getUserFileExtension()}`;\n\n if (!fs.existsSync(prismaPath)) {\n prismaPath = `${process.cwd()}/src/utils/prisma/index.${getUserFileExtension()}`;\n }\n\n const prismaModule = await importModule(prismaPath);\n prismaInstance = prismaModule.default || prismaModule.prisma;\n\n if (!prismaInstance) throw new Error(\"not found\");\n } catch (error) {\n throw new AppError(\"Could not initialize Prisma module.\", 500, {\n tip: `Make sure your prisma instance is exported under src/utils/prisma.${getUserFileExtension()}, read more about Arkos' Project Structure under https://www.arkosjs.com/docs/project-structure#root-structure`,\n });\n }\n }\n return prismaInstance;\n}\n\nexport function getPrismaInstance() {\n return prismaInstance;\n}\n\nexport const checkDatabaseConnection = catchAsync(\n async (req: Request, res: Response, next: NextFunction) => {\n const prisma = await loadPrismaModule();\n try {\n await prisma.$connect();\n next();\n } catch (error: any) {\n console.error(\"Database connection error\", error.message);\n next(new AppError(error.message, 503));\n }\n }\n);\n"]}
|
|
@@ -62,8 +62,8 @@ function isFieldDefinition(line) {
|
|
|
62
62
|
}
|
|
63
63
|
function parseFieldType(fieldType, line) {
|
|
64
64
|
const baseType = fieldType.replace("?", "").replace("[]", "");
|
|
65
|
-
const isArray = fieldType.includes("[]");
|
|
66
|
-
if (line.includes("@relation")) {
|
|
65
|
+
const isArray = fieldType === null || fieldType === void 0 ? void 0 : fieldType.includes("[]");
|
|
66
|
+
if (line === null || line === void 0 ? void 0 : line.includes("@relation")) {
|
|
67
67
|
return isArray ? `${baseType}[]` : baseType;
|
|
68
68
|
}
|
|
69
69
|
let tsType = baseType;
|
|
@@ -124,7 +124,7 @@ function generateTypes() {
|
|
|
124
124
|
const parts = line.trim().split(/\s+/);
|
|
125
125
|
const fieldName = parts[0];
|
|
126
126
|
const fieldType = parts[1];
|
|
127
|
-
const isOptional = line.includes("?");
|
|
127
|
+
const isOptional = line === null || line === void 0 ? void 0 : line.includes("?");
|
|
128
128
|
const parsedType = parseFieldType(fieldType, line);
|
|
129
129
|
typeDefinitions += ` ${fieldName}${isOptional ? "?" : ""}: ${parsedType};\n`;
|
|
130
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-prisma-types.js","sourceRoot":"","sources":["../../../../src/utils/scripts/export-prisma-types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAE7C,SAAS,mBAAmB;IAC1B,MAAM,KAAK,GAAG,EAAE;SACb,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9C,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,cAAc,IAAI,IAAI,GAAG,OAAO,CAAC;IACnC,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IAErC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAG/C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAG/D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAGnD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,IAAY;IAErD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"export-prisma-types.js","sourceRoot":"","sources":["../../../../src/utils/scripts/export-prisma-types.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\n\nconst SCHEMA_FOLDER_PATH = \"./prisma/schema\";\n\nfunction getAllSchemaContent(): string {\n const files = fs\n .readdirSync(SCHEMA_FOLDER_PATH)\n .filter((file) => file.endsWith(\".prisma\"));\n\n let combinedSchema = \"\";\n for (const file of files) {\n const filePath = path.join(SCHEMA_FOLDER_PATH, file);\n const content = fs.readFileSync(filePath, \"utf-8\");\n combinedSchema += \"\\n\" + content;\n }\n\n return combinedSchema;\n}\n\nfunction isFieldDefinition(line: string): boolean {\n // Ignore lines that start with @@ (model attributes)\n if (line.trim().startsWith(\"@@\")) return false;\n\n // Ignore empty lines and comments\n if (!line.trim() || line.trim().startsWith(\"//\")) return false;\n\n // Must start with a valid field name (letter or underscore)\n if (!/^\\s*[a-zA-Z_]\\w*\\s/.test(line)) return false;\n\n // Must have at least a name and type\n const parts = line.trim().split(/\\s+/);\n if (parts.length < 2) return false;\n\n return true;\n}\n\nfunction parseFieldType(fieldType: string, line: string): string {\n // Remove any ? or [] from the type for the switch\n const baseType = fieldType.replace(\"?\", \"\").replace(\"[]\", \"\");\n const isArray = fieldType?.includes(\"[]\");\n\n // If it's a relation (has @relation), keep the original type\n if (line?.includes(\"@relation\")) {\n return isArray ? `${baseType}[]` : baseType;\n }\n\n // Convert Prisma scalar types to TypeScript types\n let tsType = baseType;\n switch (baseType) {\n case \"String\":\n tsType = \"string\";\n break;\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n tsType = \"number\";\n break;\n case \"Boolean\":\n tsType = \"boolean\";\n break;\n case \"DateTime\":\n tsType = \"Date\";\n break;\n case \"Json\":\n tsType = \"any\";\n break;\n case \"BigInt\":\n tsType = \"bigint\";\n break;\n case \"Bytes\":\n tsType = \"Buffer\";\n break;\n }\n\n return isArray ? `${tsType}[]` : tsType;\n}\n\nfunction generateTypes() {\n const schemaContent = getAllSchemaContent();\n\n let typeDefinitions = `// Auto-generated types from Prisma Schema\\n\\n`;\n\n // Generate enum types\n const enumRegex = /enum\\s+(\\w+)\\s*{([^}]*)}/g;\n let enumMatch;\n while ((enumMatch = enumRegex.exec(schemaContent)) !== null) {\n const [_, enumName, enumContent] = enumMatch;\n const values = enumContent\n .trim()\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter(Boolean);\n\n typeDefinitions += `export enum ${enumName} {\\n`;\n values.forEach((value) => {\n typeDefinitions += ` ${value} = \"${value}\",\\n`;\n });\n typeDefinitions += `}\\n\\n`;\n }\n\n // Generate interface types\n const modelRegex = /model\\s+(\\w+)\\s*{([^}]*)}/g;\n let modelMatch;\n while ((modelMatch = modelRegex.exec(schemaContent)) !== null) {\n const [_, modelName, modelContent] = modelMatch;\n\n typeDefinitions += `export interface ${modelName} {\\n`;\n\n const lines = modelContent.split(\"\\n\");\n for (const line of lines) {\n if (!isFieldDefinition(line)) continue;\n\n const parts = line.trim().split(/\\s+/);\n const fieldName = parts[0];\n const fieldType = parts[1];\n\n const isOptional = line?.includes(\"?\");\n const parsedType = parseFieldType(fieldType, line);\n\n typeDefinitions += ` ${fieldName}${\n isOptional ? \"?\" : \"\"\n }: ${parsedType};\\n`;\n }\n\n typeDefinitions += `}\\n\\n`;\n }\n\n const outputDir = path.join(process.cwd(), \".cache/types\");\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n const outputPath = path.join(outputDir, \"prisma.ts\");\n fs.writeFileSync(outputPath, typeDefinitions);\n console.info(\"Types generated successfully at:\", outputPath);\n}\n\n// Run the type generator\ngenerateTypes();\n"]}
|
|
@@ -29,7 +29,7 @@ function generateZodSchemas(inputContent) {
|
|
|
29
29
|
function typeToZodSchema(type, isOptional = false) {
|
|
30
30
|
type = type.trim();
|
|
31
31
|
const baseSchema = (() => {
|
|
32
|
-
if (type.includes("Date")) {
|
|
32
|
+
if (type === null || type === void 0 ? void 0 : type.includes("Date")) {
|
|
33
33
|
return `z.date().or(z.string()).refine((val) => val instanceof Date || !isNaN(Date.parse(val)), "Data inválida")`;
|
|
34
34
|
}
|
|
35
35
|
switch (type) {
|
|
@@ -42,7 +42,7 @@ function generateZodSchemas(inputContent) {
|
|
|
42
42
|
case "any":
|
|
43
43
|
return "z.any()";
|
|
44
44
|
default:
|
|
45
|
-
if (type.includes("[]")) {
|
|
45
|
+
if (type === null || type === void 0 ? void 0 : type.includes("[]")) {
|
|
46
46
|
const arrayType = type.replace("[]", "");
|
|
47
47
|
switch (arrayType) {
|
|
48
48
|
case "string":
|
|
@@ -79,8 +79,9 @@ function generateZodSchemas(inputContent) {
|
|
|
79
79
|
.map((line) => line.trim())
|
|
80
80
|
.filter((line) => line)
|
|
81
81
|
.map((line) => {
|
|
82
|
+
var _a;
|
|
82
83
|
const [propName, type] = line.split(":").map((part) => part.trim());
|
|
83
|
-
if (["createdAt", "updatedAt", "deletedAt"].includes(propName.replace("?", ""))) {
|
|
84
|
+
if ((_a = ["createdAt", "updatedAt", "deletedAt"]) === null || _a === void 0 ? void 0 : _a.includes(propName.replace("?", ""))) {
|
|
84
85
|
return null;
|
|
85
86
|
}
|
|
86
87
|
const isOptional = propName.endsWith("?");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-zod-schemas.js","sourceRoot":"","sources":["../../../../src/utils/scripts/generate-zod-schemas.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,2DAA6B;AAC7B,gDAAwB;AAExB,SAAe,kBAAkB,CAAC,YAAoB;;QACpD,IAAI,MAAM,GAAG,8BAA8B,CAAC;QAG5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,8BAA8B,CAAC;QACjD,IAAI,SAAS,CAAC;QACd,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAChC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAGxB,MAAM,IAAI,eAAe,QAAQ,OAAO,UAAU,SAAS,CAAC;QAC9D,CAAC;QAGD,SAAS,eAAe,CAAC,IAAY,EAAE,aAAsB,KAAK;YAChE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;gBACvB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"generate-zod-schemas.js","sourceRoot":"","sources":["../../../../src/utils/scripts/generate-zod-schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs/promises\";\nimport path from \"path\";\n\nasync function generateZodSchemas(inputContent: string): Promise<any> {\n let output = `import { z } from \"zod\";\\n\\n`;\n\n // Extract enum names first to help identify enum types later\n const enumNames = new Set();\n const enumRegex = /export enum (\\w+) {([^}]+)}/g;\n let enumMatch;\n while ((enumMatch = enumRegex.exec(inputContent)) !== null) {\n const enumName = enumMatch[1];\n const enumValues = enumMatch[2];\n enumNames.add(enumName);\n\n // Keep original enum definition\n output += `export enum ${enumName} {\\n${enumValues}\\n}\\n\\n`;\n }\n\n // Helper function to convert type to zod schema\n function typeToZodSchema(type: string, isOptional: boolean = false): string {\n type = type.trim();\n const baseSchema = (() => {\n if (type?.includes(\"Date\")) {\n return `z.date().or(z.string()).refine((val) => val instanceof Date || !isNaN(Date.parse(val)), \"Data inválida\")`;\n }\n switch (type) {\n case \"string\":\n return \"z.string()\";\n case \"number\":\n return \"z.number()\";\n case \"boolean\":\n return \"z.boolean()\";\n case \"any\":\n return \"z.any()\";\n default:\n // Handle arrays\n if (type?.includes(\"[]\")) {\n const arrayType = type.replace(\"[]\", \"\");\n // Handle primitive types in arrays\n switch (arrayType) {\n case \"string\":\n return \"z.array(z.string())\";\n case \"number\":\n return \"z.array(z.number())\";\n case \"boolean\":\n return \"z.array(z.boolean())\";\n default:\n // Check if it's an enum type\n if (enumNames.has(arrayType)) {\n return `z.array(z.nativeEnum(${arrayType}))`;\n }\n // Otherwise it's a relation/model type\n return `z.array(${arrayType}Schema)`;\n }\n }\n // Handle single types\n if (type.match(/^[A-Z]/)) {\n // Check if it's an enum type\n if (enumNames.has(type)) {\n return `z.nativeEnum(${type})`;\n }\n // Otherwise it's a relation/model type\n return `${type}Schema`;\n }\n return \"z.any()\";\n }\n })();\n\n return isOptional ? `${baseSchema}.optional()` : baseSchema;\n }\n\n // Extract and generate interface schemas\n const interfaceRegex = /export interface (\\w+) {([^}]+)}/g;\n let interfaceMatch;\n while ((interfaceMatch = interfaceRegex.exec(inputContent)) !== null) {\n const interfaceName = interfaceMatch[1];\n const interfaceBody = interfaceMatch[2];\n\n // Parse interface properties\n const properties = interfaceBody\n .split(\";\")\n .map((line) => line.trim())\n .filter((line) => line)\n .map((line) => {\n const [propName, type] = line.split(\":\").map((part) => part.trim());\n // Skip createdAt, updatedAt, and deletedAt\n if (\n [\"createdAt\", \"updatedAt\", \"deletedAt\"]?.includes(\n propName.replace(\"?\", \"\")\n )\n ) {\n return null;\n }\n const isOptional = propName.endsWith(\"?\");\n const cleanPropName = propName.replace(\"?\", \"\");\n return { name: cleanPropName, type, isOptional };\n })\n .filter((prop) => prop !== null);\n\n output += `export const ${interfaceName}Schema = z.object({\\n`;\n properties.forEach((prop, index) => {\n if (prop) {\n output += ` ${prop.name}: ${typeToZodSchema(\n prop.type,\n prop.isOptional\n )}`;\n if (index < properties.length - 1) output += \",\";\n output += \"\\n\";\n }\n });\n output += \"});\\n\\n\";\n }\n\n return output;\n}\n\n// Main execution\nasync function main() {\n try {\n const inputContent = await fs.readFile(\n path.join(process.cwd(), \".cache/types\", \"prisma.ts\"),\n \"utf-8\"\n );\n const generatedSchemas = await generateZodSchemas(inputContent);\n await fs.writeFile(\n path.join(process.cwd(), \".cache/generated-schemas.ts\"),\n generatedSchemas\n );\n console.info(\"Zod schemas generated successfully!\");\n } catch (error) {\n console.error(\"Error generating schemas:\", error);\n process.exit(1);\n }\n}\n\nmain();\n"]}
|
package/dist/es2020/app.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var R=function(e,
|
|
1
|
+
"use strict";var R=function(e,w,u,n){function c(l){return l instanceof u?l:new u(function(d){d(l)})}return new(u||(u=Promise))(function(l,d){function t(i){try{r(n.next(i))}catch(s){d(s)}}function o(i){try{r(n.throw(i))}catch(s){d(s)}}function r(i){i.done?l(i.value):c(i.value).then(t,o)}r((n=n.apply(e,w||[])).next())})};import y from"express";import P from"cors";import b from"cookie-parser";import{getAuthRouter as q}from"./modules/auth/auth.router";import{getPrismaModelsRouter as E,getAvailableResourcesAndRoutesRouter as A}from"./modules/base/base.router";import O from"./modules/error-handler/error-handler.controller";import{rateLimit as _}from"express-rate-limit";import p from"path";import*as H from"dotenv";import M from"compression";import{handleRequestLogs as x}from"./modules/base/base.middlewares";import{checkDatabaseConnection as T,loadPrismaModule as L}from"./utils/helpers/prisma.helpers";import{getFileUploaderRouter as U}from"./modules/file-uploader/file-uploader.router";import{queryParser as N}from"./utils/helpers/query-parser.helpers";import h from"./utils/helpers/deepmerge.helper";const m=process.env.NODE_ENV;let a=".env";m==="production"?a=p.resolve(process.cwd(),".env.production"):m==="staging"?a=p.resolve(process.cwd(),".env.staging"):m==="development"?a=p.resolve(process.cwd(),".env.development"):m==="local"?a=p.resolve(process.cwd(),".env.local"):m==="test"?a=p.resolve(process.cwd(),".env.test"):m==="qa"&&(a=p.resolve(process.cwd(),".env.qa")),H.config({path:a});export const app=y();export function bootstrap(e){return R(this,void 0,void 0,function*(){var w,u,n;yield L(),e.configureApp&&(yield e.configureApp(app));const c=e?.middlewares,l=c?.disable||[],d=c?.replace||{};l?.includes("compression")||app.use(d.compression||M(e?.compressionOptions)),l?.includes("global-rate-limit")||app.use(d.globalRateLimit||_(h({windowMs:60*1e3,limit:1e3,standardHeaders:"draft-7",legacyHeaders:!1},e?.globalRequestRateLimitOptions||{}))),l?.includes("cors")||app.use(d.cors||P(!((w=e?.cors)===null||w===void 0)&&w.customHandler?e.cors.customHandler:h({origin:(i,s)=>{var f;const v=(f=e?.cors)===null||f===void 0?void 0:f.allowedOrigins;v==="*"?s(null,!0):Array.isArray(v)?s(null,!i||v?.includes(i)):typeof v=="string"?s(null,!i||v===i):s(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},((u=e?.cors)===null||u===void 0?void 0:u.options)||{}))),l?.includes("express-json")||app.use(d.expressJson||y.json(e?.jsonBodyParserOptions)),l?.includes("cookie-parser")||app.use(d.cookieParser||b(...e?.cookieParserParameters||[])),l?.includes("query-parser")||app.use(d.queryParser||N(h({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),l?.includes("database-connection")||app.use(d.databaseConnection||T),l?.includes("request-logger")||app.use(d.requestLogger||x),!((n=e?.middlewares)===null||n===void 0)&&n.additional&&e.middlewares.additional.forEach(i=>{app.use(i)});const t=e?.routers,o=t?.disable||[],r=t?.replace||{};if(o?.includes("welcome-endpoint")||app.get("/api",r.welcomeEndpoint||((i,s)=>{s.status(200).json({message:e.welcomeMessage})})),!o?.includes("file-uploader")){const i=r.fileUploader?yield r.fileUploader(e):yield U(e);app.use(i)}if(!o?.includes("auth-router")&&e.authentication){const i=r.authRouter?yield r.authRouter(e):yield q(e);app.use("/api",i)}if(!o?.includes("prisma-models-router")){const i=r.prismaModelsRouter?yield r.prismaModelsRouter(e):yield E(e);app.use("/api",i)}return app.use("/api",A()),t?.additional&&t.additional.forEach(i=>{app.use(i)}),l?.includes("global-error-handler")||app.use(d.globalErrorHandler||O),app})}
|
package/dist/es2020/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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","sourcesContent":["import express from \"express\";\nimport cors from \"cors\";\nimport cookieParser from \"cookie-parser\";\nimport { getAuthRouter } from \"./modules/auth/auth.router\";\nimport {\n getPrismaModelsRouter,\n getAvailableResourcesAndRoutesRouter,\n} from \"./modules/base/base.router\";\nimport errorHandler from \"./modules/error-handler/error-handler.controller\";\nimport { rateLimit } from \"express-rate-limit\";\nimport path from \"path\";\nimport * as dotenv from \"dotenv\";\nimport compression from \"compression\";\nimport { handleRequestLogs } from \"./modules/base/base.middlewares\";\nimport {\n checkDatabaseConnection,\n loadPrismaModule,\n} from \"./utils/helpers/prisma.helpers\";\nimport { getFileUploaderRouter } from \"./modules/file-uploader/file-uploader.router\";\nimport { ArkosConfig } from \"./types/arkos-config\";\nimport { queryParser } from \"./utils/helpers/query-parser.helpers\";\nimport deepmerge from \"./utils/helpers/deepmerge.helper\";\n\nconst ENV = process.env.NODE_ENV;\nlet envPath = \".env\";\n\n// Default to `.env.local` if available in any environment\nif (ENV === \"production\") {\n envPath = path.resolve(process.cwd(), \".env.production\");\n} else if (ENV === \"staging\") {\n envPath = path.resolve(process.cwd(), \".env.staging\");\n} else if (ENV === \"development\") {\n envPath = path.resolve(process.cwd(), \".env.development\");\n} else if (ENV === \"local\") {\n // For local development, .env.local can be used\n envPath = path.resolve(process.cwd(), \".env.local\");\n}\n\n// Optionally, add support for `.env.test`, `.env.qa`, or other environments if required\nelse if (ENV === \"test\") {\n envPath = path.resolve(process.cwd(), \".env.test\");\n} else if (ENV === \"qa\") {\n envPath = path.resolve(process.cwd(), \".env.qa\");\n}\n\ndotenv.config({ path: envPath });\n\nexport const app: express.Express = express();\n\nexport async function bootstrap(\n arkosConfig: ArkosConfig\n): Promise<express.Express> {\n await loadPrismaModule();\n\n if (arkosConfig.configureApp) await arkosConfig.configureApp(app);\n\n const middlewaresConfig = arkosConfig?.middlewares;\n const disabledMiddlewares = middlewaresConfig?.disable || [];\n const replacedMiddlewares = middlewaresConfig?.replace || {};\n\n // Compression middleware\n if (!disabledMiddlewares.includes(\"compression\"))\n app.use(\n replacedMiddlewares.compression ||\n compression(arkosConfig?.compressionOptions)\n );\n\n // Global rate limit middleware\n if (!disabledMiddlewares.includes(\"global-rate-limit\"))\n app.use(\n replacedMiddlewares.globalRateLimit ||\n rateLimit(\n deepmerge(\n {\n windowMs: 60 * 1000,\n limit: 1000,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n },\n arkosConfig?.globalRequestRateLimitOptions || {}\n )\n )\n );\n\n // CORS middleware\n if (!disabledMiddlewares.includes(\"cors\"))\n app.use(\n replacedMiddlewares.cors ||\n cors(\n arkosConfig?.cors?.customHandler\n ? arkosConfig.cors.customHandler\n : deepmerge(\n {\n origin: (\n origin: string,\n cb: (err: Error | null, allow?: boolean) => void\n ) => {\n const allowed = arkosConfig?.cors?.allowedOrigins;\n\n if (allowed === \"*\") {\n cb(null, true);\n } else if (Array.isArray(allowed)) {\n cb(null, !origin || allowed.includes(origin));\n } else if (typeof allowed === \"string\") {\n cb(null, !origin || allowed === origin);\n } else {\n cb(null, false);\n }\n },\n methods: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\n \"Content-Type\",\n \"Authorization\",\n \"Connection\",\n ],\n credentials: true,\n },\n arkosConfig?.cors?.options || {}\n )\n )\n );\n\n // JSON body parser middleware\n if (!disabledMiddlewares.includes(\"express-json\"))\n app.use(\n replacedMiddlewares.expressJson ||\n express.json(arkosConfig?.jsonBodyParserOptions)\n );\n\n // Cookie parser middleware\n if (!disabledMiddlewares.includes(\"cookie-parser\"))\n app.use(\n replacedMiddlewares.cookieParser ||\n cookieParser(...[...(arkosConfig?.cookieParserParameters || [])])\n );\n\n // Query parser middleware\n if (!disabledMiddlewares.includes(\"query-parser\"))\n app.use(\n replacedMiddlewares.queryParser ||\n queryParser(\n deepmerge(\n {\n parseNull: true,\n parseUndefined: true,\n parseBoolean: true,\n },\n arkosConfig?.queryParserOptions || {}\n )\n )\n );\n\n // Database connection check middleware\n if (!disabledMiddlewares.includes(\"database-connection\"))\n app.use(replacedMiddlewares.databaseConnection || checkDatabaseConnection);\n\n // Request logger middleware\n if (!disabledMiddlewares.includes(\"request-logger\"))\n app.use(replacedMiddlewares.requestLogger || handleRequestLogs);\n\n // Additional custom middlewares\n if (arkosConfig?.middlewares?.additional)\n arkosConfig.middlewares.additional.forEach((middleware) => {\n app.use(middleware);\n });\n\n // Configure routers\n const routersConfig = arkosConfig?.routers;\n const disabledRouters = routersConfig?.disable || [];\n const replacedRouters = routersConfig?.replace || {};\n\n // Welcome endpoint\n if (!disabledRouters.includes(\"welcome-endpoint\"))\n app.get(\n \"/api\",\n replacedRouters.welcomeEndpoint ||\n ((req, res) => {\n res.status(200).json({ message: arkosConfig.welcomeMessage });\n })\n );\n\n // File uploader router\n if (!disabledRouters.includes(\"file-uploader\")) {\n const fileUploaderRouter = replacedRouters.fileUploader\n ? await replacedRouters.fileUploader(arkosConfig)\n : await getFileUploaderRouter(arkosConfig);\n app.use(fileUploaderRouter);\n }\n\n // Auth router\n if (!disabledRouters.includes(\"auth-router\") && arkosConfig.authentication) {\n const authRouter = replacedRouters.authRouter\n ? await replacedRouters.authRouter(arkosConfig)\n : await getAuthRouter(arkosConfig);\n app.use(\"/api\", authRouter);\n }\n\n // Prisma models router\n if (!disabledRouters.includes(\"prisma-models-router\")) {\n const modelsRouter = replacedRouters.prismaModelsRouter\n ? await replacedRouters.prismaModelsRouter(arkosConfig)\n : await getPrismaModelsRouter(arkosConfig);\n app.use(\"/api\", modelsRouter);\n }\n\n app.use(\"/api\", getAvailableResourcesAndRoutesRouter());\n\n // Additional custom routers\n if (routersConfig?.additional) {\n routersConfig.additional.forEach((router) => {\n app.use(router);\n });\n }\n\n // Global error handler middleware (must be last)\n if (!disabledMiddlewares.includes(\"global-error-handler\"))\n app.use(replacedMiddlewares.globalErrorHandler || errorHandler);\n\n return app;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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","sourcesContent":["import express from \"express\";\nimport cors from \"cors\";\nimport cookieParser from \"cookie-parser\";\nimport { getAuthRouter } from \"./modules/auth/auth.router\";\nimport {\n getPrismaModelsRouter,\n getAvailableResourcesAndRoutesRouter,\n} from \"./modules/base/base.router\";\nimport errorHandler from \"./modules/error-handler/error-handler.controller\";\nimport { rateLimit } from \"express-rate-limit\";\nimport path from \"path\";\nimport * as dotenv from \"dotenv\";\nimport compression from \"compression\";\nimport { handleRequestLogs } from \"./modules/base/base.middlewares\";\nimport {\n checkDatabaseConnection,\n loadPrismaModule,\n} from \"./utils/helpers/prisma.helpers\";\nimport { getFileUploaderRouter } from \"./modules/file-uploader/file-uploader.router\";\nimport { ArkosConfig } from \"./types/arkos-config\";\nimport { queryParser } from \"./utils/helpers/query-parser.helpers\";\nimport deepmerge from \"./utils/helpers/deepmerge.helper\";\n\nconst ENV = process.env.NODE_ENV;\nlet envPath = \".env\";\n\n// Default to `.env.local` if available in any environment\nif (ENV === \"production\") {\n envPath = path.resolve(process.cwd(), \".env.production\");\n} else if (ENV === \"staging\") {\n envPath = path.resolve(process.cwd(), \".env.staging\");\n} else if (ENV === \"development\") {\n envPath = path.resolve(process.cwd(), \".env.development\");\n} else if (ENV === \"local\") {\n // For local development, .env.local can be used\n envPath = path.resolve(process.cwd(), \".env.local\");\n}\n\n// Optionally, add support for `.env.test`, `.env.qa`, or other environments if required\nelse if (ENV === \"test\") {\n envPath = path.resolve(process.cwd(), \".env.test\");\n} else if (ENV === \"qa\") {\n envPath = path.resolve(process.cwd(), \".env.qa\");\n}\n\ndotenv.config({ path: envPath });\n\nexport const app: express.Express = express();\n\nexport async function bootstrap(\n arkosConfig: ArkosConfig\n): Promise<express.Express> {\n await loadPrismaModule();\n\n if (arkosConfig.configureApp) await arkosConfig.configureApp(app);\n\n const middlewaresConfig = arkosConfig?.middlewares;\n const disabledMiddlewares = middlewaresConfig?.disable || [];\n const replacedMiddlewares = middlewaresConfig?.replace || {};\n\n // Compression middleware\n if (!disabledMiddlewares?.includes(\"compression\"))\n app.use(\n replacedMiddlewares.compression ||\n compression(arkosConfig?.compressionOptions)\n );\n\n // Global rate limit middleware\n if (!disabledMiddlewares?.includes(\"global-rate-limit\"))\n app.use(\n replacedMiddlewares.globalRateLimit ||\n rateLimit(\n deepmerge(\n {\n windowMs: 60 * 1000,\n limit: 1000,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n },\n arkosConfig?.globalRequestRateLimitOptions || {}\n )\n )\n );\n\n // CORS middleware\n if (!disabledMiddlewares?.includes(\"cors\"))\n app.use(\n replacedMiddlewares.cors ||\n cors(\n arkosConfig?.cors?.customHandler\n ? arkosConfig.cors.customHandler\n : deepmerge(\n {\n origin: (\n origin: string,\n cb: (err: Error | null, allow?: boolean) => void\n ) => {\n const allowed = arkosConfig?.cors?.allowedOrigins;\n\n if (allowed === \"*\") {\n cb(null, true);\n } else if (Array.isArray(allowed)) {\n cb(null, !origin || allowed?.includes(origin));\n } else if (typeof allowed === \"string\") {\n cb(null, !origin || allowed === origin);\n } else {\n cb(null, false);\n }\n },\n methods: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\n \"Content-Type\",\n \"Authorization\",\n \"Connection\",\n ],\n credentials: true,\n },\n arkosConfig?.cors?.options || {}\n )\n )\n );\n\n // JSON body parser middleware\n if (!disabledMiddlewares?.includes(\"express-json\"))\n app.use(\n replacedMiddlewares.expressJson ||\n express.json(arkosConfig?.jsonBodyParserOptions)\n );\n\n // Cookie parser middleware\n if (!disabledMiddlewares?.includes(\"cookie-parser\"))\n app.use(\n replacedMiddlewares.cookieParser ||\n cookieParser(...[...(arkosConfig?.cookieParserParameters || [])])\n );\n\n // Query parser middleware\n if (!disabledMiddlewares?.includes(\"query-parser\"))\n app.use(\n replacedMiddlewares.queryParser ||\n queryParser(\n deepmerge(\n {\n parseNull: true,\n parseUndefined: true,\n parseBoolean: true,\n },\n arkosConfig?.queryParserOptions || {}\n )\n )\n );\n\n // Database connection check middleware\n if (!disabledMiddlewares?.includes(\"database-connection\"))\n app.use(replacedMiddlewares.databaseConnection || checkDatabaseConnection);\n\n // Request logger middleware\n if (!disabledMiddlewares?.includes(\"request-logger\"))\n app.use(replacedMiddlewares.requestLogger || handleRequestLogs);\n\n // Additional custom middlewares\n if (arkosConfig?.middlewares?.additional)\n arkosConfig.middlewares.additional.forEach((middleware) => {\n app.use(middleware);\n });\n\n // Configure routers\n const routersConfig = arkosConfig?.routers;\n const disabledRouters = routersConfig?.disable || [];\n const replacedRouters = routersConfig?.replace || {};\n\n // Welcome endpoint\n if (!disabledRouters?.includes(\"welcome-endpoint\"))\n app.get(\n \"/api\",\n replacedRouters.welcomeEndpoint ||\n ((req, res) => {\n res.status(200).json({ message: arkosConfig.welcomeMessage });\n })\n );\n\n // File uploader router\n if (!disabledRouters?.includes(\"file-uploader\")) {\n const fileUploaderRouter = replacedRouters.fileUploader\n ? await replacedRouters.fileUploader(arkosConfig)\n : await getFileUploaderRouter(arkosConfig);\n app.use(fileUploaderRouter);\n }\n\n // Auth router\n if (!disabledRouters?.includes(\"auth-router\") && arkosConfig.authentication) {\n const authRouter = replacedRouters.authRouter\n ? await replacedRouters.authRouter(arkosConfig)\n : await getAuthRouter(arkosConfig);\n app.use(\"/api\", authRouter);\n }\n\n // Prisma models router\n if (!disabledRouters?.includes(\"prisma-models-router\")) {\n const modelsRouter = replacedRouters.prismaModelsRouter\n ? await replacedRouters.prismaModelsRouter(arkosConfig)\n : await getPrismaModelsRouter(arkosConfig);\n app.use(\"/api\", modelsRouter);\n }\n\n app.use(\"/api\", getAvailableResourcesAndRoutesRouter());\n\n // Additional custom routers\n if (routersConfig?.additional) {\n routersConfig.additional.forEach((router) => {\n app.use(router);\n });\n }\n\n // Global error handler middleware (must be last)\n if (!disabledMiddlewares?.includes(\"global-error-handler\"))\n app.use(replacedMiddlewares.globalErrorHandler || errorHandler);\n\n return app;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC","sourcesContent":["export * from \"../../utils/helpers/change-case.helpers\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC","sourcesContent":["export * from \"../../utils/helpers/change-case.helpers\";\n\nexport { MsDuration } from \"../../modules/auth/utils/helpers/auth.controller.helpers\";\n"]}
|
|
@@ -72,15 +72,14 @@ export const authControllerFactory = (...args_1) => __awaiter(void 0, [...args_1
|
|
|
72
72
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
73
73
|
const authConfigs = (_a = getArkosConfig()) === null || _a === void 0 ? void 0 : _a.authentication;
|
|
74
74
|
const usernameField = determineUsernameField(req);
|
|
75
|
-
const
|
|
76
|
-
const usernameValue = req.body[
|
|
75
|
+
const lastField = usernameField.split(".")[usernameField.split(".").length - 1];
|
|
76
|
+
const usernameValue = req.body[lastField];
|
|
77
77
|
const { password } = req.body;
|
|
78
|
-
if (!usernameValue || !password)
|
|
79
|
-
return next(new AppError(`Please provide ${
|
|
80
|
-
}
|
|
78
|
+
if (!usernameValue || !password)
|
|
79
|
+
return next(new AppError(`Please provide both ${lastField} and password`, 400));
|
|
81
80
|
const prisma = getPrismaInstance();
|
|
82
81
|
let whereClause;
|
|
83
|
-
if (usernameField.includes(".")) {
|
|
82
|
+
if (usernameField === null || usernameField === void 0 ? void 0 : usernameField.includes(".")) {
|
|
84
83
|
const valueToFind = getNestedValue(req.body, usernameField);
|
|
85
84
|
if (valueToFind === undefined) {
|
|
86
85
|
return next(new AppError(`Invalid ${usernameField} provided`, 400));
|
|
@@ -95,17 +94,14 @@ export const authControllerFactory = (...args_1) => __awaiter(void 0, [...args_1
|
|
|
95
94
|
});
|
|
96
95
|
if (!user ||
|
|
97
96
|
!(yield authService.isCorrectPassword(password, user.password))) {
|
|
98
|
-
return next(new AppError(`Incorrect ${
|
|
97
|
+
return next(new AppError(`Incorrect ${lastField} or password`, 401));
|
|
99
98
|
}
|
|
100
99
|
const token = authService.signJwtToken(user.id);
|
|
101
100
|
const cookieOptions = {
|
|
102
101
|
expires: new Date(Date.now() +
|
|
103
102
|
Number(toMs(((_b = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.jwt) === null || _b === void 0 ? void 0 : _b.expiresIn) ||
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
60 *
|
|
107
|
-
60 *
|
|
108
|
-
1000),
|
|
103
|
+
process.env.JWT_EXPIRES_IN ||
|
|
104
|
+
arkosEnv.JWT_EXPIRES_IN))),
|
|
109
105
|
httpOnly: ((_d = (_c = authConfigs === null || authConfigs === void 0 ? void 0 : authConfigs.jwt) === null || _c === void 0 ? void 0 : _c.cookie) === null || _d === void 0 ? void 0 : _d.httpOnly) ||
|
|
110
106
|
process.env.JWT_COOKIE_HTTP_ONLY === "true" ||
|
|
111
107
|
true,
|