@ehmpathy/uni-time 1.1.0 → 1.3.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.
@@ -0,0 +1,11 @@
1
+ import { PickOne } from 'type-fns';
2
+ export declare const castInputToDate: (input: string | Date | PickOne<{
3
+ /**
4
+ * milliseconds since epoch
5
+ */
6
+ mse: number;
7
+ /**
8
+ * a date
9
+ */
10
+ date: Date;
11
+ }>) => Date;
@@ -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,3 @@
1
+ import { UniDate, UniDateTime } from '../domain/UniDateTime';
2
+ export declare const toMillisecondsSinceEpoch: (input: UniDate | UniDateTime) => number;
3
+ export { toMillisecondsSinceEpoch as toMse };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toMse = exports.toMillisecondsSinceEpoch = void 0;
4
+ const toMillisecondsSinceEpoch = (input) => new Date(input).getTime();
5
+ exports.toMillisecondsSinceEpoch = toMillisecondsSinceEpoch;
6
+ exports.toMse = exports.toMillisecondsSinceEpoch;
7
+ //# sourceMappingURL=toMillisecondsSinceEpoch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toMillisecondsSinceEpoch.js","sourceRoot":"","sources":["../../src/casts/toMillisecondsSinceEpoch.ts"],"names":[],"mappings":";;;AAEO,MAAM,wBAAwB,GAAG,CACtC,KAA4B,EACpB,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAF1B,QAAA,wBAAwB,4BAEE;AAEF,gBAJxB,gCAAwB,CAIK"}
@@ -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":";;;AAAA,mDAA8D;AAC9D,uCAAkC;AAIlC,MAAM,eAAe,GAAG,CACtB,KAaM,EACN,EAAE;IACF,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;AAMK,MAAM,aAAa,GAAG,CAC3B,KAA4C,EAC/B,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,EAAiB,CAAC;AAFzD,QAAA,aAAa,iBAE4C;AAM/D,MAAM,SAAS,GAAG,CACvB,KAA4C,EACnC,EAAE,CAAC,IAAA,iBAAM,EAAC,eAAe,CAAC,KAAK,CAAC,EAAE,YAAY,CAAY,CAAC;AAFzD,QAAA,SAAS,aAEgD"}
1
+ {"version":3,"file":"UniDateTime.js","sourceRoot":"","sources":["../../src/domain/UniDateTime.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
1
  export * from './domain/UniDateTime';
2
2
  export * from './domain/UniDuration';
3
3
  export * from './utils/sleep';
4
+ export * from './checks/isUniDate';
5
+ export * from './checks/isUniDateTime';
6
+ export * from './casts/toMillisecondsSinceEpoch';
package/dist/index.js CHANGED
@@ -17,4 +17,7 @@ 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);
22
+ __exportStar(require("./casts/toMillisecondsSinceEpoch"), exports);
20
23
  //# 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;AACvC,mEAAiD"}
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.1.0",
5
+ "version": "1.3.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": "0.8.1"
55
+ "type-fns": "1.15.0"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@commitlint/cli": "17.6.7",