argous 1.2.203 → 1.2.205

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.
@@ -0,0 +1,10 @@
1
+ export declare type CallbackFn = () => void;
2
+ export interface ScriptItem {
3
+ src: string;
4
+ async?: boolean;
5
+ defer?: boolean;
6
+ }
7
+ export declare const ScriptLoader: {
8
+ loadList: (doc: Document, items: ScriptItem[], delay: number, success: () => void, failure?: ((err: unknown) => void) | undefined) => void;
9
+ reinitialize: () => void;
10
+ };
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.ScriptLoader = void 0;
15
+ var Utils_1 = require("./Utils");
16
+ var injectScriptTag = function (doc, item, handler) {
17
+ var _a, _b;
18
+ var scriptTag = doc.createElement('script');
19
+ scriptTag.referrerPolicy = 'origin';
20
+ scriptTag.type = 'application/javascript';
21
+ scriptTag.id = item.id;
22
+ scriptTag.src = item.src;
23
+ scriptTag.async = (_a = item.async) !== null && _a !== void 0 ? _a : false;
24
+ scriptTag.defer = (_b = item.defer) !== null && _b !== void 0 ? _b : false;
25
+ var loadHandler = function () {
26
+ scriptTag.removeEventListener('load', loadHandler);
27
+ scriptTag.removeEventListener('error', errorHandler);
28
+ handler(item.src);
29
+ };
30
+ var errorHandler = function (err) {
31
+ scriptTag.removeEventListener('load', loadHandler);
32
+ scriptTag.removeEventListener('error', errorHandler);
33
+ handler(item.src, err);
34
+ };
35
+ scriptTag.addEventListener('load', loadHandler);
36
+ scriptTag.addEventListener('error', errorHandler);
37
+ if (doc.head) {
38
+ doc.head.appendChild(scriptTag);
39
+ }
40
+ };
41
+ var createDocumentScriptLoader = function (doc) {
42
+ var lookup = {};
43
+ var scriptLoadOrErrorHandler = function (src, err) {
44
+ var item = lookup[src];
45
+ item.done = true;
46
+ item.error = err;
47
+ for (var _i = 0, _a = item.handlers; _i < _a.length; _i++) {
48
+ var h = _a[_i];
49
+ h(src, err);
50
+ }
51
+ item.handlers = [];
52
+ };
53
+ var loadScripts = function (items, success, failure) {
54
+ // eslint-disable-next-line no-console
55
+ var failureOrLog = function (err) { return failure !== undefined ? failure(err) : console.error(err); };
56
+ if (items.length === 0) {
57
+ failureOrLog(new Error('At least one script must be provided'));
58
+ return;
59
+ }
60
+ var successCount = 0;
61
+ var failed = false;
62
+ var loaded = function (_src, err) {
63
+ if (failed) {
64
+ return;
65
+ }
66
+ if (err) {
67
+ failed = true;
68
+ failureOrLog(err);
69
+ }
70
+ else if (++successCount === items.length) {
71
+ success();
72
+ }
73
+ };
74
+ for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
75
+ var item = items_1[_i];
76
+ var existing = lookup[item.src];
77
+ if (existing) {
78
+ if (existing.done) {
79
+ loaded(item.src, existing.error);
80
+ }
81
+ else {
82
+ existing.handlers.push(loaded);
83
+ }
84
+ }
85
+ else {
86
+ // create a new entry
87
+ var id = Utils_1.uuid('tiny-');
88
+ lookup[item.src] = {
89
+ id: id,
90
+ src: item.src,
91
+ done: false,
92
+ error: null,
93
+ handlers: [loaded],
94
+ };
95
+ injectScriptTag(doc, __assign({ id: id }, item), scriptLoadOrErrorHandler);
96
+ }
97
+ }
98
+ };
99
+ var deleteScripts = function () {
100
+ var _a;
101
+ for (var _i = 0, _b = Object.values(lookup); _i < _b.length; _i++) {
102
+ var item = _b[_i];
103
+ var scriptTag = doc.getElementById(item.id);
104
+ if (scriptTag != null && scriptTag.tagName === 'SCRIPT') {
105
+ (_a = scriptTag.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(scriptTag);
106
+ }
107
+ }
108
+ lookup = {};
109
+ };
110
+ var getDocument = function () { return doc; };
111
+ return {
112
+ loadScripts: loadScripts,
113
+ deleteScripts: deleteScripts,
114
+ getDocument: getDocument
115
+ };
116
+ };
117
+ var createScriptLoader = function () {
118
+ var cache = [];
119
+ var getDocumentScriptLoader = function (doc) {
120
+ var loader = cache.find(function (l) { return l.getDocument() === doc; });
121
+ if (loader === undefined) {
122
+ loader = createDocumentScriptLoader(doc);
123
+ cache.push(loader);
124
+ }
125
+ return loader;
126
+ };
127
+ var loadList = function (doc, items, delay, success, failure) {
128
+ var doLoad = function () { return getDocumentScriptLoader(doc).loadScripts(items, success, failure); };
129
+ if (delay > 0) {
130
+ setTimeout(doLoad, delay);
131
+ }
132
+ else {
133
+ doLoad();
134
+ }
135
+ };
136
+ var reinitialize = function () {
137
+ for (var loader = cache.pop(); loader != null; loader = cache.pop()) {
138
+ loader.deleteScripts();
139
+ }
140
+ };
141
+ return {
142
+ loadList: loadList,
143
+ reinitialize: reinitialize
144
+ };
145
+ };
146
+ exports.ScriptLoader = createScriptLoader();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "argous",
3
- "version": "1.2.203",
3
+ "version": "1.2.205",
4
4
  "description": "Argous.",
5
5
  "main": "lib/index.js",
6
6
  "author": "Carlos Schneider",