UNPKG

intelligen

Version:

Generate VS Code intellisense from Service Now Instance data

114 lines (102 loc) 3.31 kB
#!/usr/bin/env node import fs from 'fs'; import _ from 'underscore'; import { snippetIntellisenseGen, scopedIntellisenseGen } from "./intellisenseGen.js"; "use strict"; import directory from "./data.cjs"; function ENCODER () { var XORCipher = { encode: function(key, data) { data = xor_encrypt(key, data); return b64_encode(data); }, decode: function(key, data) { data = b64_decode(data); return xor_decrypt(key, data); } }; var b64_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; function b64_encode(data) { var o1, o2, o3, h1, h2, h3, h4, bits, r, i = 0, enc = ""; if (!data) { return data; } do { o1 = data[i++]; o2 = data[i++]; o3 = data[i++]; bits = o1 << 16 | o2 << 8 | o3; h1 = bits >> 18 & 0x3f; h2 = bits >> 12 & 0x3f; h3 = bits >> 6 & 0x3f; h4 = bits & 0x3f; enc += b64_table.charAt(h1) + b64_table.charAt(h2) + b64_table.charAt(h3) + b64_table.charAt(h4); } while (i < data.length); r = data.length % 3; return (r ? enc.slice(0, r - 3) : enc) + "===".slice(r || 3); } function b64_decode(data) { var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, result = []; if (!data) { return data; } data += ""; do { h1 = b64_table.indexOf(data.charAt(i++)); h2 = b64_table.indexOf(data.charAt(i++)); h3 = b64_table.indexOf(data.charAt(i++)); h4 = b64_table.indexOf(data.charAt(i++)); bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; o1 = bits >> 16 & 0xff; o2 = bits >> 8 & 0xff; o3 = bits & 0xff; result.push(o1); if (h3 !== 64) { result.push(o2); if (h4 !== 64) { result.push(o3); } } } while (i < data.length); return result; } function keyCharAt(key, i) { return key.charCodeAt( Math.floor(i % key.length) ); } function xor_encrypt(key, data) { return _.map(data, function(c, i) { return c.charCodeAt(0) ^ keyCharAt(key, i); }); } function xor_decrypt(key, data) { return _.map(data, function(c, i) { return String.fromCharCode( c ^ keyCharAt(key, i) ); }).join(""); } return XORCipher; }; var importData = {}; var isScoped = false; var dir = directory + '\\..\\..\\..\\' try { var snippetData = fs.readFileSync(dir + 'snippetImport.txt', 'utf-8'); importData = snippetData; } catch (er) { } try { var scopedData = fs.readFileSync(dir + 'scopedImport.txt', 'utf-8'); importData = scopedData; isScoped = true; } catch (er) { } try{ var cipherFunc = ENCODER(); var key = fs.readFileSync(dir + 'DC_key.txt', 'utf-8'); var res = cipherFunc.decode(key, importData); if(key[1] == 1){ fs.unlinkSync(dir + 'DC_key.txt'); } if(isScoped) { scopedIntellisenseGen(res); } else { snippetIntellisenseGen(res); } } catch (err) { console.log(err); }