typegraphql-prisma-nestjs
Version:
This project is a fork of another with minor changes, created for personal use.
42 lines • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.attributeArgsRegex = exports.attributeNameRegex = exports.fieldAttributeRegex = exports.modelAttributeRegex = void 0;
exports.parseDocumentationAttributes = parseDocumentationAttributes;
exports.modelAttributeRegex = /(@@TypeGraphQL\.)+([A-z])+(\()+(.+)+(\))+/g;
exports.fieldAttributeRegex = /(@TypeGraphQL\.)+([A-z])+(\()+(.+)+(\))+/g;
exports.attributeNameRegex = /(?:\.)+([A-Za-z])+(?:\()+/;
exports.attributeArgsRegex = /(?:\()+([A-Za-z])+\:+(.+)+(?:\))+/;
function parseDocumentationAttributes(documentation, expectedAttributeName, expectedAttributeKind) {
const attributeRegex = expectedAttributeKind === "model"
? exports.modelAttributeRegex
: exports.fieldAttributeRegex;
const matchResults = documentation?.matchAll(attributeRegex) ?? [];
for (const [attribute] of matchResults) {
const attributeName = attribute
?.match(exports.attributeNameRegex)?.[0]
?.slice(1, -1);
if (attributeName !== expectedAttributeName) {
continue;
}
const rawAttributeArgs = attribute
?.match(exports.attributeArgsRegex)?.[0]
?.slice(1, -1);
const parsedAttributeArgs = {};
if (rawAttributeArgs) {
const rawAttributeArgsParts = rawAttributeArgs
.split(":")
.map(it => it.trim())
.map(part => (part.startsWith("[") ? part : part.split(",")))
.flat()
.map(it => it.trim());
for (let i = 0; i < rawAttributeArgsParts.length; i += 2) {
const key = rawAttributeArgsParts[i];
const value = rawAttributeArgsParts[i + 1];
parsedAttributeArgs[key] = JSON.parse(value);
}
}
return parsedAttributeArgs;
}
return {};
}
//# sourceMappingURL=helpers.js.map