diff --git a/package-lock.json b/package-lock.json index 4d58650..da1777f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,22 @@ { "name": "varkeeper", - "version": "1.0.1", + "version": "2.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.0.1", + "version": "2.0.0", "license": "GPL", "devDependencies": { "chai": "^4.3.4", "chai-arrays": "^2.2.0", "gulp": "^4.0.2", "gulp-minify": "^3.1.0", - "mocha": "^9.0.2" + "mocha": "^9.0.2", + "prettier": "2.3.2" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/@ungap/promise-all-settled": { @@ -3626,6 +3630,18 @@ "node": ">=0.10.0" } }, + "node_modules/prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -7857,6 +7873,12 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, + "prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "dev": true + }, "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", diff --git a/package.json b/package.json index a0e7b44..504a3a8 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "chai-arrays": "^2.2.0", "gulp": "^4.0.2", "gulp-minify": "^3.1.0", - "mocha": "^9.0.2" + "mocha": "^9.0.2", + "prettier": "2.3.2" }, "scripts": { "test": "mocha", @@ -36,4 +37,5 @@ "homepage": "https://github.com/lucaspalomodevelop/varkeeper#readme", "engines": { "node": ">=4.0.0" - }} + } +} diff --git a/src/index.js b/src/index.js index 94a0d49..a1ad411 100644 --- a/src/index.js +++ b/src/index.js @@ -2,36 +2,40 @@ let props = []; let events = []; Prop = function (name, value = undefined) { - this._init(name, value); -} + this._init(name, value); +}; Prop.prototype = { + constructor: Prop, + name: null, + value: null, + _init: function (name, value = undefined) { + if ( + (value === undefined || value === null) && + props.find((x) => x.name === name) !== undefined + ) { + myprop = props.find((x) => x.name === name); + setprop(name, myprop.value); + this.value = myprop.value; + } else { + setprop(name, value); + this.value = value; + } - constructor: Prop, - name: null, - value: null, - _init: function (name, value = undefined) { - - if ((value === undefined || value === null) && props.find(x => x.name === name) !== undefined) { - myprop = props.find(x => x.name === name); - setprop(name, myprop.value); - this.value = myprop.value; - } - else { - - setprop(name, value); - this.value = value; - } - - - this.name = name; - - }, - set: function (value) { setprop(this.name, value); }, - get: function () { return getprop(this.name); }, - delete: function () { deleteprop(this.name); }, - on: function (eventname, callback) { on(this.name, eventname, callback); } -} - + this.name = name; + }, + set: function (value) { + setprop(this.name, value); + }, + get: function () { + return getprop(this.name); + }, + delete: function () { + deleteprop(this.name); + }, + on: function (eventname, callback) { + on(this.name, eventname, callback); + }, +}; /** * @param {String} name @@ -39,49 +43,43 @@ Prop.prototype = { * @public */ function setprop(name, value) { + if (value instanceof Function) { + value = value(); + } - if (value instanceof Function) { - value = value(); + var myprop = props.find((x) => x.name === name); + + if (myprop != undefined) { + on_function("set", name, value); + if (value !== myprop.value) { + myprop.value = value; + on_function("change", name, value); } - - - var myprop = props.find(x => x.name === name) - - - if (myprop != undefined) { - on_function('set', name, value); - if (value !== myprop.value) { - myprop.value = value; - on_function('change', name, value); - } - } - else { - props.push({ name: name, value: value }); - on_function('create', name, value); - } - + } else { + props.push({ name: name, value: value }); + on_function("create", name, value); + } } function getEventsFromTypeAndName(name, type) { - let event = []; - if (events.length > 0) { - event = events.filter(x => x.name === name && x.type === type) - } - return event; + let event = []; + if (events.length > 0) { + event = events.filter((x) => x.name === name && x.type === type); + } + return event; } /** * @param {String} name * @public */ function getprop(name) { - let result = props.find(x => x.name === name) - if (result != undefined) { - on_function('get', name, result.value); - return result.value; - } - else { - return undefined; - } + let result = props.find((x) => x.name === name); + if (result != undefined) { + on_function("get", name, result.value); + return result.value; + } else { + return undefined; + } } /** @@ -89,7 +87,7 @@ function getprop(name) { * @public */ function deleteprop(name) { - props = props.filter(x => x.name !== name); + props = props.filter((x) => x.name !== name); } /** @@ -99,26 +97,25 @@ function deleteprop(name) { * @public */ function on(eventname, name, callback) { - events.push({ type: eventname, callback: callback, name: name }); + events.push({ type: eventname, callback: callback, name: name }); } function on_function(eventname, name, value) { - let events = getEventsFromTypeAndName(name, eventname); - if (events.length > 0) { - switch (eventname) { - case 'change': - case 'create': - case 'get': - case 'set': - events.forEach(x => x.callback(value)); - break; + let events = getEventsFromTypeAndName(name, eventname); + if (events.length > 0) { + switch (eventname) { + case "change": + case "create": + case "get": + case "set": + events.forEach((x) => x.callback(value)); + break; - default: - events.forEach(x => x.callback({ err: 404, msg: 'Event not found' })); - break; - } + default: + events.forEach((x) => x.callback({ err: 404, msg: "Event not found" })); + break; } + } } - -module.exports = { setprop, getprop, deleteprop, on, Prop } \ No newline at end of file +module.exports = { setprop, getprop, deleteprop, on, Prop }; diff --git a/test/test.js b/test/test.js index a41c729..f9385dc 100644 --- a/test/test.js +++ b/test/test.js @@ -1,124 +1,136 @@ - let chai = require("chai"); let assert = chai.assert; let expect = chai.expect; -const assertArrays = require('chai-arrays'); +const assertArrays = require("chai-arrays"); chai.use(assertArrays); -let varkeeper = require("../src/index.js"); - -describe('varkeeper', () => { - describe('setprop', () => { - it('will set a prop', () => { - varkeeper.setprop('test', 'value'); - //let a = new varkeeper.Prop('test') - assert.equal(varkeeper.getprop("test"), 'value'); - }); - it('will set a prop as array', () => { - varkeeper.setprop('array', []); - expect(varkeeper.getprop('array')).to.be.an('array'); - }); - it('will set a prop as array with funtion return', () => { - varkeeper.setprop('array', () => { - return []; - } - ); - expect(varkeeper.getprop('array')).to.be.an('array'); - }); - it('will slice a array-prop', () => { - varkeeper.setprop('array', [1, 2, 3, 4]); - let x = varkeeper.getprop('array'); - let y = x.slice(0, 2); - expect(y).to.be.eql([1, 2]); - }); +let varkeeper = require("../src/index"); +describe("varkeeper", () => { + describe("setprop", () => { + it("will set a prop", () => { + varkeeper.setprop("test", "value"); + //let a = new varkeeper.Prop('test') + assert.equal(varkeeper.getprop("test"), "value"); }); - describe('getprop', () => { - it('will get prop from first test', () => { - assert.equal(varkeeper.getprop('test'), 'value'); - }); - it('will get not init prop', () => { - assert.equal(varkeeper.getprop('test1'), undefined); - }); + it("will set a prop as array", () => { + varkeeper.setprop("array", []); + expect(varkeeper.getprop("array")).to.be.an("array"); + }); + it("will set a prop as array with funtion return", () => { + varkeeper.setprop("array", () => { + return []; + }); + expect(varkeeper.getprop("array")).to.be.an("array"); + }); + it("will slice a array-prop", () => { + varkeeper.setprop("array", [1, 2, 3, 4]); + let x = varkeeper.getprop("array"); + let y = x.slice(0, 2); + expect(y).to.be.eql([1, 2]); + }); + }); + describe("getprop", () => { + it("will get prop from first test", () => { + assert.equal(varkeeper.getprop("test"), "value"); + }); + it("will get not init prop", () => { + assert.equal(varkeeper.getprop("test1"), undefined); + }); + }); + + describe("deleteprop", () => { + it("will detelte prop", () => { + varkeeper.setprop("test", "value"); + varkeeper.deleteprop("test"); + assert.equal(varkeeper.getprop("test"), undefined); + }); + }); + describe("onchange", () => { + it("will call funtion by change prop value", () => { + let a = false; + varkeeper.on("change", "test", () => { + a = true; + }); + varkeeper.setprop("test", "value"); + varkeeper.setprop("test", "value2"); + assert.equal(a, true); + }); + }); + + describe("varkeeper porp class", () => { + it(" will setprop an prop of same value must be the same #1", () => { + varkeeper.setprop("test", "value"); + let x = new varkeeper.Prop("test"); + assert.equal(x.get(), varkeeper.getprop("test")); }); - describe('deleteprop', () => { - it('will detelte prop', () => { - varkeeper.setprop('test', 'value'); - varkeeper.deleteprop('test'); - assert.equal(varkeeper.getprop('test'), undefined); - }); + it(" will setprop an prop of same value must be the same #2", () => { + let x = new varkeeper.Prop("test", "value"); + assert.equal(x.get(), varkeeper.getprop("test")); }); - describe('onchange', () => { - it('will call funtion by change prop value', () => { - let a = false; - varkeeper.on('change', 'test', () => { a = true }); - varkeeper.setprop('test', 'value'); - varkeeper.setprop('test', 'value2'); - assert.equal(a, true); - }); + }); + + describe("varkeeper porp class on set", () => { + it(" on set eq value", () => { + let result = false; + varkeeper.on("set", "setprop", (value) => { + result = true; + }); + let x = new varkeeper.Prop("setprop", "firstvalue"); + x.set("firstvalue"); + assert.equal(result, true); }); - describe('varkeeper porp class', () => { - it(" will setprop an prop of same value must be the same #1", () => { - varkeeper.setprop('test', 'value') - let x = new varkeeper.Prop('test'); - assert.equal(x.get(), varkeeper.getprop('test')); - }) + it(" on set not eq value", () => { + let result = false; + varkeeper.on("set", "setprop", (value) => { + result = true; + }); + let x = new varkeeper.Prop("setprop", "firstvalue"); + x.set("secoundvalue"); + assert.equal(result, true); + }); + }); - it(" will setprop an prop of same value must be the same #2", () => { - let x = new varkeeper.Prop('test', 'value'); - assert.equal(x.get(), varkeeper.getprop('test')); - }) + describe("varkeeper porp class on change", () => { + it(" on change eq value", () => { + let result = true; + varkeeper.on("change", "changeprop", (value) => { + result = false; + }); + let x = new varkeeper.Prop("changeprop", "firstvalue"); + x.set("firstvalue"); + assert.equal(result, true); + }); + it(" on change not eq value", () => { + let result = false; + let x = new varkeeper.Prop("changeprop", "firstvalue"); + varkeeper.on("change", "changeprop", (value) => { + result = true; + }); + x.set("secoundvalue"); + assert.equal(result, true); + }); + }); - }) + describe("varkeeper porp class on create", () => { + it(" on create eq value", () => { + let result = false; + varkeeper.on("create", "createprop", (value) => { + result = true; + }); + let x = varkeeper.setprop("createprop"); + assert.equal(result, true); + }); - - describe('varkeeper porp class on set', () => { - it(" on set eq value", () => { - let result = false - varkeeper.on('set', 'setprop', (value) => { - result = true; - }); - let x = new varkeeper.Prop("setprop", "firstvalue"); - x.set("firstvalue"); - assert.equal(result, true); - }) - - it(" on set not eq value", () => { - let result = false - varkeeper.on('set', 'setprop', (value) => { - result = true; - }); - let x = new varkeeper.Prop("setprop", "firstvalue"); - x.set("secoundvalue"); - assert.equal(result, true); - }) - - }) - - - describe('varkeeper porp class on change', () => { - it(" on set eq value", () => { - let result = true; - varkeeper.on('change', 'changeprop', (value) => { - result = false; - }); - let x = new varkeeper.Prop("changeprop", "firstvalue"); - x.set("firstvalue"); - assert.equal(result, true); - }) - - it(" on set not eq value", () => { - let result = false - let x = new varkeeper.Prop("changeprop", "firstvalue"); - varkeeper.on('change', 'changeprop', (value) => { - result = true; - }); - x.set("secoundvalue"); - assert.equal(result, true); - }) - - }) - -}); \ No newline at end of file + it(" on create eq value OOP", () => { + let result = false; + varkeeper.on("create", "createpropoop", (value) => { + result = true; + }); + let x = new varkeeper.Prop("createpropoop", "firstvalue"); + assert.equal(result, true); + }); + }); +});