osr-mono/packages/osr-code-bot/filters.js
2025-01-30 00:50:58 +01:00

139 lines
10 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.applyFilters = exports.Filters = exports.extractJsonCodeBlock = exports.trim = exports.JSONParse = exports.extractCodeBlocks = exports.extractFirstCodeBlock = void 0;
const primitives_1 = require("@plastichub/core/primitives");
const _1 = require("./");
const extractFirstCodeBlock = (markdown) => {
const regex = /```(\w+\n)?([\s\S]*?)```/;
const match = regex.exec(markdown);
if (match && match[2]) {
return match[2].trim();
}
return markdown;
};
exports.extractFirstCodeBlock = extractFirstCodeBlock;
const extractCodeBlocks = (markdown) => {
const codeBlocks = [];
const regex = /```([\s\S]*?)```/g;
let match;
while ((match = regex.exec(markdown)) !== null) {
codeBlocks.push(match[1]);
}
return codeBlocks[0];
};
exports.extractCodeBlocks = extractCodeBlocks;
function isEscapedJsonString(input) {
if (typeof input !== 'string' || !input.startsWith('"') || !input.endsWith('"')) {
return false;
}
try {
const ret = JSON.parse(input);
return false;
}
catch (error) {
return true;
}
}
const unescapeJsonString = (json) => {
if (isEscapedJsonString(json)) {
return json;
}
// Use regex to replace common escape sequences
const unescapedString = json
.replace(/\\n/g, '\n')
.replace(/\\"/g, '"')
.replace(/\\\\/g, '\\')
.replace(/(\")/g, "\"")
.replace(/\\b/g, '\b')
.replace(/\\f/g, '\f')
.replace(/\\r/g, '\r')
.replace(/\\t/g, '\t');
// Handle unicode escape sequences (\uXXXX)
return unescapedString.replace(/\\u([\d\w]{4})/gi, (match, grp) => {
return String.fromCharCode(parseInt(grp, 16));
});
};
const alphanumericSort = (arr) => {
arr = (0, primitives_1.isString)(arr) ? JSON.parse(arr) : arr;
return JSON.stringify(arr.sort((a, b) => {
const aParts = a.match(/(\d+)|(\D+)/g) || [];
const bParts = b.match(/(\d+)|(\D+)/g) || [];
for (let i = 0; i < Math.min(aParts.length, bParts.length); i++) {
const aPart = aParts[i];
const bPart = bParts[i];
if (isNaN(parseInt(aPart, 10)) || isNaN(parseInt(bPart, 10))) {
// Non-numeric parts, compare as strings
if (aPart !== bPart) {
return aPart < bPart ? -1 : 1;
}
}
else {
// Numeric parts, compare as numbers
const aNum = parseInt(aPart, 10);
const bNum = parseInt(bPart, 10);
if (aNum !== bNum) {
return aNum - bNum;
}
}
}
// If everything else is equal, compare by length (shorter first)
return aParts.length - bParts.length;
}), null, 2);
};
const JSONParse = (json) => {
try {
return JSON.parse(json);
}
catch (error) {
return null;
}
};
exports.JSONParse = JSONParse;
const trim = (str) => str ? str.trim() : null;
exports.trim = trim;
const extractJsonCodeBlock = (markdown) => {
const regex = /```json([\s\S]*?)```/g;
const match = regex.exec(markdown);
let ret = match ? match[1] : '{}';
try {
return JSON.stringify(JSON.parse(ret), null, 2);
}
catch (error) {
return ret;
}
};
exports.extractJsonCodeBlock = extractJsonCodeBlock;
const JSONPretty = (json) => {
return JSON.stringify(JSON.parse(json), null, 2);
};
exports.Filters = {
JSON: exports.extractJsonCodeBlock,
JSONUnescape: unescapeJsonString,
JSONPretty,
AlphaSort: alphanumericSort,
code: exports.extractFirstCodeBlock,
JSONParse: exports.JSONParse,
trim: exports.trim
};
const applyFilters = (value, filters) => {
if (!value) {
return '';
}
filters.forEach((f) => {
try {
let _ret = f(value);
if (_ret) {
value = _ret;
}
else {
_1.logger.warn(`applyFilters: filter returned null : ${value}`, f.toString());
}
}
catch (error) {
_1.logger.error(`Error applying filter: ${error.message}`);
}
});
return value;
};
exports.applyFilters = applyFilters;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDREQUFzRDtBQUN0RCx5QkFBMkI7QUFJcEIsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFFBQWdCLEVBQWlCLEVBQUU7SUFDckUsTUFBTSxLQUFLLEdBQUcsMEJBQTBCLENBQUE7SUFDeEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNsQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUE7QUFDbkIsQ0FBQyxDQUFBO0FBUFksUUFBQSxxQkFBcUIseUJBT2pDO0FBRU0sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQWdCLEVBQVUsRUFBRTtJQUMxRCxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUE7SUFDL0IsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUE7SUFDakMsSUFBSSxLQUFLLENBQUE7SUFDVCxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN4QixDQUFDLENBQUE7QUFSWSxRQUFBLGlCQUFpQixxQkFRN0I7QUFDRCxTQUFTLG1CQUFtQixDQUFDLEtBQWE7SUFDeEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxD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