@merkur/integration 0.29.3 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.cjs CHANGED
@@ -137,7 +137,7 @@ function loadStyleAssets(assets, root = document.head) {
137
137
  return Promise.all(stylesToRender.map((asset) => _loadStyle(asset, root)));
138
138
  }
139
139
 
140
- function loadScriptAssets(assets, root = document.head) {
140
+ async function loadScriptAssets(assets, root = document.head) {
141
141
  const scriptElements = root.querySelectorAll('script');
142
142
  const scriptsToRender = assets.reduce((scripts, asset) => {
143
143
  const { source } = asset;
@@ -157,9 +157,16 @@ function loadScriptAssets(assets, root = document.head) {
157
157
  }
158
158
 
159
159
  if (!_asset.source) {
160
- console.warn(
161
- `Asset '${_asset.name}' is missing ES variant and could not be loaded.`
162
- );
160
+ const message = `Asset '${_asset.name}' is missing ES variant and could not be loaded.`;
161
+
162
+ if (!_asset.optional) {
163
+ const error = new Error(message);
164
+ error.asset = _asset;
165
+
166
+ throw error;
167
+ }
168
+
169
+ console.warn(message);
163
170
  return scripts;
164
171
  }
165
172
  }
package/lib/index.es5.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,r;require("core-js/modules/es.object.define-property.js"),require("core-js/modules/es.regexp.exec.js"),require("core-js/modules/es.object.values.js"),require("core-js/modules/es.object.to-string.js"),require("core-js/modules/es.promise.js"),require("core-js/modules/es.object.keys.js"),require("core-js/modules/es.array.filter.js"),require("core-js/modules/es.array.reduce.js"),require("core-js/modules/es.array.from.js"),require("core-js/modules/es.string.iterator.js"),require("core-js/modules/es.array.iterator.js"),require("core-js/modules/web.dom-collections.iterator.js"),require("core-js/modules/es.array.map.js"),require("core-js/modules/es.object.assign.js"),require("core-js/modules/es.function.name.js"),Object.defineProperty(exports,"__esModule",{value:!0});var t={isES9Supported:function(){return void 0===e&&(e=t.test("return (() => { const o = { t: 1 }; return { ...o }; })() && (async () => ({}))()")&&!!Object.values),e},isES11Supported:function(){return void 0===r&&(r=t.test("return (() => { const o = { t: { q: true } }; return o?.t?.q && (o?.a?.q ?? true); })()")&&t.test('return typeof Promise.allSettled === "function"')&&t.test('return typeof globalThis !== "undefined"')&&t.test('return typeof 9007199254740991n === "bigint"')),r},test:function(e){try{return!!new Function(e)()}catch(e){return!1}}};function s(e,r){return new Promise((function(t,s){var o=r.querySelector("script[src='".concat(e.source,"']"));if(o)return e.test||t(),o.addEventListener("load",t),void o.addEventListener("error",e.optional?t:s);var n=document.createElement("script");if("script"===e.type){n.defer=!0,n.onload=t,n.onerror=e.optional?t:s,n.src=e.source;var u=e.attr;if(u&&Object.keys(u).length)for(var i in u){var c=u[i];"boolean"==typeof c?c?n.setAttribute(i,""):n.removeAttribute(i):n.setAttribute(i,c)}}else n.text=e.source,t();r.appendChild(n)}))}function o(e,r){return new Promise((function(t,s){if("stylesheet"===e.type){var o=document.createElement("link");o.onload=t,o.onerror=s,o.rel="stylesheet",o.href=e.source,r.appendChild(o)}else{var n=document.createElement("style");n.innerHTML=e.source,r.appendChild(n),t()}}))}function n(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.head,t=r.querySelectorAll("style"),s=e.filter((function(e){return e.source&&("stylesheet"===e.type&&!r.querySelector("link[href='".concat(e.source,"']"))||"inlineStyle"===e.type&&Array.from(t).reduce((function(r,t){return t.innerHTML!==e.source&&r}),!0))}));return Promise.all(s.map((function(e){return o(e,r)})))}function u(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.head,o=r.querySelectorAll("script"),n=e.reduce((function(e,r){var s=r.source,n=Object.assign({},r);return"script"!==n.type&&"inlineScript"!==n.type?e:s!==Object(s)||(s.es11&&t.isES11Supported()?n.source=s.es11:s.es9&&t.isES9Supported()?n.source=s.es9:n.source=s.es5,n.source)?(Array.from(o).reduce((function(e,r){return r.text===n.source||e}),!1)||n.test&&t.test(n.test)||e.push(n),e):(console.warn("Asset '".concat(n.name,"' is missing ES variant and could not be loaded.")),e)}),[]);return Promise.all(n.map((function(e){return s(e,r)})))}exports.loadAssets=function(e,r){return Promise.all([u(e,r),n(e,r)])},exports.loadScriptAssets=u,exports.loadStyleAssets=n,exports.testScript=t;
1
+ "use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */t=function(){return r};var r={},o=Object.prototype,n=o.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},s="function"==typeof Symbol?Symbol:{},u=s.iterator||"@@iterator",c=s.asyncIterator||"@@asyncIterator",a=s.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function f(e,t,r,o){var n=t&&t.prototype instanceof d?t:d,s=Object.create(n.prototype),u=new O(o||[]);return i(s,"_invoke",{value:q(e,r,u)}),s}function h(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}r.wrap=f;var p={};function d(){}function y(){}function m(){}var v={};l(v,u,(function(){return this}));var j=Object.getPrototypeOf,g=j&&j(j(_([])));g&&g!==o&&n.call(g,u)&&(v=g);var b=m.prototype=d.prototype=Object.create(v);function w(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function x(t,r){function o(i,s,u,c){var a=h(t[i],t,s);if("throw"!==a.type){var l=a.arg,f=l.value;return f&&"object"==e(f)&&n.call(f,"__await")?r.resolve(f.__await).then((function(e){o("next",e,u,c)}),(function(e){o("throw",e,u,c)})):r.resolve(f).then((function(e){l.value=e,u(l)}),(function(e){return o("throw",e,u,c)}))}c(a.arg)}var s;i(this,"_invoke",{value:function(e,t){function n(){return new r((function(r,n){o(e,t,r,n)}))}return s=s?s.then(n,n):n()}})}function q(e,t,r){var o="suspendedStart";return function(n,i){if("executing"===o)throw new Error("Generator is already running");if("completed"===o){if("throw"===n)throw i;return P()}for(r.method=n,r.arg=i;;){var s=r.delegate;if(s){var u=E(s,r);if(u){if(u===p)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===o)throw o="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o="executing";var c=h(e,t,r);if("normal"===c.type){if(o=r.done?"completed":"suspendedYield",c.arg===p)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o="completed",r.method="throw",r.arg=c.arg)}}}function E(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method))return p;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var o=h(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,p;var n=o.arg;return n?n.done?(t[e.resultName]=n.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):n:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function S(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function _(e){if(e){var t=e[u];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:P}}function P(){return{value:void 0,done:!0}}return y.prototype=m,i(b,"constructor",{value:m,configurable:!0}),i(m,"constructor",{value:y,configurable:!0}),y.displayName=l(m,a,"GeneratorFunction"),r.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},r.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,l(e,a,"GeneratorFunction")),e.prototype=Object.create(b),e},r.awrap=function(e){return{__await:e}},w(x.prototype),l(x.prototype,c,(function(){return this})),r.AsyncIterator=x,r.async=function(e,t,o,n,i){void 0===i&&(i=Promise);var s=new x(f(e,t,o,n),i);return r.isGeneratorFunction(t)?s:s.next().then((function(e){return e.done?e.value:s.next()}))},w(b),l(b,a,"Generator"),l(b,u,(function(){return this})),l(b,"toString",(function(){return"[object Generator]"})),r.keys=function(e){var t=Object(e),r=[];for(var o in t)r.push(o);return r.reverse(),function e(){for(;r.length;){var o=r.pop();if(o in t)return e.value=o,e.done=!1,e}return e.done=!0,e}},r.values=_,O.prototype={constructor:O,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(S),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,o){return s.type="throw",s.arg=e,t.next=r,o&&(t.method="next",t.arg=void 0),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var s=i?i.completion:{};return s.type=e,s.arg=t,i?(this.method="next",this.next=i.finallyLoc,p):this.complete(s)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),S(r),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var o=r.completion;if("throw"===o.type){var n=o.arg;S(r)}return n}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:_(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},r}function r(e,t,r,o,n,i,s){try{var u=e[i](s),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(o,n)}function o(e){return function(){var t=this,o=arguments;return new Promise((function(n,i){var s=e.apply(t,o);function u(e){r(s,n,i,u,c,"next",e)}function c(e){r(s,n,i,u,c,"throw",e)}u(void 0)}))}}var n,i;require("core-js/modules/es.object.define-property.js"),require("core-js/modules/es.regexp.exec.js"),require("core-js/modules/es.object.values.js"),require("core-js/modules/es.object.to-string.js"),require("core-js/modules/es.promise.js"),require("core-js/modules/es.object.keys.js"),require("core-js/modules/es.array.filter.js"),require("core-js/modules/es.array.reduce.js"),require("core-js/modules/es.array.from.js"),require("core-js/modules/es.string.iterator.js"),require("core-js/modules/es.array.iterator.js"),require("core-js/modules/web.dom-collections.iterator.js"),require("core-js/modules/es.array.map.js"),require("core-js/modules/es.object.assign.js"),require("core-js/modules/es.function.name.js"),require("core-js/modules/es.symbol.js"),require("core-js/modules/es.symbol.description.js"),require("core-js/modules/es.symbol.iterator.js"),require("core-js/modules/es.symbol.async-iterator.js"),require("core-js/modules/es.symbol.to-string-tag.js"),require("core-js/modules/es.json.to-string-tag.js"),require("core-js/modules/es.math.to-string-tag.js"),require("core-js/modules/es.object.create.js"),require("core-js/modules/es.object.get-prototype-of.js"),require("core-js/modules/es.array.for-each.js"),require("core-js/modules/web.dom-collections.for-each.js"),require("core-js/modules/es.object.set-prototype-of.js"),require("core-js/modules/es.array.reverse.js"),require("core-js/modules/es.array.slice.js"),Object.defineProperty(exports,"__esModule",{value:!0});var s={isES9Supported:function(){return void 0===n&&(n=s.test("return (() => { const o = { t: 1 }; return { ...o }; })() && (async () => ({}))()")&&!!Object.values),n},isES11Supported:function(){return void 0===i&&(i=s.test("return (() => { const o = { t: { q: true } }; return o?.t?.q && (o?.a?.q ?? true); })()")&&s.test('return typeof Promise.allSettled === "function"')&&s.test('return typeof globalThis !== "undefined"')&&s.test('return typeof 9007199254740991n === "bigint"')),i},test:function(e){try{return!!new Function(e)()}catch(e){return!1}}};function u(e,t){return new Promise((function(r,o){var n=t.querySelector("script[src='".concat(e.source,"']"));if(n)return e.test||r(),n.addEventListener("load",r),void n.addEventListener("error",e.optional?r:o);var i=document.createElement("script");if("script"===e.type){i.defer=!0,i.onload=r,i.onerror=e.optional?r:o,i.src=e.source;var s=e.attr;if(s&&Object.keys(s).length)for(var u in s){var c=s[u];"boolean"==typeof c?c?i.setAttribute(u,""):i.removeAttribute(u):i.setAttribute(u,c)}}else i.text=e.source,r();t.appendChild(i)}))}function c(e,t){return new Promise((function(r,o){if("stylesheet"===e.type){var n=document.createElement("link");n.onload=r,n.onerror=o,n.rel="stylesheet",n.href=e.source,t.appendChild(n)}else{var i=document.createElement("style");i.innerHTML=e.source,t.appendChild(i),r()}}))}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.head,r=t.querySelectorAll("style"),o=e.filter((function(e){return e.source&&("stylesheet"===e.type&&!t.querySelector("link[href='".concat(e.source,"']"))||"inlineStyle"===e.type&&Array.from(r).reduce((function(t,r){return r.innerHTML!==e.source&&t}),!0))}));return Promise.all(o.map((function(e){return c(e,t)})))}function l(e){return f.apply(this,arguments)}function f(){return f=o(t().mark((function e(r){var o,n,i,c=arguments;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=c.length>1&&void 0!==c[1]?c[1]:document.head,n=o.querySelectorAll("script"),i=r.reduce((function(e,t){var r=t.source,o=Object.assign({},t);if("script"!==o.type&&"inlineScript"!==o.type)return e;if(r===Object(r)&&(r.es11&&s.isES11Supported()?o.source=r.es11:r.es9&&s.isES9Supported()?o.source=r.es9:o.source=r.es5,!o.source)){var i="Asset '".concat(o.name,"' is missing ES variant and could not be loaded.");if(!o.optional){var u=new Error(i);throw u.asset=o,u}return console.warn(i),e}return Array.from(n).reduce((function(e,t){return t.text===o.source||e}),!1)||o.test&&s.test(o.test)||e.push(o),e}),[]),e.abrupt("return",Promise.all(i.map((function(e){return u(e,o)}))));case 4:case"end":return e.stop()}}),e)}))),f.apply(this,arguments)}exports.loadAssets=function(e,t){return Promise.all([l(e,t),a(e,t)])},exports.loadScriptAssets=l,exports.loadStyleAssets=a,exports.testScript=s;
package/lib/index.es9.cjs CHANGED
@@ -3,27 +3,20 @@
3
3
  Object.defineProperty(exports, '__esModule', {
4
4
  value: true
5
5
  });
