@infinite-debugger/swagger-to-ts
Version:
swagger-to-ts is a powerful library that allows you to generate TypeScript code from Swagger documentation or OpenAPI specifications. It simplifies the process of integrating API definitions into your TypeScript projects, saving you time and effort.
78 lines (77 loc) • 6.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPermissionsCodeConfiguration = void 0;
const getPermissionsCodeConfiguration = ({ requestGroupings, scopeName, }) => {
return Object.entries(requestGroupings).reduce((accumulator, [tagName, requestGrouping]) => {
const scopedTagName = (scopeName ? scopeName + ' ' : '') + tagName;
const upperCaseTagName = scopedTagName.replace(/\W+/g, '_').toUpperCase();
const snakeCaseTagName = scopedTagName.replace(/\W+/g, '_').toLowerCase();
const manageModulePermissionCode = `MANAGE_${upperCaseTagName}`;
const manageModulePermissionsVariableName = `${manageModulePermissionCode}_PERMISSION`;
const permissionCodeExports = [
`export const ${manageModulePermissionsVariableName} = 'MANAGE_${upperCaseTagName}';`,
];
const permissionsListExportItemsCode = [
`
{
category: '${scopedTagName}',
code: ${manageModulePermissionsVariableName},
scope: '${snakeCaseTagName}',
description:
'A user with this permission can perform all operations on ${scopedTagName}',
name: 'Manage ${scopedTagName}',
parentPermissionCode: 'ALL_FUNCTIONS',
},
`.trimIndent(),
];
if (requestGrouping.permissons) {
requestGrouping.permissons.forEach((permision) => {
const { code } = permision;
const normalizedCode = code.replace(/\W+/g, '_').toUpperCase();
permissionCodeExports.push(`export const ${normalizedCode}_PERMISSION = ${JSON.stringify(normalizedCode)};`);
permissionsListExportItemsCode.push('{\n' +
Object.entries({
category: scopedTagName,
...permision,
...(() => {
if (!permision.parentPermissionCode) {
return {
parentPermissionCode: manageModulePermissionCode,
};
}
})(),
})
.map(([key, value]) => {
if (key === 'code') {
return `${key}: ${normalizedCode}_PERMISSION,`;
}
if (key === 'parentPermissionCode' && value) {
return `${key}: ${value
.replace(/\W+/g, '_')
.toUpperCase()}_PERMISSION,`;
}
return `${key}: ${JSON.stringify(value)},`;
})
.join('\n') +
'\n},');
});
}
const permissionsListExport = `
export const all${tagName.toPascalCase()}Permissions = [
${permissionsListExportItemsCode.join('\n')}
];
`.trimIndent();
const outputCode = `
${permissionCodeExports.join('\n')}
${permissionsListExport}
`.trimIndent();
accumulator[tagName] = {
outputCode,
exports: [...permissionCodeExports, permissionsListExport],
};
return accumulator;
}, {});
};
exports.getPermissionsCodeConfiguration = getPermissionsCodeConfiguration;
//#endregion
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVybWlzc2lvbnNDb2RlR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9QZXJtaXNzaW9uc0NvZGVHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBY08sTUFBTSwrQkFBK0IsR0FBRyxDQUFDLEVBQzlDLGdCQUFnQixFQUNoQixTQUFTLEdBQ21DLEVBQUUsRUFBRTtJQUNoRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQzVDLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxFQUFFLEVBQUU7UUFDMUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUNuRSxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFFLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUUsTUFBTSwwQkFBMEIsR0FBRyxVQUFVLGdCQUFnQixFQUFFLENBQUM7UUFDaEUsTUFBTSxtQ0FBbUMsR0FBRyxHQUFHLDBCQUEwQixhQUFhLENBQUM7UUFDdkYsTUFBTSxxQkFBcUIsR0FBRztZQUM1QixnQkFBZ0IsbUNBQW1DLGNBQWMsZ0JBQWdCLElBQUk7U0FDdEYsQ0FBQztRQUNGLE1BQU0sOEJBQThCLEdBQUc7WUFDckM7O3lCQUVpQixhQUFhO29CQUNsQixtQ0FBbUM7c0JBQ2pDLGdCQUFnQjs7MkVBRXFDLGFBQWE7NEJBQzVELGFBQWE7OztTQUdoQyxDQUFDLFVBQVUsRUFBRTtTQUNmLENBQUM7UUFFRixJQUFJLGVBQWUsQ0FBQyxVQUFVLEVBQUU7WUFDOUIsZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDL0MsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQztnQkFDM0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQy9ELHFCQUFxQixDQUFDLElBQUksQ0FDeEIsZ0JBQWdCLGNBQWMsaUJBQWlCLElBQUksQ0FBQyxTQUFTLENBQzNELGNBQWMsQ0FDZixHQUFHLENBQ0wsQ0FBQztnQkFDRiw4QkFBOEIsQ0FBQyxJQUFJLENBQ2pDLEtBQUs7b0JBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQzt3QkFDYixRQUFRLEVBQUUsYUFBYTt3QkFDdkIsR0FBRyxTQUFTO3dCQUNaLEdBQUcsQ0FBQyxHQUFHLEVBQUU7NEJBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRTtnQ0FDbkMsT0FBTztvQ0FDTCxvQkFBb0IsRUFBRSwwQkFBMEI7aUNBQ2pELENBQUM7NkJBQ0g7d0JBQ0gsQ0FBQyxDQUFDLEVBQUU7cUJBQ0wsQ0FBQzt5QkFDQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO3dCQUNwQixJQUFJLEdBQUcsS0FBSyxNQUFNLEVBQUU7NEJBQ2xCLE9BQU8sR0FBRyxHQUFHLEtBQUssY0FBYyxjQUFjLENBQUM7eUJBQ2hEO3dCQUNELElBQUksR0FBRyxLQUFLLHNCQUFzQixJQUFJLEtBQUssRUFBRTs0QkFDM0MsT0FBTyxHQUFHLEdBQUcsS0FBSyxLQUFLO2lDQUNwQixPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztpQ0FDcEIsV0FBVyxFQUFFLGNBQWMsQ0FBQzt5QkFDaEM7d0JBQ0QsT0FBTyxHQUFHLEdBQUcsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQzdDLENBQUMsQ0FBQzt5QkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNiLE1BQU0sQ0FDVCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0scUJBQXFCLEdBQUc7MEJBQ1YsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUNwQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOztPQUU5QyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWYsTUFBTSxVQUFVLEdBQUc7VUFDZixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOztVQUVoQyxxQkFBcUI7T0FDeEIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVmLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRztZQUNyQixVQUFVO1lBQ1YsT0FBTyxFQUFFLENBQUMsR0FBRyxxQkFBcUIsRUFBRSxxQkFBcUIsQ0FBQztTQUMzRCxDQUFDO1FBRUYsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQyxFQUNELEVBQUUsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBeEZXLFFBQUEsK0JBQStCLG1DQXdGMUM7QUFDRixZQUFZIn0=