Neuron Powered Motorization

    global-js-functions

    0.2.2 • Public • Published

    Global JS Functions

    npm Libraries.io dependency status for latest release GitHub top language NPM

    npm npm

    paypal

    This module adds some extra global functions to node.js and javascript. The same file can run both server side and client side.

    Installation

    npm install global-js-functions

    Setup

    // express
    
    const express = require('express');
    const jsFunctions = require('global-js-functions');
    
    const app = express();
    
    // add express static file
    jsFunctions('/cdn/functions.js', app); // returns true on success
    
    
    // another way to add the functions to client side
    app.use('/cdn/functions.js', express.static(jsFunctions.filePath));
    
    
    // basic http
    
    const http = require('http');
    const jsFunctions = require('./index')('/cdn/functions.js');
    
    server = http.createServer(function(req, res){
        // send static file on /functions.js url
        if(jsFunctions(req, res)) return;
    
        // do other stuff
        res.statusCode = 200;
        res.write('Hello, World!');
        return res.end();
    });
    
    server.listen(3000);
    
    
    // other methods
    
    const jsFunctions = require('./index');
    
    // when all parameters left blank
    // if express module exists, this will return the express.static(); function with paths filled
    // else, this will return a function which returns a reference to the javascript string
    jsFunctions();
    
    // other method express example
    const jsFunctions = require('./index');
    
    app.use('/cdn/functions.js', jsFunctions());
    
    // other method http example
    const jsFunctions = require('./index')();
    
    if('/cdn/functions.js' === url.parse(req.url).pathname){
        res.writeHead(200, {'Content-Type': 'text/javascript'});
        res.write(jsFunctions());
        return res.end();
    }
    <!-- to use the static functions.js client side -->
    <script src="/cdn/functions.js"></script>
    <!-- all above js examples return the same static url -->
    
    <!-- or you can load it through jsdelivr cdn (automatically generated by jsdelivr) -->
    <!-- npm -->
    <script src="https://cdn.jsdelivr.net/npm/global-js-functions/static/functions.min.js"></script>
    <!-- github -->
    <script src="https://cdn.jsdelivr.net/gh/aspiesoft/global-js-functions/static/functions.min.js"></script>

    Usage

    forEach(obj || arr || str, function(value, index, array){
        // this function automatically runs Object.keys() on an object, and returns the object key as the index
        // an array works like normal
        // a string, number, or boolean is added as a single index of an array
    });
    
    forEachAsync(obj || arr || str, function(value, index, array){
        // same as forEach, except each callback runs async
        // if you set the option {sync: true} than you can await the loop, and it will return when all callbacks are finished
        // if {sync: true}, you can also set {timeout: 1000, checkInterval: 10}
        // timeout option says when the waiting should cancel
        // checkInterval option tells the function how often it should check to see when the loop is done
        // both options are in milliseconds
    }, options);
    
    await sleep(ms); // allows you to make an async function sleep for a number of milliseconds
    
    
    // the waitForValue function can be a very useful one
    async function logAsyncGrabbedValue(){
        let result = false;
        myLongProcess().then(data => {
            result = data;
        });
        
        // do some stuff during async operations
        
        // this function will wait for callback to return true
        // we are waiting until result is set by the myLongProcess async function
        await waitForValue(() => result);
        
        // now that we have the result, we can return it
        return result;
    }
    async function myLongProcess(){
        let result = 'test';
        await sleep(1000);
        return result;
    }
    // the waitForValue function is also what the forEachAsync function uses when the sync option is true
    
    
    // returns milliseconds from string time
    toTimeMillis('10m'); // 10 minutes
    // any number passes back as if already in milliseconds
    toTimeMillis(toTimeMillis(toTimeMillis('10m'))); // still 10 minutes
    // you can use one of many time values
    us || mic = microsecond
    ns = nanosecond
    ms = millisecond
    s = second
    m = minute
    h = hour
    D = Day
    M = Month
    Y = Year
    DE = Decade
    CE || C = Century
    
    
    // toNumber function sets a string to a number, and removes invalid characters
    toNumber('10 and letters that get removed');
    // toInteger function does the same as toNumber, but also floors the decimal
    toInteger('10.5 and letters and decimal removed');
    
    // sNum function returns an 's' string if a number !== 1
    sNum(1); // result = '';
    sNum(2); // result = 's';
    // this is helpful if you want to display a string that shows a time frame
    let loops = 3;
    while(loops--){
        console.log('This will loop '+loops+' more time'+sNum(loops));
    }
    // output:
    // This will loop 3 more times
    // This will loop 2 more times
    // This will loop 1 more time
    
    // notice the last "time" does not say "1 more time(s)"
    
    
    // this function escapes regex by adding a "\" in front of every non alphabetic or numeric character
    RegExp.escape(str);
    
    // replaces all occurrences in a string
    String.replaceAll(str, search, replace);
    // replaces the last occurrence in a string
    String.replaceLast(str, search, replace);
    
    // reverses the characters in a string, or by a separator
    String.reverse(str, separator);
    
    // fixes json string to proper format
    JSON.normalizeStr(`{test1: "1", test2: "test 2",}`); // output: {"test1":1,"test2":"test 2"}
    
    // the math sum operator. Basically a for loop
    // answer += callback(n);
    let result = Math.sum(1, 5, (n) => 2*n);
    
    // the math factorial operator
    Math.factorial(n);
    
    
    // sets html characters to htmlentities
    // also does Not set &amp; to &amp;amp;
    HTML.escape(str);
    // unsets html characters from htmlentities
    HTML.unescape(str);
    // strips html tags (unless that tag is mentioned in keep parameter)
    // stripParams can be set to true || false to strip params from kept html tags
    // stripParams default = true
    HTML.strip_tags(str, keep, stripParams);
    // removes the parameters from all html tags
    HTML.strip_params(str);
    
    // Array has .map and .forEach, so why not put this on Object
    Object.map(obj, callback); && Object.forEach(obj, callback);
    
    // sets an object to an array
    keepKeys = 'array' || 'string' || false;
    Object.toArray(obj, keepKeys);
    // keepKeys = 'array' output: [[key, value], [key, value]]
    // keepKeys = 'string' output: ['key => value', 'key => value']
    // keepKeys = false output: [value, value]
    
    // returns an array as an object
    Array.toObject(arr);
    
    // returns a clone of a function
    Function.clone(func);
    
    // returns a clone of an object
    Object.clone(obj);
    
    // returns a clone of an array
    Array.clone(arr);

    Install

    npm i global-js-functions

    DownloadsWeekly Downloads

    2

    Version

    0.2.2

    License

    MIT

    Unpacked Size

    28.3 kB

    Total Files

    7

    Last publish

    Collaborators

    • aspiesoft