139 lines
10 KiB
JavaScript
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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
|