@louis.jln/extract-date 4.0.1 → 4.0.3
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/{src/calculateSpecificity.js → calculateSpecificity.js} +4 -1
- package/calculateSpecificity.js.map +1 -0
- package/{src/createFormats.js → createFormats.js} +19 -13
- package/createFormats.js.map +1 -0
- package/{src/createMovingChunks.js → createMovingChunks.js} +4 -1
- package/createMovingChunks.js.map +1 -0
- package/{src/extractDate.js → extractDate.js} +41 -35
- package/extractDate.js.map +1 -0
- package/extractRelativeDate.js +29 -0
- package/extractRelativeDate.js.map +1 -0
- package/index.js +8 -0
- package/index.js.map +1 -0
- package/{src/normalizeInput.js → normalizeInput.js} +4 -1
- package/normalizeInput.js.map +1 -0
- package/package.json +2 -3
- package/{src/resolveLocalizedNames.js → resolveLocalizedNames.js} +17 -8
- package/resolveLocalizedNames.js.map +1 -0
- package/types.js +3 -0
- package/types.js.map +1 -0
- package/src/extractRelativeDate.js +0 -23
- package/src/index.js +0 -2
- package/src/types.js +0 -1
- package/test/extract-date/calculateSpecificity.test.d.ts +0 -1
- package/test/extract-date/calculateSpecificity.test.js +0 -39
- package/test/extract-date/createMovingChunks.test.d.ts +0 -1
- package/test/extract-date/createMovingChunks.test.js +0 -28
- package/test/extract-date/extractDate/configuration.test.d.ts +0 -1
- package/test/extract-date/extractDate/configuration.test.js +0 -36
- package/test/extract-date/extractDate/edge-cases.test.d.ts +0 -1
- package/test/extract-date/extractDate/edge-cases.test.js +0 -23
- package/test/extract-date/extractDate/fixtures.test.d.ts +0 -1
- package/test/extract-date/extractDate/fixtures.test.js +0 -42
- package/test/extract-date/extractDate/general-formats.test.d.ts +0 -1
- package/test/extract-date/extractDate/general-formats.test.js +0 -45
- package/test/extract-date/extractDate/implied-year.test.d.ts +0 -1
- package/test/extract-date/extractDate/implied-year.test.js +0 -105
- package/test/extract-date/extractDate/localised.test.d.ts +0 -1
- package/test/extract-date/extractDate/localised.test.js +0 -75
- package/test/extract-date/extractDate/multiple-dates.test.d.ts +0 -1
- package/test/extract-date/extractDate/multiple-dates.test.js +0 -24
- package/test/extract-date/extractDate/relative-dates.test.d.ts +0 -1
- package/test/extract-date/extractDate/relative-dates.test.js +0 -47
- package/test/extract-date/extractRelativeDate.test.d.ts +0 -1
- package/test/extract-date/extractRelativeDate.test.js +0 -29
- package/test/extract-date/normalizeInput.test.d.ts +0 -1
- package/test/extract-date/normalizeInput.test.js +0 -14
- package/test/fixtures/dates.json +0 -22574
- /package/{src/calculateSpecificity.d.ts → calculateSpecificity.d.ts} +0 -0
- /package/{src/createFormats.d.ts → createFormats.d.ts} +0 -0
- /package/{src/createMovingChunks.d.ts → createMovingChunks.d.ts} +0 -0
- /package/{src/days.json → days.json} +0 -0
- /package/{src/extractDate.d.ts → extractDate.d.ts} +0 -0
- /package/{src/extractRelativeDate.d.ts → extractRelativeDate.d.ts} +0 -0
- /package/{src/index.d.ts → index.d.ts} +0 -0
- /package/{src/months.json → months.json} +0 -0
- /package/{src/normalizeInput.d.ts → normalizeInput.d.ts} +0 -0
- /package/{src/resolveLocalizedNames.d.ts → resolveLocalizedNames.d.ts} +0 -0
- /package/{src/types.d.ts → types.d.ts} +0 -0
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = (dateFnsFormat) => {
|
|
2
4
|
let specificity = 0;
|
|
3
5
|
if (dateFnsFormat.includes('yyyy')) {
|
|
4
6
|
specificity += 40;
|
|
@@ -14,3 +16,4 @@ export default (dateFnsFormat) => {
|
|
|
14
16
|
}
|
|
15
17
|
return specificity + dateFnsFormat.length;
|
|
16
18
|
};
|
|
19
|
+
//# sourceMappingURL=calculateSpecificity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculateSpecificity.js","sourceRoot":"","sources":["../src/calculateSpecificity.ts"],"names":[],"mappings":";;AAAA,kBAAe,CAAC,aAAqB,EAAU,EAAE;IAC/C,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,WAAW,IAAI,EAAE,CAAC;IACpB,CAAC;SAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,WAAW,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,WAAW,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5B,WAAW,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;AAC5C,CAAC,CAAC"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const cartesian_1 = __importDefault(require("cartesian"));
|
|
7
|
+
const calculateSpecificity_1 = __importDefault(require("@/calculateSpecificity"));
|
|
3
8
|
const formatCombinaison = (combination) => combination.join(' ').replace(' ,', ',').replace(/ +/, ' ').replace(/ $/, '');
|
|
4
|
-
|
|
9
|
+
exports.default = () => {
|
|
5
10
|
const yearFirstDashSeparator = [
|
|
6
11
|
{ dateFnsFormat: 'yyyy-MM-dd' },
|
|
7
12
|
{ dateFnsFormat: 'yyyy-M-d' },
|
|
@@ -41,19 +46,19 @@ export default () => {
|
|
|
41
46
|
{ dateFnsFormat: 'M/d/yy', direction: 'MDY' },
|
|
42
47
|
];
|
|
43
48
|
const localised = [
|
|
44
|
-
...
|
|
49
|
+
...(0, cartesian_1.default)([
|
|
45
50
|
['MMMM'],
|
|
46
51
|
['d', 'do'],
|
|
47
52
|
[',', ''],
|
|
48
53
|
['yyyy'],
|
|
49
54
|
[',', ''],
|
|
50
55
|
]).map((combination) => ({ dateFnsFormat: formatCombinaison(combination) })),
|
|
51
|
-
...
|
|
56
|
+
...(0, cartesian_1.default)([
|
|
52
57
|
['do', 'd'],
|
|
53
58
|
['MMMM', 'MMM'],
|
|
54
59
|
['yyyy'],
|
|
55
60
|
]).map((combination) => ({ dateFnsFormat: formatCombinaison(combination) })),
|
|
56
|
-
...
|
|
61
|
+
...(0, cartesian_1.default)([
|
|
57
62
|
['MMMM', 'MMM'],
|
|
58
63
|
['yyyy'],
|
|
59
64
|
['do', 'd'],
|
|
@@ -62,31 +67,31 @@ export default () => {
|
|
|
62
67
|
{ dateFnsFormat: 'MMMM yyyy EEE d' },
|
|
63
68
|
];
|
|
64
69
|
const impliedYearLocalised = [
|
|
65
|
-
...
|
|
70
|
+
...(0, cartesian_1.default)([
|
|
66
71
|
['EEEE', 'EEE'],
|
|
67
72
|
['', ','],
|
|
68
73
|
['MMMM', 'MMM'],
|
|
69
74
|
['dd', 'do', 'd'],
|
|
70
75
|
]).map((combination) => ({ dateFnsFormat: formatCombinaison(combination) })),
|
|
71
|
-
...
|
|
76
|
+
...(0, cartesian_1.default)([
|
|
72
77
|
['EEEE', 'EEE'],
|
|
73
78
|
['', ','],
|
|
74
79
|
['dd', 'do', 'd'],
|
|
75
80
|
['MMMM', 'MMM'],
|
|
76
81
|
]).map((combination) => ({ dateFnsFormat: formatCombinaison(combination) })),
|
|
77
|
-
...
|
|
82
|
+
...(0, cartesian_1.default)([
|
|
78
83
|
['MMMM', 'MMM'],
|
|
79
84
|
['dd', 'do', 'd'],
|
|
80
85
|
[',', ''],
|
|
81
86
|
]).map((combination) => ({ dateFnsFormat: formatCombinaison(combination) })),
|
|
82
|
-
...
|
|
87
|
+
...(0, cartesian_1.default)([
|
|
83
88
|
['dd', 'do', 'd'],
|
|
84
89
|
['MMMM', 'MMM'],
|
|
85
90
|
[',', ''],
|
|
86
91
|
]).map((combination) => ({ dateFnsFormat: formatCombinaison(combination) })),
|
|
87
92
|
];
|
|
88
93
|
const impliedYear = [
|
|
89
|
-
...
|
|
94
|
+
...(0, cartesian_1.default)([
|
|
90
95
|
['dd', 'd'],
|
|
91
96
|
['/', '-', '.'],
|
|
92
97
|
['MM', 'M'],
|
|
@@ -95,7 +100,7 @@ export default () => {
|
|
|
95
100
|
dateFnsFormat: combination.join('').replace(' ,', ',').replace(/ +/, ' '),
|
|
96
101
|
direction: 'DM',
|
|
97
102
|
})),
|
|
98
|
-
...
|
|
103
|
+
...(0, cartesian_1.default)([
|
|
99
104
|
['MM', 'M'],
|
|
100
105
|
['/', '-', '.'],
|
|
101
106
|
['dd', 'd'],
|
|
@@ -123,7 +128,7 @@ export default () => {
|
|
|
123
128
|
]
|
|
124
129
|
.map((format) => ({
|
|
125
130
|
localised: /eee|mmm/i.test(format.dateFnsFormat),
|
|
126
|
-
specificity:
|
|
131
|
+
specificity: (0, calculateSpecificity_1.default)(format.dateFnsFormat),
|
|
127
132
|
wordCount: format.dateFnsFormat.replace(/[^ ]/g, '').length + 1,
|
|
128
133
|
yearIsExplicit: format.dateFnsFormat.includes('yyyy'),
|
|
129
134
|
...format,
|
|
@@ -138,3 +143,4 @@ export default () => {
|
|
|
138
143
|
return b.specificity - a.specificity;
|
|
139
144
|
});
|
|
140
145
|
};
|
|
146
|
+
//# sourceMappingURL=createFormats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFormats.js","sourceRoot":"","sources":["../src/createFormats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = (haystack, sliceLength) => {
|
|
2
4
|
const slices = [];
|
|
3
5
|
let index = 0;
|
|
4
6
|
while (index < haystack.length) {
|
|
@@ -10,3 +12,4 @@ export default (haystack, sliceLength) => {
|
|
|
10
12
|
}
|
|
11
13
|
return slices;
|
|
12
14
|
};
|
|
15
|
+
//# sourceMappingURL=createMovingChunks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMovingChunks.js","sourceRoot":"","sources":["../src/createMovingChunks.ts"],"names":[],"mappings":";;AAAA,kBAAe,CAAC,QAA2B,EAAE,WAAmB,EAAkC,EAAE;IAClG,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;QAE1D,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAED,KAAK,EAAE,CAAC;IACV,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const date_fns_1 = require("date-fns");
|
|
7
|
+
const locale_1 = require("date-fns/locale");
|
|
8
|
+
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
9
|
+
const relative_date_names_1 = __importDefault(require("relative-date-names"));
|
|
10
|
+
const createMovingChunks_1 = __importDefault(require("@/createMovingChunks"));
|
|
11
|
+
const extractRelativeDate_1 = __importDefault(require("@/extractRelativeDate"));
|
|
12
|
+
const createFormats_1 = __importDefault(require("@/createFormats"));
|
|
13
|
+
const normalizeInput_1 = __importDefault(require("@/normalizeInput"));
|
|
14
|
+
const resolveLocalizedNames_1 = require("@/resolveLocalizedNames");
|
|
15
|
+
const months_json_1 = __importDefault(require("@/months.json"));
|
|
11
16
|
const defaultConfiguration = {
|
|
12
17
|
maximumAge: Infinity,
|
|
13
18
|
minimumAge: Infinity,
|
|
14
19
|
};
|
|
15
20
|
const stripDiacritics = (text) => text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
16
|
-
const formats =
|
|
21
|
+
const formats = (0, createFormats_1.default)();
|
|
17
22
|
const translateChunk = (subject, locale, translateAccentless) => {
|
|
18
23
|
if (locale === 'en') {
|
|
19
24
|
return subject;
|
|
@@ -23,30 +28,30 @@ const translateChunk = (subject, locale, translateAccentless) => {
|
|
|
23
28
|
const punctuationMatch = word.match(/^(.+?)([,]+)$/);
|
|
24
29
|
const cleanWord = punctuationMatch ? punctuationMatch[1] : word;
|
|
25
30
|
const punctuation = punctuationMatch ? punctuationMatch[2] : '';
|
|
26
|
-
const monthReplacement = replaceMonthName(cleanWord, locale, translateAccentless);
|
|
31
|
+
const monthReplacement = (0, resolveLocalizedNames_1.replaceMonthName)(cleanWord, locale, translateAccentless);
|
|
27
32
|
if (monthReplacement) {
|
|
28
33
|
return monthReplacement + punctuation;
|
|
29
34
|
}
|
|
30
|
-
const dayReplacement = replaceDayName(cleanWord, locale, translateAccentless);
|
|
35
|
+
const dayReplacement = (0, resolveLocalizedNames_1.replaceDayName)(cleanWord, locale, translateAccentless);
|
|
31
36
|
if (dayReplacement) {
|
|
32
37
|
return dayReplacement + punctuation;
|
|
33
38
|
}
|
|
34
39
|
return word;
|
|
35
40
|
}).join(' ');
|
|
36
41
|
};
|
|
37
|
-
|
|
38
|
-
const normalizedInput =
|
|
42
|
+
exports.default = (input, userConfiguration = defaultConfiguration) => {
|
|
43
|
+
const normalizedInput = (0, normalizeInput_1.default)(input);
|
|
39
44
|
const configuration = {
|
|
40
45
|
...defaultConfiguration,
|
|
41
46
|
...userConfiguration,
|
|
42
47
|
};
|
|
43
48
|
const locale = configuration.locale || 'en';
|
|
44
49
|
const translateAccentless = Boolean(configuration.translateAccentless);
|
|
45
|
-
if (!
|
|
50
|
+
if (!months_json_1.default[locale]) {
|
|
46
51
|
throw new Error('No translation available for the target locale.');
|
|
47
52
|
}
|
|
48
|
-
const hasRelativeDateSupport = Boolean(
|
|
49
|
-
if (configuration.timezone && !
|
|
53
|
+
const hasRelativeDateSupport = Boolean(relative_date_names_1.default[locale]);
|
|
54
|
+
if (configuration.timezone && !moment_timezone_1.default.tz.zone(configuration.timezone)) {
|
|
50
55
|
throw new Error('Unrecognized timezone.');
|
|
51
56
|
}
|
|
52
57
|
if (configuration.maximumAge && configuration.maximumAge < 0) {
|
|
@@ -57,9 +62,9 @@ export default (input, userConfiguration = defaultConfiguration) => {
|
|
|
57
62
|
}
|
|
58
63
|
let words = normalizedInput.split(' ');
|
|
59
64
|
const matches = [];
|
|
60
|
-
const baseDate =
|
|
65
|
+
const baseDate = (0, date_fns_1.parse)('12:00', 'HH:mm', new Date());
|
|
61
66
|
for (const format of formats) {
|
|
62
|
-
const movingChunks =
|
|
67
|
+
const movingChunks = (0, createMovingChunks_1.default)(words, format.wordCount);
|
|
63
68
|
let chunkIndex = 0;
|
|
64
69
|
for (const movingChunk of movingChunks) {
|
|
65
70
|
const wordOffset = ++chunkIndex * format.wordCount;
|
|
@@ -70,7 +75,7 @@ export default (input, userConfiguration = defaultConfiguration) => {
|
|
|
70
75
|
else if (!hasRelativeDateSupport) {
|
|
71
76
|
}
|
|
72
77
|
else {
|
|
73
|
-
const maybeDate =
|
|
78
|
+
const maybeDate = (0, extractRelativeDate_1.default)(subject, configuration.locale, configuration.timezone ?? '');
|
|
74
79
|
if (maybeDate) {
|
|
75
80
|
words = words.slice(wordOffset);
|
|
76
81
|
matches.push({
|
|
@@ -82,11 +87,11 @@ export default (input, userConfiguration = defaultConfiguration) => {
|
|
|
82
87
|
}
|
|
83
88
|
else if (format.dateFnsFormat === 'EEE' || format.dateFnsFormat === 'EEEE') {
|
|
84
89
|
const translatedSubject = translateChunk(subject, locale, translateAccentless);
|
|
85
|
-
const date =
|
|
86
|
-
if (
|
|
90
|
+
const date = (0, date_fns_1.parse)(translatedSubject, format.dateFnsFormat, baseDate, { locale: locale_1.enUS });
|
|
91
|
+
if ((0, date_fns_1.isValid)(date)) {
|
|
87
92
|
words = words.slice(wordOffset);
|
|
88
93
|
matches.push({
|
|
89
|
-
date:
|
|
94
|
+
date: (0, date_fns_1.format)(date, 'yyyy-MM-dd'),
|
|
90
95
|
originalText: stripDiacritics(subject),
|
|
91
96
|
});
|
|
92
97
|
}
|
|
@@ -95,8 +100,8 @@ export default (input, userConfiguration = defaultConfiguration) => {
|
|
|
95
100
|
const yearIsExplicit = typeof format.yearIsExplicit === 'boolean' ? format.yearIsExplicit : true;
|
|
96
101
|
const translatedSubject = format.localised ? translateChunk(subject, locale, translateAccentless) : subject;
|
|
97
102
|
if (yearIsExplicit) {
|
|
98
|
-
const date =
|
|
99
|
-
if (!
|
|
103
|
+
const date = (0, date_fns_1.parse)(translatedSubject, format.dateFnsFormat, baseDate, { locale: locale_1.enUS });
|
|
104
|
+
if (!(0, date_fns_1.isValid)(date)) {
|
|
100
105
|
continue;
|
|
101
106
|
}
|
|
102
107
|
const formatDirection = format.direction;
|
|
@@ -111,18 +116,18 @@ export default (input, userConfiguration = defaultConfiguration) => {
|
|
|
111
116
|
}
|
|
112
117
|
words = words.slice(wordOffset);
|
|
113
118
|
matches.push({
|
|
114
|
-
date:
|
|
119
|
+
date: (0, date_fns_1.format)(date, 'yyyy-MM-dd'),
|
|
115
120
|
originalText: stripDiacritics(subject),
|
|
116
121
|
});
|
|
117
122
|
}
|
|
118
123
|
else {
|
|
119
|
-
const date =
|
|
120
|
-
if (!
|
|
124
|
+
const date = (0, date_fns_1.parse)(translatedSubject, format.dateFnsFormat, baseDate, { locale: locale_1.enUS });
|
|
125
|
+
if (!(0, date_fns_1.isValid)(date)) {
|
|
121
126
|
continue;
|
|
122
127
|
}
|
|
123
|
-
const currentYear = parseInt(
|
|
124
|
-
const currentMonth = parseInt(
|
|
125
|
-
const parsedMonth = parseInt(
|
|
128
|
+
const currentYear = parseInt((0, date_fns_1.format)(baseDate, 'yyyy'), 10);
|
|
129
|
+
const currentMonth = parseInt((0, date_fns_1.format)(baseDate, 'M'), 10) + currentYear * 12;
|
|
130
|
+
const parsedMonth = parseInt((0, date_fns_1.format)(date, 'M'), 10) + parseInt((0, date_fns_1.format)(date, 'yyyy'), 10) * 12;
|
|
126
131
|
const difference = parsedMonth - currentMonth;
|
|
127
132
|
let useYear;
|
|
128
133
|
if (difference >= configuration.maximumAge) {
|
|
@@ -134,8 +139,8 @@ export default (input, userConfiguration = defaultConfiguration) => {
|
|
|
134
139
|
else {
|
|
135
140
|
useYear = currentYear;
|
|
136
141
|
}
|
|
137
|
-
const maybeDate =
|
|
138
|
-
if (!
|
|
142
|
+
const maybeDate = (0, date_fns_1.parse)(useYear + '-' + (0, date_fns_1.format)(date, 'MM-dd'), 'yyyy-MM-dd', baseDate, { locale: locale_1.enUS });
|
|
143
|
+
if (!(0, date_fns_1.isValid)(maybeDate)) {
|
|
139
144
|
continue;
|
|
140
145
|
}
|
|
141
146
|
if (format.direction && format.direction !== configuration.direction) {
|
|
@@ -146,7 +151,7 @@ export default (input, userConfiguration = defaultConfiguration) => {
|
|
|
146
151
|
}
|
|
147
152
|
words = words.slice(wordOffset);
|
|
148
153
|
matches.push({
|
|
149
|
-
date:
|
|
154
|
+
date: (0, date_fns_1.format)(maybeDate, 'yyyy-MM-dd'),
|
|
150
155
|
originalText: stripDiacritics(subject),
|
|
151
156
|
});
|
|
152
157
|
}
|
|
@@ -155,3 +160,4 @@ export default (input, userConfiguration = defaultConfiguration) => {
|
|
|
155
160
|
}
|
|
156
161
|
return matches;
|
|
157
162
|
};
|
|
163
|
+
//# sourceMappingURL=extractDate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractDate.js","sourceRoot":"","sources":["../src/extractDate.ts"],"names":[],"mappings":";;;;;AAAA,uCAIkB;AAClB,4CAAwD;AACxD,sEAAqC;AACrC,8EAA6C;AAC7C,8EAAsD;AACtD,gFAAwD;AACxD,oEAA4C;AAC5C,sEAA8C;AAC9C,mEAA2E;AAC3E,gEAAuC;AAOvC,MAAM,oBAAoB,GAAsB;IAC9C,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAEhG,MAAM,OAAO,GAAG,IAAA,uBAAa,GAAE,CAAC;AAEhC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,MAAc,EAAE,mBAA4B,EAAU,EAAE;IAC/F,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,8CAA8C;QAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhE,MAAM,gBAAgB,GAAG,IAAA,wCAAgB,EAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAElF,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,gBAAgB,GAAG,WAAW,CAAC;QACxC,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,sCAAc,EAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAE9E,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,cAAc,GAAG,WAAW,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,kBAAe,CAAC,KAAa,EAAE,oBAA2C,oBAAoB,EAA4B,EAAE;IAC1H,MAAM,eAAe,GAAG,IAAA,wBAAc,EAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAsB;QACvC,GAAG,oBAAoB;QACvB,GAAG,iBAAiB;KACrB,CAAC;IAEF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC;IAC5C,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAEvE,IAAI,CAAE,qBAAsC,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,sBAAsB,GAAG,OAAO,CAAE,6BAAsC,CAAC,MAAM,CAAC,CAAC,CAAC;IAExF,IAAI,aAAa,CAAC,QAAQ,IAAI,CAAC,yBAAM,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,aAAa,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,aAAa,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,MAAM,QAAQ,GAAG,IAAA,gBAAS,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAEzD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,IAAA,4BAAkB,EAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAEjE,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;YAEnD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEtC,IAAI,MAAM,CAAC,aAAa,KAAK,GAAG,EAAE,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC5B,CAAC;qBAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,GAAG,IAAA,6BAAmB,EAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;oBAEnG,IAAI,SAAS,EAAE,CAAC;wBACd,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;wBAEhC,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,SAAS;4BACf,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;yBACK,CAAC,CAAC;oBACjD,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;gBAC7E,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;gBAE/E,MAAM,IAAI,GAAG,IAAA,gBAAS,EACpB,iBAAiB,EACjB,MAAM,CAAC,aAAa,EACpB,QAAQ,EACR,EAAE,MAAM,EAAE,aAAa,EAAE,CAC1B,CAAC;gBAEF,IAAI,IAAA,kBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAEhC,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,IAAA,iBAAU,EAAC,IAAI,EAAE,YAAY,CAAC;wBACpC,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;qBACK,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,GAAG,OAAO,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;gBAEjG,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAE5G,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,IAAI,GAAG,IAAA,gBAAS,EACpB,iBAAiB,EACjB,MAAM,CAAC,aAAa,EACpB,QAAQ,EACR,EAAE,MAAM,EAAE,aAAa,EAAE,CAC1B,CAAC;oBAEF,IAAI,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;wBACvB,SAAS;oBACX,CAAC;oBAED,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;oBACzC,MAAM,sBAAsB,GAAG,aAAa,CAAC,SAAS,CAAC;oBAEvD,IAAI,eAAe,IAAI,sBAAsB,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;oBACzK,CAAC;yBAAM,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,aAAa,CAAC,SAAS,EAAE,CAAC;wBAC5E,SAAS;oBACX,CAAC;oBAED,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;wBACjD,SAAS;oBACX,CAAC;oBAED,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAEhC,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,IAAA,iBAAU,EAAC,IAAI,EAAE,YAAY,CAAC;wBACpC,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;qBACK,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,IAAA,gBAAS,EACpB,iBAAiB,EACjB,MAAM,CAAC,aAAa,EACpB,QAAQ,EACR,EAAE,MAAM,EAAE,aAAa,EAAE,CAC1B,CAAC;oBAEF,IAAI,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;wBACvB,SAAS;oBACX,CAAC;oBAED,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAA,iBAAU,EAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;oBAE/D,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAA,iBAAU,EAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,EAAE,CAAC;oBAChF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAA,iBAAU,EAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAA,iBAAU,EAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;oBACtG,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;oBAE9C,IAAI,OAAe,CAAC;oBAEpB,IAAI,UAAU,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;wBAC3C,OAAO,GAAG,WAAW,GAAG,CAAC,CAAC;oBAC5B,CAAC;yBAAM,IAAI,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;wBAC9E,OAAO,GAAG,WAAW,GAAG,CAAC,CAAC;oBAC5B,CAAC;yBAAM,CAAC;wBACN,OAAO,GAAG,WAAW,CAAC;oBACxB,CAAC;oBAED,MAAM,SAAS,GAAG,IAAA,gBAAS,EACzB,OAAO,GAAG,GAAG,GAAG,IAAA,iBAAU,EAAC,IAAI,EAAE,OAAO,CAAC,EACzC,YAAY,EACZ,QAAQ,EACR,EAAE,MAAM,EAAE,aAAa,EAAE,CAC1B,CAAC;oBAEF,IAAI,CAAC,IAAA,kBAAW,EAAC,SAAS,CAAC,EAAE,CAAC;wBAC5B,SAAS;oBACX,CAAC;oBAED,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,aAAa,CAAC,SAAS,EAAE,CAAC;wBACrE,SAAS;oBACX,CAAC;oBAED,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;wBACjD,SAAS;oBACX,CAAC;oBAED,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAEhC,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,IAAA,iBAAU,EAAC,SAAS,EAAE,YAAY,CAAC;wBACzC,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;qBACK,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
7
|
+
const relative_date_names_1 = __importDefault(require("relative-date-names"));
|
|
8
|
+
exports.default = (subject, locale, timezone) => {
|
|
9
|
+
const translation = relative_date_names_1.default[locale];
|
|
10
|
+
if (!translation) {
|
|
11
|
+
throw new Error('No translation available for the target locale.');
|
|
12
|
+
}
|
|
13
|
+
if (timezone && !moment_timezone_1.default.tz.zone(timezone)) {
|
|
14
|
+
throw new Error('Unrecognized timezone.');
|
|
15
|
+
}
|
|
16
|
+
const normalizedSubject = subject.toLowerCase();
|
|
17
|
+
const now = (0, moment_timezone_1.default)();
|
|
18
|
+
if (normalizedSubject === translation.day.relative.yesterday) {
|
|
19
|
+
return now.subtract(1, 'day').format('YYYY-MM-DD');
|
|
20
|
+
}
|
|
21
|
+
if (normalizedSubject === translation.day.relative.today) {
|
|
22
|
+
return now.format('YYYY-MM-DD');
|
|
23
|
+
}
|
|
24
|
+
if (normalizedSubject === translation.day.relative.tomorrow) {
|
|
25
|
+
return now.add(1, 'day').format('YYYY-MM-DD');
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=extractRelativeDate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractRelativeDate.js","sourceRoot":"","sources":["../src/extractRelativeDate.ts"],"names":[],"mappings":";;;;;AAAA,sEAAqC;AACrC,8EAA6C;AAE7C,kBAAe,CAAC,OAAe,EAAE,MAAc,EAAE,QAAgB,EAAiB,EAAE;IAClF,MAAM,WAAW,GAAI,6BAA4G,CAAC,MAAM,CAAC,CAAC;IAE1I,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,QAAQ,IAAI,CAAC,yBAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEhD,MAAM,GAAG,GAAG,IAAA,yBAAM,GAAE,CAAC;IAErB,IAAI,iBAAiB,KAAK,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC7D,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,iBAAiB,KAAK,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzD,OAAO,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,iBAAiB,KAAK,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5D,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
package/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const extractDate_1 = __importDefault(require("@/extractDate"));
|
|
7
|
+
exports.default = extractDate_1.default;
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AAExC,kBAAe,qBAAW,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = (input) => {
|
|
2
4
|
let lastInput = input;
|
|
3
5
|
while (true) {
|
|
4
6
|
const result = lastInput
|
|
@@ -15,3 +17,4 @@ export default (input) => {
|
|
|
15
17
|
lastInput = result;
|
|
16
18
|
}
|
|
17
19
|
};
|
|
20
|
+
//# sourceMappingURL=normalizeInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeInput.js","sourceRoot":"","sources":["../src/normalizeInput.ts"],"names":[],"mappings":";;AAAA,kBAAe,CAAC,KAAa,EAAU,EAAE;IACvC,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,SAAS;YAEtB,sBAAsB;aACrB,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;aAE/B,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC;aAEpC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,IAAI,EAAE;aACN,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;aACxB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAE1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;AACH,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"author": "Gajus Kuizinas <gajus@gajus.com> (http://gajus.com)",
|
|
3
3
|
"dependencies": {
|
|
4
|
-
"@louis.jln/extract-date": "^4.0.0",
|
|
5
4
|
"cartesian": "^1.0.1",
|
|
6
5
|
"date-fns": "^2.9.0",
|
|
7
6
|
"moment": "^2.24.0",
|
|
@@ -35,14 +34,14 @@
|
|
|
35
34
|
"url": "git+https://github.com/LouisJULIEN/extract-date.git"
|
|
36
35
|
},
|
|
37
36
|
"scripts": {
|
|
38
|
-
"build": "rm -fr ./dist && tsc --project tsconfig.json",
|
|
37
|
+
"build": "rm -fr ./dist && tsc --project tsconfig.build.json",
|
|
39
38
|
"lint": "eslint ./src ./test",
|
|
40
39
|
"test": "vitest run",
|
|
41
40
|
"typecheck": "tsc --noEmit",
|
|
42
41
|
"npm-publish": "rm -rf build; npm run build; cp package.json dist/package.json; cd dist; npm publish --access public",
|
|
43
42
|
"prepare": "husky"
|
|
44
43
|
},
|
|
45
|
-
"version": "4.0.
|
|
44
|
+
"version": "4.0.3",
|
|
46
45
|
"directories": {
|
|
47
46
|
"test": "test"
|
|
48
47
|
},
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.replaceDayName = exports.replaceMonthName = void 0;
|
|
7
|
+
const months_json_1 = __importDefault(require("@/months.json"));
|
|
8
|
+
const days_json_1 = __importDefault(require("@/days.json"));
|
|
3
9
|
const stripDiacritics = (text) => text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
4
|
-
const enMonths =
|
|
5
|
-
const enDays =
|
|
10
|
+
const enMonths = months_json_1.default.en;
|
|
11
|
+
const enDays = days_json_1.default.en;
|
|
6
12
|
// Cache: locale -> Map<lowercaseName, englishName>
|
|
7
13
|
const monthLookupCache = {};
|
|
8
14
|
const dayLookupCache = {};
|
|
@@ -10,7 +16,7 @@ const buildMonthLookup = (locale) => {
|
|
|
10
16
|
if (monthLookupCache[locale]) {
|
|
11
17
|
return monthLookupCache[locale];
|
|
12
18
|
}
|
|
13
|
-
const localeData =
|
|
19
|
+
const localeData = months_json_1.default[locale];
|
|
14
20
|
if (!localeData) {
|
|
15
21
|
monthLookupCache[locale] = {};
|
|
16
22
|
return monthLookupCache[locale];
|
|
@@ -31,7 +37,7 @@ const buildDayLookup = (locale) => {
|
|
|
31
37
|
if (dayLookupCache[locale]) {
|
|
32
38
|
return dayLookupCache[locale];
|
|
33
39
|
}
|
|
34
|
-
const localeData =
|
|
40
|
+
const localeData = days_json_1.default[locale];
|
|
35
41
|
if (!localeData) {
|
|
36
42
|
dayLookupCache[locale] = {};
|
|
37
43
|
return dayLookupCache[locale];
|
|
@@ -48,7 +54,7 @@ const buildDayLookup = (locale) => {
|
|
|
48
54
|
dayLookupCache[locale] = lookup;
|
|
49
55
|
return lookup;
|
|
50
56
|
};
|
|
51
|
-
|
|
57
|
+
const replaceMonthName = (word, locale, accentless) => {
|
|
52
58
|
const lookup = buildMonthLookup(locale);
|
|
53
59
|
const lower = word.toLowerCase();
|
|
54
60
|
if (lookup[lower]) {
|
|
@@ -64,7 +70,8 @@ export const replaceMonthName = (word, locale, accentless) => {
|
|
|
64
70
|
}
|
|
65
71
|
return null;
|
|
66
72
|
};
|
|
67
|
-
|
|
73
|
+
exports.replaceMonthName = replaceMonthName;
|
|
74
|
+
const replaceDayName = (word, locale, accentless) => {
|
|
68
75
|
const lookup = buildDayLookup(locale);
|
|
69
76
|
const lower = word.toLowerCase();
|
|
70
77
|
if (lookup[lower]) {
|
|
@@ -80,3 +87,5 @@ export const replaceDayName = (word, locale, accentless) => {
|
|
|
80
87
|
}
|
|
81
88
|
return null;
|
|
82
89
|
};
|
|
90
|
+
exports.replaceDayName = replaceDayName;
|
|
91
|
+
//# sourceMappingURL=resolveLocalizedNames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveLocalizedNames.js","sourceRoot":"","sources":["../src/resolveLocalizedNames.ts"],"names":[],"mappings":"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"}
|
package/types.js
ADDED
package/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import moment from 'moment-timezone';
|
|
2
|
-
import dictionary from 'relative-date-names';
|
|
3
|
-
export default (subject, locale, timezone) => {
|
|
4
|
-
const translation = dictionary[locale];
|
|
5
|
-
if (!translation) {
|
|
6
|
-
throw new Error('No translation available for the target locale.');
|
|
7
|
-
}
|
|
8
|
-
if (timezone && !moment.tz.zone(timezone)) {
|
|
9
|
-
throw new Error('Unrecognized timezone.');
|
|
10
|
-
}
|
|
11
|
-
const normalizedSubject = subject.toLowerCase();
|
|
12
|
-
const now = moment();
|
|
13
|
-
if (normalizedSubject === translation.day.relative.yesterday) {
|
|
14
|
-
return now.subtract(1, 'day').format('YYYY-MM-DD');
|
|
15
|
-
}
|
|
16
|
-
if (normalizedSubject === translation.day.relative.today) {
|
|
17
|
-
return now.format('YYYY-MM-DD');
|
|
18
|
-
}
|
|
19
|
-
if (normalizedSubject === translation.day.relative.tomorrow) {
|
|
20
|
-
return now.add(1, 'day').format('YYYY-MM-DD');
|
|
21
|
-
}
|
|
22
|
-
return null;
|
|
23
|
-
};
|
package/src/index.js
DELETED
package/src/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { it, expect } from 'vitest';
|
|
2
|
-
import cartesian from 'cartesian';
|
|
3
|
-
import calculateSpecificity from '@/calculateSpecificity';
|
|
4
|
-
it('tokens including yyyy, (MMMM, MM, MM, M), (dd, d, do) have the highest specificity', () => {
|
|
5
|
-
const formats = cartesian([
|
|
6
|
-
[
|
|
7
|
-
'yyyy',
|
|
8
|
-
],
|
|
9
|
-
[
|
|
10
|
-
'MMMM',
|
|
11
|
-
'MMM',
|
|
12
|
-
'MM',
|
|
13
|
-
'M',
|
|
14
|
-
],
|
|
15
|
-
[
|
|
16
|
-
'dd',
|
|
17
|
-
'd',
|
|
18
|
-
'do',
|
|
19
|
-
],
|
|
20
|
-
]);
|
|
21
|
-
for (const tokens of formats) {
|
|
22
|
-
const format = tokens.join(' ');
|
|
23
|
-
expect(calculateSpecificity(format)).toBe(80 + format.length);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
it('tokens without year, month or month date have the lowest specificity', () => {
|
|
27
|
-
const formats = [
|
|
28
|
-
'EEEE',
|
|
29
|
-
'EEE',
|
|
30
|
-
'R',
|
|
31
|
-
];
|
|
32
|
-
for (const format of formats) {
|
|
33
|
-
expect(calculateSpecificity(format)).toBe(format.length);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
it('adds format length to the specificity', () => {
|
|
37
|
-
expect(calculateSpecificity('xxxx')).toBe(4);
|
|
38
|
-
expect(calculateSpecificity('xx')).toBe(2);
|
|
39
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { it, expect } from 'vitest';
|
|
2
|
-
import createMovingChunks from '@/createMovingChunks';
|
|
3
|
-
it('creates an array of fixed length text slices, each offset by 1 character', () => {
|
|
4
|
-
expect(createMovingChunks(['a', 'b', 'c', 'd'], 2)).toEqual([
|
|
5
|
-
[
|
|
6
|
-
'a',
|
|
7
|
-
'b',
|
|
8
|
-
],
|
|
9
|
-
[
|
|
10
|
-
'b',
|
|
11
|
-
'c',
|
|
12
|
-
],
|
|
13
|
-
[
|
|
14
|
-
'c',
|
|
15
|
-
'd',
|
|
16
|
-
],
|
|
17
|
-
]);
|
|
18
|
-
expect(createMovingChunks(['a', 'b', 'c'], 2)).toEqual([
|
|
19
|
-
[
|
|
20
|
-
'a',
|
|
21
|
-
'b',
|
|
22
|
-
],
|
|
23
|
-
[
|
|
24
|
-
'b',
|
|
25
|
-
'c',
|
|
26
|
-
],
|
|
27
|
-
]);
|
|
28
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|