Files
n8n-nodes-gwezz-changdunovel/node_modules/@n8n/tournament/dist/Differ.js
2025-10-26 23:10:15 +08:00

80 lines
4.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isDifferent = void 0;
const recast_1 = require("recast");
const Parser_1 = require("./Parser");
const isWrapped = (node) => {
var _a;
return ((_a = node.program.body[1]) === null || _a === void 0 ? void 0 : _a.type) === 'TryStatement';
};
const getWrapped = (node) => {
var _a;
return (_a = node.program.body[1]) === null || _a === void 0 ? void 0 : _a.block.body[0];
};
const isMultiPartExpression = (node) => {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
return (((_a = node.program.body[1]) === null || _a === void 0 ? void 0 : _a.type) === 'ReturnStatement' &&
((_b = node.program.body[1].argument) === null || _b === void 0 ? void 0 : _b.type) === 'CallExpression' &&
((_d = (_c = node.program.body[1].argument) === null || _c === void 0 ? void 0 : _c.arguments[0]) === null || _d === void 0 ? void 0 : _d.type) === 'Literal' &&
((_f = (_e = node.program.body[1].argument) === null || _e === void 0 ? void 0 : _e.arguments[0]) === null || _f === void 0 ? void 0 : _f.value) === '' &&
((_g = node.program.body[1].argument) === null || _g === void 0 ? void 0 : _g.callee.type) === 'MemberExpression' &&
((_h = node.program.body[1].argument) === null || _h === void 0 ? void 0 : _h.callee.object.type) === 'ArrayExpression' &&
((_j = node.program.body[1].argument) === null || _j === void 0 ? void 0 : _j.callee.property.type) === 'Identifier' &&
((_k = node.program.body[1].argument) === null || _k === void 0 ? void 0 : _k.callee.property.name) === 'join');
};
const getMultiPartExpression = (node) => {
var _a, _b, _c, _d, _e, _f, _g, _h;
if (!(((_a = node.program.body[1]) === null || _a === void 0 ? void 0 : _a.type) === 'ReturnStatement' &&
((_b = node.program.body[1].argument) === null || _b === void 0 ? void 0 : _b.type) === 'CallExpression' &&
((_d = (_c = node.program.body[1].argument) === null || _c === void 0 ? void 0 : _c.arguments[0]) === null || _d === void 0 ? void 0 : _d.type) === 'Literal' &&
((_f = (_e = node.program.body[1].argument) === null || _e === void 0 ? void 0 : _e.arguments[0]) === null || _f === void 0 ? void 0 : _f.value) === '' &&
((_g = node.program.body[1].argument) === null || _g === void 0 ? void 0 : _g.callee.type) === 'MemberExpression' &&
((_h = node.program.body[1].argument) === null || _h === void 0 ? void 0 : _h.callee.object.type) === 'ArrayExpression')) {
return [];
}
return node.program.body[1].argument.callee.object.elements
.map((e) => {
if ((e === null || e === void 0 ? void 0 : e.type) !== 'CallExpression' ||
e.callee.type !== 'MemberExpression' ||
e.callee.object.type !== 'FunctionExpression') {
return null;
}
const maybeExpr = e.callee.object.body.body[0];
if (maybeExpr.type !== 'TryStatement') {
return maybeExpr;
}
return maybeExpr.block.body[0];
})
.filter((e) => e !== null);
};
const isDifferent = (tmpl, tourn) => {
const tmplParsed = (0, recast_1.parse)(tmpl, {
parser: { parse: Parser_1.parseWithEsprimaNext },
});
const tournParsed = (0, recast_1.parse)(tourn, {
parser: { parse: Parser_1.parseWithEsprimaNext },
});
const problemPaths = [];
let same = recast_1.types.astNodesAreEquivalent(tmplParsed, tournParsed, problemPaths);
if (!same) {
if (isWrapped(tournParsed) && !isWrapped(tmplParsed)) {
const tournWrapped = getWrapped(tournParsed);
same = recast_1.types.astNodesAreEquivalent(tmplParsed.program.body[1], tournWrapped);
}
else if (isMultiPartExpression(tournParsed) && isMultiPartExpression(tmplParsed)) {
const tournExprs = getMultiPartExpression(tournParsed);
const tmplExprs = getMultiPartExpression(tmplParsed);
if (tournExprs.length === tmplExprs.length) {
for (let i = 0; i < tournExprs.length; i++) {
same = recast_1.types.astNodesAreEquivalent(tmplExprs[i], tournExprs[i], problemPaths);
if (!same) {
break;
}
}
}
}
}
return !same;
};
exports.isDifferent = isDifferent;
//# sourceMappingURL=Differ.js.map