Fixed #1 - Fixed the whatsnew-** script for loading release notes into builds
Added test to ensure that release notes are parsed properly Updated to latest dependencies to fix security vulnerability Updated GH Actions Workflow to run test before updating tag Updated README.md to reflect proper whatsnew documentation.
This commit is contained in:
45
node_modules/es-abstract/helpers/DefineOwnProperty.js
generated
vendored
Normal file
45
node_modules/es-abstract/helpers/DefineOwnProperty.js
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
|
||||
|
||||
if ($defineProperty) {
|
||||
try {
|
||||
$defineProperty({}, 'a', { value: 1 });
|
||||
} catch (e) {
|
||||
// IE 8 has a broken defineProperty
|
||||
$defineProperty = null;
|
||||
}
|
||||
}
|
||||
|
||||
var callBound = require('../helpers/callBound');
|
||||
|
||||
var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
|
||||
|
||||
// eslint-disable-next-line max-params
|
||||
module.exports = function DefineOwnProperty(IsDataDescriptor, SameValue, FromPropertyDescriptor, O, P, desc) {
|
||||
if (!$defineProperty) {
|
||||
if (!IsDataDescriptor(desc)) {
|
||||
// ES3 does not support getters/setters
|
||||
return false;
|
||||
}
|
||||
if (!desc['[[Configurable]]'] || !desc['[[Writable]]']) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// fallback for ES3
|
||||
if (P in O && $isEnumerable(O, P) !== !!desc['[[Enumerable]]']) {
|
||||
// a non-enumerable existing property
|
||||
return false;
|
||||
}
|
||||
|
||||
// property does not exist at all, or exists but is enumerable
|
||||
var V = desc['[[Value]]'];
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
O[P] = V; // will use [[Define]]
|
||||
return SameValue(O[P], V);
|
||||
}
|
||||
$defineProperty(O, P, FromPropertyDescriptor(desc));
|
||||
return true;
|
||||
};
|
||||
21
node_modules/es-abstract/helpers/OwnPropertyKeys.js
generated
vendored
Normal file
21
node_modules/es-abstract/helpers/OwnPropertyKeys.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var callBind = require('./callBind');
|
||||
var callBound = require('./callBound');
|
||||
|
||||
var $pushApply = callBind.apply(GetIntrinsic('%Array.prototype.push%'));
|
||||
var $SymbolValueOf = callBound('Symbol.prototype.valueOf', true);
|
||||
var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
|
||||
var $gOPS = $SymbolValueOf ? GetIntrinsic('%Object.getOwnPropertySymbols%') : null;
|
||||
|
||||
var keys = require('object-keys');
|
||||
|
||||
module.exports = function OwnPropertyKeys(source) {
|
||||
var ownKeys = ($gOPN || keys)(source);
|
||||
if ($gOPS) {
|
||||
$pushApply(ownKeys, $gOPS(source));
|
||||
}
|
||||
return ownKeys;
|
||||
};
|
||||
67
node_modules/es-abstract/helpers/assertRecord.js
generated
vendored
67
node_modules/es-abstract/helpers/assertRecord.js
generated
vendored
@@ -8,42 +8,41 @@ var $SyntaxError = GetIntrinsic('%SyntaxError%');
|
||||
var has = require('has');
|
||||
|
||||
var predicates = {
|
||||
// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type
|
||||
'Property Descriptor': function isPropertyDescriptor(ES, Desc) {
|
||||
if (ES.Type(Desc) !== 'Object') {
|
||||
return false;
|
||||
}
|
||||
var allowed = {
|
||||
'[[Configurable]]': true,
|
||||
'[[Enumerable]]': true,
|
||||
'[[Get]]': true,
|
||||
'[[Set]]': true,
|
||||
'[[Value]]': true,
|
||||
'[[Writable]]': true
|
||||
};
|
||||
// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type
|
||||
'Property Descriptor': function isPropertyDescriptor(Type, Desc) {
|
||||
if (Type(Desc) !== 'Object') {
|
||||
return false;
|
||||
}
|
||||
var allowed = {
|
||||
'[[Configurable]]': true,
|
||||
'[[Enumerable]]': true,
|
||||
'[[Get]]': true,
|
||||
'[[Set]]': true,
|
||||
'[[Value]]': true,
|
||||
'[[Writable]]': true
|
||||
};
|
||||
|
||||
for (var key in Desc) { // eslint-disable-line
|
||||
if (has(Desc, key) && !allowed[key]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
for (var key in Desc) { // eslint-disable-line
|
||||
if (has(Desc, key) && !allowed[key]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
var isData = has(Desc, '[[Value]]');
|
||||
var IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');
|
||||
if (isData && IsAccessor) {
|
||||
throw new $TypeError('Property Descriptors may not be both accessor and data descriptors');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
var isData = has(Desc, '[[Value]]');
|
||||
var IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');
|
||||
if (isData && IsAccessor) {
|
||||
throw new $TypeError('Property Descriptors may not be both accessor and data descriptors');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = function assertRecord(ES, recordType, argumentName, value) {
|
||||
var predicate = predicates[recordType];
|
||||
if (typeof predicate !== 'function') {
|
||||
throw new $SyntaxError('unknown record type: ' + recordType);
|
||||
}
|
||||
if (!predicate(ES, value)) {
|
||||
throw new $TypeError(argumentName + ' must be a ' + recordType);
|
||||
}
|
||||
console.log(predicate(ES, value), value);
|
||||
module.exports = function assertRecord(Type, recordType, argumentName, value) {
|
||||
var predicate = predicates[recordType];
|
||||
if (typeof predicate !== 'function') {
|
||||
throw new $SyntaxError('unknown record type: ' + recordType);
|
||||
}
|
||||
if (!predicate(Type, value)) {
|
||||
throw new $TypeError(argumentName + ' must be a ' + recordType);
|
||||
}
|
||||
};
|
||||
|
||||
11
node_modules/es-abstract/helpers/assign.js
generated
vendored
11
node_modules/es-abstract/helpers/assign.js
generated
vendored
@@ -1,15 +1,20 @@
|
||||
var bind = require('function-bind');
|
||||
var has = bind.call(Function.call, Object.prototype.hasOwnProperty);
|
||||
'use strict';
|
||||
|
||||
var $assign = Object.assign;
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var has = require('has');
|
||||
|
||||
var $assign = GetIntrinsic('%Object%').assign;
|
||||
|
||||
module.exports = function assign(target, source) {
|
||||
if ($assign) {
|
||||
return $assign(target, source);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (var key in source) {
|
||||
if (has(source, key)) {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
target[key] = source[key];
|
||||
}
|
||||
}
|
||||
|
||||
17
node_modules/es-abstract/helpers/callBind.js
generated
vendored
Normal file
17
node_modules/es-abstract/helpers/callBind.js
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
'use strict';
|
||||
|
||||
var bind = require('function-bind');
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var $Function = GetIntrinsic('%Function%');
|
||||
var $apply = $Function.apply;
|
||||
var $call = $Function.call;
|
||||
|
||||
module.exports = function callBind() {
|
||||
return bind.apply($call, arguments);
|
||||
};
|
||||
|
||||
module.exports.apply = function applyBind() {
|
||||
return bind.apply($apply, arguments);
|
||||
};
|
||||
15
node_modules/es-abstract/helpers/callBound.js
generated
vendored
Normal file
15
node_modules/es-abstract/helpers/callBound.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var callBind = require('./callBind');
|
||||
|
||||
var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));
|
||||
|
||||
module.exports = function callBoundIntrinsic(name, allowMissing) {
|
||||
var intrinsic = GetIntrinsic(name, !!allowMissing);
|
||||
if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {
|
||||
return callBind(intrinsic);
|
||||
}
|
||||
return intrinsic;
|
||||
};
|
||||
10
node_modules/es-abstract/helpers/every.js
generated
vendored
Normal file
10
node_modules/es-abstract/helpers/every.js
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function every(array, predicate) {
|
||||
for (var i = 0; i < array.length; i += 1) {
|
||||
if (!predicate(array[i], i, array)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
2
node_modules/es-abstract/helpers/forEach.js
generated
vendored
2
node_modules/es-abstract/helpers/forEach.js
generated
vendored
@@ -2,6 +2,6 @@
|
||||
|
||||
module.exports = function forEach(array, callback) {
|
||||
for (var i = 0; i < array.length; i += 1) {
|
||||
callback(array[i], i, array);
|
||||
callback(array[i], i, array); // eslint-disable-line callback-return
|
||||
}
|
||||
};
|
||||
|
||||
10
node_modules/es-abstract/helpers/getInferredName.js
generated
vendored
Normal file
10
node_modules/es-abstract/helpers/getInferredName.js
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
var getInferredName;
|
||||
try {
|
||||
// eslint-disable-next-line no-new-func
|
||||
getInferredName = Function('s', 'return { [s]() {} }[s].name;');
|
||||
} catch (e) {}
|
||||
|
||||
var inferred = function () {};
|
||||
module.exports = getInferredName && inferred.name === 'inferred' ? getInferredName : null;
|
||||
45
node_modules/es-abstract/helpers/getIteratorMethod.js
generated
vendored
Normal file
45
node_modules/es-abstract/helpers/getIteratorMethod.js
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
var hasSymbols = require('has-symbols')();
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
var callBound = require('./callBound');
|
||||
|
||||
var $iterator = GetIntrinsic('%Symbol.iterator%', true);
|
||||
var $stringSlice = callBound('String.prototype.slice');
|
||||
|
||||
module.exports = function getIteratorMethod(ES, iterable) {
|
||||
var usingIterator;
|
||||
if (hasSymbols) {
|
||||
usingIterator = ES.GetMethod(iterable, $iterator);
|
||||
} else if (ES.IsArray(iterable)) {
|
||||
usingIterator = function () {
|
||||
var i = -1;
|
||||
var arr = this; // eslint-disable-line no-invalid-this
|
||||
return {
|
||||
next: function () {
|
||||
i += 1;
|
||||
return {
|
||||
done: i >= arr.length,
|
||||
value: arr[i]
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
} else if (ES.Type(iterable) === 'String') {
|
||||
usingIterator = function () {
|
||||
var i = 0;
|
||||
return {
|
||||
next: function () {
|
||||
var nextIndex = ES.AdvanceStringIndex(iterable, i, true);
|
||||
var value = $stringSlice(iterable, i, nextIndex);
|
||||
i = nextIndex;
|
||||
return {
|
||||
done: nextIndex > iterable.length,
|
||||
value: value
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
return usingIterator;
|
||||
};
|
||||
15
node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js
generated
vendored
Normal file
15
node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');
|
||||
if ($gOPD) {
|
||||
try {
|
||||
$gOPD([], 'length');
|
||||
} catch (e) {
|
||||
// IE 8 has a broken gOPD
|
||||
$gOPD = null;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = $gOPD;
|
||||
15
node_modules/es-abstract/helpers/getProto.js
generated
vendored
Normal file
15
node_modules/es-abstract/helpers/getProto.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var originalGetProto = GetIntrinsic('%Object.getPrototypeOf%', true);
|
||||
var $ArrayProto = GetIntrinsic('%Array.prototype%');
|
||||
|
||||
module.exports = originalGetProto || (
|
||||
// eslint-disable-next-line no-proto
|
||||
[].__proto__ === $ArrayProto
|
||||
? function (O) {
|
||||
return O.__proto__; // eslint-disable-line no-proto
|
||||
}
|
||||
: null
|
||||
);
|
||||
30
node_modules/es-abstract/helpers/getSymbolDescription.js
generated
vendored
Normal file
30
node_modules/es-abstract/helpers/getSymbolDescription.js
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var callBound = require('./callBound');
|
||||
|
||||
var $SyntaxError = GetIntrinsic('%SyntaxError%');
|
||||
var symToStr = callBound('Symbol.prototype.toString', true);
|
||||
|
||||
var getInferredName = require('./getInferredName');
|
||||
|
||||
module.exports = function getSymbolDescription(symbol) {
|
||||
if (!symToStr) {
|
||||
throw new $SyntaxError('Symbols are not supported in this environment');
|
||||
}
|
||||
var str = symToStr(symbol); // will throw if not a symbol
|
||||
|
||||
if (getInferredName) {
|
||||
var name = getInferredName(symbol);
|
||||
if (name === '') { return; }
|
||||
// eslint-disable-next-line consistent-return
|
||||
return name.slice(1, -1); // name.slice('['.length, -']'.length);
|
||||
}
|
||||
|
||||
var desc = str.slice(7, -1); // str.slice('Symbol('.length, -')'.length);
|
||||
if (desc) {
|
||||
// eslint-disable-next-line consistent-return
|
||||
return desc;
|
||||
}
|
||||
};
|
||||
2
node_modules/es-abstract/helpers/isFinite.js
generated
vendored
2
node_modules/es-abstract/helpers/isFinite.js
generated
vendored
@@ -1,3 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
var $isNaN = Number.isNaN || function (a) { return a !== a; };
|
||||
|
||||
module.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };
|
||||
|
||||
2
node_modules/es-abstract/helpers/isNaN.js
generated
vendored
2
node_modules/es-abstract/helpers/isNaN.js
generated
vendored
@@ -1,3 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = Number.isNaN || function isNaN(a) {
|
||||
return a !== a;
|
||||
};
|
||||
|
||||
13
node_modules/es-abstract/helpers/isPrefixOf.js
generated
vendored
Normal file
13
node_modules/es-abstract/helpers/isPrefixOf.js
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
'use strict';
|
||||
|
||||
var $strSlice = require('../helpers/callBound')('String.prototype.slice');
|
||||
|
||||
module.exports = function isPrefixOf(prefix, string) {
|
||||
if (prefix === string) {
|
||||
return true;
|
||||
}
|
||||
if (prefix.length > string.length) {
|
||||
return false;
|
||||
}
|
||||
return $strSlice(string, 0, prefix.length) === prefix;
|
||||
};
|
||||
2
node_modules/es-abstract/helpers/isPrimitive.js
generated
vendored
2
node_modules/es-abstract/helpers/isPrimitive.js
generated
vendored
@@ -1,3 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function isPrimitive(value) {
|
||||
return value === null || (typeof value !== 'function' && typeof value !== 'object');
|
||||
};
|
||||
|
||||
31
node_modules/es-abstract/helpers/isPropertyDescriptor.js
generated
vendored
Normal file
31
node_modules/es-abstract/helpers/isPropertyDescriptor.js
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var has = require('has');
|
||||
var $TypeError = GetIntrinsic('%TypeError%');
|
||||
|
||||
module.exports = function IsPropertyDescriptor(ES, Desc) {
|
||||
if (ES.Type(Desc) !== 'Object') {
|
||||
return false;
|
||||
}
|
||||
var allowed = {
|
||||
'[[Configurable]]': true,
|
||||
'[[Enumerable]]': true,
|
||||
'[[Get]]': true,
|
||||
'[[Set]]': true,
|
||||
'[[Value]]': true,
|
||||
'[[Writable]]': true
|
||||
};
|
||||
|
||||
for (var key in Desc) { // eslint-disable-line
|
||||
if (has(Desc, key) && !allowed[key]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (ES.IsDataDescriptor(Desc) && ES.IsAccessorDescriptor(Desc)) {
|
||||
throw new $TypeError('Property Descriptors may not be both accessor and data descriptors');
|
||||
}
|
||||
return true;
|
||||
};
|
||||
20
node_modules/es-abstract/helpers/isSamePropertyDescriptor.js
generated
vendored
Normal file
20
node_modules/es-abstract/helpers/isSamePropertyDescriptor.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
var every = require('./every');
|
||||
|
||||
module.exports = function isSamePropertyDescriptor(ES, D1, D2) {
|
||||
var fields = [
|
||||
'[[Configurable]]',
|
||||
'[[Enumerable]]',
|
||||
'[[Get]]',
|
||||
'[[Set]]',
|
||||
'[[Value]]',
|
||||
'[[Writable]]'
|
||||
];
|
||||
return every(fields, function (field) {
|
||||
if ((field in D1) !== (field in D2)) {
|
||||
return false;
|
||||
}
|
||||
return ES.SameValue(D1[field], D2[field]);
|
||||
});
|
||||
};
|
||||
8
node_modules/es-abstract/helpers/maxSafeInteger.js
generated
vendored
Normal file
8
node_modules/es-abstract/helpers/maxSafeInteger.js
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var $Math = GetIntrinsic('%Math%');
|
||||
var $Number = GetIntrinsic('%Number%');
|
||||
|
||||
module.exports = $Number.MAX_SAFE_INTEGER || $Math.pow(2, 53) - 1;
|
||||
2
node_modules/es-abstract/helpers/mod.js
generated
vendored
2
node_modules/es-abstract/helpers/mod.js
generated
vendored
@@ -1,3 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function mod(number, modulo) {
|
||||
var remain = number % modulo;
|
||||
return Math.floor(remain >= 0 ? remain : remain + modulo);
|
||||
|
||||
9
node_modules/es-abstract/helpers/padTimeComponent.js
generated
vendored
Normal file
9
node_modules/es-abstract/helpers/padTimeComponent.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
var callBound = require('../helpers/callBound');
|
||||
|
||||
var $strSlice = callBound('String.prototype.slice');
|
||||
|
||||
module.exports = function padTimeComponent(c, count) {
|
||||
return $strSlice('00' + c, -(count || 2));
|
||||
};
|
||||
11
node_modules/es-abstract/helpers/regexTester.js
generated
vendored
Normal file
11
node_modules/es-abstract/helpers/regexTester.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var $test = GetIntrinsic('RegExp.prototype.test');
|
||||
|
||||
var callBind = require('./callBind');
|
||||
|
||||
module.exports = function regexTester(regex) {
|
||||
return callBind($test, regex);
|
||||
};
|
||||
16
node_modules/es-abstract/helpers/setProto.js
generated
vendored
Normal file
16
node_modules/es-abstract/helpers/setProto.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic');
|
||||
|
||||
var originalSetProto = GetIntrinsic('%Object.setPrototypeOf%', true);
|
||||
var $ArrayProto = GetIntrinsic('%Array.prototype%');
|
||||
|
||||
module.exports = originalSetProto || (
|
||||
// eslint-disable-next-line no-proto, no-negated-condition
|
||||
[].__proto__ !== $ArrayProto
|
||||
? null
|
||||
: function (O, proto) {
|
||||
O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
|
||||
return O;
|
||||
}
|
||||
);
|
||||
2
node_modules/es-abstract/helpers/sign.js
generated
vendored
2
node_modules/es-abstract/helpers/sign.js
generated
vendored
@@ -1,3 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function sign(number) {
|
||||
return number >= 0 ? 1 : -1;
|
||||
};
|
||||
|
||||
19
node_modules/es-abstract/helpers/timeConstants.js
generated
vendored
Normal file
19
node_modules/es-abstract/helpers/timeConstants.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
var HoursPerDay = 24;
|
||||
var MinutesPerHour = 60;
|
||||
var SecondsPerMinute = 60;
|
||||
var msPerSecond = 1e3;
|
||||
var msPerMinute = msPerSecond * SecondsPerMinute;
|
||||
var msPerHour = msPerMinute * MinutesPerHour;
|
||||
var msPerDay = 86400000;
|
||||
|
||||
module.exports = {
|
||||
HoursPerDay: HoursPerDay,
|
||||
MinutesPerHour: MinutesPerHour,
|
||||
SecondsPerMinute: SecondsPerMinute,
|
||||
msPerSecond: msPerSecond,
|
||||
msPerMinute: msPerMinute,
|
||||
msPerHour: msPerHour,
|
||||
msPerDay: msPerDay
|
||||
};
|
||||
Reference in New Issue
Block a user