@tachybase/utils 0.23.20 → 0.23.35

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.
@@ -1,3 +1,7 @@
1
+ export declare function parseWeek(value: any): {
2
+ unit: string;
3
+ start: string;
4
+ };
1
5
  export declare function parseDate(value: any, options?: {
2
6
  timezone?: string;
3
7
  }): string | any[];
package/lib/parse-date.js CHANGED
@@ -18,7 +18,8 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var parse_date_exports = {};
20
20
  __export(parse_date_exports, {
21
- parseDate: () => parseDate
21
+ parseDate: () => parseDate,
22
+ parseWeek: () => parseWeek
22
23
  });
23
24
  module.exports = __toCommonJS(parse_date_exports);
24
25
  var import_date = require("./date");
@@ -60,13 +61,27 @@ __name(parseQuarter, "parseQuarter");
60
61
  function parseWeek(value) {
61
62
  if (/^\d\d\d\d[W]\d\d$/.test(value)) {
62
63
  const arr = value.split("W");
64
+ const year = (0, import_dayjs.dayjs)(arr[0], "YYYY").format("GGGG");
65
+ if (year !== arr[0]) {
66
+ return {
67
+ unit: "isoWeek",
68
+ start: (0, import_dayjs.dayjs)(arr[0], "YYYY").add(1, "week").startOf("isoWeek").isoWeek(Number(arr[1])).format("YYYY-MM-DD HH:mm:ss")
69
+ };
70
+ }
63
71
  return {
64
72
  unit: "isoWeek",
65
- start: (0, import_dayjs.dayjs)(arr[0], "YYYY").add(Number(arr[1]), "weeks").format("YYYY-MM-DD HH:mm:ss")
73
+ start: (0, import_dayjs.dayjs)(arr[0], "YYYY").isoWeek(Number(arr[1])).format("YYYY-MM-DD HH:mm:ss")
66
74
  };
67
75
  }
68
76
  if (/^\d\d\d\d[w]\d\d$/.test(value)) {
69
77
  const arr = value.split("w");
78
+ const year = (0, import_dayjs.dayjs)(arr[0], "YYYY").format("gggg");
79
+ if (year !== arr[0]) {
80
+ return {
81
+ unit: "week",
82
+ start: (0, import_dayjs.dayjs)(arr[0], "YYYY").add(1, "week").startOf("week").week(Number(arr[1])).format("YYYY-MM-DD HH:mm:ss")
83
+ };
84
+ }
70
85
  return {
71
86
  unit: "week",
72
87
  start: (0, import_dayjs.dayjs)(arr[0], "YYYY").week(Number(arr[1])).format("YYYY-MM-DD HH:mm:ss")
@@ -75,7 +90,7 @@ function parseWeek(value) {
75
90
  }
76
91
  __name(parseWeek, "parseWeek");
77
92
  function parseMonth(value) {
78
- if (/^\d\d\d\d\-\d\d$/.test(value)) {
93
+ if (/^\d\d\d\d-\d\d$/.test(value)) {
79
94
  return {
80
95
  unit: "month",
81
96
  start: `${value}-01 00:00:00`
@@ -84,7 +99,7 @@ function parseMonth(value) {
84
99
  }
85
100
  __name(parseMonth, "parseMonth");
86
101
  function parseDay(value) {
87
- if (/^\d\d\d\d\-\d\d\-\d\d$/.test(value)) {
102
+ if (/^\d\d\d\d-\d\d-\d\d$/.test(value)) {
88
103
  return {
89
104
  unit: "day",
90
105
  start: `${value} 00:00:00`
@@ -93,7 +108,7 @@ function parseDay(value) {
93
108
  }
94
109
  __name(parseDay, "parseDay");
95
110
  function parseHour(value) {
96
- if (/^\d\d\d\d\-\d\d\-\d\d(\T|\s)\d\d$/.test(value)) {
111
+ if (/^\d\d\d\d-\d\d-\d\d(T|\s)\d\d$/.test(value)) {
97
112
  return {
98
113
  unit: "hour",
99
114
  start: `${value}:00:00`
@@ -102,7 +117,7 @@ function parseHour(value) {
102
117
  }
103
118
  __name(parseHour, "parseHour");
104
119
  function parseMinute(value) {
105
- if (/^\d\d\d\d\-\d\d\-\d\d(\T|\s)\d\d\:\d\d$/.test(value)) {
120
+ if (/^\d\d\d\d-\d\d-\d\d(T|\s)\d\d:\d\d$/.test(value)) {
106
121
  return {
107
122
  unit: "minute",
108
123
  start: `${value}:00`
@@ -111,7 +126,7 @@ function parseMinute(value) {
111
126
  }
112
127
  __name(parseMinute, "parseMinute");
113
128
  function parseSecond(value) {
114
- if (/^\d\d\d\d\-\d\d\-\d\d(\T|\s)\d\d\:\d\d\:\d\d$/.test(value)) {
129
+ if (/^\d\d\d\d-\d\d-\d\d(T|\s)\d\d:\d\d:\d\d$/.test(value)) {
115
130
  return {
116
131
  unit: "second",
117
132
  start: `${value}`
@@ -120,7 +135,7 @@ function parseSecond(value) {
120
135
  }
121
136
  __name(parseSecond, "parseSecond");
122
137
  function parseMillisecond(value) {
123
- if (/^\d\d\d\d\-\d\d\-\d\d(\T|\s)\d\d\:\d\d\:\d\d\.\d\d\d$/.test(value)) {
138
+ if (/^\d\d\d\d-\d\d-\d\d(T|\s)\d\d:\d\d:\d\d\.\d\d\d$/.test(value)) {
124
139
  return {
125
140
  unit: "millisecond",
126
141
  start: `${value}`
@@ -168,7 +183,7 @@ function parseDate(value, options = {}) {
168
183
  let timezone = options.timezone || "+00:00";
169
184
  const input = value;
170
185
  if (typeof value === "string") {
171
- const match = /(.+)((\+|\-)\d\d\:\d\d)$/.exec(value);
186
+ const match = /(.+)((\+|-)\d\d:\d\d)$/.exec(value);
172
187
  if (match) {
173
188
  value = match[1];
174
189
  timezone = match[2];
@@ -218,13 +233,13 @@ function parseDateBetween(value, options = {}) {
218
233
  if (typeof value !== "string") {
219
234
  return;
220
235
  }
221
- const match = /(.+)((\+|\-)\d\d\:\d\d)$/.exec(value);
236
+ const match = /(.+)((\+|-)\d\d:\d\d)$/.exec(value);
222
237
  let timezone = options.timezone || "+00:00";
223
238
  if (match) {
224
239
  value = match[1];
225
240
  timezone = match[2];
226
241
  }
227
- const m = /^(\(|\[)(.+)\,(.+)(\)|\])$/.exec(value);
242
+ const m = /^(\(|\[)(.+),(.+)(\)|\])$/.exec(value);
228
243
  if (!m) {
229
244
  return;
230
245
  }
@@ -233,5 +248,6 @@ function parseDateBetween(value, options = {}) {
233
248
  __name(parseDateBetween, "parseDateBetween");
234
249
  // Annotate the CommonJS export names for ESM import in node:
235
250
  0 && (module.exports = {
236
- parseDate
251
+ parseDate,
252
+ parseWeek
237
253
  });
@@ -209,26 +209,26 @@ function getDayRange(options) {
209
209
  ];
210
210
  }
211
211
  __name(getDayRange, "getDayRange");
212
- function toMoment(value) {
212
+ function toMoment(value, unit = "") {
213
213
  if (!value) {
214
- return (0, import_dayjs.dayjs)();
214
+ return unit === "isoWeek" ? (0, import_dayjs.dayjs)().isoWeekday(1) : (0, import_dayjs.dayjs)();
215
215
  }
216
216
  if (import_dayjs.dayjs.isDayjs(value)) {
217
217
  return value;
218
218
  }
219
- return (0, import_dayjs.dayjs)(value);
219
+ return unit === "isoWeek" ? (0, import_dayjs.dayjs)(value).isoWeekday(1) : (0, import_dayjs.dayjs)(value);
220
220
  }
221
221
  __name(toMoment, "toMoment");
222
222
  function utc2unit(options) {
223
223
  var _a;
224
224
  const { now, unit, timezone = "+00:00", offset } = options;
225
- let m = toMoment(now);
225
+ let m = toMoment(now, unit);
226
226
  m = m.utcOffset((0, import_date.offsetFromString)(timezone));
227
227
  m = m.startOf(unit);
228
228
  if (offset > 0) {
229
- m = m.add(offset, unit);
229
+ m = m.add(offset, unit === "isoWeek" ? "week" : unit);
230
230
  } else if (offset < 0) {
231
- m = m.subtract(-1 * offset, unit);
231
+ m = m.subtract(-1 * offset, unit === "isoWeek" ? "week" : unit);
232
232
  }
233
233
  const fn = {
234
234
  year: /* @__PURE__ */ __name(() => m.format("YYYY"), "year"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tachybase/utils",
3
- "version": "0.23.20",
3
+ "version": "0.23.35",
4
4
  "license": "Apache-2.0",
5
5
  "exports": {
6
6
  ".": {