@radically-straightforward/utilities 2.0.27 → 2.0.30

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/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.30 · 2026-10-22
4
+
5
+ - Added `formatDateTime()`.
6
+ - Added `formatDate()`.
7
+ - Added `formatTime()`.
8
+ - Added `zonedDateTimeToRelativeTimeFormat()`.
9
+
10
+ ## 2.0.28 · 2026-10-14
11
+
12
+ - Removed `isDate()` and `ISODateRegExp`.
13
+
3
14
  ## 2.0.27 · 2026-09-03
4
15
 
5
16
  - Changed `snippet()` such that when it’s called with `search` that isn’t included in `text` (for example, because it’s the result of semantic search, so no words match exactly) it doesn’t throw an error anymore, instead it returns the first few words of the `text`.
package/README.md CHANGED
@@ -123,6 +123,47 @@ utilities.dedent`
123
123
  // => "Here is an\n\nexample of\n an interpolated string including a newline and indentation\n\nfollowed by some more text."
124
124
  ```
125
125
 
126
+ ### `formatDateTime()`
127
+
128
+ ```typescript
129
+ export function formatDateTime(zonedDateTime: Temporal.ZonedDateTime): string;
130
+ ```
131
+
132
+ Formats a `Temporal.ZonedDateTime` in the format `2026-10-22 15:25`.
133
+
134
+ ### `formatDate()`
135
+
136
+ ```typescript
137
+ export function formatDate(zonedDateTime: Temporal.ZonedDateTime): string;
138
+ ```
139
+
140
+ Formats a `Temporal.ZonedDateTime` in the format `2026-10-22`.
141
+
142
+ ### `formatTime()`
143
+
144
+ ```typescript
145
+ export function formatTime(zonedDateTime: Temporal.ZonedDateTime): string;
146
+ ```
147
+
148
+ Formats a `Temporal.ZonedDateTime` in the format `15:25`.
149
+
150
+ ### `zonedDateTimeToRelativeTimeFormat()`
151
+
152
+ ```typescript
153
+ export function zonedDateTimeToRelativeTimeFormat(
154
+ zonedDateTime: Temporal.ZonedDateTime,
155
+ {
156
+ preposition = false,
157
+ }: {
158
+ preposition?: boolean;
159
+ } = {},
160
+ ): string;
161
+ ```
162
+
163
+ Returns a relative datetime, for example, `just now` (less than 5 minutes), `5 minutes ago` (rounded to the nearest 5 minutes), `in 5 minutes` (rounded to the nearest 5 minutes), `2 hours ago`, `in 2 hours`, `yesterday`, `tomorrow`, `2 days ago`, `in 2 days`, `on 2026-10-22`, and so forth.
164
+
165
+ - **`preposition`:** Whether to return `2026-10-22` or `on 2026-10-22`.
166
+
126
167
  ### `tokenize()`
127
168
 
128
169
  ```typescript
@@ -327,14 +368,6 @@ export function reciprocalRankFusion(...arrays: any[][]): any[];
327
368
 
328
369
  Merge multiple ranked lists into a single ranked list using [Reciprocal Rank Fusion](https://dl.acm.org/doi/10.1145/1571941.1572114). The `arrays` are expected to be sorted in descending order of relevance, for example, the first element is the most relevant and the last element is the least relevant.
329
370
 
330
- ### `isDate()`
331
-
332
- ```typescript
333
- export function isDate(string: string): boolean;
334
- ```
335
-
336
- Determine whether the given `string` is a valid `Date`, that is, it’s in ISO format and corresponds to an existing date, for example, it is **not** April 32nd.
337
-
338
371
  ### `emailRegExp`
339
372
 
340
373
  ```typescript
@@ -343,14 +376,6 @@ export const emailRegExp: RegExp;
343
376
 
344
377
  A regular expression that matches valid email addresses. This regular expression is more restrictive than the RFC—it doesn’t match some email addresses that technically are valid, for example, `example@localhost`. But it strikes a good tradeoff for practical purposes, for example, signing up in a web application.
345
378
 
346
- ### `ISODateRegExp`
347
-
348
- ```typescript
349
- export const ISODateRegExp: RegExp;
350
- ```
351
-
352
- A regular expression that matches ISO dates, for example, `2024-04-01T14:19:48.162Z`.
353
-
354
379
  ### `Intern`
355
380
 
356
381
  ```typescript
package/build/index.d.mts CHANGED
@@ -76,6 +76,38 @@ export declare function capitalize(string: string): string;
76
76
  * ```
77
77
  */
78
78
  export declare function dedent(templateStrings: TemplateStringsArray, ...substitutions: any[]): string;
