@urso/core 0.3.6 → 0.3.7

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.
Files changed (143) hide show
  1. package/.babelrc +11 -11
  2. package/README.md +10 -10
  3. package/build/js/index.js +1 -1
  4. package/build/js/index.js.LICENSE.txt +29 -29
  5. package/package.json +51 -51
  6. package/src/js/app.js +77 -77
  7. package/src/js/components/_info.js +8 -8
  8. package/src/js/components/base/_info.js +3 -3
  9. package/src/js/components/base/controller.js +78 -78
  10. package/src/js/components/debug/_info.js +7 -7
  11. package/src/js/components/debug/controller.js +38 -38
  12. package/src/js/components/debug/coords.js +23 -23
  13. package/src/js/components/debug/fps.js +34 -34
  14. package/src/js/components/debug/template.js +55 -55
  15. package/src/js/components/debug/timescale.js +60 -60
  16. package/src/js/components/deviceRotate/_info.js +3 -3
  17. package/src/js/components/deviceRotate/controller.js +86 -86
  18. package/src/js/components/fullscreen/_info.js +6 -6
  19. package/src/js/components/fullscreen/android.js +104 -104
  20. package/src/js/components/fullscreen/controller.js +64 -64
  21. package/src/js/components/fullscreen/desktop.js +49 -49
  22. package/src/js/components/fullscreen/ios.js +111 -111
  23. package/src/js/components/loader/_info.js +4 -4
  24. package/src/js/components/loader/controller.js +66 -66
  25. package/src/js/components/loader/template.js +70 -70
  26. package/src/js/components/soundInitialPopup/_info.js +3 -3
  27. package/src/js/components/soundInitialPopup/controller.js +42 -42
  28. package/src/js/components/soundInitialPopup/template.js +109 -109
  29. package/src/js/components/stateDriven/_info.js +3 -3
  30. package/src/js/components/stateDriven/controller.js +118 -96
  31. package/src/js/config/load.js +5 -5
  32. package/src/js/config/main.js +10 -10
  33. package/src/js/extra/_info.js +21 -21
  34. package/src/js/extra/browserEvents.js +32 -32
  35. package/src/js/index.js +8 -8
  36. package/src/js/lib/_info.js +13 -13
  37. package/src/js/lib/cache.js +98 -98
  38. package/src/js/lib/composition.js +89 -89
  39. package/src/js/lib/device.js +1276 -1276
  40. package/src/js/lib/helper.js +539 -539
  41. package/src/js/lib/loader.js +121 -121
  42. package/src/js/lib/localData.js +15 -15
  43. package/src/js/lib/logger.js +22 -22
  44. package/src/js/lib/math.js +35 -35
  45. package/src/js/lib/objectPool.js +54 -54
  46. package/src/js/lib/time.js +18 -18
  47. package/src/js/lib/tween.js +147 -147
  48. package/src/js/modules/_info.js +11 -11
  49. package/src/js/modules/assets/_info.js +7 -7
  50. package/src/js/modules/assets/baseModel.js +18 -18
  51. package/src/js/modules/assets/config.js +35 -35
  52. package/src/js/modules/assets/controller.js +39 -39
  53. package/src/js/modules/assets/models/_info.js +11 -11
  54. package/src/js/modules/assets/models/atlas.js +8 -8
  55. package/src/js/modules/assets/models/audiosprite.js +27 -27
  56. package/src/js/modules/assets/models/bitmapFont.js +8 -8
  57. package/src/js/modules/assets/models/container.js +16 -16
  58. package/src/js/modules/assets/models/font.js +8 -8
  59. package/src/js/modules/assets/models/image.js +14 -14
  60. package/src/js/modules/assets/models/json.js +8 -8
  61. package/src/js/modules/assets/models/sound.js +14 -14
  62. package/src/js/modules/assets/models/spine.js +8 -8
  63. package/src/js/modules/assets/service.js +327 -327
  64. package/src/js/modules/instances/_info.js +3 -3
  65. package/src/js/modules/instances/controller.js +219 -219
  66. package/src/js/modules/logic/_info.js +4 -4
  67. package/src/js/modules/logic/config/_info.js +2 -2
  68. package/src/js/modules/logic/config/sounds.js +23 -23
  69. package/src/js/modules/logic/controller.js +48 -48
  70. package/src/js/modules/logic/sounds.js +96 -96
  71. package/src/js/modules/objects/_info.js +11 -11
  72. package/src/js/modules/objects/baseModel.js +161 -161
  73. package/src/js/modules/objects/cache.js +99 -99
  74. package/src/js/modules/objects/controller.js +121 -121
  75. package/src/js/modules/objects/create.js +230 -230
  76. package/src/js/modules/objects/find.js +140 -140
  77. package/src/js/modules/objects/models/_info.js +24 -24
  78. package/src/js/modules/objects/models/atlasImage.js +50 -50
  79. package/src/js/modules/objects/models/bitmapText.js +23 -23
  80. package/src/js/modules/objects/models/button.js +184 -184
  81. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  82. package/src/js/modules/objects/models/checkbox.js +96 -96
  83. package/src/js/modules/objects/models/collection.js +54 -54
  84. package/src/js/modules/objects/models/component.js +44 -44
  85. package/src/js/modules/objects/models/container.js +19 -19
  86. package/src/js/modules/objects/models/emitter.js +54 -54
  87. package/src/js/modules/objects/models/graphics.js +38 -38
  88. package/src/js/modules/objects/models/group.js +19 -19
  89. package/src/js/modules/objects/models/hitArea.js +104 -104
  90. package/src/js/modules/objects/models/image.js +34 -34
  91. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  92. package/src/js/modules/objects/models/mask.js +38 -38
  93. package/src/js/modules/objects/models/scrollbox.js +61 -61
  94. package/src/js/modules/objects/models/slider.js +199 -199
  95. package/src/js/modules/objects/models/spine.js +89 -89
  96. package/src/js/modules/objects/models/text.js +38 -38
  97. package/src/js/modules/objects/models/textInput.js +66 -66
  98. package/src/js/modules/objects/models/toggle.js +178 -178
  99. package/src/js/modules/objects/models/world.js +19 -19
  100. package/src/js/modules/objects/propertyAdapter.js +421 -421
  101. package/src/js/modules/objects/proxy.js +182 -182
  102. package/src/js/modules/objects/styles.js +116 -116
  103. package/src/js/modules/observer/_info.js +4 -4
  104. package/src/js/modules/observer/controller.js +99 -99
  105. package/src/js/modules/observer/events.js +36 -36
  106. package/src/js/modules/scenes/_info.js +8 -8
  107. package/src/js/modules/scenes/controller.js +42 -42
  108. package/src/js/modules/scenes/model.js +35 -35
  109. package/src/js/modules/scenes/pixiWrapper.js +194 -194
  110. package/src/js/modules/scenes/resolutions.js +168 -168
  111. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  112. package/src/js/modules/scenes/service.js +92 -92
  113. package/src/js/modules/soundManager/_info.js +3 -3
  114. package/src/js/modules/soundManager/controller.js +99 -99
  115. package/src/js/modules/soundManager/soundSprite.js +202 -202
  116. package/src/js/modules/statesManager/_info.js +12 -12
  117. package/src/js/modules/statesManager/action.js +60 -60
  118. package/src/js/modules/statesManager/actions/_info.js +3 -3
  119. package/src/js/modules/statesManager/all.js +23 -23
  120. package/src/js/modules/statesManager/configStates.js +71 -71
  121. package/src/js/modules/statesManager/controller.js +170 -140
  122. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  123. package/src/js/modules/statesManager/helper.js +27 -27
  124. package/src/js/modules/statesManager/race.js +75 -75
  125. package/src/js/modules/statesManager/sequence.js +47 -47
  126. package/src/js/modules/template/_info.js +6 -6
  127. package/src/js/modules/template/controller.js +28 -28
  128. package/src/js/modules/template/model.js +11 -11
  129. package/src/js/modules/template/service.js +125 -125
  130. package/src/js/modules/template/types.js +44 -44
  131. package/src/js/modules/transport/_info.js +8 -8
  132. package/src/js/modules/transport/baseConnectionType.js +24 -24
  133. package/src/js/modules/transport/config.js +13 -13
  134. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  135. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  136. package/src/js/modules/transport/connectionTypes/xhr.js +44 -44
  137. package/src/js/modules/transport/controller.js +48 -48
  138. package/src/js/modules/transport/decorator.js +17 -17
  139. package/src/js/modules/transport/service.js +153 -153
  140. package/src/js/templates/_info.js +4 -4
  141. package/src/js/templates/groups/_info.js +1 -1
  142. package/src/js/templates/scenes/_info.js +1 -1
  143. package/webpack.config.js +47 -47