6
-
7
6
  let _isES9Supported;
8
-
9
7
  let _isES11Supported;
10
-
11
8
  function isES9Supported() {
12
9
  if (_isES9Supported === undefined) {
13
10
  _isES9Supported = exported.test('return (() => { const o = { t: 1 }; return { ...o }; })() && (async () => ({}))()') && !!Object.values;
14
11
  }
15
-
16
12
  return _isES9Supported;
17
13
  }
18
-
19
14
  function isES11Supported() {
20
15
  if (_isES11Supported === undefined) {
21
16
  _isES11Supported = exported.test('return (() => { const o = { t: { q: true } }; return o?.t?.q && (o?.a?.q ?? true); })()') && exported.test('return typeof Promise.allSettled === "function"') && exported.test('return typeof globalThis !== "undefined"') && exported.test('return typeof 9007199254740991n === "bigint"');
22
17
  }
23
-
24
18
  return _isES11Supported;
25
19
  }
26
-
27
20
  function test(snippet) {
28
21
  try {
29
22
  const fn = new Function(snippet);
@@ -33,29 +26,23 @@ function test(snippet) {
33
26
  return false;
34
27
  }
35
28
  }
36
-
37
29
  const exported = {
38
30
  isES9Supported,
39
31
  isES11Supported,
40
32
  test
41
33
  };
42
-
43
34
  function _loadScript(asset, root) {
44
35
  return new Promise((resolve, reject) => {
45
36
  const scriptElement = root.querySelector(`script[src='${asset.source}']`);
46
-
47
37
  if (scriptElement) {
48
38
  if (!asset.test) {
49
39
  resolve();
50
40
  }
51
-
52
41
  scriptElement.addEventListener('load', resolve);
53
42
  scriptElement.addEventListener('error', asset.optional ? resolve : reject);
54
43
  return;
55
44
  }
56
-
57
45
  const script = document.createElement('script');
58
-
59
46
  if (asset.type === 'script') {
60
47
  script.defer = true;
61
48
  script.onload = resolve;
@@ -64,11 +51,9 @@ function _loadScript(asset, root) {
64
51
  const {
65
52
  attr
66
53
  } = asset;
67
-
68
54
  if (attr && Object.keys(attr).length) {
69
55
  for (const name in attr) {
70
56
  const value = attr[name];
71
-
72
57
  if (typeof value === 'boolean') {
73
58
  if (value) {
74
59
  script.setAttribute(name, '');
@@ -84,11 +69,9 @@ function _loadScript(asset, root) {
84
69
  script.text = asset.source;
85
70
  resolve();
86
71
  }
87
-
88
72
  root.appendChild(script);
89
73
  });
90
74
  }
91
-
92
75
  function _loadStyle(asset, root) {
93
76
  return new Promise((resolve, reject) => {
94
77
  if (asset.type === 'stylesheet') {
@@ -106,32 +89,26 @@ function _loadStyle(asset, root) {
106
89
  }
107
90
  });
108
91
  }
109
-
110
92
  function loadStyleAssets(assets, root = document.head) {
111
93
  const styleElements = root.querySelectorAll('style');
112
94
  const stylesToRender = assets.filter(asset => asset.source && (asset.type === 'stylesheet' && !root.querySelector(`link[href='${asset.source}']`) || asset.type === 'inlineStyle' && Array.from(styleElements).reduce((acc, cur) => {
113
95
  if (cur.innerHTML === asset.source) {
114
96
  return false;
115
97
  }
116
-
117
98
  return acc;
118
99
  }, true)));
119
100
  return Promise.all(stylesToRender.map(asset => _loadStyle(asset, root)));
120
101
  }
121
-
122
- function loadScriptAssets(assets, root = document.head) {
102
+ async function loadScriptAssets(assets, root = document.head) {
123
103
  const scriptElements = root.querySelectorAll('script');
124
104
  const scriptsToRender = assets.reduce((scripts, asset) => {
125
105
  const {
126
106
  source
127
107
  } = asset;
128
-
129
108
  const _asset = Object.assign({}, asset);
130
-
131
109
  if (_asset.type !== 'script' && _asset.type !== 'inlineScript') {
132
110
  return scripts;
133
111
  }
134
-
135
112
  if (source === Object(source)) {
136
113
  if (source.es11 && exported.isES11Supported()) {
137
114
  _asset.source = source.es11;
@@ -140,33 +117,33 @@ function loadScriptAssets(assets, root = document.head) {
140
117
  } else {
141
118
  _asset.source = source.es5;
142
119
  }
143
-
144
120
  if (!_asset.source) {
145
- console.warn(`Asset '${_asset.name}' is missing ES variant and could not be loaded.`);
121
+ const message = `Asset '${_asset.name}' is missing ES variant and could not be loaded.`;
122
+ if (!_asset.optional) {
123
+ const error = new Error(message);
124
+ error.asset = _asset;
125
+ throw error;
126
+ }
127
+ console.warn(message);
146
128
  return scripts;
147
129
  }
148
130
  }
149
-
150
131
  if (Array.from(scriptElements).reduce((acc, cur) => {
151
132
  if (cur.text === _asset.source) {
152
133
  return true;
153
134
  }
154
-
155
135
  return acc;
156
136
  }, false) || (_asset.test ? exported.test(_asset.test) : false)) {
157
137
  return scripts;
158
138
  }
159
-
160
139
  scripts.push(_asset);
161
140
  return scripts;
162
141
  }, []);
163
142
  return Promise.all(scriptsToRender.map(asset => _loadScript(asset, root)));
164
143
  }
165
-
166
144
  function loadAssets(assets, root) {
167
145
  return Promise.all([loadScriptAssets(assets, root), loadStyleAssets(assets, root)]);
168
146
  }
169
-
170
147
  exports.loadAssets = loadAssets;
171
148
  exports.loadScriptAssets = loadScriptAssets;
172
149
  exports.loadStyleAssets = loadStyleAssets;
package/lib/index.es9.mjs CHANGED
@@ -1,23 +1,17 @@
1
1
  let _isES9Supported;
2
-
3
2
  let _isES11Supported;
4
-
5
3
  function isES9Supported() {
6
4
  if (_isES9Supported === undefined) {
7
5
  _isES9Supported = exported.test('return (() => { const o = { t: 1 }; return { ...o }; })() && (async () => ({}))()') && !!Object.values;
8
6
  }
9
-
10
7
  return _isES9Supported;
11
8
  }
12
-
13
9
  function isES11Supported() {
14
10
  if (_isES11Supported === undefined) {
15
11
  _isES11Supported = exported.test('return (() => { const o = { t: { q: true } }; return o?.t?.q && (o?.a?.q ?? true); })()') && exported.test('return typeof Promise.allSettled === "function"') && exported.test('return typeof globalThis !== "undefined"') && exported.test('return typeof 9007199254740991n === "bigint"');
16
12
  }
17
-
18
13
  return _isES11Supported;
19
14
  }
20
-
21
15
  function test(snippet) {
22
16
  try {
23
17
  const fn = new Function(snippet);
@@ -27,29 +21,23 @@ function test(snippet) {
27
21
  return false;
28
22
  }
29
23
  }
30
-
31
24
  const exported = {
32
25
  isES9Supported,
33
26
  isES11Supported,
34
27
  test
35
28
  };
36
-
37
29
  function _loadScript(asset, root) {
38
30
  return new Promise((resolve, reject) => {
39
31
  const scriptElement = root.querySelector(`script[src='${asset.source}']`);
40
-
41
32
  if (scriptElement) {
42
33
  if (!asset.test) {
43
34
  resolve();
44
35
  }
45
-
46
36
  scriptElement.addEventListener('load', resolve);
47
37
  scriptElement.addEventListener('error', asset.optional ? resolve : reject);
48
38
  return;
49
39
  }
50
-
51
40
  const script = document.createElement('script');
52
-
53
41
  if (asset.type === 'script') {
54
42
  script.defer = true;
55
43
  script.onload = resolve;
@@ -58,11 +46,9 @@ function _loadScript(asset, root) {
58
46
  const {
59
47
  attr
60
48
  } = asset;
61
-
62
49
  if (attr && Object.keys(attr).length) {
63
50
  for (const name in attr) {
64
51
  const value = attr[name];
65
-
66
52
  if (typeof value === 'boolean') {
67
53
  if (value) {
68
54
  script.setAttribute(name, '');
@@ -78,11 +64,9 @@ function _loadScript(asset, root) {
78
64
  script.text = asset.source;
79
65
  resolve();
80
66
  }
81
-
82
67
  root.appendChild(script);
83
68
  });
84
69
  }
85
-
86
70
  function _loadStyle(asset, root) {
87
71
  return new Promise((resolve, reject) => {
88
72
  if (asset.type === 'stylesheet') {
@@ -100,32 +84,26 @@ function _loadStyle(asset, root) {
100
84
  }
101
85
  });
102
86
  }
103
-
104
87
  function loadStyleAssets(assets, root = document.head) {
105
88
  const styleElements = root.querySelectorAll('style');
106
89
  const stylesToRender = assets.filter(asset => asset.source && (asset.type === 'stylesheet' && !root.querySelector(`link[href='${asset.source}']`) || asset.type === 'inlineStyle' && Array.from(styleElements).reduce((acc, cur) => {
107
90
  if (cur.innerHTML === asset.source) {
108
91
  return false;
109
92
  }
110
-
111
93
  return acc;
112
94
  }, true)));
113
95
  return Promise.all(stylesToRender.map(asset => _loadStyle(asset, root)));
114
96
  }
115
-
116
- function loadScriptAssets(assets, root = document.head) {
97
+ async function loadScriptAssets(assets, root = document.head) {
117
98
  const scriptElements = root.querySelectorAll('script');
118
99
  const scriptsToRender = assets.reduce((scripts, asset) => {
119
100
  const {
120
101
  source
121
102
  } = asset;
122
-
123
103
  const _asset = Object.assign({}, asset);
124
-
125
104
  if (_asset.type !== 'script' && _asset.type !== 'inlineScript') {
126
105
  return scripts;
127
106
  }
128
-
129
107
  if (source === Object(source)) {
130
108
  if (source.es11 && exported.isES11Supported()) {
131
109
  _asset.source = source.es11;
@@ -134,31 +112,31 @@ function loadScriptAssets(assets, root = document.head) {
134
112
  } else {
135
113
  _asset.source = source.es5;
136
114
  }
137
-
138
115
  if (!_asset.source) {
139
- console.warn(`Asset '${_asset.name}' is missing ES variant and could not be loaded.`);
116
+ const message = `Asset '${_asset.name}' is missing ES variant and could not be loaded.`;
117
+ if (!_asset.optional) {
118
+ const error = new Error(message);
119
+ error.asset = _asset;
120
+ throw error;
121
+ }
122
+ console.warn(message);
140
123
  return scripts;
141
124
  }
142
125
  }
143
-
144
126
  if (Array.from(scriptElements).reduce((acc, cur) => {
145
127
  if (cur.text === _asset.source) {
146
128
  return true;
147
129
  }
148
-
149
130
  return acc;
150
131
  }, false) || (_asset.test ? exported.test(_asset.test) : false)) {
151
132
  return scripts;
152
133
  }
153
-
154
134
  scripts.push(_asset);
155
135
  return scripts;
156
136
  }, []);
157
137
  return Promise.all(scriptsToRender.map(asset => _loadScript(asset, root)));
158
138
  }
159
-
160
139
  function loadAssets(assets, root) {
161
140
  return Promise.all([loadScriptAssets(assets, root), loadStyleAssets(assets, root)]);
162
141
  }
163
-
164
142
  export { loadAssets, loadScriptAssets, loadStyleAssets, exported as testScript };
package/lib/index.js CHANGED
@@ -137,7 +137,7 @@ function loadStyleAssets(assets, root = document.head) {
137
137
  return Promise.all(stylesToRender.map((asset) => _loadStyle(asset, root)));
138
138
  }
139
139
 
140
- function loadScriptAssets(assets, root = document.head) {
140
+ async function loadScriptAssets(assets, root = document.head) {
141
141
  const scriptElements = root.querySelectorAll('script');
142
142
  const scriptsToRender = assets.reduce((scripts, asset) => {
143
143
  const { source } = asset;
@@ -157,9 +157,16 @@ function loadScriptAssets(assets, root = document.head) {
157
157
  }
158
158
 
159
159
  if (!_asset.source) {
160
- console.warn(
161
- `Asset '${_asset.name}' is missing ES variant and could not be loaded.`
162
- );
160
+ const message = `Asset '${_asset.name}' is missing ES variant and could not be loaded.`;
161
+
162
+ if (!_asset.optional) {
163
+ const error = new Error(message);
164
+ error.asset = _asset;
165
+
166
+ throw error;
167
+ }
168
+
169
+ console.warn(message);
163
170
  return scripts;
164
171
  }
165
172
  }
package/lib/index.mjs CHANGED
@@ -133,7 +133,7 @@ function loadStyleAssets(assets, root = document.head) {
133
133
  return Promise.all(stylesToRender.map((asset) => _loadStyle(asset, root)));
134
134
  }
135
135
 
136
- function loadScriptAssets(assets, root = document.head) {
136
+ async function loadScriptAssets(assets, root = document.head) {
137
137
  const scriptElements = root.querySelectorAll('script');
138
138
  const scriptsToRender = assets.reduce((scripts, asset) => {
139
139
  const { source } = asset;
@@ -153,9 +153,16 @@ function loadScriptAssets(assets, root = document.head) {
153
153
  }
154
154
 
155
155
  if (!_asset.source) {
156
- console.warn(
157
- `Asset '${_asset.name}' is missing ES variant and could not be loaded.`
158
- );
156
+ const message = `Asset '${_asset.name}' is missing ES variant and could not be loaded.`;
157
+
158
+ if (!_asset.optional) {
159
+ const error = new Error(message);
160
+ error.asset = _asset;
161
+
162
+ throw error;
163
+ }
164
+
165
+ console.warn(message);
159
166
  return scripts;
160
167
  }
161
168
  }
package/lib/index.umd.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){if("function"==typeof define&&define.amd)define("@merkur/integration",["exports"],t);else if("undefined"!=typeof exports)t(exports);else{var r={exports:{}};t(r.exports),e.Merkur=e.Merkur||{},e.Merkur.Integration=r.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e){var t,r;Object.defineProperty(e,"__esModule",{value:!0}),e.loadAssets=function(e,t){return Promise.all([u(e,t),i(e,t)])},e.loadScriptAssets=u,e.loadStyleAssets=i,e.testScript=void 0;var n={isES9Supported:function(){return void 0===t&&(t=n.test("return (() => { const o = { t: 1 }; return { ...o }; })() && (async () => ({}))()")&&!!Object.values),t},isES11Supported:function(){return void 0===r&&(r=n.test("return (() => { const o = { t: { q: true } }; return o?.t?.q && (o?.a?.q ?? true); })()")&&n.test('return typeof Promise.allSettled === "function"')&&n.test('return typeof globalThis !== "undefined"')&&n.test('return typeof 9007199254740991n === "bigint"')),r},test:function(e){try{return!!new Function(e)()}catch(e){return!1}}};function o(e,t){return new Promise((function(r,n){var o=t.querySelector("script[src='".concat(e.source,"']"));if(o)return e.test||r(),o.addEventListener("load",r),void o.addEventListener("error",e.optional?r:n);var s=document.createElement("script");if("script"===e.type){s.defer=!0,s.onload=r,s.onerror=e.optional?r:n,s.src=e.source;var i=e.attr;if(i&&Object.keys(i).length)for(var u in i){var c=i[u];"boolean"==typeof c?c?s.setAttribute(u,""):s.removeAttribute(u):s.setAttribute(u,c)}}else s.text=e.source,r();t.appendChild(s)}))}function s(e,t){return new Promise((function(r,n){if("stylesheet"===e.type){var o=document.createElement("link");o.onload=r,o.onerror=n,o.rel="stylesheet",o.href=e.source,t.appendChild(o)}else{var s=document.createElement("style");s.innerHTML=e.source,t.appendChild(s),r()}}))}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.head,r=t.querySelectorAll("style"),n=e.filter((function(e){return e.source&&("stylesheet"===e.type&&!t.querySelector("link[href='".concat(e.source,"']"))||"inlineStyle"===e.type&&Array.from(r).reduce((function(t,r){return r.innerHTML!==e.source&&t}),!0))}));return Promise.all(n.map((function(e){return s(e,t)})))}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.head,r=t.querySelectorAll("script"),s=e.reduce((function(e,t){var o=t.source,s=Object.assign({},t);return"script"!==s.type&&"inlineScript"!==s.type?e:o!==Object(o)||(o.es11&&n.isES11Supported()?s.source=o.es11:o.es9&&n.isES9Supported()?s.source=o.es9:s.source=o.es5,s.source)?(Array.from(r).reduce((function(e,t){return t.text===s.source||e}),!1)||s.test&&n.test(s.test)||e.push(s),e):(console.warn("Asset '".concat(s.name,"' is missing ES variant and could not be loaded.")),e)}),[]);return Promise.all(s.map((function(e){return o(e,t)})))}e.testScript=n}));
1
+ !function(e,t){if("function"==typeof define&&define.amd)define("@merkur/integration",["exports"],t);else if("undefined"!=typeof exports)t(exports);else{var r={exports:{}};t(r.exports),e.Merkur=e.Merkur||{},e.Merkur.Integration=r.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e){function t(e,t,r,n,o,i,s){try{var u=e[i](s),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,o)}function r(e){return function(){var r=this,n=arguments;return new Promise((function(o,i){var s=e.apply(r,n);function u(e){t(s,o,i,u,c,"next",e)}function c(e){t(s,o,i,u,c,"throw",e)}u(void 0)}))}}var n,o;Object.defineProperty(e,"__esModule",{value:!0}),e.loadAssets=function(e,t){return Promise.all([a(e,t),c(e,t)])},e.loadScriptAssets=a,e.loadStyleAssets=c,e.testScript=void 0;var i={isES9Supported:function(){return void 0===n&&(n=i.test("return (() => { const o = { t: 1 }; return { ...o }; })() && (async () => ({}))()")&&!!Object.values),n},isES11Supported:function(){return void 0===o&&(o=i.test("return (() => { const o = { t: { q: true } }; return o?.t?.q && (o?.a?.q ?? true); })()")&&i.test('return typeof Promise.allSettled === "function"')&&i.test('return typeof globalThis !== "undefined"')&&i.test('return typeof 9007199254740991n === "bigint"')),o},test:function(e){try{return!!new Function(e)()}catch(e){return!1}}};function s(e,t){return new Promise((function(r,n){var o=t.querySelector("script[src='".concat(e.source,"']"));if(o)return e.test||r(),o.addEventListener("load",r),void o.addEventListener("error",e.optional?r:n);var i=document.createElement("script");if("script"===e.type){i.defer=!0,i.onload=r,i.onerror=e.optional?r:n,i.src=e.source;var s=e.attr;if(s&&Object.keys(s).length)for(var u in s){var c=s[u];"boolean"==typeof c?c?i.setAttribute(u,""):i.removeAttribute(u):i.setAttribute(u,c)}}else i.text=e.source,r();t.appendChild(i)}))}function u(e,t){return new Promise((function(r,n){if("stylesheet"===e.type){var o=document.createElement("link");o.onload=r,o.onerror=n,o.rel="stylesheet",o.href=e.source,t.appendChild(o)}else{var i=document.createElement("style");i.innerHTML=e.source,t.appendChild(i),r()}}))}function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.head,r=t.querySelectorAll("style"),n=e.filter((function(e){return e.source&&("stylesheet"===e.type&&!t.querySelector("link[href='".concat(e.source,"']"))||"inlineStyle"===e.type&&Array.from(r).reduce((function(t,r){return r.innerHTML!==e.source&&t}),!0))}));return Promise.all(n.map((function(e){return u(e,t)})))}function a(e){return l.apply(this,arguments)}function l(){return l=r((function*(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.head,r=t.querySelectorAll("script"),n=e.reduce((function(e,t){var n=t.source,o=Object.assign({},t);if("script"!==o.type&&"inlineScript"!==o.type)return e;if(n===Object(n)&&(n.es11&&i.isES11Supported()?o.source=n.es11:n.es9&&i.isES9Supported()?o.source=n.es9:o.source=n.es5,!o.source)){var s="Asset '".concat(o.name,"' is missing ES variant and could not be loaded.");if(!o.optional){var u=new Error(s);throw u.asset=o,u}return console.warn(s),e}return Array.from(r).reduce((function(e,t){return t.text===o.source||e}),!1)||o.test&&i.test(o.test)||e.push(o),e}),[]);return Promise.all(n.map((function(e){return s(e,t)})))})),l.apply(this,arguments)}e.testScript=i}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@merkur/integration",
3
- "version": "0.29.3",
3
+ "version": "0.31.0",
4
4
  "description": "Merkur module for easy integration with other apps.",
5
5
  "main": "lib/index",
6
6
  "module": "lib/index",
@@ -49,11 +49,11 @@
49
49
  },
50
50
  "homepage": "https://merkur.js.org/",
51
51
  "devDependencies": {
52
- "@merkur/core": "^0.29.3",
52
+ "@merkur/core": "^0.31.0",
53
53
  "rollup": "^2.70.2"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "@merkur/core": "*"
57
57
  },
58
- "gitHead": "fedf28cbd8039902181fb996c4b072942c2dabf9"
58
+ "gitHead": "ef1b38f23e43e2fd7ef6a2bec680fb40a2de3715"
59
59
  }