Sequencer converted into a singleton class.
This commit is contained in:
parent
076444f2fe
commit
d90dfc4a6c
|
@ -1,103 +1,107 @@
|
|||
'use strict';
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const uuid = require('uuid').v4;
|
||||
const log = require('../log')('seq');
|
||||
/** Object sequence features */
|
||||
const sequence = {};
|
||||
sequence._state = {
|
||||
arr: [],
|
||||
active: false,
|
||||
paused: false,
|
||||
frame: false,
|
||||
delay: false,
|
||||
count: 0,
|
||||
stop: null
|
||||
};
|
||||
sequence._loop = {
|
||||
arr: [],
|
||||
count: 0,
|
||||
max: 0
|
||||
};
|
||||
sequence.start = function (options, cb) {
|
||||
if (sequence._state.active) {
|
||||
return false;
|
||||
class Sequence {
|
||||
constructor() {
|
||||
this._state = {
|
||||
arr: [],
|
||||
active: false,
|
||||
paused: false,
|
||||
frame: false,
|
||||
delay: false,
|
||||
count: 0,
|
||||
stop: null
|
||||
};
|
||||
this._loop = {
|
||||
arr: [],
|
||||
count: 0,
|
||||
max: 0
|
||||
};
|
||||
this.stop = function () {
|
||||
this._state.active = false;
|
||||
this._state.count = 0;
|
||||
this._state.arr = [];
|
||||
this._loop.count = 0;
|
||||
this._loop.max = 0;
|
||||
this._loop.arr = [];
|
||||
if (this._state.stop)
|
||||
this._state.stop();
|
||||
this._state.stop = null;
|
||||
};
|
||||
}
|
||||
sequence._state.active = true;
|
||||
sequence._state.count = 0;
|
||||
if (options.arr) {
|
||||
sequence._state.arr = options.arr;
|
||||
}
|
||||
if (options.loop) {
|
||||
sequence._loop.arr = options.loop;
|
||||
sequence._loop.count = 0;
|
||||
}
|
||||
if (options.maxLoop) {
|
||||
sequence._loop.max = options.maxLoop;
|
||||
}
|
||||
else {
|
||||
sequence._loop.max = 0;
|
||||
}
|
||||
sequence._state.stop = cb;
|
||||
sequence.step();
|
||||
sequence._state.id = uuid();
|
||||
return sequence._state.id;
|
||||
};
|
||||
sequence.setStop = function () {
|
||||
sequence._state.active = false;
|
||||
};
|
||||
sequence.stop = function () {
|
||||
sequence._state.active = false;
|
||||
sequence._state.count = 0;
|
||||
sequence._state.arr = [];
|
||||
sequence._loop.count = 0;
|
||||
sequence._loop.max = 0;
|
||||
sequence._loop.arr = [];
|
||||
if (sequence._state.stop)
|
||||
sequence._state.stop();
|
||||
sequence._state.stop = null;
|
||||
};
|
||||
sequence.pause = function () {
|
||||
sequence._state.paused = true;
|
||||
};
|
||||
sequence.resume = function () {
|
||||
sequence._state.paused = false;
|
||||
sequence.step();
|
||||
};
|
||||
sequence.step = function () {
|
||||
if (sequence._state.active && !sequence._state.paused) {
|
||||
if (sequence._state.arr.length > 0) {
|
||||
if (sequence._state.count > sequence._state.arr.length - 1) {
|
||||
return sequence.stop();
|
||||
}
|
||||
log.info('step', { count: sequence._state.count, id: sequence._state.id });
|
||||
return sequence._state.arr[sequence._state.count](() => {
|
||||
sequence._state.count++;
|
||||
sequence.step();
|
||||
});
|
||||
async start(options, cb) {
|
||||
if (this._state.active) {
|
||||
return false;
|
||||
}
|
||||
else if (sequence._loop.arr.length > 0) {
|
||||
if (sequence._state.count > sequence._loop.arr.length - 1) {
|
||||
sequence._state.count = 0;
|
||||
sequence._loop.count++;
|
||||
}
|
||||
if (sequence._loop.max > 0 && sequence._loop.count > sequence._loop.max) {
|
||||
return sequence.stop();
|
||||
}
|
||||
log.info('step', { count: sequence._state.count, id: sequence._state.id });
|
||||
return sequence._loop.arr[sequence._state.count](() => {
|
||||
sequence._state.count++;
|
||||
sequence.step();
|
||||
});
|
||||
this._state.active = true;
|
||||
this._state.count = 0;
|
||||
if (options.arr) {
|
||||
this._state.arr = options.arr;
|
||||
}
|
||||
if (options.loop) {
|
||||
this._loop.arr = options.loop;
|
||||
this._loop.count = 0;
|
||||
}
|
||||
if (options.maxLoop) {
|
||||
this._loop.max = options.maxLoop;
|
||||
}
|
||||
else {
|
||||
return sequence.stop();
|
||||
this._loop.max = 0;
|
||||
}
|
||||
this._state.stop = cb;
|
||||
this.step();
|
||||
this._state.id = uuid();
|
||||
return this._state.id;
|
||||
}
|
||||
setStop() {
|
||||
this._state.active = false;
|
||||
}
|
||||
pause() {
|
||||
this._state.paused = true;
|
||||
}
|
||||
resume() {
|
||||
this._state.paused = false;
|
||||
this.step();
|
||||
}
|
||||
step() {
|
||||
if (this._state.active && !this._state.paused) {
|
||||
if (this._state.arr.length > 0) {
|
||||
if (this._state.count > this._state.arr.length - 1) {
|
||||
return this.stop();
|
||||
}
|
||||
log.info('step', { count: this._state.count, id: this._state.id });
|
||||
return this._state.arr[this._state.count](() => {
|
||||
this._state.count++;
|
||||
this.step();
|
||||
});
|
||||
}
|
||||
else if (this._loop.arr.length > 0) {
|
||||
if (this._state.count > this._loop.arr.length - 1) {
|
||||
this._state.count = 0;
|
||||
this._loop.count++;
|
||||
}
|
||||
if (this._loop.max > 0 && this._loop.count > this._loop.max) {
|
||||
return this.stop();
|
||||
}
|
||||
log.info('step', { count: this._state.count, id: this._state.id });
|
||||
return this._loop.arr[this._state.count](() => {
|
||||
this._state.count++;
|
||||
this.step();
|
||||
});
|
||||
}
|
||||
else {
|
||||
return this.stop();
|
||||
}
|
||||
}
|
||||
else if (this._state.paused) {
|
||||
log.info('step', 'Sequence paused', { loop: this._loop.count, count: this._state.count });
|
||||
}
|
||||
else if (!this._state.active) {
|
||||
log.info('step', 'Sequence stopped', { loop: this._loop.count, count: this._state.count });
|
||||
}
|
||||
}
|
||||
else if (sequence._state.paused) {
|
||||
log.info('step', 'Sequence paused', { loop: sequence._loop.count, count: sequence._state.count });
|
||||
}
|
||||
else if (!sequence._state.active) {
|
||||
log.info('step', 'Sequence stopped', { loop: sequence._loop.count, count: sequence._state.count });
|
||||
}
|
||||
};
|
||||
module.exports = sequence;
|
||||
}
|
||||
module.exports = new Sequence();
|
||||
//# sourceMappingURL=index.js.map
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequence/index.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequence/index.ts"],"names":[],"mappings":"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"}
|
|
@ -0,0 +1 @@
|
|||
declare module 'delay';
|
|
@ -2,113 +2,118 @@
|
|||
|
||||
const uuid = require('uuid').v4
|
||||
const log = require('../log')('seq')
|
||||
import * as delay from 'delay'
|
||||
|
||||
/** Object sequence features */
|
||||
const sequence = {};
|
||||
|
||||
sequence._state = {
|
||||
arr : [],
|
||||
active : false,
|
||||
paused : false,
|
||||
frame: false,
|
||||
delay : false,
|
||||
count : 0,
|
||||
stop : null
|
||||
}
|
||||
|
||||
sequence._loop = {
|
||||
arr : [],
|
||||
count : 0,
|
||||
max : 0
|
||||
}
|
||||
|
||||
sequence.start = function (options, cb) {
|
||||
if (sequence._state.active) {
|
||||
return false
|
||||
class Sequence {
|
||||
private _state : any = {
|
||||
arr : [],
|
||||
active : false,
|
||||
paused : false,
|
||||
frame: false,
|
||||
delay : false,
|
||||
count : 0,
|
||||
stop : null
|
||||
}
|
||||
|
||||
sequence._state.active = true
|
||||
sequence._state.count = 0
|
||||
|
||||
if (options.arr) {
|
||||
sequence._state.arr = options.arr
|
||||
private _loop : any = {
|
||||
arr : [],
|
||||
count : 0,
|
||||
max : 0
|
||||
}
|
||||
|
||||
if (options.loop) {
|
||||
sequence._loop.arr = options.loop
|
||||
sequence._loop.count = 0
|
||||
constructor () {
|
||||
|
||||
}
|
||||
|
||||
if (options.maxLoop) {
|
||||
sequence._loop.max = options.maxLoop
|
||||
} else {
|
||||
sequence._loop.max = 0
|
||||
}
|
||||
sequence._state.stop = cb
|
||||
sequence.step()
|
||||
sequence._state.id = uuid()
|
||||
return sequence._state.id
|
||||
}
|
||||
|
||||
sequence.setStop = function () {
|
||||
sequence._state.active = false
|
||||
}
|
||||
|
||||
sequence.stop = function () {
|
||||
sequence._state.active = false
|
||||
sequence._state.count = 0
|
||||
sequence._state.arr = []
|
||||
|
||||
sequence._loop.count = 0
|
||||
sequence._loop.max = 0
|
||||
sequence._loop.arr = []
|
||||
|
||||
if (sequence._state.stop) sequence._state.stop()
|
||||
|
||||
sequence._state.stop = null
|
||||
}
|
||||
|
||||
sequence.pause = function () {
|
||||
sequence._state.paused = true
|
||||
}
|
||||
|
||||
sequence.resume = function () {
|
||||
sequence._state.paused = false
|
||||
sequence.step()
|
||||
}
|
||||
|
||||
sequence.step = function () {
|
||||
if (sequence._state.active && !sequence._state.paused) {
|
||||
if (sequence._state.arr.length > 0) {
|
||||
if (sequence._state.count > sequence._state.arr.length - 1) {
|
||||
return sequence.stop()
|
||||
}
|
||||
log.info('step', { count : sequence._state.count, id : sequence._state.id })
|
||||
return sequence._state.arr[sequence._state.count](() => {
|
||||
sequence._state.count++
|
||||
sequence.step()
|
||||
})
|
||||
} else if (sequence._loop.arr.length > 0) {
|
||||
if (sequence._state.count > sequence._loop.arr.length - 1) {
|
||||
sequence._state.count = 0
|
||||
sequence._loop.count++
|
||||
}
|
||||
if (sequence._loop.max > 0 && sequence._loop.count > sequence._loop.max) {
|
||||
return sequence.stop()
|
||||
}
|
||||
log.info('step', { count : sequence._state.count, id : sequence._state.id })
|
||||
return sequence._loop.arr[sequence._state.count](() => {
|
||||
sequence._state.count++
|
||||
sequence.step()
|
||||
})
|
||||
} else{
|
||||
return sequence.stop()
|
||||
public async start (options : any, cb : Function) {
|
||||
if (this._state.active) {
|
||||
return false
|
||||
}
|
||||
|
||||
this._state.active = true
|
||||
this._state.count = 0
|
||||
|
||||
if (options.arr) {
|
||||
this._state.arr = options.arr
|
||||
}
|
||||
|
||||
if (options.loop) {
|
||||
this._loop.arr = options.loop
|
||||
this._loop.count = 0
|
||||
}
|
||||
|
||||
if (options.maxLoop) {
|
||||
this._loop.max = options.maxLoop
|
||||
} else {
|
||||
this._loop.max = 0
|
||||
}
|
||||
this._state.stop = cb
|
||||
this.step()
|
||||
this._state.id = uuid()
|
||||
return this._state.id
|
||||
}
|
||||
|
||||
public setStop () {
|
||||
this._state.active = false
|
||||
}
|
||||
|
||||
public stop = function () {
|
||||
this._state.active = false
|
||||
this._state.count = 0
|
||||
this._state.arr = []
|
||||
|
||||
this._loop.count = 0
|
||||
this._loop.max = 0
|
||||
this._loop.arr = []
|
||||
|
||||
if (this._state.stop) this._state.stop()
|
||||
|
||||
this._state.stop = null
|
||||
}
|
||||
|
||||
public pause () {
|
||||
this._state.paused = true
|
||||
}
|
||||
|
||||
public resume () {
|
||||
this._state.paused = false
|
||||
this.step()
|
||||
}
|
||||
|
||||
public step () {
|
||||
if (this._state.active && !this._state.paused) {
|
||||
if (this._state.arr.length > 0) {
|
||||
if (this._state.count > this._state.arr.length - 1) {
|
||||
return this.stop()
|
||||
}
|
||||
log.info('step', { count : this._state.count, id : this._state.id })
|
||||
return this._state.arr[this._state.count](() => {
|
||||
this._state.count++
|
||||
this.step()
|
||||
})
|
||||
} else if (this._loop.arr.length > 0) {
|
||||
if (this._state.count > this._loop.arr.length - 1) {
|
||||
this._state.count = 0
|
||||
this._loop.count++
|
||||
}
|
||||
if (this._loop.max > 0 && this._loop.count > this._loop.max) {
|
||||
return this.stop()
|
||||
}
|
||||
log.info('step', { count : this._state.count, id : this._state.id })
|
||||
return this._loop.arr[this._state.count](() => {
|
||||
this._state.count++
|
||||
this.step()
|
||||
})
|
||||
} else{
|
||||
return this.stop()
|
||||
}
|
||||
} else if (this._state.paused) {
|
||||
log.info('step', 'Sequence paused', { loop : this._loop.count, count : this._state.count })
|
||||
} else if (!this._state.active) {
|
||||
log.info('step', 'Sequence stopped', { loop : this._loop.count, count : this._state.count })
|
||||
}
|
||||
} else if (sequence._state.paused) {
|
||||
log.info('step', 'Sequence paused', { loop : sequence._loop.count, count : sequence._state.count })
|
||||
} else if (!sequence._state.active) {
|
||||
log.info('step', 'Sequence stopped', { loop : sequence._loop.count, count : sequence._state.count })
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = sequence
|
||||
module.exports = new Sequence();
|
|
@ -11,7 +11,8 @@
|
|||
"outDir": "./lib/",
|
||||
"rootDir" : "./src/",
|
||||
"paths" : {
|
||||
"log" : ["./lib/log"]
|
||||
"log" : ["./lib/log"],
|
||||
"delay" : [ "./lib/delay"]
|
||||
}
|
||||
},
|
||||
"exclude" : [
|
||||
|
|
Loading…
Reference in New Issue