@@ -1,121 +1,121 @@
1
- class LibLoader {
2
- constructor() {
3
- this._isRunning = false;
4
- this._assetsQuery = [];
5
- this._onLoadUpdate = () => {};
6
- };
7
-
8
- isRunning() {
9
- return this._isRunning;
10
- };
11
-
12
- /**
13
- *
14
- * @param {Object} asset - {type: 1, key: "somekey", path: "somepath"}
15
- */
16
- addAsset(asset) {
17
- this._assetsQuery.push(asset);
18
- }
19
-
20
- /**
21
- * gets part of loading path
22
- */
23
- _getLoadPath(asset){
24
- const { path } = asset;
25
-
26
- if(!Urso.config.useBinPath) {
27
- return `assets/${path}`;
28
- }
29
-
30
- const quality = Urso.getInstance('Modules.Assets.Service').getQuality();
31
- const splitted = path.split('/');
32
-
33
- if (splitted[0] === 'images') {
34
- splitted.splice(1, 0, quality);
35
- }
36
-
37
- return `bin/${splitted.join('/')}`;
38
- };
39
-
40
- /**
41
- * store loaded asset in cache
42
- */
43
- _storeAsset(asset, resource) {
44
- if (resource.error) {
45
- return Urso.logger.warn('LibLoader error: ', resource.error, asset);
46
- }
47
-
48
- switch (asset.type) {
49
- case Urso.types.assets.ATLAS:
50
- Urso.cache.addAtlas(asset.key, resource);
51
- break;
52
- case Urso.types.assets.BITMAPFONT:
53
- Urso.cache.addBitmapFont(asset.key, resource);
54
- break;
55
- case Urso.types.assets.FONT:
56
- Urso.cache.addFile(asset.key, resource);
57
- break;
58
- case Urso.types.assets.CONTAINER:
59
- Urso.cache.addContainer(asset.key, resource);
60
- break;
61
- case Urso.types.assets.IMAGE:
62
- Urso.cache.addImage(asset.key, resource);
63
- break;
64
- case Urso.types.assets.JSON:
65
- Urso.cache.addJson(asset.key, resource);
66
- break;
67
- case Urso.types.assets.SOUND:
68
- Urso.cache.addSound(asset.key, resource);
69
- break;
70
- case Urso.types.assets.SPINE:
71
- Urso.cache.addSpine(asset.key, resource);
72
- break;
73
- default:
74
- break;
75
- }
76
- }
77
-
78
- /**
79
- * setup onload callback
80
- * @param {Function} onLoad
81
- */
82
- setOnLoadUpdate(onLoadUpdate){
83
- if(onLoadUpdate)
84
- this._onLoadUpdate = onLoadUpdate;
85
- }
86
-
87
- /**
88
- * start loading assets from assets query
89
- * @param {Function} callback
90
- */
91
- start(callback) {
92
- if (this._isRunning)
93
- return false;
94
-
95
- this._isRunning = true;
96
-
97
- const loader = new PIXI.Loader();
98
- this._assetsQuery.forEach(asset => {
99
- // TODO: check to load
100
-
101
- const params = asset.params || false; // TODO: Set params field in base mode
102
- const loadPath = this._getLoadPath(asset);
103
- loader.add(asset.key, loadPath, params, (resource) => this._storeAsset(asset, resource)) //TODO set assets resolution instead _processLoadedImage baseTexture resolution
104
- });
105
-
106
- this._onLoadUpdate({progress: 0});
107
- loader.onProgress.add(this._onLoadUpdate);
108
-
109
- loader.load(function (loader, resources) {
110
- this._onLoadUpdate({progress: 100});
111
-
112
- callback();
113
-
114
- this._assetsQuery = [];
115
- this._isRunning = false;
116
- }.bind(this));
117
- };
118
-
119
- };
120
-
121
- module.exports = LibLoader;
1
+ class LibLoader {
2
+ constructor() {
3
+ this._isRunning = false;
4
+ this._assetsQuery = [];
5
+ this._onLoadUpdate = () => {};
6
+ };
7
+
8
+ isRunning() {
9
+ return this._isRunning;
10
+ };
11
+
12
+ /**
13
+ *
14
+ * @param {Object} asset - {type: 1, key: "somekey", path: "somepath"}
15
+ */
16
+ addAsset(asset) {
17
+ this._assetsQuery.push(asset);
18
+ }
19
+
20
+ /**
21
+ * gets part of loading path
22
+ */
23
+ _getLoadPath(asset){
24
+ const { path } = asset;
25
+
26
+ if(!Urso.config.useBinPath) {
27
+ return `assets/${path}`;
28
+ }
29
+
30
+ const quality = Urso.getInstance('Modules.Assets.Service').getQuality();
31
+ const splitted = path.split('/');
32
+
33
+ if (splitted[0] === 'images') {
34
+ splitted.splice(1, 0, quality);
35
+ }
36
+
37
+ return `bin/${splitted.join('/')}`;
38
+ };
39
+
40
+ /**
41
+ * store loaded asset in cache
42
+ */
43
+ _storeAsset(asset, resource) {
44
+ if (resource.error) {
45
+ return Urso.logger.warn('LibLoader error: ', resource.error, asset);
46
+ }
47
+
48
+ switch (asset.type) {
49
+ case Urso.types.assets.ATLAS:
50
+ Urso.cache.addAtlas(asset.key, resource);
51
+ break;
52
+ case Urso.types.assets.BITMAPFONT:
53
+ Urso.cache.addBitmapFont(asset.key, resource);
54
+ break;
55
+ case Urso.types.assets.FONT:
56
+ Urso.cache.addFile(asset.key, resource);
57
+ break;
58
+ case Urso.types.assets.CONTAINER:
59
+ Urso.cache.addContainer(asset.key, resource);
60
+ break;
61
+ case Urso.types.assets.IMAGE:
62
+ Urso.cache.addImage(asset.key, resource);
63
+ break;
64
+ case Urso.types.assets.JSON:
65
+ Urso.cache.addJson(asset.key, resource);
66
+ break;
67
+ case Urso.types.assets.SOUND:
68
+ Urso.cache.addSound(asset.key, resource);
69
+ break;
70
+ case Urso.types.assets.SPINE:
71
+ Urso.cache.addSpine(asset.key, resource);
72
+ break;
73
+ default:
74
+ break;
75
+ }
76
+ }
77
+
78
+ /**
79
+ * setup onload callback
80
+ * @param {Function} onLoad
81
+ */
82
+ setOnLoadUpdate(onLoadUpdate){
83
+ if(onLoadUpdate)
84
+ this._onLoadUpdate = onLoadUpdate;
85
+ }
86
+
87
+ /**
88
+ * start loading assets from assets query
89
+ * @param {Function} callback
90
+ */
91
+ start(callback) {
92
+ if (this._isRunning)
93
+ return false;
94
+
95
+ this._isRunning = true;
96
+
97
+ const loader = new PIXI.Loader();
98
+ this._assetsQuery.forEach(asset => {
99
+ // TODO: check to load
100
+
101
+ const params = asset.params || false; // TODO: Set params field in base mode
102
+ const loadPath = this._getLoadPath(asset);
103
+ loader.add(asset.key, loadPath, params, (resource) => this._storeAsset(asset, resource)) //TODO set assets resolution instead _processLoadedImage baseTexture resolution
104
+ });
105
+
106
+ this._onLoadUpdate({progress: 0});
107
+ loader.onProgress.add(this._onLoadUpdate);
108
+
109
+ loader.load(function (loader, resources) {
110
+ this._onLoadUpdate({progress: 100});
111
+
112
+ callback();
113
+
114
+ this._assetsQuery = [];
115
+ this._isRunning = false;
116
+ }.bind(this));
117
+ };
118
+
119
+ };
120
+
121
+ module.exports = LibLoader;
@@ -1,16 +1,16 @@
1
- class LibLocalData {
2
- constructor(){
3
- this._data = {};
4
- }
5
-
6
- get (name) {
7
- return Urso.helper.recursiveGet(name, this._data);
8
- };
9
-
10
- set (key, value) {
11
- Urso.helper.recursiveSet(key, value, this._data);
12
- return true;
13
- };
14
- }
15
-
1
+ class LibLocalData {
2
+ constructor(){
3
+ this._data = {};
4
+ }
5
+
6
+ get (name) {
7
+ return Urso.helper.recursiveGet(name, this._data);
8
+ };
9
+
10
+ set (key, value) {
11
+ Urso.helper.recursiveSet(key, value, this._data);
12
+ return true;
13
+ };
14
+ }
15
+
16
16
  module.exports = LibLocalData;
