@merkur/integration 0.37.0 → 0.37.11

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.mjs CHANGED
@@ -55,162 +55,351 @@ const exported = {
55
55
  test,
56
56
  };
57
57
 
58
- function _loadScript(asset, root) {
59
- return new Promise((resolve, reject) => {
60
- const scriptElement = root.querySelector(`script[src='${asset.source}']`);
58
+ const isLoadedSymbol = Symbol.for('isLoaded');
59
+ const loadingPromiseSymbol = Symbol.for('loadingPromise');
60
+
61
+ function _attachElementToAsset(asset, element) {
62
+ return {
63
+ ...asset,
64
+ element,
65
+ };
66
+ }
61
67
 
62
- if (scriptElement) {
63
- if (!asset.test || exported.test(asset.test)) {
64
- resolve();
65
- }
68
+ function _handleAssetError({
69
+ asset,
70
+ message = `Error loading asset ${asset.source}.`,
71
+ }) {
72
+ if (asset.optional) {
73
+ console.warn(message);
74
+
75
+ return _attachElementToAsset(asset, null);
76
+ }
77
+
78
+ const error = new Error(message);
79
+ error.asset = asset;
80
+
81
+ throw error;
82
+ }
66
83
 
67
- scriptElement.addEventListener('load', resolve);
68
- scriptElement.addEventListener(
69
- 'error',
70
- asset.optional ? resolve : reject,
71
- );
72
- return;
84
+ function _addListenersToAssetElement(asset, element, resolve, reject) {
85
+ element.addEventListener('load', () => {
86
+ resolve(_attachElementToAsset(asset, element));
87
+ element[isLoadedSymbol] = true;
88
+ delete element[loadingPromiseSymbol];
89
+ });
90
+ element.addEventListener('error', () => {
91
+ if (element.parentNode) {
92
+ element.remove();
73
93
  }
74
94
 
75
- const script = document.createElement('script');
95
+ try {
96
+ resolve(_handleAssetError({ asset }));
97
+ } catch (error) {
98
+ reject(error);
99
+ }
100
+ });
101
+ }
76
102
 
77
- if (asset.type === 'script') {
78
- script.defer = true;
79
- script.onload = resolve;
80
- script.onerror = (error) => {
81
- script.remove();
103
+ function _loadStyle(asset, root) {
104
+ if (asset.type === 'inlineStyle') {
105
+ const style = document.createElement('style');
106
+ style.innerHTML = asset.source;
107
+ root.appendChild(style);
108
+
109
+ return _attachElementToAsset(asset, style);
110
+ }
111
+
112
+ const link = document.createElement('link');
113
+
114
+ link[loadingPromiseSymbol] = new Promise((resolve, reject) => {
115
+ _addListenersToAssetElement(asset, link, resolve, reject);
116
+ link.rel = 'stylesheet';
117
+ link.href = asset.source;
118
+
119
+ root.appendChild(link);
120
+ });
121
+
122
+ return link[loadingPromiseSymbol];
123
+ }
124
+
125
+ async function loadStyleAssets(assets, root = document.head) {
126
+ const styleElements = Array.from(root.querySelectorAll('style'));
127
+
128
+ return Promise.all(
129
+ assets.map((asset) => {
130
+ if (
131
+ !['stylesheet', 'inlineStyle'].includes(asset.type) ||
132
+ !asset.source
133
+ ) {
134
+ return _attachElementToAsset(asset, null);
135
+ }
136
+
137
+ if (asset.type === 'stylesheet') {
138
+ const link = root.querySelector(`link[href='${asset.source}']`);
139
+
140
+ if (link) {
141
+ if (link[loadingPromiseSymbol]) {
142
+ return link[loadingPromiseSymbol];
143
+ }
82
144
 
83
- asset.optional ? resolve(error) : reject(error);
84
- };
85
- script.src = asset.source;
86
-
87
- const { attr } = asset;
88
- if (attr && Object.keys(attr).length) {
89
- for (const name in attr) {
90
- const value = attr[name];
91
-
92
- if (typeof value === 'boolean') {
93
- if (value) {
94
- script.setAttribute(name, '');
95
- } else {
96
- script.removeAttribute(name);
97
- }
145
+ return _attachElementToAsset(asset, link);
146
+ }
147
+ }
148
+
149
+ if (asset.type === 'inlineStyle') {
150
+ const inlineStyle = styleElements.find(
151
+ (element) => element.innerHTML === asset.source,
152
+ );
153
+
154
+ if (inlineStyle) {
155
+ return _attachElementToAsset(asset, inlineStyle);
156
+ }
157
+ }
158
+
159
+ return _loadStyle(asset, root);
160
+ }),
161
+ );
162
+ }
163
+
164
+ function _findScriptElement(scriptElements, asset) {
165
+ if (asset.type === 'json') {
166
+ return scriptElements.find(
167
+ (element) => element.dataset.src === asset.source,
168
+ );
169
+ }
170
+
171
+ if (!['script', 'inlineScript', 'inlineJson'].includes(asset.type)) {
172
+ return null;
173
+ }
174
+
175
+ const attributeKey = asset.type === 'script' ? 'src' : 'textContent';
176
+ const source =
177
+ asset.type === 'inlineJson' ? JSON.stringify(asset.source) : asset.source;
178
+
179
+ return (
180
+ scriptElements.find((element) => element[attributeKey] === source) || null
181
+ );
182
+ }
183
+
184
+ function _loadScript(asset, root) {
185
+ const script = document.createElement('script');
186
+
187
+ if (asset.type === 'inlineScript') {
188
+ script.textContent = asset.source;
189
+ root.appendChild(script);
190
+
191
+ return _attachElementToAsset(asset, script);
192
+ }
193
+
194
+ script[loadingPromiseSymbol] = new Promise((resolve, reject) => {
195
+ script.defer = true;
196
+ _addListenersToAssetElement(asset, script, resolve, reject);
197
+ script.src = asset.source;
198
+
199
+ const { attr } = asset;
200
+ if (attr && Object.keys(attr).length) {
201
+ for (const name in attr) {
202
+ const value = attr[name];
203
+
204
+ if (typeof value === 'boolean') {
205
+ if (value) {
206
+ script.setAttribute(name, '');
98
207
  } else {
99
- script.setAttribute(name, value);
208
+ script.removeAttribute(name);
100
209
  }
210
+ } else {
211
+ script.setAttribute(name, value);
101
212
  }
102
213
  }
103
- } else {
104
- script.text = asset.source;
105
- resolve();
106
214
  }
107
215
 
108
216
  root.appendChild(script);
109
217
  });
110
- }
111
218
 
112
- function _loadStyle(asset, root) {
113
- return new Promise((resolve, reject) => {
114
- if (asset.type === 'stylesheet') {
115
- const link = document.createElement('link');
116
- link.onload = resolve;
117
- link.onerror = reject;
118
- link.rel = 'stylesheet';
119
- link.href = asset.source;
120
-
121
- root.appendChild(link);
122
- } else {
123
- const style = document.createElement('style');
124
- style.innerHTML = asset.source;
125
-
126
- root.appendChild(style);
127
- resolve();
128
- }
129
- });
219
+ return script[loadingPromiseSymbol];
130
220
  }
131
221
 
132
- function loadStyleAssets(assets, root = document.head) {
133
- const styleElements = root.querySelectorAll('style');
134
- const stylesToRender = assets.filter(
135
- (asset) =>
136
- asset.source &&
137
- ((asset.type === 'stylesheet' &&
138
- !root.querySelector(`link[href='${asset.source}']`)) ||
139
- (asset.type === 'inlineStyle' &&
140
- Array.from(styleElements).reduce((acc, cur) => {
141
- if (cur.innerHTML === asset.source) {
142
- return false;
143
- }
144
-
145
- return acc;
146
- }, true))),
147
- );
222
+ async function loadScriptAssets(assets, root = document.head) {
223
+ const scriptElements = Array.from(root.querySelectorAll('script'));
224
+
225
+ return Promise.all(
226
+ assets.map((asset) => {
227
+ if (!['script', 'inlineScript'].includes(asset.type) || !asset.source) {
228
+ return _attachElementToAsset(asset, null);
229
+ }
230
+
231
+ const { source } = asset;
232
+ const _asset = Object.assign({}, asset);
233
+
234
+ if (source === Object(source)) {
235
+ if (source.es13 && exported.isES13Supported()) {
236
+ _asset.source = source.es13;
237
+ } else if (source.es11 && exported.isES11Supported()) {
238
+ _asset.source = source.es11;
239
+ } else if (source.es9 && exported.isES9Supported()) {
240
+ _asset.source = source.es9;
241
+ } else {
242
+ _asset.source = null;
243
+ }
244
+
245
+ if (!_asset.source) {
246
+ return _handleAssetError({
247
+ asset: _asset,
248
+ message: `Asset '${_asset.name}' is missing ES variant and could not be loaded.`,
249
+ });
250
+ }
251
+ }
252
+
253
+ if (_asset.test && exported.test(_asset.test)) {
254
+ return _attachElementToAsset(
255
+ _asset,
256
+ _findScriptElement(scriptElements, _asset),
257
+ );
258
+ }
148
259
 
149
- return Promise.all(stylesToRender.map((asset) => _loadStyle(asset, root)));
260
+ const script = _findScriptElement(scriptElements, _asset);
261
+
262
+ if (script && _asset.type === 'script') {
263
+ if (script[loadingPromiseSymbol]) {
264
+ return script[loadingPromiseSymbol];
265
+ }
266
+
267
+ if (script[isLoadedSymbol]) {
268
+ return _attachElementToAsset(_asset, script);
269
+ }
270
+
271
+ return new Promise((resolve, reject) =>
272
+ _addListenersToAssetElement(_asset, script, resolve, reject),
273
+ );
274
+ } else if (script && _asset.type === 'inlineScript') {
275
+ return _attachElementToAsset(_asset, script);
276
+ }
277
+
278
+ return _loadScript(_asset, root);
279
+ }),
280
+ );
150
281
  }
151
282
 
152
- async function loadScriptAssets(assets, root = document.head) {
153
- const scriptElements = root.querySelectorAll('script');
154
- const scriptsToRender = assets.reduce((scripts, asset) => {
155
- const { source } = asset;
156
- const _asset = Object.assign({}, asset);
283
+ async function _fetchData(source) {
284
+ const response = await fetch(source);
157
285
 
158
- if (_asset.type !== 'script' && _asset.type !== 'inlineScript') {
159
- return scripts;
160
- }
286
+ if (!response.ok) {
287
+ throw new Error(
288
+ `Failed to fetch from '${source}' with status ${response.status} ${response.statusText}.`,
289
+ );
290
+ }
291
+
292
+ return response.text();
293
+ }
161
294
 
162
- if (source === Object(source)) {
163
- if (source.es13 && exported.isES13Supported()) {
164
- _asset.source = source.es13;
165
- } else if (source.es11 && exported.isES11Supported()) {
166
- _asset.source = source.es11;
167
- } else if (source.es9 && exported.isES9Supported()) {
168
- _asset.source = source.es9;
169
- } else {
170
- _asset.source = null;
295
+ function _removeElementAfterTimeout(element, timeout) {
296
+ if (timeout) {
297
+ setTimeout(() => {
298
+ if (element.parentNode) {
299
+ element.remove();
171
300
  }
301
+ }, timeout);
302
+ }
303
+ }
304
+
305
+ function _loadJsonAsset(asset, root) {
306
+ const script = document.createElement('script');
307
+ script.type = 'application/json';
308
+
309
+ if (asset.type === 'inlineJson') {
310
+ script.textContent = JSON.stringify(asset.source);
311
+ root.appendChild(script);
312
+ _removeElementAfterTimeout(script, asset.ttl);
313
+
314
+ return _attachElementToAsset(asset, script);
315
+ }
172
316
 
173
- if (!_asset.source) {
174
- const message = `Asset '${_asset.name}' is missing ES variant and could not be loaded.`;
317
+ script[loadingPromiseSymbol] = new Promise((resolve, reject) => {
318
+ script.dataset.src = asset.source;
319
+ root.appendChild(script);
175
320
 
176
- if (!_asset.optional) {
177
- const error = new Error(message);
178
- error.asset = _asset;
321
+ (async () => {
322
+ try {
323
+ const textContent = await _fetchData(asset.source);
324
+ script.textContent = textContent;
325
+ delete script[loadingPromiseSymbol];
326
+ _removeElementAfterTimeout(script, asset.ttl);
327
+ resolve(_attachElementToAsset(asset, script));
328
+ } catch (error) {
329
+ script.remove();
179
330
 
180
- throw error;
331
+ try {
332
+ resolve(
333
+ _handleAssetError({
334
+ asset,
335
+ message: `Error loading JSON asset '${asset.name}': ${error.message}`,
336
+ }),
337
+ );
338
+ } catch (error) {
339
+ reject(error);
181
340
  }
341
+ }
342
+ })();
343
+ });
182
344
 
183
- console.warn(message);
184
- return scripts;
345
+ return script[loadingPromiseSymbol];
346
+ }
347
+
348
+ async function loadJsonAssets(assets, root = document.head) {
349
+ const scriptElements = Array.from(
350
+ root.querySelectorAll('script[type="application/json"]'),
351
+ );
352
+
353
+ return Promise.all(
354
+ assets.map((asset) => {
355
+ if (!['json', 'inlineJson'].includes(asset.type) || !asset.source) {
356
+ return _attachElementToAsset(asset, null);
185
357
  }
186
- }
187
358
 
188
- if (
189
- Array.from(scriptElements).reduce((acc, cur) => {
190
- if (cur.text === _asset.source) {
191
- return true;
359
+ const script = _findScriptElement(scriptElements, asset);
360
+
361
+ if (script) {
362
+ if (script[loadingPromiseSymbol]) {
363
+ return script[loadingPromiseSymbol];
192
364
  }
193
365
 
194
- return acc;
195
- }, false) ||
196
- (_asset.test ? exported.test(_asset.test) : false)
197
- ) {
198
- return scripts;
199
- }
366
+ if (script.textContent) {
367
+ return _attachElementToAsset(asset, script);
368
+ }
200
369
 
201
- scripts.push(_asset);
370
+ return _handleAssetError({
371
+ asset,
372
+ message: `JSON asset '${asset.name}' is missing textContent and could not be loaded.`,
373
+ });
374
+ }
202
375
 
203
- return scripts;
204
- }, []);
376
+ return _loadJsonAsset(asset, root);
377
+ }),
378
+ );
379
+ }
380
+
381
+ function _mergeResults(results) {
382
+ return results.reduce((acc, results) => {
383
+ results.forEach((result, index) => {
384
+ if (!acc[index]) {
385
+ acc[index] = result;
386
+ } else if (result.element) {
387
+ acc[index] = result;
388
+ }
389
+ });
205
390
 
206
- return Promise.all(scriptsToRender.map((asset) => _loadScript(asset, root)));
391
+ return acc;
392
+ }, []);
207
393
  }
208
394
 
209
- function loadAssets(assets, root) {
210
- return Promise.all([
395
+ async function loadAssets(assets, root) {
396
+ const results = await Promise.all([
211
397
  loadScriptAssets(assets, root),
212
398
  loadStyleAssets(assets, root),
399
+ loadJsonAssets(assets, root),
213
400
  ]);
401
+
402
+ return _mergeResults(results);
214
403
  }
215
404
 
216
- export { loadAssets, loadScriptAssets, loadStyleAssets, exported as testScript };
405
+ export { isLoadedSymbol, loadAssets, loadJsonAssets, loadScriptAssets, loadStyleAssets, loadingPromiseSymbol, exported as testScript };
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){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)}var r,n,o;Object.defineProperty(e,"__esModule",{value:!0}),e.loadAssets=function(e,t){return Promise.all([u(e,t),s(e,t)])},e.loadScriptAssets=u,e.loadStyleAssets=s,e.testScript=void 0;var i=e.testScript={isES9Supported:function(){return void 0===r&&(r=i.test("return (() => { const o = { t: 1 }; return { ...o }; })() && (async () => ({}))()")&&!!Object.values),r},isES11Supported:function(){return void 0===n&&(n=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"')),n},isES13Supported:function(){return void 0===o&&(o=i.test("return [1,1].findLast(e => e === 1)")&&i.test('return Object.hasOwn({a:1}, "a")')),o},test:function(e){try{return!!new Function(e)()}catch(e){return!1}}};function s(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 function(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()}}))}(e,t)})))}function u(e){return c.apply(this,arguments)}function c(){var e;return e=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.es13&&i.isES13Supported()?o.source=n.es13:n.es11&&i.isES11Supported()?o.source=n.es11:n.es9&&i.isES9Supported()?o.source=n.es9:o.source=null,!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 function(e,t){return new Promise((function(r,n){var o=t.querySelector("script[src='".concat(e.source,"']"));if(o)return e.test&&!i.test(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=function(t){s.remove(),e.optional?r(t):n(t)},s.src=e.source;var u=e.attr;if(u&&Object.keys(u).length)for(var c in u){var a=u[c];"boolean"==typeof a?a?s.setAttribute(c,""):s.removeAttribute(c):s.setAttribute(c,a)}}else s.text=e.source,r();t.appendChild(s)}))}(e,t)})))},c=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)}))},c.apply(this,arguments)}}));
1
+ !function(e,t){if("function"==typeof define&&define.amd)define("@merkur/integration",["exports"],t);else if("undefined"!=typeof exports)t(exports);else{var n={exports:{}};t(n.exports),e.Merkur=e.Merkur||{},e.Merkur.Integration=n.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e){function t(e){return t="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},t(e)}function n(e,t,n,r,o,i,u){try{var s=e[i](u),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,o)}function r(e){return function(){var t=this,r=arguments;return new Promise((function(o,i){var u=e.apply(t,r);function s(e){n(u,o,i,s,c,"next",e)}function c(e){n(u,o,i,s,c,"throw",e)}s(void 0)}))}}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){u(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,n,r){return(n=function(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,n||"default");if("object"!=t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==t(n)?n:n+""}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}var s,c,a;Object.defineProperty(e,"__esModule",{value:!0}),e.isLoadedSymbol=void 0,e.loadAssets=function(e,t){return x.apply(this,arguments)},e.loadJsonAssets=w,e.loadScriptAssets=S,e.loadStyleAssets=v,e.testScript=e.loadingPromiseSymbol=void 0;var l=e.testScript={isES9Supported:function(){return void 0===s&&(s=l.test("return (() => { const o = { t: 1 }; return { ...o }; })() && (async () => ({}))()")&&!!Object.values),s},isES11Supported:function(){return void 0===c&&(c=l.test("return (() => { const o = { t: { q: true } }; return o?.t?.q && (o?.a?.q ?? true); })()")&&l.test('return typeof Promise.allSettled === "function"')&&l.test('return typeof globalThis !== "undefined"')&&l.test('return typeof 9007199254740991n === "bigint"')),c},isES13Supported:function(){return void 0===a&&(a=l.test("return [1,1].findLast(e => e === 1)")&&l.test('return Object.hasOwn({a:1}, "a")')),a},test:function(e){try{return!!new Function(e)()}catch(e){return!1}}},f=e.isLoadedSymbol=Symbol.for("isLoaded"),p=e.loadingPromiseSymbol=Symbol.for("loadingPromise");function d(e,t){return i(i({},e),{},{element:t})}function y(e){var t=e.asset,n=e.message,r=void 0===n?"Error loading asset ".concat(t.source,"."):n;if(t.optional)return console.warn(r),d(t,null);var o=new Error(r);throw o.asset=t,o}function m(e,t,n,r){t.addEventListener("load",(function(){n(d(e,t)),t[f]=!0,delete t[p]})),t.addEventListener("error",(function(){t.parentNode&&t.remove();try{n(y({asset:e}))}catch(e){r(e)}}))}function v(e){return b.apply(this,arguments)}function b(){return b=r((function*(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.head,n=Array.from(t.querySelectorAll("style"));return Promise.all(e.map((function(e){if(!["stylesheet","inlineStyle"].includes(e.type)||!e.source)return d(e,null);if("stylesheet"===e.type){var r=t.querySelector("link[href='".concat(e.source,"']"));if(r)return r[p]?r[p]:d(e,r)}if("inlineStyle"===e.type){var o=n.find((function(t){return t.innerHTML===e.source}));if(o)return d(e,o)}return function(e,t){if("inlineStyle"===e.type){var n=document.createElement("style");return n.innerHTML=e.source,t.appendChild(n),d(e,n)}var r=document.createElement("link");return r[p]=new Promise((function(n,o){m(e,r,n,o),r.rel="stylesheet",r.href=e.source,t.appendChild(r)})),r[p]}(e,t)})))})),b.apply(this,arguments)}function h(e,t){if("json"===t.type)return e.find((function(e){return e.dataset.src===t.source}));if(!["script","inlineScript","inlineJson"].includes(t.type))return null;var n="script"===t.type?"src":"textContent",r="inlineJson"===t.type?JSON.stringify(t.source):t.source;return e.find((function(e){return e[n]===r}))||null}function S(e){return g.apply(this,arguments)}function g(){return g=r((function*(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.head,n=Array.from(t.querySelectorAll("script"));return Promise.all(e.map((function(e){if(!["script","inlineScript"].includes(e.type)||!e.source)return d(e,null);var r=e.source,o=Object.assign({},e);if(r===Object(r)&&(r.es13&&l.isES13Supported()?o.source=r.es13:r.es11&&l.isES11Supported()?o.source=r.es11:r.es9&&l.isES9Supported()?o.source=r.es9:o.source=null,!o.source))return y({asset:o,message:"Asset '".concat(o.name,"' is missing ES variant and could not be loaded.")});if(o.test&&l.test(o.test))return d(o,h(n,o));var i=h(n,o);return i&&"script"===o.type?i[p]?i[p]:i[f]?d(o,i):new Promise((function(e,t){return m(o,i,e,t)})):i&&"inlineScript"===o.type?d(o,i):function(e,t){var n=document.createElement("script");return"inlineScript"===e.type?(n.textContent=e.source,t.appendChild(n),d(e,n)):(n[p]=new Promise((function(r,o){n.defer=!0,m(e,n,r,o),n.src=e.source;var i=e.attr;if(i&&Object.keys(i).length)for(var u in i){var s=i[u];"boolean"==typeof s?s?n.setAttribute(u,""):n.removeAttribute(u):n.setAttribute(u,s)}t.appendChild(n)})),n[p])}(o,t)})))})),g.apply(this,arguments)}function O(){return(O=r((function*(e){var t=yield fetch(e);if(!t.ok)throw new Error("Failed to fetch from '".concat(e,"' with status ").concat(t.status," ").concat(t.statusText,"."));return t.text()}))).apply(this,arguments)}function P(e,t){t&&setTimeout((function(){e.parentNode&&e.remove()}),t)}function j(e,t){var n=document.createElement("script");return n.type="application/json","inlineJson"===e.type?(n.textContent=JSON.stringify(e.source),t.appendChild(n),P(n,e.ttl),d(e,n)):(n[p]=new Promise((function(o,i){n.dataset.src=e.source,t.appendChild(n),r((function*(){try{var t=yield function(e){return O.apply(this,arguments)}(e.source);n.textContent=t,delete n[p],P(n,e.ttl),o(d(e,n))}catch(t){n.remove();try{o(y({asset:e,message:"Error loading JSON asset '".concat(e.name,"': ").concat(t.message)}))}catch(e){i(e)}}}))()})),n[p])}function w(e){return E.apply(this,arguments)}function E(){return E=r((function*(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.head,n=Array.from(t.querySelectorAll('script[type="application/json"]'));return Promise.all(e.map((function(e){if(!["json","inlineJson"].includes(e.type)||!e.source)return d(e,null);var r=h(n,e);return r?r[p]?r[p]:r.textContent?d(e,r):y({asset:e,message:"JSON asset '".concat(e.name,"' is missing textContent and could not be loaded.")}):j(e,t)})))})),E.apply(this,arguments)}function x(){return(x=r((function*(e,t){return function(e){return e.reduce((function(e,t){return t.forEach((function(t,n){e[n]?t.element&&(e[n]=t):e[n]=t})),e}),[])}(yield Promise.all([S(e,t),v(e,t),w(e,t)]))}))).apply(this,arguments)}}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@merkur/integration",
3
- "version": "0.37.0",
3
+ "version": "0.37.11",
4
4
  "description": "Merkur module for easy integration with other apps.",
5
5
  "main": "lib/index",
6
6
  "module": "lib/index",
@@ -54,5 +54,5 @@
54
54
  "peerDependencies": {
55
55
  "@merkur/core": "*"
56
56
  },
57
- "gitHead": "af826493e5ed4b37602dd43ce89a59baeeb1bada"
57
+ "gitHead": "500328fbb5cabc0728bf50ca7a0ff6c3b7dd595c"
58
58
  }