Source: index.js

var native = null;

if(process.platform == "win32" && process.arch == "x64") {
        // winx64
	native = require('./bin/winx64/irisnative.node');  
} else if (process.platform == "win32" && process.arch == "ia32") {
	native = require('./bin/winx86/irisnative.node');
} else if (process.platform == "darwin") {
    native = require('./bin/macx64/irisnative.node');
} else if (process.platform == "linux") {
    let distro = getLinuxDistro()
    console.log('platform = ' + process.platform + ': ' + distro)
    if (distro == 'ubuntu') {
        native = require('./bin/lnxubuntux64/irisnative.node');
    } else if (distro == 'fedora') {
        native = require('./bin/lnxrhx64/irisnative.node');
    } else if (distro == 'rhx64') {
        native = require('./bin/lnxrhx64/irisnative.node');
    } else {
        // default to RH for now
        native = require('./bin/lnxrhx64/irisnative.node');
    }
}

function getLinuxDistro() {
    const { execSync } = require('child_process');
    try {
        let distro = execSync('lsb_release -is',{encoding:'utf8',stdio:'pipe'});
        return distro.replace(/(\r\n\t|\n|\r\t)/gm,"").toLowerCase();
    } catch (e) {
        return getDistroFromFile();
    }
}

function getDistroFromFile() {
    const fs = require('fs')
    try {
        let osv = fs.readFileSync('/etc/os-release','utf8');
        let lines = osv.split('\n');
        let distro = lines.find((element) => { return element.substring(0,element.indexOf('=')) == 'ID' })
        return distro.substring(3);
    } catch (e) {
        return null;
    }
}

module.exports = native;

/**
 * The InterSystems IRIS Native API Module.
 * @external "intersystems-iris-native"
 */

/**
 * @typedef {Object} connectionInfo
 * @property {string} host - the host address
 * @property {integer} port - the port number
 * @property {string} ns - the IRIS Namespace
 * @property {string} user - user name
 * @property {string} pwd - password
 * @property {boolean} sharedmemory - use shared memory if available, default is true
 */

/**
 * An IRIS Native function to establish a connection to an InterSystems IRIS Server. This method returns an instance of Connection.
 * @function external:"intersystems-iris-native".createConnection
 * @param {connectionInfo} connectionInfo - Object containing connection arguments host, port, namespace, user, password, and sharedmemory
 * @returns {external:"intersystems-iris-native".Connection}
 */

/**
 * IRIS Native Connection Class
 * @class Connection
 * @memberof external:"intersystems-iris-native"
 * @hideconstructor

 */

 /**
 * Close the connection to the IRIS server.
 * @function close
 * @memberof external:"intersystems-iris-native".Connection
 * @instance
 */

/**
 * Create an instance of the Iris class. Returns an instance of Iris.
 * @function createIris
 * @returns {external:"intersystems-iris-native".Iris}
 * @memberof external:"intersystems-iris-native".Connection
 * @instance
 */

 /**
 * Check connection status, returns true if the connection is closed, false otherwise.
 * @function isClosed
 * @memberof external:"intersystems-iris-native".Connection
 * @returns {boolean}
 * @instance
 */

 /**
 * IRIS Native IRIS Class
 * @class Iris
 * @memberof external:"intersystems-iris-native"
 * @hideconstructor
 */