@@ -1,23 +1,23 @@
1
- class LibLogger {
2
-
3
- constructor() {
4
- //log
5
- window.log = console.log.bind(console); //todo this.log ?!
6
- }
7
-
8
- //todo set log level (dev/prod)
9
-
10
- log() {
11
- console.log.apply(console, arguments);
12
- }
13
-
14
- warn() {
15
- console.warn.apply(this, arguments);
16
- }
17
-
18
- error() {
19
- console.error.apply(this, arguments);
20
- }
21
- }
22
-
1
+ class LibLogger {
2
+
3
+ constructor() {
4
+ //log
5
+ window.log = console.log.bind(console); //todo this.log ?!
6
+ }
7
+
8
+ //todo set log level (dev/prod)
9
+
10
+ log() {
11
+ console.log.apply(console, arguments);
12
+ }
13
+
14
+ warn() {
15
+ console.warn.apply(this, arguments);
16
+ }
17
+
18
+ error() {
19
+ console.error.apply(this, arguments);
20
+ }
21
+ }
22
+
23
23
  module.exports = LibLogger;
@@ -1,36 +1,36 @@
1
- class LibMath {
2
- /**
3
- * validate number to make it value between min and max values
4
- * @param {Number} num
5
- * @param {Number} min
6
- * @param {Number} max
7
- */
8
- intMakeBetween(num, min, max) {
9
- return Math.max.apply(Math, [min, Math.min.apply(Math, [max, num])]);
10
- }
11
-
12
- getRandomInt(max) {
13
- return this.getRandomIntBetween(0, max);
14
- }
15
-
16
- getRandomIntBetween(min, max) {
17
- return Math.floor(Math.random() * (max - min + 1)) + min;
18
- }
19
-
20
- /**
21
- * round float number to digits count
22
- * @param {Number} num
23
- * @param {Number} digits - rounding digits count
24
- * @returns {Number}
25
- */
26
- roundToDigits(num, digits) {
27
- if (isNaN(num) || isNaN(digits))
28
- return false;
29
-
30
- const pow = Math.pow(10, digits);
31
- return Math.round(num * pow) / pow;
32
- }
33
-
34
- }
35
-
1
+ class LibMath {
2
+ /**
3
+ * validate number to make it value between min and max values
4
+ * @param {Number} num
5
+ * @param {Number} min
6
+ * @param {Number} max
7
+ */
8
+ intMakeBetween(num, min, max) {
9
+ return Math.max.apply(Math, [min, Math.min.apply(Math, [max, num])]);
10
+ }
11
+
12
+ getRandomInt(max) {
13
+ return this.getRandomIntBetween(0, max);
14
+ }
15
+
16
+ getRandomIntBetween(min, max) {
17
+ return Math.floor(Math.random() * (max - min + 1)) + min;
18
+ }
19
+
20
+ /**
21
+ * round float number to digits count
22
+ * @param {Number} num
23
+ * @param {Number} digits - rounding digits count
24
+ * @returns {Number}
25
+ */
26
+ roundToDigits(num, digits) {
27
+ if (isNaN(num) || isNaN(digits))
28
+ return false;
29
+
30
+ const pow = Math.pow(10, digits);
31
+ return Math.round(num * pow) / pow;
32
+ }
33
+
34
+ }
35
+
36
36
  module.exports = LibMath;