79
+ /**
80
+ * Formats a `Temporal.ZonedDateTime` in the format `2026-10-22 15:25`.
81
+ */
82
+ export declare function formatDateTime(zonedDateTime: Temporal.ZonedDateTime): string;
83
+ export declare namespace formatDateTime {
84
+ var dateTimeFormats: Map<string, Intl.DateTimeFormat>;
85
+ }
86
+ /**
87
+ * Formats a `Temporal.ZonedDateTime` in the format `2026-10-22`.
88
+ */
89
+ export declare function formatDate(zonedDateTime: Temporal.ZonedDateTime): string;
90
+ export declare namespace formatDate {
91
+ var dateTimeFormats: Map<string, Intl.DateTimeFormat>;
92
+ }
93
+ /**
94
+ * Formats a `Temporal.ZonedDateTime` in the format `15:25`.
95
+ */
96
+ export declare function formatTime(zonedDateTime: Temporal.ZonedDateTime): string;
97
+ export declare namespace formatTime {
98
+ var dateTimeFormats: Map<string, Intl.DateTimeFormat>;
99
+ }
100
+ /**
101
+ * Returns a relative datetime, for example, `just now` (less than 5 minutes), `5 minutes ago` (rounded to the nearest 5 minutes), `in 5 minutes` (rounded to the nearest 5 minutes), `2 hours ago`, `in 2 hours`, `yesterday`, `tomorrow`, `2 days ago`, `in 2 days`, `on 2026-10-22`, and so forth.
102
+ *
103
+ * - **`preposition`:** Whether to return `2026-10-22` or `on 2026-10-22`.
104
+ */
105
+ export declare function zonedDateTimeToRelativeTimeFormat(zonedDateTime: Temporal.ZonedDateTime, { preposition }?: {
106
+ preposition?: boolean;
107
+ }): string;
108
+ export declare namespace zonedDateTimeToRelativeTimeFormat {
109
+ var relativeTimeFormat: Intl.RelativeTimeFormat;
110
+ }
79
111
  /**
80
112
  * Process text into tokens that can be used for full-text search.
81
113
  *
@@ -237,18 +269,10 @@ export declare function snippet(text: string, search: Set<string>, { surrounding
237
269
  * Merge multiple ranked lists into a single ranked list using [Reciprocal Rank Fusion](https://dl.acm.org/doi/10.1145/1571941.1572114). The `arrays` are expected to be sorted in descending order of relevance, for example, the first element is the most relevant and the last element is the least relevant.
238
270
  */
239
271
  export declare function reciprocalRankFusion(...arrays: any[][]): any[];
240
- /**
241
- * Determine whether the given `string` is a valid `Date`, that is, it’s in ISO format and corresponds to an existing date, for example, it is **not** April 32nd.
242
- */
243
- export declare function isDate(string: string): boolean;
244
272
  /**
245
273
  * A regular expression that matches valid email addresses. This regular expression is more restrictive than the RFC—it doesn’t match some email addresses that technically are valid, for example, `example@localhost`. But it strikes a good tradeoff for practical purposes, for example, signing up in a web application.
246
274
  */
247
275
  export declare const emailRegExp: RegExp;
248
- /**
249
- * A regular expression that matches ISO dates, for example, `2024-04-01T14:19:48.162Z`.
250
- */
251
- export declare const ISODateRegExp: RegExp;
252
276
  /**
253
277
  * Utility type for `intern()`.
254
278
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":"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"}
package/build/index.mjs CHANGED
@@ -26,7 +26,10 @@ export function randomString() {
26
26
  * Tab-separated logging.
27
27
  */
28
28
  export function log(...messageParts) {
29
- console.log([new Date().toISOString(), ...messageParts].join(" \t"));
29
+ console.log([
30
+ Temporal.Now.instant().toString({ fractionalSecondDigits: 3 }),
31
+ ...messageParts,
32
+ ].join(" \t"));
30
33
  }
