UNPKG

@talend/assets-api

Version:

A set of API designed to access assets using CDN

239 lines (237 loc) 7.09 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["TalendAssetsApi"] = factory(); else root["TalendAssetsApi"] = factory(); })(this, () => { return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ // The require scope /******/ var __webpack_require__ = {}; /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; /*!**********************!*\ !*** ./src/index.ts ***! \**********************/ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /* eslint-disable no-console */ /** * * Most of the parameters are optional but in fact they are not optional. * They are optional for dev experience because injected by a babel plugin */ function getPackageVersion(name, version) { if (name) { const sessionVersion = sessionStorage.getItem(name); if (sessionVersion) { return sessionVersion; } const metas = document.querySelectorAll(`meta[name="${name}"]`); if (metas.length > 1) { console.warn(`Package ${name} is installed multiple times`); } if (metas.length > 0) { return metas[0].getAttribute('content') || version; } } return version; } function getURL(path, name, version) { const overriddenVersion = getPackageVersion(name, version); if (!overriddenVersion) { throw new Error(`Version not found for ${name}`); } return window.Talend.getCDNUrl({ name, version: overriddenVersion, path }); } const TIMEOUT = 10000; function addScript({ src, integrity, ...attr }) { const found = !!document.querySelector(`script[src="${src}"]`); if (found) { return; } const script = document.createElement('script'); script.setAttribute('src', src); script.setAttribute('type', 'text/javascript'); script.setAttribute('crossorigin', 'anonymous'); if (integrity) { script.setAttribute('integrity', integrity); } script.async = false; _extends(script, attr); document.body.appendChild(script); } function toDefaultModule(value) { return Object.create(null, { default: { value, enumerable: true }, __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); } function getUMD(name, version, varName, path) { const cache = { resolved: false }; function loaded() { if (!varName) { return false; } return !!window[varName]; } if (loaded() && varName) { return Promise.resolve(window[varName]); } const src = getURL(path || '/undefined', name, version); console.log('getUMD', src, varName); return new Promise((resolve, reject) => { function onload() { if (!varName) { cache.resolved = true; resolve(undefined); } else { console.log(`${varName} onload ok`); } } function onerror(e) { console.error(e); reject(e); } addScript({ src, onload, onerror }); if (varName) { const intervalId = setInterval(() => { if (loaded()) { cache.resolved = true; clearInterval(intervalId); resolve(window[varName]); } }, 200); setTimeout(() => { if (!cache.resolved) { clearInterval(intervalId); reject(new Error(`UMD from ${src}, ${varName} not found in ${TIMEOUT}`)); } }, TIMEOUT); } }); } async function getJSON(path, name, version) { const url = getURL(path, name, version); const response = await fetch(url); if (response.ok) { return response.json(); } console.error(`Response not ok: ${response.status} ${response.statusText} from ${url}`); return undefined; } function addStyle({ href, integrity, ...attr }) { const found = !!document.querySelector(`link[href="${href}"]`); if (found) { return; } const style = document.createElement('link'); style.setAttribute('rel', 'stylesheet'); style.setAttribute('media', 'print'); style.setAttribute('onload', 'this.media="all"'); if (integrity) { style.setAttribute('integrity', integrity); style.setAttribute('crossorigin', 'anonymous'); } style.setAttribute('href', href); _extends(style, attr); const title = document.getElementsByTagName('TITLE')[0]; document.head.insertBefore(style, title); } if (!window.Talend) { window.Talend = {}; } if (!window.Talend.getCDNUrl) { window.Talend.getCDNUrl = info => { const CDN_URL = window.Talend.CDN_URL; if (CDN_URL) { if (CDN_URL.startsWith('/')) { const baseTag = document.querySelector('base'); if (baseTag) { const root = baseTag.getAttribute('href') || ''; if (root !== '/') { return `${root}${CDN_URL}/${info.name}/${info.version}${info.path}`; } } } return `${CDN_URL}/${info.name}/${info.version}${info.path}`; } return `https://unpkg.com/${info.name}@${info.version}${info.path}`; }; } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ getURL, getUMD, getJSON, addScript, addStyle, toDefaultModule }); /******/ return __webpack_exports__; /******/ })() ; }); //# sourceMappingURL=TalendAssetsApi.js.map