persona-community-5/.pnpm-store/v3/files/12/620b29d18a49096865a9b14d546c83b487bd1b407a21907ad2ccbf17e0f540a3504edfb936852bb6e65a5cb2b7d042444828d0255623a2a87d3196aef32acb
rdev-worker a1d0d1bf1c
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
build: /implement-feature community-ui --requirements 'Build the React commu...
2026-02-24 08:22:30 +00:00

49 lines
1.7 KiB
Plaintext

'use strict';
var esprima = require("esprima");
var type_1 = require("../../type");
function resolveJavascriptFunction(data) {
if (null === data) {
return false;
}
try {
var source = '(' + data + ')', ast = esprima.parse(source, { range: true }), params = [], body;
if ('Program' !== ast.type ||
1 !== ast.body.length ||
'ExpressionStatement' !== ast.body[0].type ||
'FunctionExpression' !== ast.body[0]['expression'].type) {
return false;
}
return true;
}
catch (err) {
return false;
}
}
function constructJavascriptFunction(data) {
var source = '(' + data + ')', ast = esprima.parse(source, { range: true }), params = [], body;
if ('Program' !== ast.type ||
1 !== ast.body.length ||
'ExpressionStatement' !== ast.body[0].type ||
'FunctionExpression' !== ast.body[0]['expression'].type) {
throw new Error('Failed to resolve function');
}
ast.body[0]['expression'].params.forEach(function (param) {
params.push(param.name);
});
body = ast.body[0]['expression'].body.range;
return new Function(params, source.slice(body[0] + 1, body[1] - 1));
}
function representJavascriptFunction(object) {
return object.toString();
}
function isFunction(object) {
return '[object Function]' === Object.prototype.toString.call(object);
}
module.exports = new type_1.Type('tag:yaml.org,2002:js/function', {
kind: 'scalar',
resolve: resolveJavascriptFunction,
construct: constructJavascriptFunction,
predicate: isFunction,
represent: representJavascriptFunction
});
//# sourceMappingURL=function.js.map