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.
@@ -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;
@@ -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;
@@ -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(r){return r&&r.__esModule?r:{default:r}}var _default=exports.default={addUniqueToArray:_addUniqueToArray.default,buildArray:_buildArray.default,buildArrayOfReferences:_buildArrayOfReferences.default,compareArrays:_compareArrays.default,mergeArrays:_mergeArrays.default,uniqueArray:_uniqueArray.default};
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 i(e){try{s(n.next(e))}catch(e){o(e)}}function a(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(i,a)}s((n=n.apply(e,r||[])).next())}))};const queue=[],manager=(0,_queueManager.default)();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(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
+ "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 {Function} module:functionHelpers~queueManagerHandle
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 queueManagerHandle = (fn: Function, ...args: any) => Promise<any>;
12
- type callableLater = {
13
- fn?: Function;
14
- args?: Array<any>;
15
- };
16
- export type queuedItem = {
17
- item: callableLater;
18
- generator: Generator;
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 {Iterable|array} [queue=[]] - The iterable that can be used to store queued functions
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?: Array<queuedItem>) => queueManagerHandle;
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 {Iterable|array} [queue=[]] - The iterable that can be used to store queued functions
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
- const queue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []
22
+ let queue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null
18
23
  let isRunning = false
19
- return function (fn) {
20
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
21
- args[_key - 1] = arguments[_key]
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
- const runNextItem = () => {
24
- if (queue.length && !isRunning) {
25
- isRunning = true
26
- const toRun = queue.shift()
27
- toRun.generator.next(toRun.item)
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
- return queue
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
- const generator = (function * () {
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(resolvedResult => {
46
- isRunning = false
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
- return resolvedResult
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]:[],t=!1;return function(r){for(var n=arguments.length,o=new Array(n>1?n-1:0),u=1;u<n;u++)o[u-1]=arguments[u];const i=()=>{if(e.length&&!t){t=!0;const r=e.shift();r.generator.next(r.item)}return e};return new Promise(((t,n)=>{const u=function*(){const e=yield;return"function"==typeof e.fn?t(e.fn(...e.args)):n(e)}();u.next(),e.push({item:{fn:r,args:o},generator:u}),i()})).then((e=>(t=!1,i(),e)))}};var _default=exports.default=queueManager;
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("./functions/queueManager").queuedItem[]) => import("./functions/queueManager").queueManagerHandle;
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.4",
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.0"
34
- },
35
- "devDependencies": {
36
- "gulp": "^4.0.2",
37
- "js-build-tools": "^2.2.8",
38
- "jsdoc": "^4.0.2",
39
- "standard": "^17.1.0"
40
- },
41
- "resolutions": {},
42
- "repository": {
43
- "type": "git",
44
- "url": "git+https://github.com/jheagle/si-funciona.git"
45
- },
46
- "main": "dist/main.min.js",
47
- "types": "dist/main.js",
48
- "files": [
49
- "dist",
50
- "browser"
51
- ],
52
- "funding": "https://www.paypal.com/donate/?business=LRYR6SZRWKXVY&no_recurring=0&item_name=Let%27s+build+together+today+to+simplify+our+jobs+tomorrow.&currency_code=CAD",
53
- "standard": {
54
- "env": [
55
- "jest"
56
- ]
57
- },
58
- "directories": {
59
- "doc": "docs"
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.&currency_code=CAD",
54
+ "standard": {
55
+ "env": [
56
+ "jest"
57
+ ]
58
+ },
59
+ "directories": {
60
+ "doc": "docs"
61
+ }
62
+ }