31
34
  /**
32
35
  * A [TransformStream](https://developer.mozilla.org/en-US/docs/Web/API/TransformStream) to convert a stream of a string with JSON lines into a stream of JSON objects.
@@ -125,6 +128,81 @@ export function dedent(templateStrings, ...substitutions) {
125
128
  .replaceAll("\n" + " ".repeat(indentationLevel), "\n");
126
129
  return output.replace(/^[ ]*\n/, "").replace(/\n[ ]*$/, "");
127
130
  }
131
+ /**
132
+ * Formats a `Temporal.ZonedDateTime` in the format `2026-10-22 15:25`.
133
+ */
134
+ export function formatDateTime(zonedDateTime) {
135
+ let dateTimeFormat = formatDateTime.dateTimeFormats.get(zonedDateTime.timeZoneId);
136
+ if (dateTimeFormat === undefined) {
137
+ dateTimeFormat = new Intl.DateTimeFormat("sv-SE", {
138
+ timeZone: zonedDateTime.timeZoneId,
139
+ year: "numeric",
140
+ month: "2-digit",
141
+ day: "2-digit",
142
+ hour: "2-digit",
143
+ minute: "2-digit",
144
+ });
145
+ formatDateTime.dateTimeFormats.set(zonedDateTime.timeZoneId, dateTimeFormat);
146
+ }
147
+ return dateTimeFormat.format(zonedDateTime.toInstant());
148
+ }
149
+ formatDateTime.dateTimeFormats = new Map();
150
+ /**
151
+ * Formats a `Temporal.ZonedDateTime` in the format `2026-10-22`.
152
+ */
153
+ export function formatDate(zonedDateTime) {
154
+ let dateTimeFormat = formatDate.dateTimeFormats.get(zonedDateTime.timeZoneId);
155
+ if (dateTimeFormat === undefined) {
156
+ dateTimeFormat = new Intl.DateTimeFormat("sv-SE", {
157
+ timeZone: zonedDateTime.timeZoneId,
158
+ year: "numeric",
159
+ month: "2-digit",
160
+ day: "2-digit",
161
+ });
162
+ formatDate.dateTimeFormats.set(zonedDateTime.timeZoneId, dateTimeFormat);
163
+ }
164
+ return dateTimeFormat.format(zonedDateTime.toInstant());
165
+ }
166
+ formatDate.dateTimeFormats = new Map();
167
+ /**
168
+ * Formats a `Temporal.ZonedDateTime` in the format `15:25`.
169
+ */
170
+ export function formatTime(zonedDateTime) {
171
+ let dateTimeFormat = formatTime.dateTimeFormats.get(zonedDateTime.timeZoneId);
172
+ if (dateTimeFormat === undefined) {
173
+ dateTimeFormat = new Intl.DateTimeFormat("sv-SE", {
174
+ timeZone: zonedDateTime.timeZoneId,
175
+ hour: "2-digit",
176
+ minute: "2-digit",
177
+ });
178
+ formatTime.dateTimeFormats.set(zonedDateTime.timeZoneId, dateTimeFormat);
179
+ }
180
+ return dateTimeFormat.format(zonedDateTime.toInstant());
181
+ }
182
+ formatTime.dateTimeFormats = new Map();
183
+ /**
184
+ * Returns a relative datetime, for example, `just now` (less than 5 minutes), `5 minutes ago` (rounded to the nearest 5 minutes), `in 5 minutes` (rounded to the nearest 5 minutes), `2 hours ago`, `in 2 hours`, `yesterday`, `tomorrow`, `2 days ago`, `in 2 days`, `on 2026-10-22`, and so forth.
185
+ *
186
+ * - **`preposition`:** Whether to return `2026-10-22` or `on 2026-10-22`.
187
+ */
188
+ export function zonedDateTimeToRelativeTimeFormat(zonedDateTime, { preposition = false } = {}) {
189
+ const difference = Temporal.Now.zonedDateTimeISO(zonedDateTime.timeZoneId).until(zonedDateTime, {
190
+ largestUnit: "days",
191
+ smallestUnit: "minutes",
192
+ roundingIncrement: 5,
193
+ });
194
+ return 6 < Math.abs(difference.days)
195
+ ? `${preposition ? "on " : ""}${formatDate(zonedDateTime)}`
196
+ : 0 < Math.abs(difference.days)
197
+ ? zonedDateTimeToRelativeTimeFormat.relativeTimeFormat.format(difference.days, "days")
198
+ : 0 < Math.abs(difference.hours)
199
+ ? zonedDateTimeToRelativeTimeFormat.relativeTimeFormat.format(difference.hours, "hours")
200
+ : 0 < Math.abs(difference.minutes)
201
+ ? zonedDateTimeToRelativeTimeFormat.relativeTimeFormat.format(difference.minutes, "minutes")
202
+ : "just now";
203
+ }
204
+ zonedDateTimeToRelativeTimeFormat.relativeTimeFormat =
205
+ new Intl.RelativeTimeFormat("en-US", { numeric: "auto" });
128
206
  /**
129
207
  * Process text into tokens that can be used for full-text search.
130
208
  *
@@ -339,20 +417,10 @@ export function reciprocalRankFusion(...arrays) {
339
417
  .sort((a, b) => b.score - a.score)
340
418
  .map((elementWithScore) => elementWithScore.element);
341
419
  }
342
- /**
343
- * Determine whether the given `string` is a valid `Date`, that is, it’s in ISO format and corresponds to an existing date, for example, it is **not** April 32nd.
344
- */
345
- export function isDate(string) {
346
- return (string.match(ISODateRegExp) !== null && !isNaN(new Date(string).getTime()));
347
- }
348
420
  /**
349
421
  * A regular expression that matches valid email addresses. This regular expression is more restrictive than the RFC—it doesn’t match some email addresses that technically are valid, for example, `example@localhost`. But it strikes a good tradeoff for practical purposes, for example, signing up in a web application.
350
422
  */
