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

*/


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