@@ -1,55 +1,55 @@
1
- class ObjectPoolMember {
2
- free = true;
3
- data = null;
4
-
5
- constructor(data) {
6
- this.data = data
7
- }
8
- }
9
-
10
- class LibObjectPool {
11
- pool = {};
12
- resetFunction = () => { }
13
- constructorFunction = () => { }
14
-
15
- constructor(constructorFunction, resetFunction = (obj) => obj, initialSize = 0) { //todo initialSize
16
- this.resetFunction = resetFunction;
17
- this.constructorFunction = constructorFunction;
18
- }
19
-
20
- getElement(key = 'default', additionalCreateArguments) {
21
- this._checkPoolKey(key);
22
- const poolArray = this.pool[key];
23
-
24
-
25
- for (let i = 0; i < poolArray.length; i++) {
26
- if (poolArray[i].free) {
27
- poolArray[i].free = false;
28
- return poolArray[i];
29
- }
30
- }
31
-
32
- const newObj = this._createElement(key, additionalCreateArguments);
33
- newObj.free = false;
34
- return newObj;
35
- }
36
-
37
- putElement(element) {
38
- element.free = true;
39
- this.resetFunction(element.data);
40
- }
41
-
42
- _createElement(key, additionalCreateArguments = null) {
43
- const newObj = this.resetFunction(this.constructorFunction(key, additionalCreateArguments));
44
- const poolMember = new ObjectPoolMember(newObj);
45
- this.pool[key].push(poolMember);
46
- return poolMember;
47
- }
48
-
49
- _checkPoolKey(key) {
50
- if (!this.pool[key])
51
- this.pool[key] = [];
52
- }
53
- }
54
-
1
+ class ObjectPoolMember {
2
+ free = true;
3
+ data = null;
4
+
5
+ constructor(data) {
6
+ this.data = data
7
+ }
8
+ }
9
+
10
+ class LibObjectPool {
11
+ pool = {};
12
+ resetFunction = () => { }
13
+ constructorFunction = () => { }
14
+
15
+ constructor(constructorFunction, resetFunction = (obj) => obj, initialSize = 0) { //todo initialSize
16
+ this.resetFunction = resetFunction;
17
+ this.constructorFunction = constructorFunction;
18
+ }
19
+
20
+ getElement(key = 'default', additionalCreateArguments) {
21
+ this._checkPoolKey(key);
22
+ const poolArray = this.pool[key];
23
+
24
+
25
+ for (let i = 0; i < poolArray.length; i++) {
26
+ if (poolArray[i].free) {
27
+ poolArray[i].free = false;
28
+ return poolArray[i];
29
+ }
30
+ }
31
+
32
+ const newObj = this._createElement(key, additionalCreateArguments);
33
+ newObj.free = false;
34
+ return newObj;
35
+ }
36
+
37
+ putElement(element) {
38
+ element.free = true;
39
+ this.resetFunction(element.data);
40
+ }
41
+
42
+ _createElement(key, additionalCreateArguments = null) {
43
+ const newObj = this.resetFunction(this.constructorFunction(key, additionalCreateArguments));
44
+ const poolMember = new ObjectPoolMember(newObj);
45
+ this.pool[key].push(poolMember);
46
+ return poolMember;
47
+ }
48
+
49
+ _checkPoolKey(key) {
50
+ if (!this.pool[key])
51
+ this.pool[key] = [];
52
+ }
53
+ }
54
+
55
55
  module.exports = LibObjectPool;
@@ -1,19 +1,19 @@
1
- class LibTime {
2
-
3
- get(foo) {
4
- if (!foo)
5
- foo = new Date();
6
-
7
- return foo.getTime();
8
- }
9
-
10
- getUnixtime(foo) {
11
- if (!foo)
12
- foo = new Date();
13
-
14
- var unixtime_ms = foo.getTime();
15
- return ~~(unixtime_ms / 1e3);
16
- }
17
- }
18
-
1
+ class LibTime {
2
+
3
+ get(foo) {
4
+ if (!foo)
5
+ foo = new Date();
6
+
7
+ return foo.getTime();
8
+ }
9
+
10
+ getUnixtime(foo) {
11
+ if (!foo)
12
+ foo = new Date();
13
+
14
+ var unixtime_ms = foo.getTime();
15
+ return ~~(unixtime_ms / 1e3);
16
+ }
17
+ }
18
+
19
19
  module.exports = LibTime;