351
423
  export const emailRegExp = /^[a-z0-9._%+-=]+@[a-z0-9.-]+\.[a-z]{2,}$/i;
352
- /**
353
- * A regular expression that matches ISO dates, for example, `2024-04-01T14:19:48.162Z`.
354
- */
355
- export const ISODateRegExp = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
356
424
  /**
357
425
  * [Interning](<https://en.wikipedia.org/wiki/Interning_(computer_science)>) a value makes it unique across the program, which is useful for checking equality with `===` (reference equality), using it as a key in a `Map`, adding it to a `Set`, and so forth:
358
426
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":"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"}
@@ -4,9 +4,9 @@ import natural from "natural";
4
4
  import * as utilities from "@radically-straightforward/utilities";
5
5
  import { intern as $ } from "@radically-straightforward/utilities";
6
6
  test("sleep()", async () => {
7
- const before = Date.now();
8
- await utilities.sleep(1000);
9
- assert(Date.now() - before >= 1000);
7
+ const before = Temporal.Now.instant();
8
+ await utilities.sleep(Temporal.Duration.from({ seconds: 1 }).total("millisecond"));
9
+ assert(1 <= before.until(Temporal.Now.instant()).total("seconds"));
10
10
  });
11
11
  test("PromiseWithResolvers()", async () => {
12
12
  const promiseWithResolvers = utilities.PromiseWithResolvers();
@@ -58,6 +58,31 @@ test("dedent()", () => {
58
58
  followed by some more text.
59
59
  `, "Here is an\n\nexample of\n an interpolated string including a newline and indentation\n\nfollowed by some more text.");
60
60
  });
61
+ test("formatDateTime()", () => {
62
+ assert.equal(utilities.formatDateTime(Temporal.ZonedDateTime.from("2026-10-22T15:25:11.520844971+01:00[Europe/Lisbon]")), "2026-10-22 15:25");
63
+ });
64
+ test("formatDate()", () => {
65
+ assert.equal(utilities.formatDate(Temporal.ZonedDateTime.from("2026-10-22T15:25:11.520844971+01:00[Europe/Lisbon]")), "2026-10-22");
66
+ });
67
+ test("formatTime()", () => {
68
+ assert.equal(utilities.formatTime(Temporal.ZonedDateTime.from("2026-10-22T15:25:11.520844971+01:00[Europe/Lisbon]")), "15:25");
69
+ });
70
+ test("zonedDateTimeToRelativeTimeFormat()", (context) => {
71
+ context.mock.method(Temporal.Now, "zonedDateTimeISO", () => Temporal.ZonedDateTime.from("2026-10-22T15:25:11.520844971+01:00[Europe/Lisbon]"));
72
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-22T15:25:11.520844971+01:00[Europe/Lisbon]")), "just now");
73
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-22T15:23:11.520844971+01:00[Europe/Lisbon]")), "just now");
74
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-22T15:28:11.520844971+01:00[Europe/Lisbon]")), "just now");
75
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-22T15:20:11.520844971+01:00[Europe/Lisbon]")), "5 minutes ago");
76
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-22T15:30:11.520844971+01:00[Europe/Lisbon]")), "in 5 minutes");
77
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-22T13:25:11.520844971+01:00[Europe/Lisbon]")), "2 hours ago");
78
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-22T17:25:11.520844971+01:00[Europe/Lisbon]")), "in 2 hours");
79
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-21T15:25:11.520844971+01:00[Europe/Lisbon]")), "yesterday");
80
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-23T15:25:11.520844971+01:00[Europe/Lisbon]")), "tomorrow");
81
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-20T15:25:11.520844971+01:00[Europe/Lisbon]")), "2 days ago");
82
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-10-24T15:25:11.520844971+01:00[Europe/Lisbon]")), "in 2 days");
83
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-09-22T15:25:11.520844971+01:00[Europe/Lisbon]")), "2026-09-22");
84
+ assert.equal(utilities.zonedDateTimeToRelativeTimeFormat(Temporal.ZonedDateTime.from("2026-09-22T15:25:11.520844971+01:00[Europe/Lisbon]"), { preposition: true }), "on 2026-09-22");
85
+ });
61
86
  test("tokenize()", () => {
62
87
  assert.deepEqual(utilities.tokenize("For my peanuts allergy peanut butter is sometimes used.", {
63
88
  stopWords: new Set(natural.stopwords.map((stopWord) => utilities.normalizeToken(stopWord))),
@@ -184,11 +209,6 @@ test("snippet()", () => {
184
209
  test("reciprocalRankFusion()", () => {
185
210
  assert.deepEqual(utilities.reciprocalRankFusion(["a", "b", "c"], ["b", "c", "d"], ["c", "d", "e"]), ["c", "b", "d", "a", "e"]);
186
211
  });
187
- test("isDate()", () => {
188
- assert(utilities.isDate("2024-04-01T14:57:46.638Z"));
189
- assert(!utilities.isDate("2024-04-01T14:57:46.68Z"));
190
- assert(!utilities.isDate("2024-04-32T14:57:46.638Z"));
191
- });
192
212
  test("emailRegExp", () => {
193
213
  assert.match("leandro@leafac.com", utilities.emailRegExp);
194
214
  assert.doesNotMatch("leandro@leafac.c", utilities.emailRegExp);
@@ -197,10 +217,6 @@ test("emailRegExp", () => {
197
217
  assert.doesNotMatch("'hello'@leafac.com", utilities.emailRegExp);
198
218
  assert.doesNotMatch("leandro@lea_fac.com", utilities.emailRegExp);
199
219
  });
200
- test("ISODateRegExp", () => {
201
- assert.match("2024-04-01T14:19:48.162Z", utilities.ISODateRegExp);
202
- assert.doesNotMatch("2024-04-01 15:20", utilities.ISODateRegExp);
203
- });
204
220
  test("intern()", () => {
205
221
  // @ts-expect-error
206
222
  assert(([1] === [1]) === false);
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.mjs","sourceRoot":"","sources":["../source/index.test.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.mjs","sourceRoot":"","sources":["../source/index.test.mts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@radically-straightforward/utilities",
3
- "version": "2.0.27",
3
+ "version": "2.0.30",
4
4
  "description": "🛠️ Utilities for Node.js and the browser",
5
5
  "keywords": [
6
6
  "node",
@@ -28,15 +28,15 @@
28
28
  "test": "npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/"
29
29
  },
30
30
  "devDependencies": {
31
- "@radically-straightforward/documentation": "^1.0.9",
32
- "@radically-straightforward/typescript": "^1.0.5",
33
- "@types/node": "^26.1.1",
31
+ "@radically-straightforward/documentation": "^1.0.11",
32
+ "@radically-straightforward/typescript": "^1.0.6",
33
+ "@types/node": "^26.6.5",
34
34
  "natural": "^8.1.1",
35
- "prettier": "^3.9.5",
35
+ "prettier": "^3.9.10",
36
36
  "typescript": "^7.0.2"
37
37
  },
38
38
  "allowScripts": {
39
- "@radically-straightforward/typescript@1.0.5": true
39
+ "@radically-straightforward/typescript@1.0.6": true
40
40
  },
41
41
  "prettier": {}
42
42
  }
package/source/index.mts CHANGED
@@ -33,7 +33,12 @@ export function randomString(): string {
33
33
  * Tab-separated logging.
34
34
  */
