@utiliread/primitives 1.0.0-95 → 1.0.0-97

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":";;AAAA,qDAAiD;AACjD,+BAA8B;AAE9B,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IAClB,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACf,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrE,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtE,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjF,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClF,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxF,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEzF,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnD,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,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,8BAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,aAAM,EAAC,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,8BAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnE,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,aAAM,EAAC,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,8BAAa,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACrF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC/C,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"breakdown-rule.spec.js","sourceRoot":"","sources":["../../src/breakdown-rule.spec.ts"],"names":[],"mappings":";;AAAA,qDAAiD;AACjD,iCAAiC;AACjC,wBAA+B;AAC/B,+BAA8B;AAE9B,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IAClB,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACf,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtE,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAA,aAAM,EACF,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAC1D,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,IAAA,aAAM,EACF,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAC1D,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrB,IAAA,aAAM,EACF,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAC7D,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxB,IAAA,aAAM,EACF,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAC7D,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEzB,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnD,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAA,aAAM,EAAC,IAAA,8BAAa,EAAC,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,8BAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,aAAM,EAAC,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,8BAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnE,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,aAAM,EAAC,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,8BAAa,CAAC,KAAK,CACjD,6BAA6B,CAChC,CAAC;QACF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC/C,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAA,aAAM,EAAC,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,8BAAa,CAAC,KAAK,CACjD,qCAAqC,CACxC,CAAC;QACF,IAAA,aAAM,EAAC,aAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,IAAA,aAAM,EAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CACpB,CAAC,gBAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC/B,CAAC;QACF,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.TimeOrRule = exports.Step = exports.Repository = exports.registers = exports.RegisterLibrary = exports.RegisterConvention = exports.PrecisionNumber = exports.NumberFormatter = exports.localeDecimalSeparator = exports.invariantDecimalSeparator = exports.DayOfWeek = void 0;
26
+ exports.TimeOrRule = exports.Step = exports.Repository = exports.registers = exports.RegisterLibrary = exports.RegisterConvention = exports.PrecisionNumber = exports.NumberFormatter = exports.localeDecimalSeparator = exports.invariantDecimalSeparator = exports.DayOfWeek = exports.BreakdownRule = void 0;
27
27
  require("./repository"); // We need this to get the Repository namespace exported
28
28
  const registers = __importStar(require("./registers"));
29
29
  exports.registers = registers;
@@ -34,6 +34,8 @@ const number_formatter_1 = require("./number-formatter");
34
34
  Object.defineProperty(exports, "NumberFormatter", { enumerable: true, get: function () { return number_formatter_1.NumberFormatter; } });
35
35
  Object.defineProperty(exports, "invariantDecimalSeparator", { enumerable: true, get: function () { return number_formatter_1.invariantDecimalSeparator; } });
36
36
  Object.defineProperty(exports, "localeDecimalSeparator", { enumerable: true, get: function () { return number_formatter_1.localeDecimalSeparator; } });
37
+ const breakdown_rule_1 = require("./breakdown-rule");
38
+ Object.defineProperty(exports, "BreakdownRule", { enumerable: true, get: function () { return breakdown_rule_1.BreakdownRule; } });
37
39
  const precision_number_1 = require("./precision-number");
38
40
  Object.defineProperty(exports, "PrecisionNumber", { enumerable: true, get: function () { return precision_number_1.PrecisionNumber; } });
39
41
  const register_convention_1 = require("./register-convention");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAAsB,CAAC,wDAAwD;AAE/E,uDAAyC;AAuCrC,8BAAS;AApCb,iCAAyC;AAwBrC,0FAxBK,gBAAS,OAwBL;AAcT,qFAtCgB,WAAI,OAsChB;AArCR,yDAI4B;AAwBxB,gGA3BA,kCAAe,OA2BA;AAJf,0GAtBA,4CAAyB,OAsBA;AACzB,uGAtBA,yCAAsB,OAsBA;AAf1B,yDAAqD;AAoBjD,gGApBK,kCAAe,OAoBL;AAnBnB,+DAA2D;AAoBvD,mGApBK,wCAAkB,OAoBL;AAjBtB,yDAAqD;AAoBjD,gGApBK,kCAAe,OAoBL;AAnBnB,6CAA0C;AAqBtC,2FArBK,uBAAU,OAqBL;AApBd,iDAA4C;AAsBxC,2FAtBK,yBAAU,OAsBL"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAAsB,CAAC,wDAAwD;AAE/E,uDAAyC;AAwCrC,8BAAS;AAtCb,iCAAyC;AA0BrC,0FA1BK,gBAAS,OA0BL;AAcT,qFAxCgB,WAAI,OAwChB;AAvCR,yDAI4B;AA0BxB,gGA7BA,kCAAe,OA6BA;AAJf,0GAxBA,4CAAyB,OAwBA;AACzB,uGAxBA,yCAAsB,OAwBA;AAnB1B,qDAAiD;AAgB7C,8FAhBK,8BAAa,OAgBL;AAZjB,yDAAqD;AAoBjD,gGApBK,kCAAe,OAoBL;AAnBnB,+DAA2D;AAoBvD,mGApBK,wCAAkB,OAoBL;AAjBtB,yDAAqD;AAoBjD,gGApBK,kCAAe,OAoBL;AAnBnB,6CAA0C;AAqBtC,2FArBK,uBAAU,OAqBL;AApBd,iDAA4C;AAsBxC,2FAtBK,yBAAU,OAsBL"}
