@jeffreycao/copilot-api 1.7.3 → 1.9.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/GptEncoding-TiCgsNrQ.js +887 -0
  2. package/dist/GptEncoding-TiCgsNrQ.js.map +1 -0
  3. package/dist/{auth-B6D-4_Zg.js → auth-DCB53u05.js} +6 -6
  4. package/dist/{auth-B6D-4_Zg.js.map → auth-DCB53u05.js.map} +1 -1
  5. package/dist/{check-usage-V8cDF1DL.js → check-usage-iKUAIfc_.js} +6 -6
  6. package/dist/{check-usage-V8cDF1DL.js.map → check-usage-iKUAIfc_.js.map} +1 -1
  7. package/dist/chunk-BZ41Y9eH.js +39 -0
  8. package/dist/cl100k_base-kiDWemr-.js +101375 -0
  9. package/dist/cl100k_base-kiDWemr-.js.map +1 -0
  10. package/dist/{config-BQvWqYh_.js → config-D3dkAXQE.js} +3 -3
  11. package/dist/{config-BQvWqYh_.js.map → config-D3dkAXQE.js.map} +1 -1
  12. package/dist/{debug-DcC7ZPH0.js → debug-CUx-7_jF.js} +4 -4
  13. package/dist/{debug-DcC7ZPH0.js.map → debug-CUx-7_jF.js.map} +1 -1
  14. package/dist/dist-B3jIqeb6.js +961 -0
  15. package/dist/dist-B3jIqeb6.js.map +1 -0
  16. package/dist/dist-CSEoNgAt.js +334 -0
  17. package/dist/dist-CSEoNgAt.js.map +1 -0
  18. package/dist/main.js +26 -5
  19. package/dist/main.js.map +1 -1
  20. package/dist/o200k_base-BlrOP1Jc.js +204726 -0
  21. package/dist/o200k_base-BlrOP1Jc.js.map +1 -0
  22. package/dist/p50k_base-DA6KYT1Z.js +11 -0
  23. package/dist/p50k_base-DA6KYT1Z.js.map +1 -0
  24. package/dist/p50k_base-tS38LhIO.js +50483 -0
  25. package/dist/p50k_base-tS38LhIO.js.map +1 -0
  26. package/dist/p50k_edit-BlA1HcF4.js +11 -0
  27. package/dist/p50k_edit-BlA1HcF4.js.map +1 -0
  28. package/dist/{paths-Cla6y5eD.js → paths-DvrimVju.js} +2 -2
  29. package/dist/{paths-Cla6y5eD.js.map → paths-DvrimVju.js.map} +1 -1
  30. package/dist/prompt-CyV2d7YW.js +850 -0
  31. package/dist/prompt-CyV2d7YW.js.map +1 -0
  32. package/dist/r50k_base-CaCWe6-8.js +50466 -0
  33. package/dist/r50k_base-CaCWe6-8.js.map +1 -0
  34. package/dist/registry-B_2v83L7.js +797 -0
  35. package/dist/registry-B_2v83L7.js.map +1 -0
  36. package/dist/{server-B4HEvOkg.js → server-BGqhE4N_.js} +1650 -60
  37. package/dist/server-BGqhE4N_.js.map +1 -0
  38. package/dist/start-Cxl5pgll.js +27379 -0
  39. package/dist/start-Cxl5pgll.js.map +1 -0
  40. package/dist/{token-B_7Re97c.js → token-BCdEIfN_.js} +12 -6
  41. package/dist/token-BCdEIfN_.js.map +1 -0
  42. package/dist/{utils-C5ee29lf.js → utils-DXuuBUT_.js} +19 -11
  43. package/dist/utils-DXuuBUT_.js.map +1 -0
  44. package/package.json +1 -1
  45. package/dist/server-B4HEvOkg.js.map +0 -1
  46. package/dist/start-C2I0GP53.js +0 -268
  47. package/dist/start-C2I0GP53.js.map +0 -1
  48. package/dist/token-B_7Re97c.js.map +0 -1
  49. package/dist/utils-C5ee29lf.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-B_2v83L7.js","names":["name"],"sources":["../node_modules/winreg/lib/registry.js"],"sourcesContent":["/************************************************************************************************************\r\n * registry.js - contains a wrapper for the REG command under Windows, which provides access to the registry\r\n *\r\n * @author Paul Bottin a/k/a FrEsC\r\n *\r\n */\r\n\r\n/* imports */\r\nvar util = require('util')\r\n, path = require('path')\r\n, spawn = require('child_process').spawn\r\n\r\n/* set to console.log for debugging */\r\n, log = function () {}\r\n\r\n/* registry hive ids */\r\n, HKLM = 'HKLM'\r\n, HKCU = 'HKCU'\r\n, HKCR = 'HKCR'\r\n, HKU = 'HKU'\r\n, HKCC = 'HKCC'\r\n, HIVES = [ HKLM, HKCU, HKCR, HKU, HKCC ]\r\n\r\n/* registry value type ids */\r\n, REG_SZ = 'REG_SZ'\r\n, REG_MULTI_SZ = 'REG_MULTI_SZ'\r\n, REG_EXPAND_SZ = 'REG_EXPAND_SZ'\r\n, REG_DWORD = 'REG_DWORD'\r\n, REG_QWORD = 'REG_QWORD'\r\n, REG_BINARY = 'REG_BINARY'\r\n, REG_NONE = 'REG_NONE'\r\n, REG_TYPES = [ REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ, REG_DWORD, REG_QWORD, REG_BINARY, REG_NONE ]\r\n\r\n/* default registry value name */\r\n, DEFAULT_VALUE = ''\r\n\r\n/* general key pattern */\r\n, KEY_PATTERN = /(\\\\[a-zA-Z0-9_\\s]+)*/\r\n\r\n/* key path pattern (as returned by REG-cli) */\r\n, PATH_PATTERN = /^(HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER|HKEY_CLASSES_ROOT|HKEY_USERS|HKEY_CURRENT_CONFIG)(.*)$/\r\n\r\n/* registry item pattern */\r\n, ITEM_PATTERN = /^(.*)\\s(REG_SZ|REG_MULTI_SZ|REG_EXPAND_SZ|REG_DWORD|REG_QWORD|REG_BINARY|REG_NONE)\\s+([^\\s].*)$/\r\n\r\n/**\r\n * Creates an Error object that contains the exit code of the REG.EXE process.\r\n * This contructor is private. Objects of this type are created internally and returned in the <code>err</code> parameters in case the REG.EXE process doesn't exit cleanly.\r\n *\r\n * @private\r\n * @class\r\n *\r\n * @param {string} message - the error message\r\n * @param {number} code - the process exit code\r\n *\r\n */\r\nfunction ProcessUncleanExitError(message, code) {\r\n if (!(this instanceof ProcessUncleanExitError))\r\n return new ProcessUncleanExitError(message, code);\r\n\r\n Error.captureStackTrace(this, ProcessUncleanExitError);\r\n\r\n /**\r\n * The error name.\r\n * @readonly\r\n * @member {string} ProcessUncleanExitError#name\r\n */\r\n this.__defineGetter__('name', function () { return ProcessUncleanExitError.name; });\r\n\r\n /**\r\n * The error message.\r\n * @readonly\r\n * @member {string} ProcessUncleanExitError#message\r\n */\r\n this.__defineGetter__('message', function () { return message; });\r\n\r\n /**\r\n * The process exit code.\r\n * @readonly\r\n * @member {number} ProcessUncleanExitError#code\r\n */\r\n this.__defineGetter__('code', function () { return code; });\r\n\r\n}\r\n\r\nutil.inherits(ProcessUncleanExitError, Error);\r\n\r\n/*\r\n * Captures stdout/stderr for a child process\r\n */\r\nfunction captureOutput(child) {\r\n // Use a mutable data structure so we can append as we get new data and have\r\n // the calling context see the new data\r\n var output = {'stdout': '', 'stderr': ''};\r\n\r\n child.stdout.on('data', function(data) { output[\"stdout\"] += data.toString(); });\r\n child.stderr.on('data', function(data) { output[\"stderr\"] += data.toString(); });\r\n\r\n return output;\r\n}\r\n\r\n\r\n/*\r\n * Returns an error message containing the stdout/stderr of the child process\r\n */\r\nfunction mkErrorMsg(registryCommand, code, output) {\r\n var stdout = output['stdout'].trim();\r\n var stderr = output['stderr'].trim();\r\n\r\n var msg = util.format(\"%s command exited with code %d:\\n%s\\n%s\", registryCommand, code, stdout, stderr);\r\n return new ProcessUncleanExitError(msg, code);\r\n}\r\n\r\n\r\n/*\r\n * Converts x86/x64 to 32/64\r\n */\r\nfunction convertArchString(archString) {\r\n if (archString == 'x64') {\r\n return '64';\r\n } else if (archString == 'x86') {\r\n return '32';\r\n } else {\r\n throw new Error('illegal architecture: ' + archString + ' (use x86 or x64)');\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Adds correct architecture to reg args\r\n */\r\nfunction pushArch(args, arch) {\r\n if (arch) {\r\n args.push('/reg:' + convertArchString(arch));\r\n }\r\n}\r\n\r\n/*\r\n * Get the path to system's reg.exe. Useful when another reg.exe is added to the PATH\r\n * Implemented only for Windows\r\n */\r\nfunction getRegExePath() {\r\n if (process.platform === 'win32') {\r\n return path.join(process.env.windir, 'system32', 'reg.exe');\r\n } else {\r\n return \"REG\";\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Creates a single registry value record.\r\n * This contructor is private. Objects of this type are created internally and returned by methods of {@link Registry} objects.\r\n *\r\n * @private\r\n * @class\r\n *\r\n * @param {string} host - the hostname\r\n * @param {string} hive - the hive id\r\n * @param {string} key - the registry key\r\n * @param {string} name - the value name\r\n * @param {string} type - the value type\r\n * @param {string} value - the value\r\n * @param {string} arch - the hive architecture ('x86' or 'x64')\r\n *\r\n */\r\nfunction RegistryItem (host, hive, key, name, type, value, arch) {\r\n\r\n if (!(this instanceof RegistryItem))\r\n return new RegistryItem(host, hive, key, name, type, value, arch);\r\n\r\n /* private members */\r\n var _host = host // hostname\r\n , _hive = hive // registry hive\r\n , _key = key // registry key\r\n , _name = name // property name\r\n , _type = type // property type\r\n , _value = value // property value\r\n , _arch = arch // hive architecture\r\n\r\n /* getters/setters */\r\n\r\n /**\r\n * The hostname.\r\n * @readonly\r\n * @member {string} RegistryItem#host\r\n */\r\n this.__defineGetter__('host', function () { return _host; });\r\n\r\n /**\r\n * The hive id.\r\n * @readonly\r\n * @member {string} RegistryItem#hive\r\n */\r\n this.__defineGetter__('hive', function () { return _hive; });\r\n\r\n /**\r\n * The registry key.\r\n * @readonly\r\n * @member {string} RegistryItem#key\r\n */\r\n this.__defineGetter__('key', function () { return _key; });\r\n\r\n /**\r\n * The value name.\r\n * @readonly\r\n * @member {string} RegistryItem#name\r\n */\r\n this.__defineGetter__('name', function () { return _name; });\r\n\r\n /**\r\n * The value type.\r\n * @readonly\r\n * @member {string} RegistryItem#type\r\n */\r\n this.__defineGetter__('type', function () { return _type; });\r\n\r\n /**\r\n * The value.\r\n * @readonly\r\n * @member {string} RegistryItem#value\r\n */\r\n this.__defineGetter__('value', function () { return _value; });\r\n\r\n /**\r\n * The hive architecture.\r\n * @readonly\r\n * @member {string} RegistryItem#arch\r\n */\r\n this.__defineGetter__('arch', function () { return _arch; });\r\n\r\n}\r\n\r\nutil.inherits(RegistryItem, Object);\r\n\r\n/**\r\n * Creates a registry object, which provides access to a single registry key.\r\n * Note: This class is returned by a call to ```require('winreg')```.\r\n *\r\n * @public\r\n * @class\r\n *\r\n * @param {object} options - the options\r\n * @param {string=} options.host - the hostname\r\n * @param {string=} options.hive - the hive id\r\n * @param {string=} options.key - the registry key\r\n * @param {string=} options.arch - the optional registry hive architecture ('x86' or 'x64'; only valid on Windows 64 Bit Operating Systems)\r\n *\r\n * @example\r\n * var Registry = require('winreg')\r\n * , autoStartCurrentUser = new Registry({\r\n * hive: Registry.HKCU,\r\n * key: '\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run'\r\n * });\r\n *\r\n */\r\nfunction Registry (options) {\r\n\r\n if (!(this instanceof Registry))\r\n return new Registry(options);\r\n\r\n /* private members */\r\n var _options = options || {}\r\n , _host = '' + (_options.host || '') // hostname\r\n , _hive = '' + (_options.hive || HKLM) // registry hive\r\n , _key = '' + (_options.key || '') // registry key\r\n , _arch = _options.arch || null // hive architecture\r\n\r\n /* getters/setters */\r\n\r\n /**\r\n * The hostname.\r\n * @readonly\r\n * @member {string} Registry#host\r\n */\r\n this.__defineGetter__('host', function () { return _host; });\r\n\r\n /**\r\n * The hive id.\r\n * @readonly\r\n * @member {string} Registry#hive\r\n */\r\n this.__defineGetter__('hive', function () { return _hive; });\r\n\r\n /**\r\n * The registry key name.\r\n * @readonly\r\n * @member {string} Registry#key\r\n */\r\n this.__defineGetter__('key', function () { return _key; });\r\n\r\n /**\r\n * The full path to the registry key.\r\n * @readonly\r\n * @member {string} Registry#path\r\n */\r\n this.__defineGetter__('path', function () { return '\"' + (_host.length == 0 ? '' : '\\\\\\\\' + _host + '\\\\') + _hive + _key + '\"'; });\r\n\r\n /**\r\n * The registry hive architecture ('x86' or 'x64').\r\n * @readonly\r\n * @member {string} Registry#arch\r\n */\r\n this.__defineGetter__('arch', function () { return _arch; });\r\n\r\n /**\r\n * Creates a new {@link Registry} instance that points to the parent registry key.\r\n * @readonly\r\n * @member {Registry} Registry#parent\r\n */\r\n this.__defineGetter__('parent', function () {\r\n var i = _key.lastIndexOf('\\\\')\r\n return new Registry({\r\n host: this.host,\r\n hive: this.hive,\r\n key: (i == -1)?'':_key.substring(0, i),\r\n arch: this.arch\r\n });\r\n });\r\n\r\n // validate options...\r\n if (HIVES.indexOf(_hive) == -1)\r\n throw new Error('illegal hive specified.');\r\n\r\n if (!KEY_PATTERN.test(_key))\r\n throw new Error('illegal key specified.');\r\n\r\n if (_arch && _arch != 'x64' && _arch != 'x86')\r\n throw new Error('illegal architecture specified (use x86 or x64)');\r\n\r\n}\r\n\r\n/**\r\n * Registry hive key HKEY_LOCAL_MACHINE.\r\n * Note: For writing to this hive your program has to run with admin privileges.\r\n * @type {string}\r\n */\r\nRegistry.HKLM = HKLM;\r\n\r\n/**\r\n * Registry hive key HKEY_CURRENT_USER.\r\n * @type {string}\r\n */\r\nRegistry.HKCU = HKCU;\r\n\r\n/**\r\n * Registry hive key HKEY_CLASSES_ROOT.\r\n * Note: For writing to this hive your program has to run with admin privileges.\r\n * @type {string}\r\n */\r\nRegistry.HKCR = HKCR;\r\n\r\n/**\r\n * Registry hive key HKEY_USERS.\r\n * Note: For writing to this hive your program has to run with admin privileges.\r\n * @type {string}\r\n */\r\nRegistry.HKU = HKU;\r\n\r\n/**\r\n * Registry hive key HKEY_CURRENT_CONFIG.\r\n * Note: For writing to this hive your program has to run with admin privileges.\r\n * @type {string}\r\n */\r\nRegistry.HKCC = HKCC;\r\n\r\n/**\r\n * Collection of available registry hive keys.\r\n * @type {array}\r\n */\r\nRegistry.HIVES = HIVES;\r\n\r\n/**\r\n * Registry value type STRING.\r\n * @type {string}\r\n */\r\nRegistry.REG_SZ = REG_SZ;\r\n\r\n/**\r\n * Registry value type MULTILINE_STRING.\r\n * @type {string}\r\n */\r\nRegistry.REG_MULTI_SZ = REG_MULTI_SZ;\r\n\r\n/**\r\n * Registry value type EXPANDABLE_STRING.\r\n * @type {string}\r\n */\r\nRegistry.REG_EXPAND_SZ = REG_EXPAND_SZ;\r\n\r\n/**\r\n * Registry value type DOUBLE_WORD.\r\n * @type {string}\r\n */\r\nRegistry.REG_DWORD = REG_DWORD;\r\n\r\n/**\r\n * Registry value type QUAD_WORD.\r\n * @type {string}\r\n */\r\nRegistry.REG_QWORD = REG_QWORD;\r\n\r\n/**\r\n * Registry value type BINARY.\r\n * @type {string}\r\n */\r\nRegistry.REG_BINARY = REG_BINARY;\r\n\r\n/**\r\n * Registry value type UNKNOWN.\r\n * @type {string}\r\n */\r\nRegistry.REG_NONE = REG_NONE;\r\n\r\n/**\r\n * Collection of available registry value types.\r\n * @type {array}\r\n */\r\nRegistry.REG_TYPES = REG_TYPES;\r\n\r\n/**\r\n * The name of the default value. May be used instead of the empty string literal for better readability.\r\n * @type {string}\r\n */\r\nRegistry.DEFAULT_VALUE = DEFAULT_VALUE;\r\n\r\n/**\r\n * Retrieve all values from this registry key.\r\n * @param {valuesCallback} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @param {array=} cb.items - an array of {@link RegistryItem} objects\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.values = function values (cb) {\r\n\r\n if (typeof cb !== 'function')\r\n throw new TypeError('must specify a callback');\r\n\r\n var args = [ 'QUERY', this.path ];\r\n\r\n pushArch(args, this.arch);\r\n\r\n var proc = spawn(getRegExePath(), args, {\r\n cwd: undefined,\r\n env: process.env,\r\n shell: true,\r\n windowsHide: true,\r\n stdio: [ 'ignore', 'pipe', 'pipe' ]\r\n })\r\n , buffer = ''\r\n , self = this\r\n , error = null // null means no error previously reported.\r\n\r\n var output = captureOutput(proc);\r\n\r\n proc.on('close', function (code) {\r\n if (error) {\r\n return;\r\n } else if (code !== 0) {\r\n log('process exited with code ' + code);\r\n cb(mkErrorMsg('QUERY', code, output), null);\r\n } else {\r\n var items = []\r\n , result = []\r\n , lines = buffer.split('\\n')\r\n , lineNumber = 0\r\n\r\n for (var i = 0, l = lines.length; i < l; i++) {\r\n var line = lines[i].trim();\r\n if (line.length > 0) {\r\n log(line);\r\n if (lineNumber != 0) {\r\n items.push(line);\r\n }\r\n ++lineNumber;\r\n }\r\n }\r\n\r\n for (var i = 0, l = items.length; i < l; i++) {\r\n\r\n var match = ITEM_PATTERN.exec(items[i])\r\n , name\r\n , type\r\n , value\r\n\r\n if (match) {\r\n name = match[1].trim();\r\n type = match[2].trim();\r\n value = match[3];\r\n result.push(new RegistryItem(self.host, self.hive, self.key, name, type, value, self.arch));\r\n }\r\n }\r\n\r\n cb(null, result);\r\n\r\n }\r\n });\r\n\r\n proc.stdout.on('data', function (data) {\r\n buffer += data.toString();\r\n });\r\n\r\n proc.on('error', function(err) {\r\n error = err;\r\n cb(err);\r\n });\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Retrieve all subkeys from this registry key.\r\n * @param {function (err, items)} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @param {array=} cb.items - an array of {@link Registry} objects\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.keys = function keys (cb) {\r\n\r\n if (typeof cb !== 'function')\r\n throw new TypeError('must specify a callback');\r\n\r\n var args = [ 'QUERY', this.path ];\r\n\r\n pushArch(args, this.arch);\r\n\r\n var proc = spawn(getRegExePath(), args, {\r\n cwd: undefined,\r\n env: process.env,\r\n shell: true,\r\n windowsHide: true,\r\n stdio: [ 'ignore', 'pipe', 'pipe' ]\r\n })\r\n , buffer = ''\r\n , self = this\r\n , error = null // null means no error previously reported.\r\n\r\n var output = captureOutput(proc);\r\n\r\n proc.on('close', function (code) {\r\n if (error) {\r\n return;\r\n } else if (code !== 0) {\r\n log('process exited with code ' + code);\r\n cb(mkErrorMsg('QUERY', code, output), null);\r\n }\r\n });\r\n\r\n proc.stdout.on('data', function (data) {\r\n buffer += data.toString();\r\n });\r\n\r\n proc.stdout.on('end', function () {\r\n\r\n var items = []\r\n , result = []\r\n , lines = buffer.split('\\n')\r\n\r\n for (var i = 0, l = lines.length; i < l; i++) {\r\n var line = lines[i].trim();\r\n if (line.length > 0) {\r\n log(line);\r\n items.push(line);\r\n }\r\n }\r\n\r\n for (var i = 0, l = items.length; i < l; i++) {\r\n\r\n var match = PATH_PATTERN.exec(items[i])\r\n , hive\r\n , key\r\n\r\n if (match) {\r\n hive = match[1];\r\n key = match[2];\r\n if (key && (key !== self.key)) {\r\n result.push(new Registry({\r\n host: self.host,\r\n hive: self.hive,\r\n key: key,\r\n arch: self.arch\r\n }));\r\n }\r\n }\r\n }\r\n\r\n cb(null, result);\r\n\r\n });\r\n\r\n proc.on('error', function(err) {\r\n error = err;\r\n cb(err);\r\n });\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets a named value from this registry key.\r\n * @param {string} name - the value name, use {@link Registry.DEFAULT_VALUE} or an empty string for the default value\r\n * @param {function (err, item)} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @param {RegistryItem=} cb.item - the retrieved registry item\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.get = function get (name, cb) {\r\n\r\n if (typeof cb !== 'function')\r\n throw new TypeError('must specify a callback');\r\n\r\n var args = ['QUERY', this.path];\r\n if (name == '')\r\n args.push('/ve');\r\n else\r\n args = args.concat(['/v', name]);\r\n\r\n pushArch(args, this.arch);\r\n\r\n var proc = spawn(getRegExePath(), args, {\r\n cwd: undefined,\r\n env: process.env,\r\n shell: true,\r\n windowsHide: true,\r\n stdio: [ 'ignore', 'pipe', 'pipe' ]\r\n })\r\n , buffer = ''\r\n , self = this\r\n , error = null // null means no error previously reported.\r\n\r\n var output = captureOutput(proc);\r\n\r\n proc.on('close', function (code) {\r\n if (error) {\r\n return;\r\n } else if (code !== 0) {\r\n log('process exited with code ' + code);\r\n cb(mkErrorMsg('QUERY', code, output), null);\r\n } else {\r\n var items = []\r\n , result = null\r\n , lines = buffer.split('\\n')\r\n , lineNumber = 0\r\n\r\n for (var i = 0, l = lines.length; i < l; i++) {\r\n var line = lines[i].trim();\r\n if (line.length > 0) {\r\n log(line);\r\n if (lineNumber != 0) {\r\n items.push(line);\r\n }\r\n ++lineNumber;\r\n }\r\n }\r\n\r\n //Get last item - so it works in XP where REG QUERY returns with a header\r\n var item = items[items.length-1] || ''\r\n , match = ITEM_PATTERN.exec(item)\r\n , name\r\n , type\r\n , value\r\n\r\n if (match) {\r\n name = match[1].trim();\r\n type = match[2].trim();\r\n value = match[3];\r\n result = new RegistryItem(self.host, self.hive, self.key, name, type, value, self.arch);\r\n }\r\n\r\n cb(null, result);\r\n }\r\n });\r\n\r\n proc.stdout.on('data', function (data) {\r\n buffer += data.toString();\r\n });\r\n\r\n proc.on('error', function(err) {\r\n error = err;\r\n cb(err);\r\n });\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets a named value in this registry key, overwriting an already existing value.\r\n * @param {string} name - the value name, use {@link Registry.DEFAULT_VALUE} or an empty string for the default value\r\n * @param {string} type - the value type\r\n * @param {string} value - the value\r\n * @param {function (err)} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.set = function set (name, type, value, cb) {\r\n\r\n if (typeof cb !== 'function')\r\n throw new TypeError('must specify a callback');\r\n\r\n if (REG_TYPES.indexOf(type) == -1)\r\n throw Error('illegal type specified.');\r\n\r\n var args = ['ADD', this.path];\r\n if (name == '')\r\n args.push('/ve');\r\n else\r\n args = args.concat(['/v', name]);\r\n\r\n args = args.concat(['/t', type, '/d', value, '/f']);\r\n\r\n pushArch(args, this.arch);\r\n\r\n var proc = spawn(getRegExePath(), args, {\r\n cwd: undefined,\r\n env: process.env,\r\n shell: true,\r\n windowsHide: true,\r\n stdio: [ 'ignore', 'pipe', 'pipe' ]\r\n })\r\n , error = null // null means no error previously reported.\r\n\r\n var output = captureOutput(proc);\r\n\r\n proc.on('close', function (code) {\r\n if(error) {\r\n return;\r\n } else if (code !== 0) {\r\n log('process exited with code ' + code);\r\n cb(mkErrorMsg('ADD', code, output, null));\r\n } else {\r\n cb(null);\r\n }\r\n });\r\n\r\n proc.stdout.on('data', function (data) {\r\n // simply discard output\r\n log(''+data);\r\n });\r\n\r\n proc.on('error', function(err) {\r\n error = err;\r\n cb(err);\r\n });\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove a named value from this registry key. If name is empty, sets the default value of this key.\r\n * Note: This key must be already existing.\r\n * @param {string} name - the value name, use {@link Registry.DEFAULT_VALUE} or an empty string for the default value\r\n * @param {function (err)} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.remove = function remove (name, cb) {\r\n\r\n if (typeof cb !== 'function')\r\n throw new TypeError('must specify a callback');\r\n\r\n var args = name ? ['DELETE', this.path, '/f', '/v', name] : ['DELETE', this.path, '/f', '/ve'];\r\n\r\n pushArch(args, this.arch);\r\n\r\n var proc = spawn(getRegExePath(), args, {\r\n cwd: undefined,\r\n env: process.env,\r\n shell: true,\r\n windowsHide: true,\r\n stdio: [ 'ignore', 'pipe', 'pipe' ]\r\n })\r\n , error = null // null means no error previously reported.\r\n\r\n var output = captureOutput(proc);\r\n\r\n proc.on('close', function (code) {\r\n if(error) {\r\n return;\r\n } else if (code !== 0) {\r\n log('process exited with code ' + code);\r\n cb(mkErrorMsg('DELETE', code, output), null);\r\n } else {\r\n cb(null);\r\n }\r\n });\r\n\r\n proc.stdout.on('data', function (data) {\r\n // simply discard output\r\n log(''+data);\r\n });\r\n\r\n proc.on('error', function(err) {\r\n error = err;\r\n cb(err);\r\n });\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove all subkeys and values (including the default value) from this registry key.\r\n * @param {function (err)} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.clear = function clear (cb) {\r\n\r\n if (typeof cb !== 'function')\r\n throw new TypeError('must specify a callback');\r\n\r\n var args = ['DELETE', this.path, '/f', '/va'];\r\n\r\n pushArch(args, this.arch);\r\n\r\n var proc = spawn(getRegExePath(), args, {\r\n cwd: undefined,\r\n env: process.env,\r\n shell: true,\r\n windowsHide: true,\r\n stdio: [ 'ignore', 'pipe', 'pipe' ]\r\n })\r\n , error = null // null means no error previously reported.\r\n\r\n var output = captureOutput(proc);\r\n\r\n proc.on('close', function (code) {\r\n if(error) {\r\n return;\r\n } else if (code !== 0) {\r\n log('process exited with code ' + code);\r\n cb(mkErrorMsg(\"DELETE\", code, output), null);\r\n } else {\r\n cb(null);\r\n }\r\n });\r\n\r\n proc.stdout.on('data', function (data) {\r\n // simply discard output\r\n log(''+data);\r\n });\r\n\r\n proc.on('error', function(err) {\r\n error = err;\r\n cb(err);\r\n });\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Alias for the clear method to keep it backward compatible.\r\n * @method\r\n * @deprecated Use {@link Registry#clear} or {@link Registry#destroy} in favour of this method.\r\n * @param {function (err)} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.erase = Registry.prototype.clear;\r\n\r\n/**\r\n * Delete this key and all subkeys from the registry.\r\n * @param {function (err)} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.destroy = function destroy (cb) {\r\n\r\n if (typeof cb !== 'function')\r\n throw new TypeError('must specify a callback');\r\n\r\n var args = ['DELETE', this.path, '/f'];\r\n\r\n pushArch(args, this.arch);\r\n\r\n var proc = spawn(getRegExePath(), args, {\r\n cwd: undefined,\r\n env: process.env,\r\n shell: true,\r\n windowsHide: true,\r\n stdio: [ 'ignore', 'pipe', 'pipe' ]\r\n })\r\n , error = null // null means no error previously reported.\r\n\r\n var output = captureOutput(proc);\r\n\r\n proc.on('close', function (code) {\r\n if (error) {\r\n return;\r\n } else if (code !== 0) {\r\n log('process exited with code ' + code);\r\n cb(mkErrorMsg('DELETE', code, output), null);\r\n } else {\r\n cb(null);\r\n }\r\n });\r\n\r\n proc.stdout.on('data', function (data) {\r\n // simply discard output\r\n log(''+data);\r\n });\r\n\r\n proc.on('error', function(err) {\r\n error = err;\r\n cb(err);\r\n });\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Create this registry key. Note that this is a no-op if the key already exists.\r\n * @param {function (err)} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.create = function create (cb) {\r\n\r\n if (typeof cb !== 'function')\r\n throw new TypeError('must specify a callback');\r\n\r\n var args = ['ADD', this.path, '/f'];\r\n\r\n pushArch(args, this.arch);\r\n\r\n var proc = spawn(getRegExePath(), args, {\r\n cwd: undefined,\r\n env: process.env,\r\n shell: true,\r\n windowsHide: true,\r\n stdio: [ 'ignore', 'pipe', 'pipe' ]\r\n })\r\n , error = null // null means no error previously reported.\r\n\r\n var output = captureOutput(proc);\r\n\r\n proc.on('close', function (code) {\r\n if (error) {\r\n return;\r\n } else if (code !== 0) {\r\n log('process exited with code ' + code);\r\n cb(mkErrorMsg('ADD', code, output), null);\r\n } else {\r\n cb(null);\r\n }\r\n });\r\n\r\n proc.stdout.on('data', function (data) {\r\n // simply discard output\r\n log(''+data);\r\n });\r\n\r\n proc.on('error', function(err) {\r\n error = err;\r\n cb(err);\r\n });\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Checks if this key already exists.\r\n * @param {function (err, exists)} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @param {boolean=} cb.exists - true if a registry key with this name already exists\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.keyExists = function keyExists (cb) {\r\n\r\n this.values(function (err, items) {\r\n if (err) {\r\n // process should return with code 1 if key not found\r\n if (err.code == 1) {\r\n return cb(null, false);\r\n }\r\n // other error\r\n return cb(err);\r\n }\r\n cb(null, true);\r\n });\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Checks if a value with the given name already exists within this key.\r\n * @param {string} name - the value name, use {@link Registry.DEFAULT_VALUE} or an empty string for the default value\r\n * @param {function (err, exists)} cb - callback function\r\n * @param {ProcessUncleanExitError=} cb.err - error object or null if successful\r\n * @param {boolean=} cb.exists - true if a value with the given name was found in this key\r\n * @returns {Registry} this registry key object\r\n */\r\nRegistry.prototype.valueExists = function valueExists (name, cb) {\r\n\r\n this.get(name, function (err, item) {\r\n if (err) {\r\n // process should return with code 1 if value not found\r\n if (err.code == 1) {\r\n return cb(null, false);\r\n }\r\n // other error\r\n return cb(err);\r\n }\r\n cb(null, true);\r\n });\r\n\r\n return this;\r\n};\r\n\r\nmodule.exports = Registry;\r\n"],"x_google_ignoreList":[0],"mappings":"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"}