35
35
  export function log(...messageParts: string[]): void {
36
- console.log([new Date().toISOString(), ...messageParts].join(" \t"));
36
+ console.log(
37
+ [
38
+ Temporal.Now.instant().toString({ fractionalSecondDigits: 3 }),
39
+ ...messageParts,
40
+ ].join(" \t"),
41
+ );
37
42
  }
38
43
 
39
44
  /**
@@ -144,6 +149,104 @@ export function dedent(
144
149
  return output.replace(/^[ ]*\n/, "").replace(/\n[ ]*$/, "");
145
150
  }
146
151
 
152
+ /**
153
+ * Formats a `Temporal.ZonedDateTime` in the format `2026-10-22 15:25`.
154
+ */
155
+ export function formatDateTime(zonedDateTime: Temporal.ZonedDateTime): string {
156
+ let dateTimeFormat = formatDateTime.dateTimeFormats.get(
157
+ zonedDateTime.timeZoneId,
158
+ );
159
+ if (dateTimeFormat === undefined) {
160
+ dateTimeFormat = new Intl.DateTimeFormat("sv-SE", {
161
+ timeZone: zonedDateTime.timeZoneId,
162
+ year: "numeric",
163
+ month: "2-digit",
164
+ day: "2-digit",
165
+ hour: "2-digit",
166
+ minute: "2-digit",
167
+ });
168
+ formatDateTime.dateTimeFormats.set(
169
+ zonedDateTime.timeZoneId,
170
+ dateTimeFormat,
171
+ );
172
+ }
173
+ return dateTimeFormat.format(zonedDateTime.toInstant());
174
+ }
175
+ formatDateTime.dateTimeFormats = new Map<string, Intl.DateTimeFormat>();
176
+
177
+ /**
178
+ * Formats a `Temporal.ZonedDateTime` in the format `2026-10-22`.
179
+ */
180
+ export function formatDate(zonedDateTime: Temporal.ZonedDateTime): string {
181
+ let dateTimeFormat = formatDate.dateTimeFormats.get(zonedDateTime.timeZoneId);
182
+ if (dateTimeFormat === undefined) {
183
+ dateTimeFormat = new Intl.DateTimeFormat("sv-SE", {
184
+ timeZone: zonedDateTime.timeZoneId,
185
+ year: "numeric",
186
+ month: "2-digit",
187
+ day: "2-digit",
188
+ });
189
+ formatDate.dateTimeFormats.set(zonedDateTime.timeZoneId, dateTimeFormat);
190
+ }
191
+ return dateTimeFormat.format(zonedDateTime.toInstant());
192
+ }
193
+ formatDate.dateTimeFormats = new Map<string, Intl.DateTimeFormat>();
194
+
195
+ /**
196
+ * Formats a `Temporal.ZonedDateTime` in the format `15:25`.
197
+ */
198
+ export function formatTime(zonedDateTime: Temporal.ZonedDateTime): string {
199
+ let dateTimeFormat = formatTime.dateTimeFormats.get(zonedDateTime.timeZoneId);
200
+ if (dateTimeFormat === undefined) {
201
+ dateTimeFormat = new Intl.DateTimeFormat("sv-SE", {
202
+ timeZone: zonedDateTime.timeZoneId,
203
+ hour: "2-digit",
204
+ minute: "2-digit",
205
+ });
206
+ formatTime.dateTimeFormats.set(zonedDateTime.timeZoneId, dateTimeFormat);
207
+ }
208
+ return dateTimeFormat.format(zonedDateTime.toInstant());
209
+ }
210
+ formatTime.dateTimeFormats = new Map<string, Intl.DateTimeFormat>();
211
+
212
+ /**
213
+ * Returns a relative datetime, for example, `just now` (less than 5 minutes), `5 minutes ago` (rounded to the nearest 5 minutes), `in 5 minutes` (rounded to the nearest 5 minutes), `2 hours ago`, `in 2 hours`, `yesterday`, `tomorrow`, `2 days ago`, `in 2 days`, `on 2026-10-22`, and so forth.
214
+ *
215
+ * - **`preposition`:** Whether to return `2026-10-22` or `on 2026-10-22`.
216
+ */
217
+ export function zonedDateTimeToRelativeTimeFormat(
218
+ zonedDateTime: Temporal.ZonedDateTime,
219
+ { preposition = false }: { preposition?: boolean } = {},
220
+ ): string {
221
+ const difference = Temporal.Now.zonedDateTimeISO(
222
+ zonedDateTime.timeZoneId,
223
+ ).until(zonedDateTime, {
224
+ largestUnit: "days",
225
+ smallestUnit: "minutes",
226
+ roundingIncrement: 5,
227
+ });
228
+ return 6 < Math.abs(difference.days)
229
+ ? `${preposition ? "on " : ""}${formatDate(zonedDateTime)}`
230
+ : 0 < Math.abs(difference.days)
231
+ ? zonedDateTimeToRelativeTimeFormat.relativeTimeFormat.format(
232
+ difference.days,
233
+ "days",
234
+ )
235
+ : 0 < Math.abs(difference.hours)
236
+ ? zonedDateTimeToRelativeTimeFormat.relativeTimeFormat.format(
237
+ difference.hours,
238
+ "hours",
239
+ )
240
+ : 0 < Math.abs(difference.minutes)
241
+ ? zonedDateTimeToRelativeTimeFormat.relativeTimeFormat.format(
242
+ difference.minutes,
243
+ "minutes",
244
+ )
245
+ : "just now";
246
+ }
247
+ zonedDateTimeToRelativeTimeFormat.relativeTimeFormat =
248
+ new Intl.RelativeTimeFormat("en-US", { numeric: "auto" });
249
+
147
250
  /**
148
251
  * Process text into tokens that can be used for full-text search.
149
252
  *
@@ -424,26 +527,11 @@ export function reciprocalRankFusion(...arrays: any[][]): any[] {
424
527
  .map((elementWithScore) => elementWithScore.element);
425
528
  }
426
529
 
427
- /**
428
- * Determine whether the given `string` is a valid `Date`, that is, it’s in ISO format and corresponds to an existing date, for example, it is **not** April 32nd.
429
- */
430
- export function isDate(string: string): boolean {
431
- return (
432
- string.match(ISODateRegExp) !== null && !isNaN(new Date(string).getTime())
433
- );
434
- }
435
-
436
530
  /**
437
531
  * A regular expression that matches valid email addresses. This regular expression is more restrictive than the RFC—it doesn’t match some email addresses that technically are valid, for example, `example@localhost`. But it strikes a good tradeoff for practical purposes, for example, signing up in a web application.
438
532
  */
