Skip to content
Snippets Groups Projects
Select Git revision
  • 270ed768d6d784280bbdb2e0657f67ac32ee24af
  • master default protected
  • detached4
  • detached3
  • detached2
  • bsv-next
  • detached
  • php82
  • 6.x
  • 6.4.0
  • 6.3.3
  • 6.3.2
  • 6.3.1
  • 6.3.0
  • 6.2.7
  • 6.2.6
  • 6.2.5
  • 6.2.4
  • 6.2.3
  • 6.2.2
  • 6.2.1
  • 6.2.0
  • 6.1.3
  • 6.1.2
  • 6.1.1
  • 6.1.0
  • 6.0.0
27 results

index.js

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    index.js 5.64 KiB
    const path = require("path");
    
    /**
     * Simple object check.
     * @param item
     * @returns {boolean}
     */
    function isObject(item) {
        return (item && typeof item === 'object' && !Array.isArray(item));
    }
    
    
    /**
     * Permet de fusionner des objets JSON comprenant des sous-objets ou des tableaux
     * @param target
     * @param ...sources
     * @returns Object
     */
    function deepMerge(target, ...sources) {
        if (!sources.length) return target;
        const source = sources.shift();
    
        if (isObject(target) && isObject(source)) {
            for (const key in source) {
                if (isObject(source[key])) {
                    if (!target[key]) Object.assign(target, {[key]: {}});
                    deepMerge(target[key], source[key]);
                } else if (Array.isArray(target[key]) && Array.isArray(source[key])) {
                    for (const subKey in source[key]) {
                        const val = source[key][subKey];
                        if (-1 === target[key].indexOf(val)) {
                            target[key].push(val);
                        }
                    }
                } else {
                    Object.assign(target, {[key]: source[key]});
                }
            }
        }
    
        return deepMerge(target, ...sources);
    }
    
    
    /**
     * Retourne le répertoire racine d'UnicaenVue
     *
     * @returns String
     */
    function unicaenVueDir() {
        const path = require('path');
    
        // répertoire racine d'UnicaenVue', en partant du répertoire actuel, donc src/Server
        return path.resolve(__dirname, '../../');
    }
    
    
    /**
     * Retourne le répertoire racine de l'application.
     *
     * @returns String
     */
    function projectDir() {
        // répertoire racine de l'application
        // Attention : le script doit être lancé depuis le bon répertoire...
        return process.cwd();
    }
    
    
    /**