qstd 0.3.83 → 0.3.85
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/dist/client/index.cjs +4 -2
- package/dist/client/index.js +5 -3
- package/dist/server/index.cjs +4 -2
- package/dist/server/index.js +5 -3
- package/dist/shared/lexorank/domain.d.ts +71 -0
- package/dist/shared/lexorank/domain.d.ts.map +1 -0
- package/dist/shared/lexorank/fns.d.ts +25 -0
- package/dist/shared/lexorank/fns.d.ts.map +1 -0
- package/dist/shared/lexorank/index.d.ts +17 -0
- package/dist/shared/lexorank/index.d.ts.map +1 -0
- package/dist/shared/lexorank/literals.d.ts +20 -0
- package/dist/shared/lexorank/literals.d.ts.map +1 -0
- package/dist/shared/lexorank/types.d.ts +5 -0
- package/dist/shared/lexorank/types.d.ts.map +1 -0
- package/dist/shared/time.d.ts +10 -0
- package/dist/shared/time.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/client/index.cjs
CHANGED
|
@@ -366,9 +366,11 @@ var formatDuration = (value, options = {}) => {
|
|
|
366
366
|
return parts.join(separator);
|
|
367
367
|
};
|
|
368
368
|
var formatDate = (input, options = {}) => {
|
|
369
|
-
const { style = "medium", pattern, includeTime = false } = options;
|
|
369
|
+
const { style = "medium", pattern, includeTime = false, parseFormat } = options;
|
|
370
370
|
let date2;
|
|
371
|
-
if (typeof input === "string") {
|
|
371
|
+
if (typeof input === "string" && parseFormat) {
|
|
372
|
+
date2 = dateFns.parse(input, parseFormat, /* @__PURE__ */ new Date());
|
|
373
|
+
} else if (typeof input === "string") {
|
|
372
374
|
date2 = new Date(input);
|
|
373
375
|
} else if (typeof input === "number") {
|
|
374
376
|
date2 = new Date(input);
|
package/dist/client/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { format, formatISO, formatDistanceToNow, isSameYear, isSameMonth, isSameDay, addSeconds, addMinutes, addHours, addDays, addWeeks, addBusinessDays, addMonths, addYears } from 'date-fns';
|
|
1
|
+
import { parse, format, formatISO, formatDistanceToNow, isSameYear, isSameMonth, isSameDay, addSeconds, addMinutes, addHours, addDays, addWeeks, addBusinessDays, addMonths, addYears } from 'date-fns';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -359,9 +359,11 @@ var formatDuration = (value, options = {}) => {
|
|
|
359
359
|
return parts.join(separator);
|
|
360
360
|
};
|
|
361
361
|
var formatDate = (input, options = {}) => {
|
|
362
|
-
const { style = "medium", pattern, includeTime = false } = options;
|
|
362
|
+
const { style = "medium", pattern, includeTime = false, parseFormat } = options;
|
|
363
363
|
let date2;
|
|
364
|
-
if (typeof input === "string") {
|
|
364
|
+
if (typeof input === "string" && parseFormat) {
|
|
365
|
+
date2 = parse(input, parseFormat, /* @__PURE__ */ new Date());
|
|
366
|
+
} else if (typeof input === "string") {
|
|
365
367
|
date2 = new Date(input);
|
|
366
368
|
} else if (typeof input === "number") {
|
|
367
369
|
date2 = new Date(input);
|
package/dist/server/index.cjs
CHANGED
|
@@ -378,9 +378,11 @@ var formatDuration = (value, options = {}) => {
|
|
|
378
378
|
return parts.join(separator);
|
|
379
379
|
};
|
|
380
380
|
var formatDate = (input, options = {}) => {
|
|
381
|
-
const { style = "medium", pattern, includeTime = false } = options;
|
|
381
|
+
const { style = "medium", pattern, includeTime = false, parseFormat } = options;
|
|
382
382
|
let date2;
|
|
383
|
-
if (typeof input === "string") {
|
|
383
|
+
if (typeof input === "string" && parseFormat) {
|
|
384
|
+
date2 = dateFns.parse(input, parseFormat, /* @__PURE__ */ new Date());
|
|
385
|
+
} else if (typeof input === "string") {
|
|
384
386
|
date2 = new Date(input);
|
|
385
387
|
} else if (typeof input === "number") {
|
|
386
388
|
date2 = new Date(input);
|
package/dist/server/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { format, formatISO, formatDistanceToNow, isSameYear, isSameMonth, isSameDay, addSeconds, addMinutes, addHours, addDays, addWeeks, addBusinessDays, addMonths, addYears } from 'date-fns';
|
|
1
|
+
import { parse, format, formatISO, formatDistanceToNow, isSameYear, isSameMonth, isSameDay, addSeconds, addMinutes, addHours, addDays, addWeeks, addBusinessDays, addMonths, addYears } from 'date-fns';
|
|
2
2
|
import awaitSpawn from 'await-spawn';
|
|
3
3
|
import { promises } from 'fs';
|
|
4
4
|
import { ArkErrors } from 'arktype';
|
|
@@ -370,9 +370,11 @@ var formatDuration = (value, options = {}) => {
|
|
|
370
370
|
return parts.join(separator);
|
|
371
371
|
};
|
|
372
372
|
var formatDate = (input, options = {}) => {
|
|
373
|
-
const { style = "medium", pattern, includeTime = false } = options;
|
|
373
|
+
const { style = "medium", pattern, includeTime = false, parseFormat } = options;
|
|
374
374
|
let date2;
|
|
375
|
-
if (typeof input === "string") {
|
|
375
|
+
if (typeof input === "string" && parseFormat) {
|
|
376
|
+
date2 = parse(input, parseFormat, /* @__PURE__ */ new Date());
|
|
377
|
+
} else if (typeof input === "string") {
|
|
376
378
|
date2 = new Date(input);
|
|
377
379
|
} else if (typeof input === "number") {
|
|
378
380
|
date2 = new Date(input);
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as _t from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Generate a new sort key between two adjacent items.
|
|
4
|
+
*
|
|
5
|
+
* Given the order strings of the previous and next items, produces a
|
|
6
|
+
* string that sorts lexicographically between them. Pass empty strings
|
|
7
|
+
* for boundaries (insert at start or end).
|
|
8
|
+
*
|
|
9
|
+
* Algorithm uses lowercase a-z (char codes 96-123) as the alphabet:
|
|
10
|
+
* - 96 = boundary before 'a'
|
|
11
|
+
* - 123 = boundary after 'z'
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* createOrderStr("b", "d") // "c"
|
|
15
|
+
* createOrderStr("", "b") // "a" (or similar, insert at start)
|
|
16
|
+
* createOrderStr("n", "") // "t" (or similar, insert at end)
|
|
17
|
+
* createOrderStr("az", "b") // "an" (midpoint between "az" and "b")
|
|
18
|
+
*/
|
|
19
|
+
export declare const createOrderStr: (prev?: string, next?: string) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Generate evenly-spaced order keys for a list of a given size.
|
|
22
|
+
*
|
|
23
|
+
* Used for initial list creation and periodic rebalancing. Produces
|
|
24
|
+
* `num` strings that are roughly evenly distributed across the a-z
|
|
25
|
+
* alphabet space, minimizing future string growth.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* createRebalancedOrderList(3) // ["i", "r", "z"] (roughly evenly spaced)
|
|
29
|
+
* createRebalancedOrderList(5) // ["e", "j", "o", "t", "y"]
|
|
30
|
+
*/
|
|
31
|
+
export declare const createRebalancedOrderList: (num: number) => string[];
|
|
32
|
+
/**
|
|
33
|
+
* Check if the order strings in a list need rebalancing.
|
|
34
|
+
*
|
|
35
|
+
* Returns true when the longest order string exceeds half the list size.
|
|
36
|
+
* This indicates too many consecutive edge insertions have caused string
|
|
37
|
+
* growth. Rebalancing is rare in normal usage patterns.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* checkBalance([{ order: "b" }, { order: "n" }]) // false (1 < 1)
|
|
41
|
+
* checkBalance([{ order: "aaaaax" }, { order: "b" }]) // true (6 > 1)
|
|
42
|
+
*/
|
|
43
|
+
export declare const checkBalance: <T extends _t.Ordered>(xs: T[]) => boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Rebalance a list by recomputing evenly-spaced order keys for every item.
|
|
46
|
+
*
|
|
47
|
+
* Eliminates long order strings caused by repeated edge insertions.
|
|
48
|
+
* Returns new items with fresh `order` values. Does not mutate input.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* const items = [
|
|
52
|
+
* { id: "a", order: "aaaaax" },
|
|
53
|
+
* { id: "b", order: "b" },
|
|
54
|
+
* { id: "c", order: "n" },
|
|
55
|
+
* ];
|
|
56
|
+
* rebalance(items);
|
|
57
|
+
* // [{ id: "a", order: "i" }, { id: "b", order: "r" }, { id: "c", order: "z" }]
|
|
58
|
+
*/
|
|
59
|
+
export declare const rebalance: <T extends _t.Ordered>(xs: T[]) => (T & {
|
|
60
|
+
order: string;
|
|
61
|
+
})[];
|
|
62
|
+
/**
|
|
63
|
+
* Sort items by their lexicographic order strings.
|
|
64
|
+
*
|
|
65
|
+
* Returns a new sorted array (immutable). Items without an order
|
|
66
|
+
* field sort to the beginning.
|
|
67
|
+
*/
|
|
68
|
+
export declare const sortByOrder: <T extends {
|
|
69
|
+
order?: string;
|
|
70
|
+
}>(xs: T[]) => T[];
|
|
71
|
+
//# sourceMappingURL=domain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/shared/lexorank/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,GAAI,aAAS,EAAE,aAAS,WA0ClD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,GAAI,KAAK,MAAM,aAiCpD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,YAMzD,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;;IAGtD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,CAAC,EAAE,QACI,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strip trailing 'a' characters from a string.
|
|
3
|
+
*
|
|
4
|
+
* During order list generation, intermediate strings can end with runs
|
|
5
|
+
* of 'a's that add length without information. Stripping them produces
|
|
6
|
+
* shorter, cleaner keys that still sort correctly.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* stripTrailingAs("naaa") // "n"
|
|
10
|
+
* stripTrailingAs("abc") // "abc"
|
|
11
|
+
* stripTrailingAs("a") // ""
|
|
12
|
+
*/
|
|
13
|
+
export declare const stripTrailingAs: (str: string) => string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate a partial alphabet for evenly distributing keys.
|
|
16
|
+
*
|
|
17
|
+
* Uses a bit-packed lookup table to select well-distributed
|
|
18
|
+
* characters from the a-z range based on the desired count.
|
|
19
|
+
* For counts >= 13, the table mirrors to cover the full range.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* partialAlphabet(3) // ["d", "n", "x"] (roughly evenly spaced)
|
|
23
|
+
*/
|
|
24
|
+
export declare const partialAlphabet: (num: number) => string[];
|
|
25
|
+
//# sourceMappingURL=fns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../src/shared/lexorank/fns.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,WAI1C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,aAW1C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LexoRank Ordering
|
|
3
|
+
*
|
|
4
|
+
* Lexicographic string-based ordering for collection items.
|
|
5
|
+
* Enables O(1) reorder operations: moving an item between two others
|
|
6
|
+
* generates a new order string between their existing orders.
|
|
7
|
+
*
|
|
8
|
+
* Key functions:
|
|
9
|
+
* - `createOrderStr(prev, next)` - Generate key between two adjacent items
|
|
10
|
+
* - `createRebalancedOrderList(num)` - Generate evenly-spaced keys for a list
|
|
11
|
+
* - `checkBalance(xs)` - Detect when rebalancing is needed
|
|
12
|
+
* - `rebalance(xs)` - Recompute all orders
|
|
13
|
+
* - `sortByOrder(xs)` - Sort items by lexicographic order
|
|
14
|
+
*/
|
|
15
|
+
export type * from "./types";
|
|
16
|
+
export * from "./domain";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/lexorank/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,mBAAmB,SAAS,CAAC;AAC7B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Char code for the lower bound sentinel (one below 'a') */
|
|
2
|
+
export declare const LOWER_BOUND = 96;
|
|
3
|
+
/** Char code for the upper bound sentinel (one above 'z') */
|
|
4
|
+
export declare const UPPER_BOUND = 123;
|
|
5
|
+
/** Char code for 'a' — first character in the usable alphabet */
|
|
6
|
+
export declare const CHAR_A = 97;
|
|
7
|
+
/** Char code for 'z' — last character in the usable alphabet */
|
|
8
|
+
export declare const CHAR_Z = 122;
|
|
9
|
+
/** Size of the a-z alphabet */
|
|
10
|
+
export declare const ALPHABET_SIZE = 26;
|
|
11
|
+
/**
|
|
12
|
+
* Bit-packed lookup table for selecting well-distributed characters
|
|
13
|
+
* from the a-z range when generating evenly-spaced order keys.
|
|
14
|
+
*
|
|
15
|
+
* Each entry encodes which of the 25 non-'a' characters to include
|
|
16
|
+
* when distributing `n` keys across the alphabet. For n >= 13, the
|
|
17
|
+
* table is mirrored using a 25-bit mask (2^25 - 1 = 33554431).
|
|
18
|
+
*/
|
|
19
|
+
export declare const DISTRIBUTION_TABLE: readonly [0, 4096, 65792, 528416, 1081872, 2167048, 2376776, 4756004, 4794660, 5411476, 9775442, 11097386, 11184810, 22369621];
|
|
20
|
+
//# sourceMappingURL=literals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../../src/shared/lexorank/literals.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,6DAA6D;AAC7D,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,iEAAiE;AACjE,eAAO,MAAM,MAAM,KAAK,CAAC;AAEzB,gEAAgE;AAChE,eAAO,MAAM,MAAM,MAAM,CAAC;AAE1B,+BAA+B;AAC/B,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,gIAGrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/lexorank/types.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;CACf"}
|
package/dist/shared/time.d.ts
CHANGED
|
@@ -106,6 +106,15 @@ type DateOptions = {
|
|
|
106
106
|
pattern?: string;
|
|
107
107
|
/** Include time component */
|
|
108
108
|
includeTime?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* date-fns parse format for the input string.
|
|
111
|
+
* When provided and input is a string, uses `date-fns/parse` instead of `new Date()`.
|
|
112
|
+
* Useful for non-standard date formats (e.g., PDF dates: "yyyyMMddHHmmss").
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* formatDate("20240115120000", { parseFormat: "yyyyMMddHHmmss" })
|
|
116
|
+
*/
|
|
117
|
+
parseFormat?: string;
|
|
109
118
|
};
|
|
110
119
|
/**
|
|
111
120
|
* Flexible date formatter that handles multiple input types and format styles
|
|
@@ -119,6 +128,7 @@ type DateOptions = {
|
|
|
119
128
|
* formatDate(date, { style: "long" }) // "December 1, 2023"
|
|
120
129
|
* formatDate(date, { includeTime: true }) // "Dec 1, 2023 3:30 PM"
|
|
121
130
|
* formatDate(date, { pattern: "yyyy-MM-dd" }) // Custom format
|
|
131
|
+
* formatDate("20240115120000", { parseFormat: "yyyyMMddHHmmss", includeTime: true }) // Parse non-standard input
|
|
122
132
|
*/
|
|
123
133
|
export declare const formatDate: (input: DateInput, options?: DateOptions) => string;
|
|
124
134
|
type TimeAgoInput = Date | string | number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/shared/time.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/shared/time.ts"],"names":[],"mappings":"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"}
|