UNPKG

@lcap/nasl

Version:

NetEase Application Specific Language

44 lines 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sortTsString = void 0; const babel = require('@babel/core'); const generate = require('@babel/generator').default; const traverse = require('@babel/traverse').default; const t = require('@babel/types'); function sortTsString(tsString) { const str = `type a = ${tsString}`; let ast; try { ast = babel.parseSync(str, { filename: 'result.ts', presets: [require('@babel/preset-typescript')], }); } catch (error) { return null; } const visitor = { TSTypeLiteral(path) { path.node.members.sort((a, b) => { if (a.type === 'TSPropertySignature' && b.type === 'TSPropertySignature') { return a.key.name.localeCompare(b.key.name); } return 0; }); }, ArrayExpression(path) { path.node.elements.sort((a, b) => { if (a.type === 'ObjectExpression' && b.type === 'ObjectExpression') { return t.isIdentifier(a.properties[0].key) && t.isIdentifier(b.properties[0].key) ? a.properties[0].key.name.localeCompare(b.properties[0].key.name) : 0; } return 0; }); }, }; traverse(ast, visitor); return generate(ast).code; } exports.sortTsString = sortTsString; //# sourceMappingURL=sortTsString.js.map