@vielzeug/tempo 1.0.2

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.
Files changed (74) hide show
  1. package/README.md +71 -0
  2. package/dist/_convert.cjs +2 -0
  3. package/dist/_convert.cjs.map +1 -0
  4. package/dist/_convert.d.ts +47 -0
  5. package/dist/_convert.d.ts.map +1 -0
  6. package/dist/_convert.js +26 -0
  7. package/dist/_convert.js.map +1 -0
  8. package/dist/_floor.cjs +2 -0
  9. package/dist/_floor.cjs.map +1 -0
  10. package/dist/_floor.d.ts +12 -0
  11. package/dist/_floor.d.ts.map +1 -0
  12. package/dist/_floor.js +50 -0
  13. package/dist/_floor.js.map +1 -0
  14. package/dist/_tz.cjs +2 -0
  15. package/dist/_tz.cjs.map +1 -0
  16. package/dist/_tz.d.ts +15 -0
  17. package/dist/_tz.d.ts.map +1 -0
  18. package/dist/_tz.js +42 -0
  19. package/dist/_tz.js.map +1 -0
  20. package/dist/boundary.cjs +2 -0
  21. package/dist/boundary.cjs.map +1 -0
  22. package/dist/boundary.d.ts +26 -0
  23. package/dist/boundary.d.ts.map +1 -0
  24. package/dist/boundary.js +30 -0
  25. package/dist/boundary.js.map +1 -0
  26. package/dist/classify.cjs +2 -0
  27. package/dist/classify.cjs.map +1 -0
  28. package/dist/classify.d.ts +46 -0
  29. package/dist/classify.d.ts.map +1 -0
  30. package/dist/classify.js +83 -0
  31. package/dist/classify.js.map +1 -0
  32. package/dist/compare.cjs +2 -0
  33. package/dist/compare.cjs.map +1 -0
  34. package/dist/compare.d.ts +75 -0
  35. package/dist/compare.d.ts.map +1 -0
  36. package/dist/compare.js +71 -0
  37. package/dist/compare.js.map +1 -0
  38. package/dist/core.cjs +2 -0
  39. package/dist/core.cjs.map +1 -0
  40. package/dist/core.d.ts +136 -0
  41. package/dist/core.d.ts.map +1 -0
  42. package/dist/core.js +89 -0
  43. package/dist/core.js.map +1 -0
  44. package/dist/errors.cjs +2 -0
  45. package/dist/errors.cjs.map +1 -0
  46. package/dist/errors.d.ts +21 -0
  47. package/dist/errors.d.ts.map +1 -0
  48. package/dist/errors.js +16 -0
  49. package/dist/errors.js.map +1 -0
  50. package/dist/format.cjs +2 -0
  51. package/dist/format.cjs.map +1 -0
  52. package/dist/format.d.ts +132 -0
  53. package/dist/format.d.ts.map +1 -0
  54. package/dist/format.js +182 -0
  55. package/dist/format.js.map +1 -0
  56. package/dist/index.cjs +1 -0
  57. package/dist/index.d.ts +11 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +10 -0
  60. package/dist/range.cjs +2 -0
  61. package/dist/range.cjs.map +1 -0
  62. package/dist/range.d.ts +59 -0
  63. package/dist/range.d.ts.map +1 -0
  64. package/dist/range.js +38 -0
  65. package/dist/range.js.map +1 -0
  66. package/dist/tempo.cjs +2 -0
  67. package/dist/tempo.cjs.map +1 -0
  68. package/dist/tempo.iife.js +2 -0
  69. package/dist/tempo.iife.js.map +1 -0
  70. package/dist/tempo.js +2 -0
  71. package/dist/tempo.js.map +1 -0
  72. package/dist/types.d.ts +93 -0
  73. package/dist/types.d.ts.map +1 -0
  74. package/package.json +43 -0
