UNPKG

3.8 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/utils/merge-gatsby-config.js"],"names":["_","require","module","exports","a","b","allGatsbyConfigKeysWithAValue","uniq","Object","keys","concat","mergedConfig","reduce","config","gatsbyConfigKey","mergeFn","howToMerge","byDefault","normalizePluginEntry","entry","isString","resolve","options","isObject","siteMetadata","objA","objB","merge","plugins","uniqWith","isEqual","mapping"],"mappings":";;AAAA,MAAMA,CAAC,GAAGC,OAAO,CAAE,QAAF,CAAjB;AACA;;;;;AAGAC,MAAM,CAACC,OAAP,GAAiB,CAACC,CAAD,EAAIC,CAAJ,KAAU;AACzB;AACA,QAAMC,6BAA6B,GAAGN,CAAC,CAACO,IAAF,CACpCC,MAAM,CAACC,IAAP,CAAYL,CAAZ,EAAeM,MAAf,CAAsBF,MAAM,CAACC,IAAP,CAAYJ,CAAZ,CAAtB,CADoC,CAAtC,CAFyB,CAMzB;;;AACA,QAAMM,YAAY,GAAGL,6BAA6B,CAACM,MAA9B,CACnB,CAACC,MAAD,EAASC,eAAT,KAA6B;AAC3B;AACA;AACA,UAAMC,OAAO,GAAGC,UAAU,CAACF,eAAD,CAAV,IAA+BE,UAAU,CAACC,SAA1D;AACA,6BACKJ,MADL;AAEE,OAACC,eAAD,GAAmBC,OAAO,CAACX,CAAC,CAACU,eAAD,CAAF,EAAqBT,CAAC,CAACS,eAAD,CAAtB;AAF5B;AAID,GATkB,EAUnB,EAVmB,CAArB,CAPyB,CAoBzB;;AACA,SAAOH,YAAP;AACD,CAtBD;AAwBA;;;;;;;;;AAOA,MAAMO,oBAAoB,GAAGC,KAAK,IAChCnB,CAAC,CAACoB,QAAF,CAAWD,KAAX,IACI;AAAEE,EAAAA,OAAO,EAAEF,KAAX;AAAkBG,EAAAA,OAAO,EAAE;AAA3B,CADJ,GAEItB,CAAC,CAACuB,QAAF,CAAWJ,KAAX;AACEG,EAAAA,OAAO,EAAE;AADX,GACkBH,KADlB,IAEAA,KALN;;AAOA,MAAMH,UAAU,GAAG;AACjB;;;;;AAKAC,EAAAA,SAAS,EAAE,CAACb,CAAD,EAAIC,CAAJ,KAAUA,CAAC,IAAID,CANT;AAOjBoB,EAAAA,YAAY,EAAE,CAACC,IAAD,EAAOC,IAAP,KAAgB1B,CAAC,CAAC2B,KAAF,CAAQ,EAAR,EAAYF,IAAZ,EAAkBC,IAAlB,CAPb;AAQjB;AACAE,EAAAA,OAAO,EAAE,CAACxB,CAAC,GAAG,EAAL,EAASC,CAAC,GAAG,EAAb,KACPL,CAAC,CAAC6B,QAAF,CAAWzB,CAAC,CAACM,MAAF,CAASL,CAAT,CAAX,EAAwB,CAACD,CAAD,EAAIC,CAAJ,KACtBL,CAAC,CAAC8B,OAAF,CAAUZ,oBAAoB,CAACd,CAAD,CAA9B,EAAmCc,oBAAoB,CAACb,CAAD,CAAvD,CADF,CAVe;AAajB0B,EAAAA,OAAO,EAAE,CAACN,IAAD,EAAOC,IAAP,KAAgB1B,CAAC,CAAC2B,KAAF,CAAQ,EAAR,EAAYF,IAAZ,EAAkBC,IAAlB;AAbR,CAAnB","sourcesContent":["const _ = require(`lodash`)\n/**\n * Defines how a theme object is merged with the user's config\n */\nmodule.exports = (a, b) => {\n // a and b are gatsby configs, If they have keys, that means there are values to merge\n const allGatsbyConfigKeysWithAValue = _.uniq(\n Object.keys(a).concat(Object.keys(b))\n )\n\n // reduce the array of mergable keys into a single gatsby config object\n const mergedConfig = allGatsbyConfigKeysWithAValue.reduce(\n (config, gatsbyConfigKey) => {\n // choose a merge function for the config key if there's one defined,\n // otherwise use the default value merge function\n const mergeFn = howToMerge[gatsbyConfigKey] || howToMerge.byDefault\n return {\n ...config,\n [gatsbyConfigKey]: mergeFn(a[gatsbyConfigKey], b[gatsbyConfigKey]),\n }\n },\n {}\n )\n\n // return the fully merged config\n return mergedConfig\n}\n\n/**\n * Normalize plugin spec before comparing so\n * - `gatsby-plugin-name`\n * - { resolve: `gatsby-plugin-name` }\n * - { resolve: `gatsby-plugin-name`, options: {} }\n * are all considered equal\n */\nconst normalizePluginEntry = entry =>\n _.isString(entry)\n ? { resolve: entry, options: {} }\n : _.isObject(entry)\n ? { options: {}, ...entry }\n : entry\n\nconst howToMerge = {\n /**\n * pick a truthy value by default.\n * This makes sure that if a single value is defined, that one it used.\n * We prefer the \"right\" value, because the user's config will be \"on the right\"\n */\n byDefault: (a, b) => b || a,\n siteMetadata: (objA, objB) => _.merge({}, objA, objB),\n // plugins are concatenated and uniq'd, so we don't get two of the same plugin value\n plugins: (a = [], b = []) =>\n _.uniqWith(a.concat(b), (a, b) =>\n _.isEqual(normalizePluginEntry(a), normalizePluginEntry(b))\n ),\n mapping: (objA, objB) => _.merge({}, objA, objB),\n}\n"],"file":"merge-gatsby-config.js"}
\No newline at end of file