@@ -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
  }
@@ -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,CAiB1B;AAjBD,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,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,EAjBgB,UAAU,0BAAV,UAAU,QAiB1B"}
@@ -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":"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"}
@@ -1,9 +1,10 @@
1
1
  import "./repository";
2
2
  import * as registers from "./registers";
3
- import type { BreakdownPeriod, BreakdownRule } from "./breakdown-rule";
4
3
  import { DayOfWeek, Step } from "./step";
5
4
  import { NumberFormatter, invariantDecimalSeparator, localeDecimalSeparator } from "./number-formatter";
6
5
  import type { AggregateId } from "./aggregate-id";
6
+ import type { BreakdownPeriod } from "./breakdown-rule";
7
+ import { BreakdownRule } from "./breakdown-rule";
7
8
  import type { MeasureId } from "./measure-id";
8
9
  import type { Medium } from "./medium";
9
10
  import type { Optional } from "./optional";
package/dist/esm/index.js CHANGED
@@ -2,10 +2,11 @@ import "./repository"; // We need this to get the Repository namespace exported
2
2
  import * as registers from "./registers";
3
3
  import { DayOfWeek, Step } from "./step";
4
4
  import { NumberFormatter, invariantDecimalSeparator, localeDecimalSeparator, } from "./number-formatter";
5
+ import { BreakdownRule } from "./breakdown-rule";
5
6
  import { PrecisionNumber } from "./precision-number";
6
7
  import { RegisterConvention } from "./register-convention";
7
8
  import { RegisterLibrary } from "./register-library";
8
9
  import { Repository } from "./repository";
9
10
  import { TimeOrRule } from "./time-or-rule";
10
- export { DayOfWeek, invariantDecimalSeparator, localeDecimalSeparator, NumberFormatter, PrecisionNumber, RegisterConvention, RegisterLibrary, registers, Repository, Step, TimeOrRule, };
11
+ export { BreakdownRule, DayOfWeek, invariantDecimalSeparator, localeDecimalSeparator, NumberFormatter, PrecisionNumber, RegisterConvention, RegisterLibrary, registers, Repository, Step, TimeOrRule, };
11
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC,CAAC,wDAAwD;AAE/E,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EACH,eAAe,EACf,yBAAyB,EACzB,sBAAsB,GACzB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAIH,SAAS,EACT,yBAAyB,EACzB,sBAAsB,EAGtB,eAAe,EAEf,eAAe,EACf,kBAAkB,EAGlB,eAAe,EACf,SAAS,EACT,UAAU,EACV,IAAI,EACJ,UAAU,GAEb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC,CAAC,wDAAwD;AAE/E,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EACH,eAAe,EACf,yBAAyB,EACzB,sBAAsB,GACzB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAGH,aAAa,EACb,SAAS,EACT,yBAAyB,EACzB,sBAAsB,EAGtB,eAAe,EAEf,eAAe,EACf,kBAAkB,EAGlB,eAAe,EACf,SAAS,EACT,UAAU,EACV,IAAI,EACJ,UAAU,GAEb,CAAC"}
@@ -1,6 +1,7 @@
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
7
  function asJSON(input: TimeOrRule): string | null;
@@ -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
  }
@@ -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,CAiB1B;AAjBD,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,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,EAjBgB,UAAU,KAAV,UAAU,QAiB1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utiliread/primitives",
3
- "version": "1.0.0-95",
3
+ "version": "1.0.0-97",
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
  };
package/src/index.ts CHANGED
@@ -2,7 +2,6 @@ import "./repository"; // We need this to get the Repository namespace exported
2
2
 
3
3
  import * as registers from "./registers";
4
4
 
5
- import type { BreakdownPeriod, BreakdownRule } from "./breakdown-rule";
6
5
  import { DayOfWeek, Step } from "./step";
7
6
  import {
8
7
  NumberFormatter,
@@ -11,6 +10,8 @@ import {
11
10
  } from "./number-formatter";
12
11
 
13
12
  import type { AggregateId } from "./aggregate-id";
13
+ import type { BreakdownPeriod } from "./breakdown-rule";
14
+ import { BreakdownRule } from "./breakdown-rule";
14
15
  import type { MeasureId } from "./measure-id";
15
16
  import type { Medium } from "./medium";
16
17
  import type { Optional } from "./optional";
@@ -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
  }