@antv/data-wizard
Version:
A js/ts library for data processing
91 lines (90 loc) • 3.23 kB
JavaScript
import { __assign, __extends } from "tslib";
import { format } from 'date-fns';
import { BasicRandom } from './basic-random';
import { initOptions } from './utils';
import { getDateTimeDB } from './database';
/**
* Generator for date
* @public
*/
var DateTimeRandom = /** @class */ (function (_super) {
__extends(DateTimeRandom, _super);
function DateTimeRandom() {
var _this = _super !== null && _super.apply(this, arguments) || this;
/**
* return a random date which format is yyyy-MM-dd
*/
_this.database = getDateTimeDB();
return _this;
}
/**
* return a random full date {@link https://tools.ietf.org/html/rfc3339#section-5.6 | full-date}
* @param options - the params
*/
DateTimeRandom.prototype.date = function (options) {
return this.datetime(__assign(__assign({}, options), { format: 'yyyy-MM-dd' }));
};
/**
* return a random full time {@link https://tools.ietf.org/html/rfc3339#section-5.6 | full-time}
* @param options - the params
*/
DateTimeRandom.prototype.time = function (options) {
var opts = initOptions({ short: false }, options);
return this.datetime(__assign(__assign({}, options), { format: opts.short ? 'HH:mm:ss' : 'HH:mm:ssXXX' }));
};
/**
* return a random date-time (full-data T fulltime) {@link https://tools.ietf.org/html/rfc3339#section-5.6 | date-time}
*
* @remarks
* {@link https://date-fns.org/v2.0.1/docs/format | format}
* @param options - the params
*/
DateTimeRandom.prototype.datetime = function (options) {
var opts = initOptions({ format: "yyyy-MM-dd'T'HH:mm:ssXXX" }, options);
var timestamp = this.timestamp(opts);
return format(timestamp, opts.format);
};
/**
* return a random timestamp
* @param options - the params
*/
DateTimeRandom.prototype.timestamp = function (options) {
var opts = initOptions({ min: 0, max: new Date().getTime() }, options);
return this.natural(opts);
};
/**
* return a random weekday
*
* @example
* ```javascript
* new DateTimeRandom().weekday({ locale: 'zh-CN' }) // 星期一
* new DateTimeRandom().weekday({ abbr: true }) // Mon.
* ```
* @param options - the params
* @public
*/
DateTimeRandom.prototype.weekday = function (options) {
var _a = initOptions({ abbr: false, locale: 'en-US' }, options), locale = _a.locale, abbr = _a.abbr;
var list = this.database.weekday[locale];
var target = this.pickone(list);
if (abbr)
return target[1] || target[0];
return target[0];
};
/**
* return a random month
*
* @param options - the params
* @public
*/
DateTimeRandom.prototype.month = function (options) {
var _a = initOptions({ abbr: false, locale: 'en-US' }, options), locale = _a.locale, abbr = _a.abbr;
var list = this.database.month[locale];
var target = this.pickone(list);
if (abbr)
return target[1] || target[0];
return target[0];
};
return DateTimeRandom;
}(BasicRandom));
export { DateTimeRandom };