@coursebuilder/core
Version:
Core package for Course Builder
1 lines • 3.33 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/lib/utils/providers.ts","../../../src/lib/utils/merge.ts"],"sourcesContent":["import { CourseBuilderConfig } from '../../index'\nimport { Provider } from '../../providers'\nimport { InternalProvider } from '../../types'\nimport { merge } from './merge'\n\nexport default function parseProviders(params: {\n\tproviders: Provider[]\n\turl: URL\n\tproviderId?: string\n\toptions: CourseBuilderConfig\n}): {\n\tproviders: InternalProvider[]\n\tprovider?: InternalProvider\n} {\n\tconst { providerId, options } = params\n\n\tconst providers = params.providers.map((p) => {\n\t\tconst provider = typeof p === 'function' ? p() : p\n\t\tconst { options: userOptions, ...defaults } = provider\n\n\t\tif (!userOptions) {\n\t\t\tthrow new Error(`Provider ${provider.id} is missing options`)\n\t\t}\n\n\t\tconst { paymentsAdapter, ...userOptionsWithPaymentsAdapter } = userOptions\n\n\t\treturn {\n\t\t\t...merge(defaults, userOptionsWithPaymentsAdapter),\n\t\t\t...(paymentsAdapter ? { options: paymentsAdapter } : {}),\n\t\t}\n\t})\n\n\treturn {\n\t\tproviders,\n\t\tprovider: providers.find(({ id }) => id === providerId),\n\t}\n}\n","// Source: https://stackoverflow.com/a/34749873/5364135\n\n/** Simple object check */\nfunction isObject(item: any): boolean {\n\treturn item && typeof item === 'object' && !Array.isArray(item)\n}\n\n/** Deep merge two objects */\nexport function merge(target: any, ...sources: any[]): any {\n\tif (!sources.length) return target\n\tconst source = sources.shift()\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!target[key]) Object.assign(target, { [key]: {} })\n\t\t\t\tmerge(target[key], source[key])\n\t\t\t} else {\n\t\t\t\tObject.assign(target, { [key]: source[key] })\n\t\t\t}\n\t\t}\n\t}\n\n\treturn merge(target, ...sources)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAGA;;;;;;;ACAA,SAASA,SAASC,MAAS;AAC1B,SAAOA,QAAQ,OAAOA,SAAS,YAAY,CAACC,MAAMC,QAAQF,IAAAA;AAC3D;AAFSD;AAKF,SAASI,MAAMC,WAAgBC,SAAc;AACnD,MAAI,CAACA,QAAQC;AAAQ,WAAOF;AAC5B,QAAMG,SAASF,QAAQG,MAAK;AAE5B,MAAIT,SAASK,MAAAA,KAAWL,SAASQ,MAAAA,GAAS;AACzC,eAAWE,OAAOF,QAAQ;AACzB,UAAIR,SAASQ,OAAOE,GAAAA,CAAI,GAAG;AAC1B,YAAI,CAACL,OAAOK,GAAAA;AAAMC,iBAAOC,OAAOP,QAAQ;YAAE,CAACK,GAAAA,GAAM,CAAC;UAAE,CAAA;AACpDN,cAAMC,OAAOK,GAAAA,GAAMF,OAAOE,GAAAA,CAAI;MAC/B,OAAO;AACNC,eAAOC,OAAOP,QAAQ;UAAE,CAACK,GAAAA,GAAMF,OAAOE,GAAAA;QAAK,CAAA;MAC5C;IACD;EACD;AAEA,SAAON,MAAMC,QAAAA,GAAWC,OAAAA;AACzB;AAhBgBF;;;ADHD,SAAf,eAAuCS,QAKtC;AAIA,QAAM,EAAEC,YAAYC,QAAO,IAAKF;AAEhC,QAAMG,YAAYH,OAAOG,UAAUC,IAAI,CAACC,MAAAA;AACvC,UAAMC,WAAW,OAAOD,MAAM,aAAaA,EAAAA,IAAMA;AACjD,UAAM,EAAEH,SAASK,aAAa,GAAGC,SAAAA,IAAaF;AAE9C,QAAI,CAACC,aAAa;AACjB,YAAM,IAAIE,MAAM,YAAYH,SAASI,EAAE,qBAAqB;IAC7D;AAEA,UAAM,EAAEC,iBAAiB,GAAGC,+BAAAA,IAAmCL;AAE/D,WAAO;MACN,GAAGM,MAAML,UAAUI,8BAAAA;MACnB,GAAID,kBAAkB;QAAET,SAASS;MAAgB,IAAI,CAAC;IACvD;EACD,CAAA;AAEA,SAAO;IACNR;IACAG,UAAUH,UAAUW,KAAK,CAAC,EAAEJ,GAAE,MAAOA,OAAOT,UAAAA;EAC7C;AACD;AA/BwBc;","names":["isObject","item","Array","isArray","merge","target","sources","length","source","shift","key","Object","assign","params","providerId","options","providers","map","p","provider","userOptions","defaults","Error","id","paymentsAdapter","userOptionsWithPaymentsAdapter","merge","find","parseProviders"]}