/**
 * Get the value of a global array node, returns null if the node is not defined.
 * @function get
 * @memberof external:"intersystems-iris-native".Iris
 * @param {string} globalName - the name of the global array
 * @param {...string} subscript - variable number of subscript values
 * @returns {any}
 * @throws exception
 * @instance
 */

 /**
 * Get the boolean value of a global array node, returns null if the node is not defined.
 * @function getBoolean
 * @memberof external:"intersystems-iris-native".Iris
 * @param {string} globalName - the name of the global array
 * @param {...string} subscript - variable number of subscript values
 * @returns {boolean}
 * @throws exception
 * @instance
 */

 /**
 * Get the value of a global array node as an ArrayBuffer, returns null if the node is not defined.
 * @function getBytes
 * @memberof external:"intersystems-iris-native".Iris
 * @param {string} globalName - the name of the global array
 * @param {...string} subscript - variable number of subscript values
 * @returns {ArrayBuffer}
 * @throws exception
 * @instance
 */

 /**
 * Get the API version string as major.minor.patch
 * @function getAPIVersion
 * @memberof external:"intersystems-iris-native".Iris
 * @returns {string}
 * @throws exception
 * @instance
 */

 /**
 * Get the numeric value of a global array node, returns null if the node is not defined.
 * @function getNumber
 * @memberof external:"intersystems-iris-native".Iris
 * @param {string} globalName - the name of the global array
 * @param {...string} subscript - variable number of subscript values
 * @returns {number}
 * @throws exception
 * @instance
 */

 /**
 * Get the IRIS Server's version string.
 * @function getServerVersion
 * @memberof external:"intersystems-iris-native".Iris
 * @returns {string}
 * @throws exception
 * @instance
 */

 /**
 * Get the value of a global array node as a string, returns null if the node is not defined.
 * @function getString
 * @memberof external:"intersystems-iris-native".Iris
 * @param {string} globalName - the name of the global array
 * @param {...string} subscript - variable number of subscript values
 * @returns {string}
 * @throws exception
 * @instance
 */

 /**
 * Set the value of a global array node.
 * @function set
 * @memberof external:"intersystems-iris-native".Iris
 * @param {string|number|true|false|NULL} value - the value to assign to the global array
 * @param {string} globalName - the name of the global array
 * @param {...string} subscript - variable number of subscript values
 * @throws exception
 * @instance
 */

 /**
 * Call a method in a class that returns a value.
 * @function classMethodValue
 * @memberof external:"intersystems-iris-native".Iris
 * @oaram {string} className - the name of the class in which the method is implemented
 * @param {string} methodName - the name of the method to call
 * @param {...any} argument - arguments to pass to the method, zero one or more.
 * @returns {any} - the class method's return value
 * @throws exception
 * @instance
 */

 /**
 * Call a method in a class without returning a value.
 * @function classMethodVoid
 * @oaram {string} className - the name of the class in which the method is implemented
 * @param {string} methodName - the name of the method to call
 * @param {...any} argument - arguments to pass to the method, zero one or more.
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Invoke a function in a routine.
 * @function function
 * @param {string} routineName - the name of the routine in which the function is implemented
 * @param {string} functionName - the name of the function to invoke
 * @param {...any} argument - zero, one or more arguments to pass to the function
 * @returns {any} - the function's return value
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Invoke a procedure (no value is returned) in a routine.
 * @function procedure
 * @param {string} routineName - the name of the routine in which the procedure is implemented
 * @param {string} procedureName - the name of the procedure to invoke
 * @param {...any} argument - zero, one or more arguments to pass to the procedure
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Increment the value of a global array node.
 * @function increment
 * @param {number} incrementBy - the amount to increment the global array node by
 * @param {string} globalName - the name of the global array
 * @param {...string} subscript - variable number of subscript values
 * @returns {number}
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Check to see if a global array node is defined.
 * @function isDefined
 * @param {string} globalName - the name of the global array
 * @param {...string} subscript - variable number of subscript values
 * @returns {number} - 0 if the global array node is not defined, 1 if it is defined and has no subordinate nodes, 10 if not defined but has subordinate nodes, 11 if defined and has subordinate nodes.
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Kill a global array node.
 * @function kill
 * @param {string} globalName - the name of the global array
 * @param {...string} subscript - variable number of subscript values
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Lock a global array. The lockMode argument specifies whether any previously held locks should be released. 
 * This method will time out after a predefined interval if the lock cannot be acquired.
 * NOTE: The lockReference value must begin with '^' to acquire a lock on a global node.
 * @function lock
 * @param {string} lockType - 'S' for shared lock and 'E' for an escalating lock
 * @param {integer} timeout - the number of seconds before the attempt to acquire the lock will timeout
 * @param {string} lockReference -  a leading '^' is required for global array references.  Note that lock() and unlock() are different from all other functions. where only a globalName - without the '^' prefix - is required.
 * @param {...string} subscript
 * @returns {boolean}
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Rrelease a previously acquired lock on *lockReference.
 * @function unlock
 * @param {string} lockMode - a string containing lock type ('S' or 'E') and 'I' for an immediate unlock or 'D' for deferred
 * @param {string} lockReference -  a leading '^' is required for global array references.  Note that lock() and unlock() are different from all other functions. where only a globalName - without the '^' prefix - is required.
 * @param {...string} subscript
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Release all global array locks held by the connection.
 * @function releaseAllLocks
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Start a new server transaction.
 * @function tStart
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Commit one level of a server transaction.
 * @function tCommit
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Rollback all levels of the server transaction.
 * @function tRollback
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Rollback one level of the server transaction.
 * @function tRollbackOne
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Get the nesting level of the current server transaction.
 * @function getTLevel
 * @returns {number} - the nesting level of the current server transaction, 0 if no transaction is active
 * @memberof external:"intersystems-iris-native".Iris
 * @instance
 */

 /**
 * Instantiate the Iterator class.
 * @function iterator
 * @memberof external:"intersystems-iris-native".Iris
 * @param {string} globalName - the name of the global array
 * @param {...string} subscript - variable number of subscript values
 * @returns {external:"intersystems-iris-native".Iterator}
 * @throws exception
 * @instance
 */

/**
 * IRIS Native IRIS Class
 * @class Iterator
 * @memberof external:"intersystems-iris-native"
 * @hideconstructor
*/

/**
 * Position the iterator at the next sibling node in collation order and return an object containing done and value properties.
 * If the iterator is at end then done is true, otherwise it is false. The value property returned when done is false is either the subscript, 
 * the node value, or an array whose first element is the subscript and the second is the global node value. The return value type 
 * defaults to the array containing the subscript and value. The return type can be changed by invoking the entries(), keys(), or values() methods.
 * @function next
 * @returns {any}
 * @memberof external:"intersystems-iris-native".Iterator
 * @instance
*/

/**
 * Position the iterator to start from subscript, returns this() for chaining.
 * @function startFrom
 * @param {string} subscript - the value of the subscript where the iterator is to be positioned
 * @returns {external:"intersystems-iris-native".Iterator}
 * @memberof external:"intersystems-iris-native".Iterator
 * @instance
*/

/**
 * reverse the iterator, returns this() for chaining.
 * @function reversed
 * @returns {external:"intersystems-iris-native".Iterator}
 * @memberof external:"intersystems-iris-native".Iterator
 * @instance
*/

/**
 * set the iterator return type to return entries where each value is an array containing the subscript and node value, returns This() for chaining.
 * @function entries
 * @returns {external:"intersystems-iris-native".Iterator}
 * @memberof external:"intersystems-iris-native".Iterator
 * @instance
*/

/**
 * set the iterator return type to return keys only (subscripts), returns this() for chaining.
 * @function keys
 * @returns {external:"intersystems-iris-native".Iterator}
 * @memberof external:"intersystems-iris-native".Iterator
 * @instance
*/

/**
 * set the iterator return type to return only values, returns this() for chaining.
 * @function values
 * @returns {external:"intersystems-iris-native".Iterator}
 * @memberof external:"intersystems-iris-native".Iterator
 * @instance
*/

© 2020 InterSystems Corporation, Cambridge, MA. All rights reserved.    Privacy & Terms Guarantee Section 508