@dereekb/date 9.25.14 → 9.25.16
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.
- package/CHANGELOG.md +8 -0
- package/package.json +5 -3
- package/src/lib/date/date.logical.d.ts +2 -1
- package/src/lib/date/date.logical.js +26 -20
- package/src/lib/date/date.logical.js.map +1 -1
- package/src/lib/date/date.rxjs.d.ts +38 -0
- package/src/lib/date/date.rxjs.js +40 -0
- package/src/lib/date/date.rxjs.js.map +1 -0
- package/src/lib/date/index.d.ts +1 -0
- package/src/lib/date/index.js +1 -0
- package/src/lib/date/index.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [9.25.16](https://github.com/dereekb/dbx-components/compare/v9.25.15-dev...v9.25.16) (2023-12-01)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## [9.25.15](https://github.com/dereekb/dbx-components/compare/v9.25.14-dev...v9.25.15) (2023-11-27)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
5
13
|
## [9.25.14](https://github.com/dereekb/dbx-components/compare/v9.25.13-dev...v9.25.14) (2023-11-23)
|
|
6
14
|
|
|
7
15
|
|
package/package.json
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/date",
|
|
3
|
-
"version": "9.25.
|
|
3
|
+
"version": "9.25.16",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
7
7
|
"dependencies": {},
|
|
8
8
|
"peerDependencies": {
|
|
9
9
|
"date-fns": "^2.29.0",
|
|
10
|
-
"@dereekb/util": "9.25.
|
|
10
|
+
"@dereekb/util": "9.25.16",
|
|
11
11
|
"lodash.isequal": "^4.5.0",
|
|
12
12
|
"make-error": "^1.3.0",
|
|
13
13
|
"class-validator": "^0.13.2",
|
|
14
14
|
"ts-essentials": "^9.1.2",
|
|
15
15
|
"extra-set": "^2.2.11",
|
|
16
16
|
"class-transformer": "^0.5.1",
|
|
17
|
-
"
|
|
17
|
+
"@dereekb/rxjs": "9.25.16",
|
|
18
18
|
"rxjs": "^7.5.0",
|
|
19
|
+
"ms": "^3.0.0-canary.1",
|
|
20
|
+
"date-fns-tz": "^1.3.0",
|
|
19
21
|
"rrule": "git+https://git@github.com/dereekb/rrule#2b13b1ea881059ba2ecfec380e12ef244ef54570",
|
|
20
22
|
"@vvo/tzdb": "^6.0.0",
|
|
21
23
|
"tslib": "^2.0.0"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DateNow, Maybe } from '@dereekb/util';
|
|
1
|
+
import { DateNow, Maybe, FactoryWithInput } from '@dereekb/util';
|
|
2
2
|
export declare const DATE_TODAY_START_VALUE = "today_start";
|
|
3
3
|
export declare type DateTodayStart = typeof DATE_TODAY_START_VALUE;
|
|
4
4
|
export declare const DATE_TODAY_END_VALUE = "today_end";
|
|
@@ -12,6 +12,7 @@ export declare type LogicalDateStringCode = DateNow | DateTodayStart | DateToday
|
|
|
12
12
|
* A date that is characterized by either a known string value, or a Date.
|
|
13
13
|
*/
|
|
14
14
|
export declare type LogicalDate = Date | LogicalDateStringCode;
|
|
15
|
+
export declare function logicalDateStringCodeDateFactory(logicalDateStringCode: LogicalDateStringCode): FactoryWithInput<Date, Date>;
|
|
15
16
|
/**
|
|
16
17
|
* Returns a Date value from the input LogicalDate.
|
|
17
18
|
*
|
|
@@ -1,34 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isLogicalDateStringCode = exports.dateFromLogicalDate = exports.DATE_WEEK_END_VALUE = exports.DATE_WEEK_START_VALUE = exports.DATE_TODAY_END_VALUE = exports.DATE_TODAY_START_VALUE = void 0;
|
|
3
|
+
exports.isLogicalDateStringCode = exports.dateFromLogicalDate = exports.logicalDateStringCodeDateFactory = exports.DATE_WEEK_END_VALUE = exports.DATE_WEEK_START_VALUE = exports.DATE_TODAY_END_VALUE = exports.DATE_TODAY_START_VALUE = void 0;
|
|
4
4
|
const util_1 = require("@dereekb/util");
|
|
5
5
|
const date_fns_1 = require("date-fns");
|
|
6
6
|
exports.DATE_TODAY_START_VALUE = 'today_start';
|
|
7
7
|
exports.DATE_TODAY_END_VALUE = 'today_end';
|
|
8
8
|
exports.DATE_WEEK_START_VALUE = 'this_week_start';
|
|
9
9
|
exports.DATE_WEEK_END_VALUE = 'this_week_end';
|
|
10
|
+
function logicalDateStringCodeDateFactory(logicalDateStringCode) {
|
|
11
|
+
let mapFn;
|
|
12
|
+
switch (logicalDateStringCode.toLocaleLowerCase()) {
|
|
13
|
+
case util_1.DATE_NOW_VALUE:
|
|
14
|
+
mapFn = (0, util_1.mapIdentityFunction)();
|
|
15
|
+
break;
|
|
16
|
+
case exports.DATE_TODAY_START_VALUE:
|
|
17
|
+
mapFn = date_fns_1.startOfDay;
|
|
18
|
+
break;
|
|
19
|
+
case exports.DATE_TODAY_END_VALUE:
|
|
20
|
+
mapFn = date_fns_1.endOfDay;
|
|
21
|
+
break;
|
|
22
|
+
case exports.DATE_WEEK_START_VALUE:
|
|
23
|
+
mapFn = date_fns_1.startOfWeek;
|
|
24
|
+
break;
|
|
25
|
+
case exports.DATE_WEEK_END_VALUE:
|
|
26
|
+
mapFn = date_fns_1.endOfWeek;
|
|
27
|
+
break;
|
|
28
|
+
default:
|
|
29
|
+
throw new Error(`Unknown logical date string "${logicalDateStringCode}"`);
|
|
30
|
+
}
|
|
31
|
+
return (now = new Date()) => mapFn(now);
|
|
32
|
+
}
|
|
33
|
+
exports.logicalDateStringCodeDateFactory = logicalDateStringCodeDateFactory;
|
|
10
34
|
function dateFromLogicalDate(logicalDate, now = new Date()) {
|
|
11
35
|
let result;
|
|
12
36
|
if (typeof logicalDate === 'string') {
|
|
13
|
-
|
|
14
|
-
case util_1.DATE_NOW_VALUE:
|
|
15
|
-
result = now;
|
|
16
|
-
break;
|
|
17
|
-
case exports.DATE_TODAY_START_VALUE:
|
|
18
|
-
result = (0, date_fns_1.startOfDay)(now);
|
|
19
|
-
break;
|
|
20
|
-
case exports.DATE_TODAY_END_VALUE:
|
|
21
|
-
result = (0, date_fns_1.endOfDay)(now);
|
|
22
|
-
break;
|
|
23
|
-
case exports.DATE_WEEK_START_VALUE:
|
|
24
|
-
result = (0, date_fns_1.startOfWeek)(now);
|
|
25
|
-
break;
|
|
26
|
-
case exports.DATE_WEEK_END_VALUE:
|
|
27
|
-
result = (0, date_fns_1.endOfWeek)(now);
|
|
28
|
-
break;
|
|
29
|
-
default:
|
|
30
|
-
throw new Error(`Unknown logical date string "${logicalDate}"`);
|
|
31
|
-
}
|
|
37
|
+
result = logicalDateStringCodeDateFactory(logicalDate)(now);
|
|
32
38
|
}
|
|
33
39
|
else {
|
|
34
40
|
result = logicalDate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.logical.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.logical.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"date.logical.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.logical.ts"],"names":[],"mappings":";;;AAAA,wCAAmH;AACnH,uCAAwE;AAE3D,QAAA,sBAAsB,GAAG,aAAa,CAAC;AAGvC,QAAA,oBAAoB,GAAG,WAAW,CAAC;AAGnC,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAG1C,QAAA,mBAAmB,GAAG,eAAe,CAAC;AAUnD,SAAgB,gCAAgC,CAAC,qBAA4C;IAC3F,IAAI,KAA8B,CAAC;IAEnC,QAAQ,qBAAqB,CAAC,iBAAiB,EAAE,EAAE;QACjD,KAAK,qBAAc;YACjB,KAAK,GAAG,IAAA,0BAAmB,GAAE,CAAC;YAC9B,MAAM;QACR,KAAK,8BAAsB;YACzB,KAAK,GAAG,qBAAU,CAAC;YACnB,MAAM;QACR,KAAK,4BAAoB;YACvB,KAAK,GAAG,mBAAQ,CAAC;YACjB,MAAM;QACR,KAAK,6BAAqB;YACxB,KAAK,GAAG,sBAAW,CAAC;YACpB,MAAM;QACR,KAAK,2BAAmB;YACtB,KAAK,GAAG,oBAAS,CAAC;YAClB,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,qBAAqB,GAAG,CAAC,CAAC;KAC7E;IAED,OAAO,CAAC,MAAY,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAxBD,4EAwBC;AASD,SAAgB,mBAAmB,CAAC,WAA+B,EAAE,MAAY,IAAI,IAAI,EAAE;IACzF,IAAI,MAAM,CAAC;IAEX,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,MAAM,GAAG,gCAAgC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;KAC7D;SAAM;QACL,MAAM,GAAG,WAAW,CAAC;KACtB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAVD,kDAUC;AAED,SAAgB,uBAAuB,CAAC,WAAwC;IAC9E,IAAI,uBAAuB,GAAG,KAAK,CAAC;IAEpC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,QAAQ,WAAW,CAAC,iBAAiB,EAAE,EAAE;YACvC,KAAK,qBAAc,CAAC;YACpB,KAAK,8BAAsB,CAAC;YAC5B,KAAK,4BAAoB,CAAC;YAC1B,KAAK,6BAAqB,CAAC;YAC3B,KAAK,2BAAmB;gBACtB,uBAAuB,GAAG,IAAI,CAAC;gBAC/B,MAAM;SACT;KACF;IAED,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAhBD,0DAgBC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { FactoryWithRequiredInput, IndexNumber, Maybe, Milliseconds } from '@dereekb/util';
|
|
2
|
+
import { Observable, SchedulerLike } from 'rxjs';
|
|
3
|
+
import { LogicalDateStringCode } from './date.logical';
|
|
4
|
+
export interface DateIntervalConfig {
|
|
5
|
+
/**
|
|
6
|
+
* How often to emit the date.
|
|
7
|
+
*
|
|
8
|
+
* Defaults to every second.
|
|
9
|
+
*/
|
|
10
|
+
readonly period?: Maybe<Milliseconds>;
|
|
11
|
+
/**
|
|
12
|
+
* Emits the given logical each interval.
|
|
13
|
+
*/
|
|
14
|
+
readonly logicalDate?: Maybe<LogicalDateStringCode>;
|
|
15
|
+
/**
|
|
16
|
+
* Factory to use for the date.
|
|
17
|
+
*/
|
|
18
|
+
readonly factory?: FactoryWithRequiredInput<Date, IndexNumber>;
|
|
19
|
+
/**
|
|
20
|
+
* Whether or not to only emit each value and not only when the date has changed. False by default.
|
|
21
|
+
*/
|
|
22
|
+
readonly emitAll?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Scheduler for the rxjs interval.
|
|
25
|
+
*/
|
|
26
|
+
readonly scheduler?: SchedulerLike | undefined;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates an Observable that emits a date given the configuration.
|
|
30
|
+
*/
|
|
31
|
+
export declare function dateInterval(config: DateIntervalConfig): Observable<Date>;
|
|
32
|
+
/**
|
|
33
|
+
* Convenience function for dateInterval that returns the "now" logicalDate with an optional custom period.
|
|
34
|
+
*
|
|
35
|
+
* @param period
|
|
36
|
+
* @returns
|
|
37
|
+
*/
|
|
38
|
+
export declare function nowInterval(period?: Maybe<Milliseconds>): Observable<Date>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nowInterval = exports.dateInterval = void 0;
|
|
4
|
+
const util_1 = require("@dereekb/util");
|
|
5
|
+
const rxjs_1 = require("rxjs");
|
|
6
|
+
const date_1 = require("./date");
|
|
7
|
+
const date_logical_1 = require("./date.logical");
|
|
8
|
+
/**
|
|
9
|
+
* Creates an Observable that emits a date given the configuration.
|
|
10
|
+
*/
|
|
11
|
+
function dateInterval(config) {
|
|
12
|
+
const { period, logicalDate: inputLogicalDate, factory: inputFactory, emitAll, scheduler } = config;
|
|
13
|
+
let logicalDate = inputLogicalDate;
|
|
14
|
+
if (!logicalDate && !inputFactory) {
|
|
15
|
+
logicalDate = 'now';
|
|
16
|
+
}
|
|
17
|
+
const intervalPeriod = period !== null && period !== void 0 ? period : util_1.MS_IN_SECOND;
|
|
18
|
+
const factory = inputFactory ? inputFactory : (0, util_1.protectedFactory)((0, date_logical_1.logicalDateStringCodeDateFactory)(logicalDate));
|
|
19
|
+
let obs = (0, rxjs_1.interval)(intervalPeriod, scheduler).pipe((0, rxjs_1.startWith)(-1), (0, rxjs_1.map)(factory));
|
|
20
|
+
if (emitAll !== true) {
|
|
21
|
+
obs = obs.pipe((0, rxjs_1.distinctUntilChanged)(date_1.isSameDate));
|
|
22
|
+
}
|
|
23
|
+
return obs;
|
|
24
|
+
}
|
|
25
|
+
exports.dateInterval = dateInterval;
|
|
26
|
+
/**
|
|
27
|
+
* Convenience function for dateInterval that returns the "now" logicalDate with an optional custom period.
|
|
28
|
+
*
|
|
29
|
+
* @param period
|
|
30
|
+
* @returns
|
|
31
|
+
*/
|
|
32
|
+
function nowInterval(period) {
|
|
33
|
+
return dateInterval({
|
|
34
|
+
period,
|
|
35
|
+
logicalDate: 'now',
|
|
36
|
+
emitAll: true // no need to filter on emitting since now will be different each time
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
exports.nowInterval = nowInterval;
|
|
40
|
+
//# sourceMappingURL=date.rxjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.rxjs.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.rxjs.ts"],"names":[],"mappings":";;;AAAA,wCAA2H;AAC3H,+BAAiG;AACjG,iCAAoC;AACpC,iDAAyF;AA2BzF;;GAEG;AACH,SAAgB,YAAY,CAAC,MAA0B;IACrD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACpG,IAAI,WAAW,GAAiC,gBAAgB,CAAC;IAEjE,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE;QACjC,WAAW,GAAG,KAAK,CAAC;KACrB;IAED,MAAM,cAAc,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,mBAAY,CAAC;IAC9C,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,uBAAgB,EAAC,IAAA,+CAAgC,EAAC,WAAoC,CAAC,CAAC,CAAC;IACvI,IAAI,GAAG,GAAG,IAAA,eAAQ,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,CAAC,CAAC,CAAC,EAAE,IAAA,UAAG,EAAC,OAAO,CAAC,CAAC,CAAC;IAEhF,IAAI,OAAO,KAAK,IAAI,EAAE;QACpB,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAA,2BAAoB,EAAO,iBAAU,CAAC,CAAC,CAAC;KACxD;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAjBD,oCAiBC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,MAA4B;IACtD,OAAO,YAAY,CAAC;QAClB,MAAM;QACN,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,IAAI,CAAC,sEAAsE;KACrF,CAAC,CAAC;AACL,CAAC;AAND,kCAMC"}
|
package/src/lib/date/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export * from './date.range';
|
|
|
19
19
|
export * from './date.range.string';
|
|
20
20
|
export * from './date.range.timezone';
|
|
21
21
|
export * from './date.round';
|
|
22
|
+
export * from './date.rxjs';
|
|
22
23
|
export * from './date.schedule';
|
|
23
24
|
export * from './date.sort';
|
|
24
25
|
export * from './date.time.limit';
|
package/src/lib/date/index.js
CHANGED
|
@@ -22,6 +22,7 @@ tslib_1.__exportStar(require("./date.range"), exports);
|
|
|
22
22
|
tslib_1.__exportStar(require("./date.range.string"), exports);
|
|
23
23
|
tslib_1.__exportStar(require("./date.range.timezone"), exports);
|
|
24
24
|
tslib_1.__exportStar(require("./date.round"), exports);
|
|
25
|
+
tslib_1.__exportStar(require("./date.rxjs"), exports);
|
|
25
26
|
tslib_1.__exportStar(require("./date.schedule"), exports);
|
|
26
27
|
tslib_1.__exportStar(require("./date.sort"), exports);
|
|
27
28
|
tslib_1.__exportStar(require("./date.time.limit"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,2DAAiC;AACjC,4DAAkC;AAClC,8DAAoC;AACpC,6DAAmC;AACnC,4DAAkC;AAClC,+DAAqC;AACrC,mEAAyC;AACzC,sDAA4B;AAC5B,gEAAsC;AACtC,2DAAiC;AACjC,0DAAgC;AAChC,0DAAgC;AAChC,wDAA8B;AAC9B,wDAA8B;AAC9B,yDAA+B;AAC/B,yDAA+B;AAC/B,uDAA6B;AAC7B,8DAAoC;AACpC,gEAAsC;AACtC,uDAA6B;AAC7B,0DAAgC;AAChC,sDAA4B;AAC5B,4DAAkC;AAClC,6DAAmC;AACnC,sDAA4B;AAC5B,0DAAgC;AAChC,iDAAuB;AACvB,sDAA4B;AAC5B,sDAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,2DAAiC;AACjC,4DAAkC;AAClC,8DAAoC;AACpC,6DAAmC;AACnC,4DAAkC;AAClC,+DAAqC;AACrC,mEAAyC;AACzC,sDAA4B;AAC5B,gEAAsC;AACtC,2DAAiC;AACjC,0DAAgC;AAChC,0DAAgC;AAChC,wDAA8B;AAC9B,wDAA8B;AAC9B,yDAA+B;AAC/B,yDAA+B;AAC/B,uDAA6B;AAC7B,8DAAoC;AACpC,gEAAsC;AACtC,uDAA6B;AAC7B,sDAA4B;AAC5B,0DAAgC;AAChC,sDAA4B;AAC5B,4DAAkC;AAClC,6DAAmC;AACnC,sDAA4B;AAC5B,0DAAgC;AAChC,iDAAuB;AACvB,sDAA4B;AAC5B,sDAA4B"}
|