@antv/data-wizard
Version:
A js/ts library for data processing
94 lines (93 loc) • 3.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DateTimeRandom = void 0;
var tslib_1 = require("tslib");
var date_fns_1 = require("date-fns");
var basic_random_1 = require("./basic-random");
var utils_1 = require("./utils");
var database_1 = require("./database");
/**
* Generator for date
* @public
*/
var DateTimeRandom = /** @class */ (function (_super) {
tslib_1.__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 = database_1.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(tslib_1.__assign(tslib_1.__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 = utils_1.initOptions({ short: false }, options);
return this.datetime(tslib_1.__assign(tslib_1.__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 = utils_1.initOptions({ format: "yyyy-MM-dd'T'HH:mm:ssXXX" }, options);
var timestamp = this.timestamp(opts);
return date_fns_1.format(timestamp, opts.format);
};
/**
* return a random timestamp
* @param options - the params
*/
DateTimeRandom.prototype.timestamp = function (options) {
var opts = utils_1.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 = utils_1.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 = utils_1.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;
}(basic_random_1.BasicRandom));
exports.DateTimeRandom = DateTimeRandom;