si-funciona 2.0.4 → 2.2.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/README.md +123 -1
- package/browser/siFunciona.js +1622 -1476
- package/browser/siFunciona.min.js +1 -1
- package/dist/helpers/arrays/BasicQueue.d.ts +61 -0
- package/dist/helpers/arrays/BasicQueue.js +60 -0
- package/dist/helpers/arrays/BasicQueue.min.js +1 -0
- package/dist/helpers/arrays.d.ts +2 -0
- package/dist/helpers/arrays.js +2 -0
- package/dist/helpers/arrays.min.js +1 -1
- package/dist/helpers/functions/makeBasicQueue.d.ts +10 -0
- package/dist/helpers/functions/makeBasicQueue.js +20 -0
- package/dist/helpers/functions/makeBasicQueue.min.js +1 -0
- package/dist/helpers/functions/onBodyLoad.js +2 -1
- package/dist/helpers/functions/onBodyLoad.min.js +1 -1
- package/dist/helpers/functions/queueManager.d.ts +31 -11
- package/dist/helpers/functions/queueManager.js +108 -27
- package/dist/helpers/functions/queueManager.min.js +1 -1
- package/dist/helpers/functions/queueTimeout.js +2 -1
- package/dist/helpers/functions/queueTimeout.min.js +1 -1
- package/dist/helpers/functions.d.ts +2 -1
- package/dist/helpers/functions.js +2 -0
- package/dist/helpers/functions.min.js +1 -1
- package/package.json +62 -61
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import 'core-js/stable';
|
|
2
|
+
export type callableLater = {
|
|
3
|
+
fn?: Function;
|
|
4
|
+
args?: Array<any>;
|
|
5
|
+
};
|
|
6
|
+
export type queuedItem = {
|
|
7
|
+
item: callableLater | any;
|
|
8
|
+
generator: Generator;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Define the format of a queue
|
|
12
|
+
* @typdef {Object} IsQueue
|
|
13
|
+
* @property {Array|*} innerList - Stores the data for the queue
|
|
14
|
+
* @method dequeue - Pulls the first item from the queue
|
|
15
|
+
* @method empty - Check if the queue is empty
|
|
16
|
+
* @method enqueue - Adds and item to the end of the queue
|
|
17
|
+
* @method peek - Get the next queue item but does not remove it
|
|
18
|
+
* @method size - Get the size of the queue
|
|
19
|
+
*/
|
|
20
|
+
export interface IsQueue<queuedItem> {
|
|
21
|
+
dequeue: () => queuedItem | null;
|
|
22
|
+
empty: () => boolean;
|
|
23
|
+
enqueue: (data: queuedItem) => void;
|
|
24
|
+
peek: () => queuedItem | null;
|
|
25
|
+
size: () => number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Class BasicQueue is a functional example of a queue to be used with queueManager.
|
|
29
|
+
* @memberOf module:arrayHelpers
|
|
30
|
+
*/
|
|
31
|
+
declare class BasicQueue implements IsQueue<queuedItem> {
|
|
32
|
+
private readonly innerList;
|
|
33
|
+
constructor(innerList?: queuedItem[] | any);
|
|
34
|
+
/**
|
|
35
|
+
* Remove and return the next item in the queue
|
|
36
|
+
* @returns {queuedItem|*}
|
|
37
|
+
*/
|
|
38
|
+
dequeue(): queuedItem | any;
|
|
39
|
+
/**
|
|
40
|
+
* Check if the queue is empty
|
|
41
|
+
* @returns {boolean}
|
|
42
|
+
*/
|
|
43
|
+
empty(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Add an item to the end of the queue
|
|
46
|
+
* @param {queuedItem|*} data
|
|
47
|
+
* @returns {BasicQueue}
|
|
48
|
+
*/
|
|
49
|
+
enqueue(data: queuedItem | any): IsQueue<queuedItem>;
|
|
50
|
+
/**
|
|
51
|
+
* Retrieve the next item from the queue
|
|
52
|
+
* @returns {queuedItem|*}
|
|
53
|
+
*/
|
|
54
|
+
peek(): queuedItem | any;
|
|
55
|
+
/**
|
|
56
|
+
* Get the quantity of items in the queue
|
|
57
|
+
* @returns {number}
|
|
58
|
+
*/
|
|
59
|
+
size(): number;
|
|
60
|
+
}
|
|
61
|
+
export default BasicQueue;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.default = void 0
|
|
7
|
+
require('core-js/stable')
|
|
8
|
+
/**
|
|
9
|
+
* Class BasicQueue is a functional example of a queue to be used with queueManager.
|
|
10
|
+
* @memberOf module:arrayHelpers
|
|
11
|
+
*/
|
|
12
|
+
class BasicQueue {
|
|
13
|
+
constructor () {
|
|
14
|
+
const innerList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []
|
|
15
|
+
this.innerList = innerList
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Remove and return the next item in the queue
|
|
20
|
+
* @returns {queuedItem|*}
|
|
21
|
+
*/
|
|
22
|
+
dequeue () {
|
|
23
|
+
return this.innerList.shift()
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Check if the queue is empty
|
|
28
|
+
* @returns {boolean}
|
|
29
|
+
*/
|
|
30
|
+
empty () {
|
|
31
|
+
return !this.size()
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Add an item to the end of the queue
|
|
36
|
+
* @param {queuedItem|*} data
|
|
37
|
+
* @returns {BasicQueue}
|
|
38
|
+
*/
|
|
39
|
+
enqueue (data) {
|
|
40
|
+
this.innerList.push(data)
|
|
41
|
+
return this
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Retrieve the next item from the queue
|
|
46
|
+
* @returns {queuedItem|*}
|
|
47
|
+
*/
|
|
48
|
+
peek () {
|
|
49
|
+
return this.empty() ? null : this.innerList[0]
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Get the quantity of items in the queue
|
|
54
|
+
* @returns {number}
|
|
55
|
+
*/
|
|
56
|
+
size () {
|
|
57
|
+
return this.innerList.length
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
var _default = exports.default = BasicQueue
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable");class BasicQueue{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.innerList=e}dequeue(){return this.innerList.shift()}empty(){return!this.size()}enqueue(e){return this.innerList.push(e),this}peek(){return this.empty()?null:this.innerList[0]}size(){return this.innerList.length}}var _default=exports.default=BasicQueue;
|
package/dist/helpers/arrays.d.ts
CHANGED
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
* @memberOf module:siFunciona
|
|
8
8
|
*/
|
|
9
9
|
import 'core-js/stable';
|
|
10
|
+
import BasicQueue from './arrays/BasicQueue';
|
|
10
11
|
declare const _default: {
|
|
11
12
|
addUniqueToArray: (item: any, array: any[]) => any[];
|
|
13
|
+
BasicQueue: typeof BasicQueue;
|
|
12
14
|
buildArray: (item: any, length: number) => any[];
|
|
13
15
|
buildArrayOfReferences: (item: any, length: number) => any[];
|
|
14
16
|
compareArrays: (...arrays: any[][]) => import("./arrays/compareArrays").compareArrayResultMap;
|
package/dist/helpers/arrays.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, '__esModule', {
|
|
|
6
6
|
exports.default = void 0
|
|
7
7
|
require('core-js/stable')
|
|
8
8
|
var _addUniqueToArray = _interopRequireDefault(require('./arrays/addUniqueToArray'))
|
|
9
|
+
var _BasicQueue = _interopRequireDefault(require('./arrays/BasicQueue'))
|
|
9
10
|
var _buildArray = _interopRequireDefault(require('./arrays/buildArray'))
|
|
10
11
|
var _buildArrayOfReferences = _interopRequireDefault(require('./arrays/buildArrayOfReferences'))
|
|
11
12
|
var _compareArrays = _interopRequireDefault(require('./arrays/compareArrays'))
|
|
@@ -22,6 +23,7 @@ function _interopRequireDefault (obj) { return obj && obj.__esModule ? obj : { d
|
|
|
22
23
|
*/
|
|
23
24
|
var _default = exports.default = {
|
|
24
25
|
addUniqueToArray: _addUniqueToArray.default,
|
|
26
|
+
BasicQueue: _BasicQueue.default,
|
|
25
27
|
buildArray: _buildArray.default,
|
|
26
28
|
buildArrayOfReferences: _buildArrayOfReferences.default,
|
|
27
29
|
compareArrays: _compareArrays.default,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable");var _addUniqueToArray=_interopRequireDefault(require("./arrays/addUniqueToArray")),_buildArray=_interopRequireDefault(require("./arrays/buildArray")),_buildArrayOfReferences=_interopRequireDefault(require("./arrays/buildArrayOfReferences")),_compareArrays=_interopRequireDefault(require("./arrays/compareArrays")),_mergeArrays=_interopRequireDefault(require("./arrays/mergeArrays")),_uniqueArray=_interopRequireDefault(require("./arrays/uniqueArray"));function _interopRequireDefault(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable");var _addUniqueToArray=_interopRequireDefault(require("./arrays/addUniqueToArray")),_BasicQueue=_interopRequireDefault(require("./arrays/BasicQueue")),_buildArray=_interopRequireDefault(require("./arrays/buildArray")),_buildArrayOfReferences=_interopRequireDefault(require("./arrays/buildArrayOfReferences")),_compareArrays=_interopRequireDefault(require("./arrays/compareArrays")),_mergeArrays=_interopRequireDefault(require("./arrays/mergeArrays")),_uniqueArray=_interopRequireDefault(require("./arrays/uniqueArray"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default={addUniqueToArray:_addUniqueToArray.default,BasicQueue:_BasicQueue.default,buildArray:_buildArray.default,buildArrayOfReferences:_buildArrayOfReferences.default,compareArrays:_compareArrays.default,mergeArrays:_mergeArrays.default,uniqueArray:_uniqueArray.default};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import 'core-js/stable';
|
|
2
|
+
import { IsQueue, queuedItem } from '../arrays/BasicQueue';
|
|
3
|
+
/**
|
|
4
|
+
* Create an instance of a basic queue.
|
|
5
|
+
* @memberOf module:functionHelpers
|
|
6
|
+
* @param {Array} initialQueue
|
|
7
|
+
* @returns {IsQueue}
|
|
8
|
+
*/
|
|
9
|
+
declare const makeBasicQueue: (initialQueue?: queuedItem[] | any) => IsQueue<any>;
|
|
10
|
+
export default makeBasicQueue;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.default = void 0
|
|
7
|
+
require('core-js/stable')
|
|
8
|
+
var _BasicQueue = _interopRequireDefault(require('../arrays/BasicQueue'))
|
|
9
|
+
function _interopRequireDefault (obj) { return obj && obj.__esModule ? obj : { default: obj } }
|
|
10
|
+
/**
|
|
11
|
+
* Create an instance of a basic queue.
|
|
12
|
+
* @memberOf module:functionHelpers
|
|
13
|
+
* @param {Array} initialQueue
|
|
14
|
+
* @returns {IsQueue}
|
|
15
|
+
*/
|
|
16
|
+
const makeBasicQueue = function () {
|
|
17
|
+
const initialQueue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []
|
|
18
|
+
return new _BasicQueue.default(initialQueue)
|
|
19
|
+
}
|
|
20
|
+
var _default = exports.default = makeBasicQueue
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable");var _BasicQueue=_interopRequireDefault(require("../arrays/BasicQueue"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const makeBasicQueue=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return new _BasicQueue.default(e)};var _default=exports.default=makeBasicQueue;
|
|
@@ -36,13 +36,14 @@ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P
|
|
|
36
36
|
}
|
|
37
37
|
const queue = []
|
|
38
38
|
const manager = (0, _queueManager.default)()
|
|
39
|
+
manager.start()
|
|
39
40
|
let observer = null
|
|
40
41
|
const doReset = () => observer = null
|
|
41
42
|
const initializeObserver = () => __awaiter(void 0, void 0, void 0, function * () {
|
|
42
43
|
observer = new MutationObserver(() => {
|
|
43
44
|
if (document.body) {
|
|
44
45
|
while (queue.length) {
|
|
45
|
-
manager(queue.shift())
|
|
46
|
+
manager.push(queue.shift())
|
|
46
47
|
}
|
|
47
48
|
observer.disconnect()
|
|
48
49
|
doReset()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable");var _queueManager=_interopRequireDefault(require("./queueManager"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __awaiter=function(e,r,t,n){return new(t||(t=Promise))((function(u,o){function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable");var _queueManager=_interopRequireDefault(require("./queueManager"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __awaiter=function(e,r,t,n){return new(t||(t=Promise))((function(u,o){function a(e){try{s(n.next(e))}catch(e){o(e)}}function i(e){try{s(n.throw(e))}catch(e){o(e)}}function s(e){var r;e.done?u(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(a,i)}s((n=n.apply(e,r||[])).next())}))};const queue=[],manager=(0,_queueManager.default)();manager.start();let observer=null;const doReset=()=>observer=null,initializeObserver=()=>__awaiter(void 0,void 0,void 0,(function*(){return observer=new MutationObserver((()=>{if(document.body){for(;queue.length;)manager.push(queue.shift());observer.disconnect(),doReset()}})),observer.observe(document.documentElement,{childList:!0}),observer})),onBodyLoad=function(e){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&doReset(),queue.push(e),null===observer&&initializeObserver(),queue};var _default=exports.default=onBodyLoad;
|
|
@@ -1,28 +1,48 @@
|
|
|
1
1
|
import 'core-js/stable';
|
|
2
2
|
import 'regenerator-runtime/runtime';
|
|
3
|
+
import { IsQueue, queuedItem } from '../arrays/BasicQueue';
|
|
3
4
|
/**
|
|
4
5
|
* Each time queue handle is called the passed function is added to the queue to be called when ready.
|
|
5
|
-
* @typedef {
|
|
6
|
+
* @typedef {Object} module:functionHelpers~queueedRunnable
|
|
7
|
+
* @memberOf module:functionHelpers
|
|
8
|
+
* @property {Object.<fn|args, Function|Array.<*>>} item - Stores the function and the arguments to apply to it when called
|
|
9
|
+
* @property {Generator} generator - The generator instance which can be used to yield function results
|
|
10
|
+
*/
|
|
11
|
+
export type queuedRunnable = {
|
|
12
|
+
item: {
|
|
13
|
+
fn: Function | queuedItem;
|
|
14
|
+
args: any[];
|
|
15
|
+
};
|
|
16
|
+
generator: Generator;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* The pushed function is added to the queue to be called when ready.
|
|
20
|
+
* @typedef {Function} module:functionHelpers~queueManagerPush
|
|
6
21
|
* @memberOf module:functionHelpers
|
|
7
22
|
* @param {Function} fn - A function to enqueue
|
|
8
23
|
* @param {...*} args - Arguments to be passed to the function once it is ready
|
|
9
24
|
* @returns {Promise}
|
|
10
25
|
*/
|
|
11
|
-
export type
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
26
|
+
export type queuePush = (fn: Function, ...args: any) => Promise<any>;
|
|
27
|
+
/**
|
|
28
|
+
* Each time queue handle is called the passed function is added to the queue to be called when ready.
|
|
29
|
+
* @typedef {Object} module:functionHelpers~queueManagerHandle
|
|
30
|
+
* @memberOf module:functionHelpers
|
|
31
|
+
* @property {Function} start - Callable property that will disable paused state and run the next queue
|
|
32
|
+
* @property {Function} pause - Callable property that will switch state to paused
|
|
33
|
+
* @property {module:functionHelpers~queueManagerPush} push - Callable property that takes a function to add to the queue
|
|
34
|
+
*/
|
|
35
|
+
export type queueManagerHandle = {
|
|
36
|
+
start: () => void;
|
|
37
|
+
pause: () => void;
|
|
38
|
+
push: queuePush;
|
|
19
39
|
};
|
|
20
40
|
/**
|
|
21
41
|
* Manage functions to run sequentially.
|
|
22
42
|
* @function
|
|
23
43
|
* @memberOf module:functionHelpers
|
|
24
|
-
* @param {
|
|
44
|
+
* @param {IsQueue} [queue=[]] - The iterable that can be used to store queued functions
|
|
25
45
|
* @returns {module:functionHelpers~queueManagerHandle}
|
|
26
46
|
*/
|
|
27
|
-
declare const queueManager: (queue?:
|
|
47
|
+
declare const queueManager: (queue?: IsQueue<queuedItem>) => queueManagerHandle;
|
|
28
48
|
export default queueManager;
|
|
@@ -4,49 +4,130 @@ Object.defineProperty(exports, '__esModule', {
|
|
|
4
4
|
value: true
|
|
5
5
|
})
|
|
6
6
|
exports.default = void 0
|
|
7
|
+
require('core-js/modules/esnext.async-iterator.for-each.js')
|
|
8
|
+
require('core-js/modules/esnext.iterator.constructor.js')
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js')
|
|
7
10
|
require('core-js/stable')
|
|
8
11
|
require('regenerator-runtime/runtime')
|
|
12
|
+
var _makeBasicQueue = _interopRequireDefault(require('./makeBasicQueue'))
|
|
13
|
+
function _interopRequireDefault (obj) { return obj && obj.__esModule ? obj : { default: obj } }
|
|
9
14
|
/**
|
|
10
15
|
* Manage functions to run sequentially.
|
|
11
16
|
* @function
|
|
12
17
|
* @memberOf module:functionHelpers
|
|
13
|
-
* @param {
|
|
18
|
+
* @param {IsQueue} [queue=[]] - The iterable that can be used to store queued functions
|
|
14
19
|
* @returns {module:functionHelpers~queueManagerHandle}
|
|
15
20
|
*/
|
|
16
21
|
const queueManager = function () {
|
|
17
|
-
|
|
22
|
+
let queue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null
|
|
18
23
|
let isRunning = false
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
let isPaused = true
|
|
25
|
+
/**
|
|
26
|
+
* Convert a function to a queueable object.
|
|
27
|
+
* @param {Promise.resolve} resolve
|
|
28
|
+
* @param {Promise.reject} reject
|
|
29
|
+
* @param {Function} fn
|
|
30
|
+
* @param {...*} args
|
|
31
|
+
* @returns {queuedRunnable}
|
|
32
|
+
*/
|
|
33
|
+
const makeQueuedRunnable = function (resolve, reject, fn) {
|
|
34
|
+
const generator = (function * () {
|
|
35
|
+
const item = yield
|
|
36
|
+
return typeof item.fn === 'function' ? resolve(item.fn(...item.args)) : reject(item)
|
|
37
|
+
}())
|
|
38
|
+
// Prepare the generator to be used on the subsequent call
|
|
39
|
+
generator.next()
|
|
40
|
+
for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
|
|
41
|
+
args[_key - 3] = arguments[_key]
|
|
22
42
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
43
|
+
return {
|
|
44
|
+
item: {
|
|
45
|
+
fn: fn,
|
|
46
|
+
args: args
|
|
47
|
+
},
|
|
48
|
+
generator: generator
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* After an item is run, THEN run this function to reset isRunning
|
|
53
|
+
* @param {*} result
|
|
54
|
+
* @returns {*}
|
|
55
|
+
*/
|
|
56
|
+
const postRun = result => {
|
|
57
|
+
isRunning = false
|
|
58
|
+
runNextItem()
|
|
59
|
+
return result
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* When ready, runs the next queued runnable generator.
|
|
63
|
+
* @returns {IteratorYieldResult|null}
|
|
64
|
+
*/
|
|
65
|
+
const runNextItem = () => {
|
|
66
|
+
if (!isPaused && !queue.empty() && !isRunning) {
|
|
67
|
+
isRunning = true
|
|
68
|
+
let toRun = queue.dequeue()
|
|
69
|
+
if (typeof toRun === 'undefined' || toRun === null) {
|
|
70
|
+
return null
|
|
71
|
+
}
|
|
72
|
+
if (typeof toRun === 'function') {
|
|
73
|
+
new Promise((resolve, reject) => {
|
|
74
|
+
toRun = makeQueuedRunnable(resolve, reject, toRun)
|
|
75
|
+
runNextItem()
|
|
76
|
+
}).then(postRun)
|
|
77
|
+
}
|
|
78
|
+
if ('success' in toRun) {
|
|
79
|
+
// Some run responses return an object with 'success' property.
|
|
80
|
+
console.info(toRun.success)
|
|
81
|
+
return null
|
|
82
|
+
}
|
|
83
|
+
if (!toRun.generator || 'error' in toRun) {
|
|
84
|
+
// Some run responses return an object with an 'error' property
|
|
85
|
+
let errorMessage = 'Verify queued function implements "done()" state.'
|
|
86
|
+
if ('error' in toRun && toRun.error) {
|
|
87
|
+
errorMessage = `[${toRun.error}]: ${errorMessage}`
|
|
88
|
+
}
|
|
89
|
+
throw new Error(errorMessage)
|
|
28
90
|
}
|
|
29
|
-
|
|
91
|
+
if (toRun.generator && toRun.item) {
|
|
92
|
+
// Ensure the returned result has both the generator and the item to be valid
|
|
93
|
+
return toRun.generator.next(toRun.item)
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return null
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Add a function into the queue to be run when ready.
|
|
100
|
+
* @param {Function} fn - The function to run when ready
|
|
101
|
+
* @param {...*} args - Optional arguments to apply when the function is ready to be run
|
|
102
|
+
* @returns Promise
|
|
103
|
+
*/
|
|
104
|
+
const pushAnother = function (fn) {
|
|
105
|
+
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
106
|
+
args[_key2 - 1] = arguments[_key2]
|
|
30
107
|
}
|
|
31
108
|
return new Promise((resolve, reject) => {
|
|
32
|
-
|
|
33
|
-
const item = yield
|
|
34
|
-
return typeof item.fn === 'function' ? resolve(item.fn(...item.args)) : reject(item)
|
|
35
|
-
}())
|
|
36
|
-
generator.next()
|
|
37
|
-
queue.push({
|
|
38
|
-
item: {
|
|
39
|
-
fn: fn,
|
|
40
|
-
args: args
|
|
41
|
-
},
|
|
42
|
-
generator: generator
|
|
43
|
-
})
|
|
109
|
+
queue.enqueue(makeQueuedRunnable(resolve, reject, fn, ...args))
|
|
44
110
|
runNextItem()
|
|
45
|
-
}).then(
|
|
46
|
-
|
|
111
|
+
}).then(postRun)
|
|
112
|
+
}
|
|
113
|
+
if (Array.isArray(queue)) {
|
|
114
|
+
const queueArray = queue
|
|
115
|
+
queue = (0, _makeBasicQueue.default)()
|
|
116
|
+
queueArray.forEach(queued => pushAnother(queued))
|
|
117
|
+
}
|
|
118
|
+
if (queue === null) {
|
|
119
|
+
queue = (0, _makeBasicQueue.default)()
|
|
120
|
+
}
|
|
121
|
+
runNextItem()
|
|
122
|
+
return {
|
|
123
|
+
start: () => {
|
|
124
|
+
isPaused = false
|
|
47
125
|
runNextItem()
|
|
48
|
-
|
|
49
|
-
|
|
126
|
+
},
|
|
127
|
+
pause: () => {
|
|
128
|
+
isPaused = true
|
|
129
|
+
},
|
|
130
|
+
push: pushAnother
|
|
50
131
|
}
|
|
51
132
|
}
|
|
52
133
|
var _default = exports.default = queueManager
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable"),require("regenerator-runtime/runtime");const queueManager=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/modules/esnext.async-iterator.for-each.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.for-each.js"),require("core-js/stable"),require("regenerator-runtime/runtime");var _makeBasicQueue=_interopRequireDefault(require("./makeBasicQueue"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const queueManager=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,r=!1,t=!0;const n=function(e,r,t){const n=function*(){const t=yield;return"function"==typeof t.fn?e(t.fn(...t.args)):r(t)}();n.next();for(var u=arguments.length,o=new Array(u>3?u-3:0),i=3;i<u;i++)o[i-3]=arguments[i];return{item:{fn:t,args:o},generator:n}},u=e=>(r=!1,o(),e),o=()=>{if(!t&&!e.empty()&&!r){r=!0;let t=e.dequeue();if(null==t)return null;if("function"==typeof t&&new Promise(((e,r)=>{t=n(e,r,t),o()})).then(u),"success"in t)return console.info(t.success),null;if(!t.generator||"error"in t){let e='Verify queued function implements "done()" state.';throw"error"in t&&t.error&&(e=`[${t.error}]: ${e}`),new Error(e)}if(t.generator&&t.item)return t.generator.next(t.item)}return null},i=function(r){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];return new Promise(((t,u)=>{e.enqueue(n(t,u,r,...i)),o()})).then(u)};if(Array.isArray(e)){const r=e;e=(0,_makeBasicQueue.default)(),r.forEach((e=>i(e)))}return null===e&&(e=(0,_makeBasicQueue.default)()),o(),{start:()=>{t=!1,o()},pause:()=>{t=!0},push:i}};var _default=exports.default=queueManager;
|
|
@@ -19,12 +19,13 @@ function _interopRequireDefault (obj) { return obj && obj.__esModule ? obj : { d
|
|
|
19
19
|
const queueTimeout = function () {
|
|
20
20
|
const queueManagerHandle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null
|
|
21
21
|
const manager = queueManagerHandle || (0, _queueManager.default)()
|
|
22
|
+
manager.start()
|
|
22
23
|
return function (fn) {
|
|
23
24
|
const time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0
|
|
24
25
|
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
25
26
|
args[_key - 2] = arguments[_key]
|
|
26
27
|
}
|
|
27
|
-
return manager(() => (0, _delay.default)(time).resolver.then(() => fn(...args)))
|
|
28
|
+
return manager.push(() => (0, _delay.default)(time).resolver.then(() => fn(...args)))
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
var _default = exports.default = queueTimeout
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable"),require("regenerator-runtime/runtime");var _delay=_interopRequireDefault(require("./delay")),_queueManager=_interopRequireDefault(require("./queueManager"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const queueTimeout=function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)||(0,_queueManager.default)();return function(r){let u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;for(var t=arguments.length,n=new Array(t>2?t-2:0),a=2;a<t;a++)n[a-2]=arguments[a];return e((()=>(0,_delay.default)(u).resolver.then((()=>r(...n)))))}};var _default=exports.default=queueTimeout;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable"),require("regenerator-runtime/runtime");var _delay=_interopRequireDefault(require("./delay")),_queueManager=_interopRequireDefault(require("./queueManager"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const queueTimeout=function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)||(0,_queueManager.default)();return e.start(),function(r){let u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;for(var t=arguments.length,n=new Array(t>2?t-2:0),a=2;a<t;a++)n[a-2]=arguments[a];return e.push((()=>(0,_delay.default)(u).resolver.then((()=>r(...n)))))}};var _default=exports.default=queueTimeout;
|
|
@@ -14,10 +14,11 @@ declare const _default: {
|
|
|
14
14
|
resolver: Promise<any>;
|
|
15
15
|
cancel: () => void;
|
|
16
16
|
};
|
|
17
|
+
makeBasicQueue: (initialQueue?: any) => import("./arrays/BasicQueue").IsQueue<any>;
|
|
17
18
|
onBodyLoad: (callback: Function, reset?: boolean) => Function[];
|
|
18
19
|
pipe: (...fns: Function[]) => any;
|
|
19
20
|
preloadParams: (fn: Function, params?: any[], unassignedParam?: number) => (missing: any) => any;
|
|
20
|
-
queueManager: (queue?: import("./
|
|
21
|
+
queueManager: (queue?: import("./arrays/BasicQueue").IsQueue<import("./arrays/BasicQueue").queuedItem>) => import("./functions/queueManager").queueManagerHandle;
|
|
21
22
|
queueTimeout: (queueManagerHandle?: import("./functions/queueManager").queueManagerHandle) => (fn: Function, time: number, ...args: any) => Promise<any>;
|
|
22
23
|
relevancyFilter: (map: import("./functions/relevancyFilter").relevanceMap, { mapLimit, relevancyRange }?: {
|
|
23
24
|
mapLimit?: number;
|
|
@@ -8,6 +8,7 @@ require('core-js/stable')
|
|
|
8
8
|
var _callWithParams = _interopRequireDefault(require('./functions/callWithParams'))
|
|
9
9
|
var _curry = _interopRequireDefault(require('./functions/curry'))
|
|
10
10
|
var _delay = _interopRequireDefault(require('./functions/delay'))
|
|
11
|
+
var _makeBasicQueue = _interopRequireDefault(require('./functions/makeBasicQueue'))
|
|
11
12
|
var _onBodyLoad = _interopRequireDefault(require('./functions/onBodyLoad'))
|
|
12
13
|
var _pipe = _interopRequireDefault(require('./functions/pipe'))
|
|
13
14
|
var _preloadParams = _interopRequireDefault(require('./functions/preloadParams'))
|
|
@@ -28,6 +29,7 @@ var _default = exports.default = {
|
|
|
28
29
|
callWithParams: _callWithParams.default,
|
|
29
30
|
curry: _curry.default,
|
|
30
31
|
delay: _delay.default,
|
|
32
|
+
makeBasicQueue: _makeBasicQueue.default,
|
|
31
33
|
onBodyLoad: _onBodyLoad.default,
|
|
32
34
|
pipe: _pipe.default,
|
|
33
35
|
preloadParams: _preloadParams.default,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable");var _callWithParams=_interopRequireDefault(require("./functions/callWithParams")),_curry=_interopRequireDefault(require("./functions/curry")),_delay=_interopRequireDefault(require("./functions/delay")),_onBodyLoad=_interopRequireDefault(require("./functions/onBodyLoad")),_pipe=_interopRequireDefault(require("./functions/pipe")),_preloadParams=_interopRequireDefault(require("./functions/preloadParams")),_queueManager=_interopRequireDefault(require("./functions/queueManager")),_queueTimeout=_interopRequireDefault(require("./functions/queueTimeout")),_relevancyFilter=_interopRequireDefault(require("./functions/relevancyFilter")),_trace=_interopRequireDefault(require("./functions/trace"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default={callWithParams:_callWithParams.default,curry:_curry.default,delay:_delay.default,onBodyLoad:_onBodyLoad.default,pipe:_pipe.default,preloadParams:_preloadParams.default,queueManager:_queueManager.default,queueTimeout:_queueTimeout.default,relevancyFilter:_relevancyFilter.default,trace:_trace.default};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable");var _callWithParams=_interopRequireDefault(require("./functions/callWithParams")),_curry=_interopRequireDefault(require("./functions/curry")),_delay=_interopRequireDefault(require("./functions/delay")),_makeBasicQueue=_interopRequireDefault(require("./functions/makeBasicQueue")),_onBodyLoad=_interopRequireDefault(require("./functions/onBodyLoad")),_pipe=_interopRequireDefault(require("./functions/pipe")),_preloadParams=_interopRequireDefault(require("./functions/preloadParams")),_queueManager=_interopRequireDefault(require("./functions/queueManager")),_queueTimeout=_interopRequireDefault(require("./functions/queueTimeout")),_relevancyFilter=_interopRequireDefault(require("./functions/relevancyFilter")),_trace=_interopRequireDefault(require("./functions/trace"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default={callWithParams:_callWithParams.default,curry:_curry.default,delay:_delay.default,makeBasicQueue:_makeBasicQueue.default,onBodyLoad:_onBodyLoad.default,pipe:_pipe.default,preloadParams:_preloadParams.default,queueManager:_queueManager.default,queueTimeout:_queueTimeout.default,relevancyFilter:_relevancyFilter.default,trace:_trace.default};
|
package/package.json
CHANGED
|
@@ -1,61 +1,62 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "si-funciona",
|
|
3
|
-
"author": "Joshua Heagle <joshuaheagle@gmail.com> (https://joshuaheagle.com)",
|
|
4
|
-
"description": "Funciones de utilidad para uso general. [General usage utility functions.]",
|
|
5
|
-
"homepage": "https://github.com/jheagle/si-funciona#readme",
|
|
6
|
-
"keywords": [
|
|
7
|
-
"functional",
|
|
8
|
-
"helpers",
|
|
9
|
-
"utility",
|
|
10
|
-
"funcional",
|
|
11
|
-
"ayudas",
|
|
12
|
-
"utilidades",
|
|
13
|
-
"general",
|
|
14
|
-
"typescript"
|
|
15
|
-
],
|
|
16
|
-
"version": "2.0
|
|
17
|
-
"license": "GPL-3.0-or-later",
|
|
18
|
-
"bugs": {
|
|
19
|
-
"url": "https://github.com/jheagle/si-funciona/issues"
|
|
20
|
-
},
|
|
21
|
-
"scripts": {
|
|
22
|
-
"build": "gulp build",
|
|
23
|
-
"dev": "gulp",
|
|
24
|
-
"htmldocs": "jsdoc -R MAIN.md -c ./.jsdoc.conf.js -d docs",
|
|
25
|
-
"readme": "gulp readme",
|
|
26
|
-
"resolutions": "npx npm-force-resolutions",
|
|
27
|
-
"test": "gulp testFull",
|
|
28
|
-
"test:quick": "gulp testQuick",
|
|
29
|
-
"watch": "gulp watchFull",
|
|
30
|
-
"watch:test": "gulp watchTest"
|
|
31
|
-
},
|
|
32
|
-
"dependencies": {
|
|
33
|
-
"npm": "^10.2.
|
|
34
|
-
},
|
|
35
|
-
"devDependencies": {
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "si-funciona",
|
|
3
|
+
"author": "Joshua Heagle <joshuaheagle@gmail.com> (https://joshuaheagle.com)",
|
|
4
|
+
"description": "Funciones de utilidad para uso general. [General usage utility functions.]",
|
|
5
|
+
"homepage": "https://github.com/jheagle/si-funciona#readme",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"functional",
|
|
8
|
+
"helpers",
|
|
9
|
+
"utility",
|
|
10
|
+
"funcional",
|
|
11
|
+
"ayudas",
|
|
12
|
+
"utilidades",
|
|
13
|
+
"general",
|
|
14
|
+
"typescript"
|
|
15
|
+
],
|
|
16
|
+
"version": "2.2.0",
|
|
17
|
+
"license": "GPL-3.0-or-later",
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/jheagle/si-funciona/issues"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "gulp build",
|
|
23
|
+
"dev": "gulp",
|
|
24
|
+
"htmldocs": "jsdoc -R MAIN.md -c ./.jsdoc.conf.js -d docs",
|
|
25
|
+
"readme": "gulp readme",
|
|
26
|
+
"resolutions": "npx npm-force-resolutions",
|
|
27
|
+
"test": "gulp testFull",
|
|
28
|
+
"test:quick": "gulp testQuick",
|
|
29
|
+
"watch": "gulp watchFull",
|
|
30
|
+
"watch:test": "gulp watchTest"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"npm": "^10.2.5"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"collect-your-stuff": "^1.1.2",
|
|
37
|
+
"gulp": "^4.0.2",
|
|
38
|
+
"js-build-tools": "^2.2.11",
|
|
39
|
+
"jsdoc": "^4.0.2",
|
|
40
|
+
"standard": "^17.1.0"
|
|
41
|
+
},
|
|
42
|
+
"resolutions": {},
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "git+https://github.com/jheagle/si-funciona.git"
|
|
46
|
+
},
|
|
47
|
+
"main": "dist/main.min.js",
|
|
48
|
+
"types": "dist/main.js",
|
|
49
|
+
"files": [
|
|
50
|
+
"dist",
|
|
51
|
+
"browser"
|
|
52
|
+
],
|
|
53
|
+
"funding": "https://www.paypal.com/donate/?business=LRYR6SZRWKXVY&no_recurring=0&item_name=Let%27s+build+together+today+to+simplify+our+jobs+tomorrow.¤cy_code=CAD",
|
|
54
|
+
"standard": {
|
|
55
|
+
"env": [
|
|
56
|
+
"jest"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
"directories": {
|
|
60
|
+
"doc": "docs"
|
|
61
|
+
}
|
|
62
|
+
}
|