boats
Version:
Beautiful Open / Async Template System - Write less yaml with BOATS and Nunjucks.
55 lines (54 loc) • 2.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const upath_1 = tslib_1.__importDefault(require("upath"));
const UniqueOperationIds_1 = tslib_1.__importDefault(require("./UniqueOperationIds"));
const MethodAliasPosition_1 = require("./enums/MethodAliasPosition");
const ucFirst_1 = tslib_1.__importDefault(require("./ucFirst"));
// eslint-disable-next-line @typescript-eslint/no-require-imports
const packageJson = require(upath_1.default.join(process.cwd(), 'package.json'));
const defaultPrefix = {
get: 'read',
post: 'create',
put: 'update',
patch: 'update',
delete: 'delete'
};
exports.default = (boatsrc, filePath, stripValue, prefix = '', tail = '', removeMethod) => {
var _a, _b, _c;
const permissionConfig = (boatsrc && boatsrc.permissionConfig) || {};
const methodAlias = permissionConfig.methodAlias || {};
const prefixConfig = Object.assign(defaultPrefix, methodAlias);
const mainPrefixes = [];
const usePackageName = typeof permissionConfig.globalPrefix === 'undefined' || permissionConfig.globalPrefix === true;
if (usePackageName) {
mainPrefixes.push(packageJson.name);
}
else if (typeof permissionConfig.globalPrefix === 'string') {
mainPrefixes.push(permissionConfig.globalPrefix);
}
if (prefix !== '') {
mainPrefixes.push(prefix);
}
const method = upath_1.default.basename(filePath).replace(/\..*/, '').toLowerCase();
const calculatedPrefix = prefixConfig[method] || method;
const tails = [];
if (tail) {
tails.push(tail);
}
if (((_a = boatsrc === null || boatsrc === void 0 ? void 0 : boatsrc.permissionConfig) === null || _a === void 0 ? void 0 : _a.methodAliasPosition) === MethodAliasPosition_1.MethodAliasPosition.EndOfPermissionString) {
tails.push((0, ucFirst_1.default)(calculatedPrefix));
}
else {
mainPrefixes.push(calculatedPrefix);
}
return UniqueOperationIds_1.default.getUniqueOperationIdFromPath({
filePath,
stripValue,
tails,
removeMethod,
style: (_b = boatsrc === null || boatsrc === void 0 ? void 0 : boatsrc.permissionConfig) === null || _b === void 0 ? void 0 : _b.permissionStyle,
segmentStyle: (_c = boatsrc === null || boatsrc === void 0 ? void 0 : boatsrc.permissionConfig) === null || _c === void 0 ? void 0 : _c.permissionSegmentStyle,
prefixes: mainPrefixes
});
};