@@ -0,0 +1,93 @@
1
+ import { Temporal } from '@js-temporal/polyfill';
2
+ export type TimeInput = Temporal.Instant | Temporal.PlainDate | Temporal.PlainDateTime | Temporal.ZonedDateTime;
3
+ export type RelativeTimeInput = Temporal.Instant | Temporal.ZonedDateTime;
4
+ /** Discriminant for the {@link parse} `as` parameter. Controls the expected return type. */
5
+ export type ParseAs = 'instant' | 'plain-date' | 'plain-datetime' | 'zoned';
6
+ export type DateTimeDisambiguation = 'compatible' | 'earlier' | 'later' | 'reject';
7
+ /**
8
+ * Base timezone option. Does NOT include `prefer` (disambiguation) — that only applies
9
+ * to `PlainDateTime` inputs and is intentionally scoped to APIs where it is meaningful
10
+ * (see {@link ShiftOptions} and {@link DifferenceOptions}).
11
+ */
12
+ export interface TimeOptions {
13
+ tz?: string;
14
+ }
15
+ /**
16
+ * Options for DST-sensitive operations that accept `PlainDateTime` inputs.
17
+ * `prefer` controls how ambiguous wall-clock times (e.g. during DST fall-back) are resolved.
18
+ * It is silently ignored for `Instant` and `ZonedDateTime` inputs.
19
+ */
20
+ export interface DisambiguationOptions {
21
+ prefer?: DateTimeDisambiguation;
22
+ }
23
+ export interface ShiftOptions extends DisambiguationOptions, TimeOptions {
24
+ }
25
+ export interface DifferenceOptions extends DisambiguationOptions, TimeOptions {
26
+ largestUnit?: Temporal.DateTimeUnit;
27
+ roundingIncrement?: number;
28
+ roundingMode?: Temporal.RoundingMode;
29
+ smallestUnit?: Temporal.DateTimeUnit;
30
+ }
31
+ export type FormatPattern = 'date-only' | 'long' | 'medium' | 'short' | 'time-only';
32
+ /**
33
+ * Options for {@link format} and {@link formatRange}.
34
+ *
35
+ * `intl` and `pattern` are mutually exclusive — enforced at compile time.
36
+ */
37
+ export type FormatOptions = {
38
+ intl: Intl.DateTimeFormatOptions;
39
+ locale?: Intl.LocalesArgument;
40
+ pattern?: never;
41
+ tz?: string;
42
+ } | {
43
+ intl?: never;
44
+ locale?: Intl.LocalesArgument;
45
+ pattern?: FormatPattern;
46
+ tz?: string;
47
+ };
48
+ export interface RelativeFormatOptions {
49
+ base?: RelativeTimeInput;
50
+ locale?: Intl.LocalesArgument;
51
+ numeric?: Intl.RelativeTimeFormatNumeric;
52
+ style?: Intl.RelativeTimeFormatStyle;
53
+ }
54
+ export interface DurationFormatOptions {
55
+ locale?: Intl.LocalesArgument;
56
+ style?: 'digital' | 'long' | 'narrow' | 'short';
57
+ }
58
+ /** Master set of all temporal units recognised by tempo. */
59
+ export type TempoUnit = 'day' | 'hour' | 'microsecond' | 'millisecond' | 'minute' | 'month' | 'nanosecond' | 'second' | 'week' | 'year';
60
+ /** Calendar-significant units (not sub-day). Used internally by CALENDAR_UNITS set. */
61
+ export type CalendarUnit = Extract<TempoUnit, 'day' | 'month' | 'week' | 'year'>;
62
+ export type BoundaryUnit = Exclude<TempoUnit, 'microsecond' | 'millisecond' | 'nanosecond' | 'second'>;
63
+ export type WeekStartDay = 1 | 2 | 3 | 4 | 5 | 6 | 7;
64
+ export interface BoundaryOptions extends TimeOptions {
65
+ weekStartsOn?: WeekStartDay;
66
+ }
67
+ export interface CompareOptions extends TimeOptions {
68
+ unit?: BoundaryUnit;
69
+ weekStartsOn?: WeekStartDay;
70
+ }
71
+ /** Structured output of {@link timeDiff}. Excludes sub-millisecond units. */
72
+ export type TimeDiffUnit = Exclude<TempoUnit, 'microsecond' | 'nanosecond'>;
73
+ export type TimeDiffResult = {
74
+ unit: TimeDiffUnit;
75
+ value: number;
76
+ };
77
+ type RecurrenceBase = {
78
+ frequency: 'daily' | 'monthly' | 'weekly' | 'yearly';
79
+ interval?: number;
80
+ };
81
+ /**
82
+ * Rule governing {@link recurrence} generation.
83
+ * Either `count` or `until` (or both) must be provided — enforced at the type level.
84
+ */
85
+ export type RecurrenceRule = RecurrenceBase & ({
86
+ count: number;
87
+ until?: TimeInput;
88
+ } | {
89
+ count?: number;
90
+ until: TimeInput;
91
+ });
92
+ export {};
93
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@vielzeug/tempo",
3
+ "version": "1.0.2",
4
+ "description": "Date and time utilities — timezone conversion, DST-safe arithmetic, and Intl formatting",
5
+ "type": "module",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "main": "./dist/index.cjs",
10
+ "module": "./dist/index.js",
11
+ "types": "dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "source": "./src/index.ts",
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js",
17
+ "require": "./dist/index.cjs"
18
+ }
19
+ },
20
+ "scripts": {
21
+ "build": "vite build && pnpm run build:bundle && pnpm run build:types",
22
+ "build:types": "tsc -p tsconfig.declarations.json",
23
+ "fix": "eslint --fix src",
24
+ "lint": "eslint src",
25
+ "prepublishOnly": "pnpm run build",
26
+ "preview": "vite preview",
27
+ "test": "vitest",
28
+ "build:bundle": "vite build --config vite.bundle.config.ts"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public",
32
+ "registry": "https://registry.npmjs.org/"
33
+ },
34
+ "devDependencies": {
35
+ "@types/node": "^26.1.0",
36
+ "typescript": "~6.0.3",
37
+ "vite": "^8.1.3",
38
+ "vitest": "^4.1.9"
39
+ },
40
+ "dependencies": {
41
+ "@js-temporal/polyfill": "^0.5.1"
42
+ }
43
+ }