@ehmpathy/uni-time 1.1.0 → 1.2.0
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/dist/casts/castInputToDate.d.ts +11 -0
- package/dist/casts/castInputToDate.js +19 -0
- package/dist/casts/castInputToDate.js.map +1 -0
- package/dist/checks/isUniDate.d.ts +10 -0
- package/dist/checks/isUniDate.js +23 -0
- package/dist/checks/isUniDate.js.map +1 -0
- package/dist/checks/isUniDate.test.d.ts +1 -0
- package/dist/checks/isUniDate.test.js +27 -0
- package/dist/checks/isUniDate.test.js.map +1 -0
- package/dist/checks/isUniDateTime.d.ts +10 -0
- package/dist/checks/isUniDateTime.js +23 -0
- package/dist/checks/isUniDateTime.js.map +1 -0
- package/dist/checks/isUniDateTime.test.d.ts +1 -0
- package/dist/checks/isUniDateTime.test.js +27 -0
- package/dist/checks/isUniDateTime.test.js.map +1 -0
- package/dist/domain/UniDateTime.d.ts +0 -14
- package/dist/domain/UniDateTime.js +0 -20
- package/dist/domain/UniDateTime.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.castInputToDate = void 0;
|
|
4
|
+
const error_fns_1 = require("@ehmpathy/error-fns");
|
|
5
|
+
const castInputToDate = (input) => {
|
|
6
|
+
if (input instanceof Date)
|
|
7
|
+
return input;
|
|
8
|
+
if (typeof input === 'string')
|
|
9
|
+
return new Date(input);
|
|
10
|
+
if (input.date)
|
|
11
|
+
return input.date;
|
|
12
|
+
if (input.mse)
|
|
13
|
+
return new Date(input.mse);
|
|
14
|
+
throw new error_fns_1.UnexpectedCodePathError('could not parse date from input', {
|
|
15
|
+
input,
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
exports.castInputToDate = castInputToDate;
|
|
19
|
+
//# sourceMappingURL=castInputToDate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"castInputToDate.js","sourceRoot":"","sources":["../../src/casts/castInputToDate.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAGvD,MAAM,eAAe,GAAG,CAC7B,KAaM,EACA,EAAE;IACR,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,GAAG;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,mCAAuB,CAAC,iCAAiC,EAAE;QACnE,KAAK;KACN,CAAC,CAAC;AACL,CAAC,CAAC;AAvBW,QAAA,eAAe,mBAuB1B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { castInputToDate } from '../casts/castInputToDate';
|
|
2
|
+
import { UniDate } from '../domain/UniDateTime';
|
|
3
|
+
/**
|
|
4
|
+
* casts a date like input into a UniDate
|
|
5
|
+
*/
|
|
6
|
+
export declare const asUniDate: (input: Parameters<typeof castInputToDate>[0]) => UniDate;
|
|
7
|
+
/**
|
|
8
|
+
* checks whether a string literal input is a UniDate
|
|
9
|
+
*/
|
|
10
|
+
export declare const isUniDate: import("type-fns").AssessWithAssure<string, string & import("domain-glossaries").OfGlossary<"uni-time">>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isUniDate = exports.asUniDate = void 0;
|
|
4
|
+
const date_fns_1 = require("date-fns");
|
|
5
|
+
const type_fns_1 = require("type-fns");
|
|
6
|
+
const castInputToDate_1 = require("../casts/castInputToDate");
|
|
7
|
+
/**
|
|
8
|
+
* casts a date like input into a UniDate
|
|
9
|
+
*/
|
|
10
|
+
const asUniDate = (input) => (0, date_fns_1.format)((0, castInputToDate_1.castInputToDate)(input), 'yyyy-MM-dd');
|
|
11
|
+
exports.asUniDate = asUniDate;
|
|
12
|
+
/**
|
|
13
|
+
* checks whether a string literal input is a UniDate
|
|
14
|
+
*/
|
|
15
|
+
exports.isUniDate = (0, type_fns_1.withAssure)((input) => {
|
|
16
|
+
try {
|
|
17
|
+
return (0, exports.asUniDate)((0, date_fns_1.parseISO)(input)) === input;
|
|
18
|
+
}
|
|
19
|
+
catch (_a) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=isUniDate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isUniDate.js","sourceRoot":"","sources":["../../src/checks/isUniDate.ts"],"names":[],"mappings":";;;AAAA,uCAA4C;AAC5C,uCAAsC;AAEtC,8DAA2D;AAG3D;;GAEG;AACI,MAAM,SAAS,GAAG,CACvB,KAA4C,EACnC,EAAE,CAAC,IAAA,iBAAM,EAAC,IAAA,iCAAe,EAAC,KAAK,CAAC,EAAE,YAAY,CAAY,CAAC;AAFzD,QAAA,SAAS,aAEgD;AAEtE;;GAEG;AACU,QAAA,SAAS,GAAG,IAAA,qBAAU,EAAC,CAAC,KAAa,EAAoB,EAAE;IACtE,IAAI,CAAC;QACH,OAAO,IAAA,iBAAS,EAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;IAC9C,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const isUniDate_1 = require("./isUniDate");
|
|
4
|
+
describe('isUniDate', () => {
|
|
5
|
+
const cases = [
|
|
6
|
+
{
|
|
7
|
+
input: 'May 15, 2024',
|
|
8
|
+
output: false,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
input: '05-15-2024',
|
|
12
|
+
output: false,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
input: '2024-05-15T17:21:55.555Z',
|
|
16
|
+
output: false,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
input: '2024-05-15',
|
|
20
|
+
output: true,
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
cases.forEach((thisCase) => it(`should return ${thisCase.output} for '${thisCase.input}'`, () => {
|
|
24
|
+
expect((0, isUniDate_1.isUniDate)(thisCase.input)).toEqual(thisCase.output);
|
|
25
|
+
}));
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=isUniDate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isUniDate.test.js","sourceRoot":"","sources":["../../src/checks/isUniDate.test.ts"],"names":[],"mappings":";;AAAA,2CAAwC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,MAAM,KAAK,GAAyC;QAClD;YACE,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,0BAA0B;YACjC,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,IAAI;SACb;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzB,EAAE,CAAC,iBAAiB,QAAQ,CAAC,MAAM,SAAS,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,IAAA,qBAAS,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { castInputToDate } from '../casts/castInputToDate';
|
|
2
|
+
import { UniDateTime } from '../domain/UniDateTime';
|
|
3
|
+
/**
|
|
4
|
+
* casts a datetime like input into a uniDateTime
|
|
5
|
+
*/
|
|
6
|
+
export declare const asUniDateTime: (input: Parameters<typeof castInputToDate>[0]) => UniDateTime;
|
|
7
|
+
/**
|
|
8
|
+
* checks whether a string literal input is a UniDateTime
|
|
9
|
+
*/
|
|
10
|
+
export declare const isUniDateTime: import("type-fns").AssessWithAssure<string, string & import("domain-glossaries").OfGlossary<"uni-time">>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isUniDateTime = exports.asUniDateTime = void 0;
|
|
4
|
+
const date_fns_1 = require("date-fns");
|
|
5
|
+
const type_fns_1 = require("type-fns");
|
|
6
|
+
const castInputToDate_1 = require("../casts/castInputToDate");
|
|
7
|
+
/**
|
|
8
|
+
* casts a datetime like input into a uniDateTime
|
|
9
|
+
*/
|
|
10
|
+
const asUniDateTime = (input) => (0, castInputToDate_1.castInputToDate)(input).toISOString();
|
|
11
|
+
exports.asUniDateTime = asUniDateTime;
|
|
12
|
+
/**
|
|
13
|
+
* checks whether a string literal input is a UniDateTime
|
|
14
|
+
*/
|
|
15
|
+
exports.isUniDateTime = (0, type_fns_1.withAssure)((input) => {
|
|
16
|
+
try {
|
|
17
|
+
return (0, exports.asUniDateTime)((0, date_fns_1.parseISO)(input)) === input;
|
|
18
|
+
}
|
|
19
|
+
catch (_a) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=isUniDateTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isUniDateTime.js","sourceRoot":"","sources":["../../src/checks/isUniDateTime.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,uCAAsC;AAEtC,8DAA2D;AAG3D;;GAEG;AACI,MAAM,aAAa,GAAG,CAC3B,KAA4C,EAC/B,EAAE,CAAC,IAAA,iCAAe,EAAC,KAAK,CAAC,CAAC,WAAW,EAAiB,CAAC;AAFzD,QAAA,aAAa,iBAE4C;AAEtE;;GAEG;AACU,QAAA,aAAa,GAAG,IAAA,qBAAU,EACrC,CAAC,KAAa,EAAwB,EAAE;IACtC,IAAI,CAAC;QACH,OAAO,IAAA,qBAAa,EAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;IAClD,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const isUniDateTime_1 = require("./isUniDateTime");
|
|
4
|
+
describe('isUniDateTime', () => {
|
|
5
|
+
const cases = [
|
|
6
|
+
{
|
|
7
|
+
input: 'May 15, 2024 at 5pm',
|
|
8
|
+
output: false,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
input: '2024-05-15 17:21:55',
|
|
12
|
+
output: false,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
input: '2024-05-15T17:21:55Z',
|
|
16
|
+
output: false,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
input: '2024-05-15T17:21:55.555Z',
|
|
20
|
+
output: true,
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
cases.forEach((thisCase) => it(`should return ${thisCase.output} for '${thisCase.input}'`, () => {
|
|
24
|
+
expect((0, isUniDateTime_1.isUniDateTime)(thisCase.input)).toEqual(thisCase.output);
|
|
25
|
+
}));
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=isUniDateTime.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isUniDateTime.test.js","sourceRoot":"","sources":["../../src/checks/isUniDateTime.test.ts"],"names":[],"mappings":";;AAAA,mDAAgD;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,KAAK,GAAyC;QAClD;YACE,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,sBAAsB;YAC7B,MAAM,EAAE,KAAK;SACd;QACD;YACE,KAAK,EAAE,0BAA0B;YACjC,MAAM,EAAE,IAAI;SACb;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzB,EAAE,CAAC,iBAAiB,QAAQ,CAAC,MAAM,SAAS,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,IAAA,6BAAa,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1,25 +1,12 @@
|
|
|
1
1
|
import { AsOfGlossary } from 'domain-glossaries';
|
|
2
|
-
import { PickOne } from 'type-fns';
|
|
3
|
-
declare const castInputToDate: (input: string | Date | PickOne<{
|
|
4
|
-
/**
|
|
5
|
-
* milliseconds since epoch
|
|
6
|
-
*/
|
|
7
|
-
mse: number;
|
|
8
|
-
/**
|
|
9
|
-
* a date
|
|
10
|
-
*/
|
|
11
|
-
date: Date;
|
|
12
|
-
}>) => Date;
|
|
13
2
|
/**
|
|
14
3
|
* a universally unambiguous datetime serialized as a string; yyyy-MM-ddThh:mm:ssZ
|
|
15
4
|
*/
|
|
16
5
|
export type UniDateTime = AsOfGlossary<string, 'uni-time'>;
|
|
17
|
-
export declare const asUniDateTime: (input: Parameters<typeof castInputToDate>[0]) => UniDateTime;
|
|
18
6
|
/**
|
|
19
7
|
* a universally unambiguous date serialized as a string; yyyy-MM-dd
|
|
20
8
|
*/
|
|
21
9
|
export type UniDate = AsOfGlossary<string, 'uni-time'>;
|
|
22
|
-
export declare const asUniDate: (input: Parameters<typeof castInputToDate>[0]) => UniDate;
|
|
23
10
|
/**
|
|
24
11
|
* a universally unambiguous month serialized as a string; yyyy-MM
|
|
25
12
|
*/
|
|
@@ -46,4 +33,3 @@ export type UniDateTimeRange = AsOfGlossary<{
|
|
|
46
33
|
since: UniDateTime;
|
|
47
34
|
until: UniDateTime;
|
|
48
35
|
}, 'uni-time', false>;
|
|
49
|
-
export {};
|
|
@@ -1,23 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.asUniDate = exports.asUniDateTime = void 0;
|
|
4
|
-
const error_fns_1 = require("@ehmpathy/error-fns");
|
|
5
|
-
const date_fns_1 = require("date-fns");
|
|
6
|
-
const castInputToDate = (input) => {
|
|
7
|
-
if (input instanceof Date)
|
|
8
|
-
return input;
|
|
9
|
-
if (typeof input === 'string')
|
|
10
|
-
return new Date(input);
|
|
11
|
-
if (input.date)
|
|
12
|
-
return input.date;
|
|
13
|
-
if (input.mse)
|
|
14
|
-
return new Date(input.mse);
|
|
15
|
-
throw new error_fns_1.UnexpectedCodePathError('could not parse date from input', {
|
|
16
|
-
input,
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
|
-
const asUniDateTime = (input) => castInputToDate(input).toISOString();
|
|
20
|
-
exports.asUniDateTime = asUniDateTime;
|
|
21
|
-
const asUniDate = (input) => (0, date_fns_1.format)(castInputToDate(input), 'yyyy-MM-dd');
|
|
22
|
-
exports.asUniDate = asUniDate;
|
|
23
3
|
//# sourceMappingURL=UniDateTime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UniDateTime.js","sourceRoot":"","sources":["../../src/domain/UniDateTime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UniDateTime.js","sourceRoot":"","sources":["../../src/domain/UniDateTime.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -17,4 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./domain/UniDateTime"), exports);
|
|
18
18
|
__exportStar(require("./domain/UniDuration"), exports);
|
|
19
19
|
__exportStar(require("./utils/sleep"), exports);
|
|
20
|
+
__exportStar(require("./checks/isUniDate"), exports);
|
|
21
|
+
__exportStar(require("./checks/isUniDateTime"), exports);
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,uDAAqC;AACrC,gDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,uDAAqC;AACrC,gDAA8B;AAC9B,qDAAmC;AACnC,yDAAuC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@ehmpathy/uni-time",
|
|
3
3
|
"author": "ehmpathy",
|
|
4
4
|
"description": "a glossary of universally intuitive time, date, and duration domain literals",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.2.0",
|
|
6
6
|
"repository": "ehmpathy/uni-time",
|
|
7
7
|
"homepage": "https://github.com/ehmpathy/uni-time",
|
|
8
8
|
"keywords": [
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@ehmpathy/error-fns": "1.0.2",
|
|
53
53
|
"date-fns": "3.6.0",
|
|
54
54
|
"domain-glossaries": "1.0.0",
|
|
55
|
-
"type-fns": "
|
|
55
|
+
"type-fns": "1.15.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@commitlint/cli": "17.6.7",
|