439
533
  export const emailRegExp: RegExp = /^[a-z0-9._%+-=]+@[a-z0-9.-]+\.[a-z]{2,}$/i;
440
534
 
441
- /**
442
- * A regular expression that matches ISO dates, for example, `2024-04-01T14:19:48.162Z`.
443
- */
444
- export const ISODateRegExp: RegExp =
445
- /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
446
-
447
535
  /**
448
536
  * Utility type for `intern()`.
449
537
  */
@@ -5,9 +5,11 @@ import * as utilities from "@radically-straightforward/utilities";
5
5
  import { intern as $ } from "@radically-straightforward/utilities";
6
6
 
7
7
  test("sleep()", async () => {
8
- const before = Date.now();
9
- await utilities.sleep(1000);
10
- assert(Date.now() - before >= 1000);
8
+ const before = Temporal.Now.instant();
9
+ await utilities.sleep(
10
+ Temporal.Duration.from({ seconds: 1 }).total("millisecond"),
11
+ );
12
+ assert(1 <= before.until(Temporal.Now.instant()).total("seconds"));
11
13
  });
12
14
 
13
15
  test("PromiseWithResolvers()", async () => {
@@ -74,6 +76,152 @@ test("dedent()", () => {
74
76
  );
75
77
  });
76
78
 
79
+ test("formatDateTime()", () => {
80
+ assert.equal(
81
+ utilities.formatDateTime(
82
+ Temporal.ZonedDateTime.from(
83
+ "2026-10-22T15:25:11.520844971+01:00[Europe/Lisbon]",
84
+ ),
85
+ ),
86
+ "2026-10-22 15:25",
87
+ );
88
+ });
89
+
90
+ test("formatDate()", () => {
91
+ assert.equal(
92
+ utilities.formatDate(
93
+ Temporal.ZonedDateTime.from(
94
+ "2026-10-22T15:25:11.520844971+01:00[Europe/Lisbon]",
95
+ ),
96
+ ),
97
+ "2026-10-22",
98
+ );
99
+ });
100
+
101
+ test("formatTime()", () => {
102
+ assert.equal(
103
+ utilities.formatTime(
104
+ Temporal.ZonedDateTime.from(
105
+ "2026-10-22T15:25:11.520844971+01:00[Europe/Lisbon]",
106
+ ),
107
+ ),
108
+ "15:25",
109
+ );
110
+ });
111
+
112
+ test("zonedDateTimeToRelativeTimeFormat()", (context) => {
113
+ context.mock.method(Temporal.Now, "zonedDateTimeISO", () =>
114
+ Temporal.ZonedDateTime.from(
115
+ "2026-10-22T15:25:11.520844971+01:00[Europe/Lisbon]",
116
+ ),
117
+ );
118
+ assert.equal(
119
+ utilities.zonedDateTimeToRelativeTimeFormat(
120
+ Temporal.ZonedDateTime.from(
121
+ "2026-10-22T15:25:11.520844971+01:00[Europe/Lisbon]",
122
+ ),
123
+ ),
124
+ "just now",
125
+ );
126
+ assert.equal(
127
+ utilities.zonedDateTimeToRelativeTimeFormat(
128
+ Temporal.ZonedDateTime.from(
129
+ "2026-10-22T15:23:11.520844971+01:00[Europe/Lisbon]",
130
+ ),
131
+ ),
132
+ "just now",
133
+ );
134
+ assert.equal(
135
+ utilities.zonedDateTimeToRelativeTimeFormat(
136
+ Temporal.ZonedDateTime.from(
137
+ "2026-10-22T15:28:11.520844971+01:00[Europe/Lisbon]",
138
+ ),
139
+ ),
140
+ "just now",
141
+ );
142
+ assert.equal(
143
+ utilities.zonedDateTimeToRelativeTimeFormat(
144
+ Temporal.ZonedDateTime.from(
145
+ "2026-10-22T15:20:11.520844971+01:00[Europe/Lisbon]",
146
+ ),
147
+ ),
148
+ "5 minutes ago",
149
+ );
150
+ assert.equal(
151
+ utilities.zonedDateTimeToRelativeTimeFormat(
152
+ Temporal.ZonedDateTime.from(
153
+ "2026-10-22T15:30:11.520844971+01:00[Europe/Lisbon]",
154
+ ),
155
+ ),
156
+ "in 5 minutes",
157
+ );
158
+ assert.equal(
159
+ utilities.zonedDateTimeToRelativeTimeFormat(
160
+ Temporal.ZonedDateTime.from(
161
+ "2026-10-22T13:25:11.520844971+01:00[Europe/Lisbon]",
162
+ ),
163
+ ),
164
+ "2 hours ago",
165
+ );
166
+ assert.equal(
167
+ utilities.zonedDateTimeToRelativeTimeFormat(
168
+ Temporal.ZonedDateTime.from(
169
+ "2026-10-22T17:25:11.520844971+01:00[Europe/Lisbon]",
170
+ ),
171
+ ),
172
+ "in 2 hours",
173
+ );
174
+ assert.equal(
175
+ utilities.zonedDateTimeToRelativeTimeFormat(
176
+ Temporal.ZonedDateTime.from(
177
+ "2026-10-21T15:25:11.520844971+01:00[Europe/Lisbon]",
178
+ ),
179
+ ),
180
+ "yesterday",
181
+ );
182
+ assert.equal(
183
+ utilities.zonedDateTimeToRelativeTimeFormat(
184
+ Temporal.ZonedDateTime.from(
185
+ "2026-10-23T15:25:11.520844971+01:00[Europe/Lisbon]",
186
+ ),
187
+ ),
188
+ "tomorrow",
189
+ );
190
+ assert.equal(
191
+ utilities.zonedDateTimeToRelativeTimeFormat(
192
+ Temporal.ZonedDateTime.from(
193
+ "2026-10-20T15:25:11.520844971+01:00[Europe/Lisbon]",
194
+ ),
195
+ ),
196
+ "2 days ago",
197
+ );
198
+ assert.equal(
199
+ utilities.zonedDateTimeToRelativeTimeFormat(
200
+ Temporal.ZonedDateTime.from(
201
+ "2026-10-24T15:25:11.520844971+01:00[Europe/Lisbon]",
202
+ ),
203
+ ),
204
+ "in 2 days",
205
+ );
206
+ assert.equal(
207
+ utilities.zonedDateTimeToRelativeTimeFormat(
208
+ Temporal.ZonedDateTime.from(
209
+ "2026-09-22T15:25:11.520844971+01:00[Europe/Lisbon]",
210
+ ),
211
+ ),
212
+ "2026-09-22",
213
+ );
214
+ assert.equal(
215
+ utilities.zonedDateTimeToRelativeTimeFormat(
216
+ Temporal.ZonedDateTime.from(
217
+ "2026-09-22T15:25:11.520844971+01:00[Europe/Lisbon]",
218
+ ),
219
+ { preposition: true },
220
+ ),
221
+ "on 2026-09-22",
222
+ );
223
+ });
224
+
77
225
  test("tokenize()", () => {
78
226
  assert.deepEqual(
79
227
  utilities.tokenize(
@@ -271,12 +419,6 @@ test("reciprocalRankFusion()", () => {
271
419
  );
272
420
  });
273
421
 
274
- test("isDate()", () => {
275
- assert(utilities.isDate("2024-04-01T14:57:46.638Z"));
276
- assert(!utilities.isDate("2024-04-01T14:57:46.68Z"));
277
- assert(!utilities.isDate("2024-04-32T14:57:46.638Z"));
278
- });
279
-
280
422
  test("emailRegExp", () => {
281
423
  assert.match("leandro@leafac.com", utilities.emailRegExp);
282
424
  assert.doesNotMatch("leandro@leafac.c", utilities.emailRegExp);
@@ -286,11 +428,6 @@ test("emailRegExp", () => {
286
428
  assert.doesNotMatch("leandro@lea_fac.com", utilities.emailRegExp);
287
429
  });
288
430
 
289
- test("ISODateRegExp", () => {
290
- assert.match("2024-04-01T14:19:48.162Z", utilities.ISODateRegExp);
291
- assert.doesNotMatch("2024-04-01 15:20", utilities.ISODateRegExp);
292
- });
293
-
294
431
  test("intern()", () => {
295
432
  // @ts-expect-error
296
433
  assert(([1] === [1]) === false);