@utiliread/primitives 1.0.0-96 → 1.0.0-98

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.
@@ -48,7 +48,7 @@ exports.BreakdownRule = BreakdownRule;
48
48
  period = period.substring(0, period.length - 1);
49
49
  }
50
50
  return {
51
- origin: origin,
51
+ origin: time_or_rule_1.TimeOrRule.parse(origin),
52
52
  count,
53
53
  period: period,
54
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"breakdown-rule.js","sourceRoot":"","sources":["../../src/breakdown-rule.ts"],"names":[],"mappings":";;;AACA,iDAA4C;AAqB5C,SAAgB,aAAa,CAAC,GAAG,MAAa;;IAC1C,IAAI,IAAuB,CAAC;IAC5B,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACF,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM;QACV,KAAK,CAAC;YACF,IAAI,GAAG;gBACH,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACpB,CAAC;YACF,MAAM;QACV,KAAK,CAAC;YACF,IAAI,GAAG;gBACH,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBACjB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACpB,CAAC;YACF,MAAM;QACV;YACI,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAC;IACjC,MAAM,UAAU,GACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAClE,OAAO,yBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,EAAE;QAC7C,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE;QAC9B,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC;AACjD,CAAC;AA7BD,sCA6BC;AAED,WAAiB,aAAa;IAC1B,MAAM,KAAK,GAAG,IAAI,MAAM,CACpB,mDAAmD,CACtD,CAAC;IACF,SAAgB,KAAK,CAAC,IAAmB;;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO;YACH,MAAM,EAAE,MAAoB;YAC5B,KAAK;YACL,MAAM,EAAE,MAAyB;SACpC,CAAC;IACN,CAAC;IAhBe,mBAAK,QAgBpB,CAAA;AACL,CAAC,EArBgB,aAAa,6BAAb,aAAa,QAqB7B"}
1
+ {"version":3,"file":"breakdown-rule.js","sourceRoot":"","sources":["../../src/breakdown-rule.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAqB5C,SAAgB,aAAa,CAAC,GAAG,MAAa;;IAC1C,IAAI,IAAuB,CAAC;IAC5B,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACF,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM;QACV,KAAK,CAAC;YACF,IAAI,GAAG;gBACH,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACpB,CAAC;YACF,MAAM;QACV,KAAK,CAAC;YACF,IAAI,GAAG;gBACH,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBACjB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACpB,CAAC;YACF,MAAM;QACV;YACI,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAC;IACjC,MAAM,UAAU,GACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAClE,OAAO,yBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,EAAE;QAC7C,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE;QAC9B,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC;AACjD,CAAC;AA7BD,sCA6BC;AAED,WAAiB,aAAa;IAC1B,MAAM,KAAK,GAAG,IAAI,MAAM,CACpB,mDAAmD,CACtD,CAAC;IACF,SAAgB,KAAK,CAAC,IAAmB;;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO;YACH,MAAM,EAAE,yBAAU,CAAC,KAAK,CAAC,MAAM,CAAC;YAChC,KAAK;YACL,MAAM,EAAE,MAAyB;SACpC,CAAC;IACN,CAAC;IAhBe,mBAAK,QAgBpB,CAAA;AACL,CAAC,EArBgB,aAAa,6BAAb,aAAa,QAqB7B"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const breakdown_rule_1 = require("./breakdown-rule");
4
+ const luxon_1 = require("luxon");
5
+ const _1 = require(".");
4
6
  const chai_1 = require("chai");
5
7
  describe("ctor", () => {
6
8
  it("creates", () => {
@@ -37,5 +39,12 @@ describe("split", () => {
37
39
  (0, chai_1.expect)(count).to.equal(10);
38
40
  (0, chai_1.expect)(period).to.equal("hour");
39
41
  });
42
+ it("splits with time origin", () => {
43
+ const { origin, count, period } = breakdown_rule_1.BreakdownRule.split("2024-01-25T00:00:00.000+01:00/1hour");
44
+ (0, chai_1.expect)(_1.TimeOrRule.isTime(origin)).to.equal(true);
45
+ (0, chai_1.expect)(+origin).to.equal(+luxon_1.DateTime.local(2024, 1, 25));
46
+ (0, chai_1.expect)(count).to.equal(1);
47
+ (0, chai_1.expect)(period).to.equal("hour");
48
+ });
40
49
  });
41
50
  //# sourceMappingURL=breakdown-rule.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"breakdown-rule.spec.js","sourceRoot":"","sources":["../../src/breakdown-rule.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"breakdown-rule.spec.js","sourceRoot":"","sources":["../../src/breakdown-rule.spec.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TimeOrRule = void 0;
4
+ const luxon_1 = require("luxon");
4
5
  var TimeOrRule;
5
6
  (function (TimeOrRule) {
7
+ function parse(input) {
8
+ const time = luxon_1.DateTime.fromISO(input, { setZone: true });
9
+ return time.isValid ? time : input;
10
+ }
11
+ TimeOrRule.parse = parse;
6
12
  function isTime(input) {
7
13
  return typeof input !== "string";
8
14
  }
@@ -11,9 +17,16 @@ var TimeOrRule;
11
17
  return typeof input === "string";
12
18
  }
13
19
  TimeOrRule.isRule = isRule;
14
- function asJSON(input) {
20
+ function asDateTime(input) {
21
+ if (isRule(input)) {
22
+ return;
23
+ }
24
+ return luxon_1.DateTime.isDateTime(input) ? input : luxon_1.DateTime.fromJSDate(input);
25
+ }
26
+ TimeOrRule.asDateTime = asDateTime;
27
+ function toJSON(input) {
15
28
  return isRule(input) ? input : input.toJSON();
16
29
  }
17
- TimeOrRule.asJSON = asJSON;
30
+ TimeOrRule.toJSON = toJSON;
18
31
  })(TimeOrRule || (exports.TimeOrRule = TimeOrRule = {}));
19
32
  //# sourceMappingURL=time-or-rule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time-or-rule.js","sourceRoot":"","sources":["../../src/time-or-rule.ts"],"names":[],"mappings":";;;AAIA,IAAiB,UAAU,CAY1B;AAZD,WAAiB,UAAU;IACvB,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAFe,iBAAM,SAErB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAFe,iBAAM,SAErB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;IAFe,iBAAM,SAErB,CAAA;AACL,CAAC,EAZgB,UAAU,0BAAV,UAAU,QAY1B"}
1
+ {"version":3,"file":"time-or-rule.js","sourceRoot":"","sources":["../../src/time-or-rule.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAIjC,IAAiB,UAAU,CAwB1B;AAxBD,WAAiB,UAAU;IACvB,SAAgB,KAAK,CAAC,KAAa;QAC/B,MAAM,IAAI,GAAG,gBAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC;IAHe,gBAAK,QAGpB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAFe,iBAAM,SAErB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAFe,iBAAM,SAErB,CAAA;IAED,SAAgB,UAAU,CAAC,KAAiB;QACxC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QACD,OAAO,gBAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IALe,qBAAU,aAKzB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;IAFe,iBAAM,SAErB,CAAA;AACL,CAAC,EAxBgB,UAAU,0BAAV,UAAU,QAwB1B"}
@@ -1,7 +1,6 @@
1
- import { Step } from "./step";
2
1
  import { TimeOrRule } from "./time-or-rule";
3
2
  export type BreakdownRule = string;
4
- export type BreakdownPeriod = Step;
3
+ export type BreakdownPeriod = "hour" | "day" | "week" | "month" | "year";
5
4
  interface BreakdownRuleInit {
6
5
  origin?: TimeOrRule;
7
6
  count: number;
@@ -14,7 +13,7 @@ export declare namespace BreakdownRule {
14
13
  function split(rule: BreakdownRule): {
15
14
  origin: TimeOrRule;
16
15
  count: number;
17
- period: Step;
16
+ period: BreakdownPeriod;
18
17
  };
19
18
  }
20
19
  export {};
@@ -44,7 +44,7 @@ export function BreakdownRule(...params) {
44
44
  period = period.substring(0, period.length - 1);
45
45
  }
46
46
  return {
47
- origin: origin,
47
+ origin: TimeOrRule.parse(origin),
48
48
  count,
49
49
  period: period,
50
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"breakdown-rule.js","sourceRoot":"","sources":["../../src/breakdown-rule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqB5C,MAAM,UAAU,aAAa,CAAC,GAAG,MAAa;;IAC1C,IAAI,IAAuB,CAAC;IAC5B,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACF,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM;QACV,KAAK,CAAC;YACF,IAAI,GAAG;gBACH,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACpB,CAAC;YACF,MAAM;QACV,KAAK,CAAC;YACF,IAAI,GAAG;gBACH,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBACjB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACpB,CAAC;YACF,MAAM;QACV;YACI,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAC;IACjC,MAAM,UAAU,GACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAClE,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,EAAE;QAC7C,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE;QAC9B,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC;AACjD,CAAC;AAED,WAAiB,aAAa;IAC1B,MAAM,KAAK,GAAG,IAAI,MAAM,CACpB,mDAAmD,CACtD,CAAC;IACF,SAAgB,KAAK,CAAC,IAAmB;;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO;YACH,MAAM,EAAE,MAAoB;YAC5B,KAAK;YACL,MAAM,EAAE,MAAyB;SACpC,CAAC;IACN,CAAC;IAhBe,mBAAK,QAgBpB,CAAA;AACL,CAAC,EArBgB,aAAa,KAAb,aAAa,QAqB7B"}
1
+ {"version":3,"file":"breakdown-rule.js","sourceRoot":"","sources":["../../src/breakdown-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqB5C,MAAM,UAAU,aAAa,CAAC,GAAG,MAAa;;IAC1C,IAAI,IAAuB,CAAC;IAC5B,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACF,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM;QACV,KAAK,CAAC;YACF,IAAI,GAAG;gBACH,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACpB,CAAC;YACF,MAAM;QACV,KAAK,CAAC;YACF,IAAI,GAAG;gBACH,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBACjB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACpB,CAAC;YACF,MAAM;QACV;YACI,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAC;IACjC,MAAM,UAAU,GACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAClE,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,EAAE;QAC7C,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE;QAC9B,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC;AACjD,CAAC;AAED,WAAiB,aAAa;IAC1B,MAAM,KAAK,GAAG,IAAI,MAAM,CACpB,mDAAmD,CACtD,CAAC;IACF,SAAgB,KAAK,CAAC,IAAmB;;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO;YACH,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;YAChC,KAAK;YACL,MAAM,EAAE,MAAyB;SACpC,CAAC;IACN,CAAC;IAhBe,mBAAK,QAgBpB,CAAA;AACL,CAAC,EArBgB,aAAa,KAAb,aAAa,QAqB7B"}
@@ -1,4 +1,6 @@
1
1
  import { BreakdownRule } from "./breakdown-rule";
2
+ import { DateTime } from "luxon";
3
+ import { TimeOrRule } from ".";
2
4
  import { expect } from "chai";
3
5
  describe("ctor", () => {
4
6
  it("creates", () => {
@@ -35,5 +37,12 @@ describe("split", () => {
35
37
  expect(count).to.equal(10);
36
38
  expect(period).to.equal("hour");
37
39
  });
40
+ it("splits with time origin", () => {
41
+ const { origin, count, period } = BreakdownRule.split("2024-01-25T00:00:00.000+01:00/1hour");
42
+ expect(TimeOrRule.isTime(origin)).to.equal(true);
43
+ expect(+origin).to.equal(+DateTime.local(2024, 1, 25));
44
+ expect(count).to.equal(1);
45
+ expect(period).to.equal("hour");
46
+ });
38
47
  });
39
48
  //# sourceMappingURL=breakdown-rule.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"breakdown-rule.spec.js","sourceRoot":"","sources":["../../src/breakdown-rule.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"breakdown-rule.spec.js","sourceRoot":"","sources":["../../src/breakdown-rule.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IAClB,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACf,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvE,MAAM,CACF,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAC1D,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,CACF,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAC1D,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrB,MAAM,CACF,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAC7D,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxB,MAAM,CACF,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAC7D,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEzB,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEpD,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACnB,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CACjD,6BAA6B,CAChC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QAC/B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CACjD,qCAAqC,CACxC,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CACpB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC/B,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { DateTime } from "luxon";
2
2
  export type TimeOrRule = Date | DateTime | string;
3
3
  export declare namespace TimeOrRule {
4
+ function parse(input: string): TimeOrRule;
4
5
  function isTime(input: TimeOrRule): input is Date | DateTime;
5
6
  function isRule(input: TimeOrRule): input is string;
6
- function asJSON(input: TimeOrRule): string | null;
7
+ function asDateTime(input: TimeOrRule): DateTime<true> | DateTime<false> | undefined;
8
+ function toJSON(input: TimeOrRule): string | null;
7
9
  }
@@ -1,5 +1,11 @@
1
+ import { DateTime } from "luxon";
1
2
  export var TimeOrRule;
2
3
  (function (TimeOrRule) {
4
+ function parse(input) {
5
+ const time = DateTime.fromISO(input, { setZone: true });
6
+ return time.isValid ? time : input;
7
+ }
8
+ TimeOrRule.parse = parse;
3
9
  function isTime(input) {
4
10
  return typeof input !== "string";
5
11
  }
@@ -8,9 +14,16 @@ export var TimeOrRule;
8
14
  return typeof input === "string";
9
15
  }
10
16
  TimeOrRule.isRule = isRule;
11
- function asJSON(input) {
17
+ function asDateTime(input) {
18
+ if (isRule(input)) {
19
+ return;
20
+ }
21
+ return DateTime.isDateTime(input) ? input : DateTime.fromJSDate(input);
22
+ }
23
+ TimeOrRule.asDateTime = asDateTime;
24
+ function toJSON(input) {
12
25
  return isRule(input) ? input : input.toJSON();
13
26
  }
14
- TimeOrRule.asJSON = asJSON;
27
+ TimeOrRule.toJSON = toJSON;
15
28
  })(TimeOrRule || (TimeOrRule = {}));
16
29
  //# sourceMappingURL=time-or-rule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time-or-rule.js","sourceRoot":"","sources":["../../src/time-or-rule.ts"],"names":[],"mappings":"AAIA,MAAM,KAAW,UAAU,CAY1B;AAZD,WAAiB,UAAU;IACvB,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAFe,iBAAM,SAErB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAFe,iBAAM,SAErB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;IAFe,iBAAM,SAErB,CAAA;AACL,CAAC,EAZgB,UAAU,KAAV,UAAU,QAY1B"}
1
+ {"version":3,"file":"time-or-rule.js","sourceRoot":"","sources":["../../src/time-or-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIjC,MAAM,KAAW,UAAU,CAwB1B;AAxBD,WAAiB,UAAU;IACvB,SAAgB,KAAK,CAAC,KAAa;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC;IAHe,gBAAK,QAGpB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAFe,iBAAM,SAErB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAFe,iBAAM,SAErB,CAAA;IAED,SAAgB,UAAU,CAAC,KAAiB;QACxC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QACD,OAAO,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IALe,qBAAU,aAKzB,CAAA;IAED,SAAgB,MAAM,CAAC,KAAiB;QACpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;IAFe,iBAAM,SAErB,CAAA;AACL,CAAC,EAxBgB,UAAU,KAAV,UAAU,QAwB1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utiliread/primitives",
3
- "version": "1.0.0-96",
3
+ "version": "1.0.0-98",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/esm/index.d.ts",
@@ -1,14 +1,24 @@
1
1
  import { BreakdownRule } from "./breakdown-rule";
2
+ import { DateTime } from "luxon";
3
+ import { TimeOrRule } from ".";
2
4
  import { expect } from "chai";
3
5
 
4
6
  describe("ctor", () => {
5
7
  it("creates", () => {
6
- expect(BreakdownRule({ count: 1, period: "hour"})).to.equal("1hour");
7
- expect(BreakdownRule({ count: 2, period: "hour"})).to.equal("2hours");
8
- expect(BreakdownRule({ origin: "", count: 1, period: "hour"})).to.equal("1hour");
9
- expect(BreakdownRule({ origin: "", count: 2, period: "hour"})).to.equal("2hours");
10
- expect(BreakdownRule({ origin: "day", count: 1, period: "hour"})).to.equal("day/1hour");
11
- expect(BreakdownRule({ origin: "day", count: 2, period: "hour"})).to.equal("day/2hours");
8
+ expect(BreakdownRule({ count: 1, period: "hour" })).to.equal("1hour");
9
+ expect(BreakdownRule({ count: 2, period: "hour" })).to.equal("2hours");
10
+ expect(
11
+ BreakdownRule({ origin: "", count: 1, period: "hour" }),
12
+ ).to.equal("1hour");
13
+ expect(
14
+ BreakdownRule({ origin: "", count: 2, period: "hour" }),
15
+ ).to.equal("2hours");
16
+ expect(
17
+ BreakdownRule({ origin: "day", count: 1, period: "hour" }),
18
+ ).to.equal("day/1hour");
19
+ expect(
20
+ BreakdownRule({ origin: "day", count: 2, period: "hour" }),
21
+ ).to.equal("day/2hours");
12
22
 
13
23
  expect(BreakdownRule(1, "hour")).to.equal("1hour");
14
24
  expect(BreakdownRule(2, "hour")).to.equal("2hours");
@@ -36,9 +46,23 @@ describe("split", () => {
36
46
  });
37
47
 
38
48
  it("splits with complex origin and plural count", () => {
39
- const { origin, count, period } = BreakdownRule.split("day+PT1H_year^month/10hours");
49
+ const { origin, count, period } = BreakdownRule.split(
50
+ "day+PT1H_year^month/10hours",
51
+ );
40
52
  expect(origin).to.equal("day+PT1H_year^month");
41
53
  expect(count).to.equal(10);
42
54
  expect(period).to.equal("hour");
43
55
  });
56
+
57
+ it("splits with time origin", () => {
58
+ const { origin, count, period } = BreakdownRule.split(
59
+ "2024-01-25T00:00:00.000+01:00/1hour",
60
+ );
61
+ expect(TimeOrRule.isTime(origin)).to.equal(true);
62
+ expect(+origin).to.equal(
63
+ +DateTime.local(2024, 1, 25),
64
+ );
65
+ expect(count).to.equal(1);
66
+ expect(period).to.equal("hour");
67
+ });
44
68
  });
@@ -1,8 +1,7 @@
1
- import { Step } from "./step";
2
1
  import { TimeOrRule } from "./time-or-rule";
3
2
 
4
3
  export type BreakdownRule = string;
5
- export type BreakdownPeriod = Step;
4
+ export type BreakdownPeriod = "hour" | "day" | "week" | "month" | "year";
6
5
 
7
6
  interface BreakdownRuleInit {
8
7
  origin?: TimeOrRule;
@@ -67,7 +66,7 @@ export namespace BreakdownRule {
67
66
  period = period.substring(0, period.length - 1);
68
67
  }
69
68
  return {
70
- origin: origin as TimeOrRule,
69
+ origin: TimeOrRule.parse(origin),
71
70
  count,
72
71
  period: period as BreakdownPeriod,
73
72
  };
@@ -3,6 +3,11 @@ import { DateTime } from "luxon";
3
3
  export type TimeOrRule = Date | DateTime | string;
4
4
 
5
5
  export namespace TimeOrRule {
6
+ export function parse(input: string): TimeOrRule {
7
+ const time = DateTime.fromISO(input, { setZone: true });
8
+ return time.isValid ? time : input;
9
+ }
10
+
6
11
  export function isTime(input: TimeOrRule): input is Date | DateTime {
7
12
  return typeof input !== "string";
8
13
  }
@@ -11,7 +16,14 @@ export namespace TimeOrRule {
11
16
  return typeof input === "string";
12
17
  }
13
18
 
14
- export function asJSON(input: TimeOrRule) {
19
+ export function asDateTime(input: TimeOrRule) {
20
+ if (isRule(input)) {
21
+ return;
22
+ }
23
+ return DateTime.isDateTime(input) ? input : DateTime.fromJSDate(input);
24
+ }
25
+
26
+ export function toJSON(input: TimeOrRule) {
15
27
  return isRule(input) ? input : input.toJSON();
16
28
  }
17
29
  }