From af9875d8095637ff666250b7d31b2fa112cb8284 Mon Sep 17 00:00:00 2001 From: Michael McRae Date: Tue, 21 Apr 2026 11:08:11 +1000 Subject: [PATCH 1/6] dropdown TZ selector on landing page --- packages/library/src/common/pledge.class.ts | 2 +- packages/tempo/README.md | 26 +++--- packages/tempo/img/docs-banner.png | Bin 437073 -> 0 bytes packages/tempo/index.md | 64 ++++++++++++--- packages/tempo/src/core.index.ts | 4 + packages/tempo/src/plugin/plugin.util.ts | 6 +- packages/tempo/src/tempo.class.ts | 83 +++++++++----------- packages/tempo/src/tempo.index.ts | 1 + 8 files changed, 110 insertions(+), 76 deletions(-) delete mode 100644 packages/tempo/img/docs-banner.png diff --git a/packages/library/src/common/pledge.class.ts b/packages/library/src/common/pledge.class.ts index 7d61d1c2..64bcfd40 100644 --- a/packages/library/src/common/pledge.class.ts +++ b/packages/library/src/common/pledge.class.ts @@ -25,7 +25,7 @@ declare module '#library/type.library.js' { export class Pledge { #pledge: PromiseWithResolvers; #status = {} as Pledge.Status; - static #dbg = new Logify('Pledge: '); + static #dbg = new Logify('Pledge'); static #static = {} as Pledge.Constructor; static STATE = secure({ diff --git a/packages/tempo/README.md b/packages/tempo/README.md index 5a1c0a4b..9da0fb67 100644 --- a/packages/tempo/README.md +++ b/packages/tempo/README.md @@ -1,12 +1,12 @@ - +
- - + - @@ -17,14 +17,14 @@ **Tempo** is a premium, high-performance wrapper around the JavaScript `Temporal` API. It provides a modern, **immutable**, and **fluent** interface for date-time manipulation, and flexible parsing. It's designed as a better-performing, type-safe alternative to legacy libraries like **Moment.js**, **Day.js**, and **Luxon**.
-
+
Tempo logo -

Tempo

-

The Professional Date-Time Library for the Temporal API

+
+

Tempo

+

The Professional Date-Time Library for the Temporal API

+
- - - - - - + + + + + +
License: MITTemporalTypeScript ReadyNative ESMDocumentation
License: MITTemporalTypeScript ReadyNative ESMDocumentation
diff --git a/packages/tempo/img/docs-banner.png b/packages/tempo/img/docs-banner.png deleted file mode 100644 index a4949db3626991d37661cf24a7a7c0341728c753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437073 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ⅇL* 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

@Lp{ZQV*_M1&r*zS&ZzL#@|pTj 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 H|N8#`97pQ7 diff --git a/packages/tempo/index.md b/packages/tempo/index.md index e5231c94..3f661b0b 100644 --- a/packages/tempo/index.md +++ b/packages/tempo/index.md @@ -3,7 +3,7 @@ layout: home --- - +```bash +npm install @magmacomputing/tempo # npm +yarn add @magmacomputing/tempo # yarn +pnpm add @magmacomputing/tempo # pnpm +bun add @magmacomputing/tempo # bun +deno add @magmacomputing/tempo # deno ``` -### 📦 in the Browser (Script Tag) -For environments without `importmap` support or simple prototypes, use the global bundle. This automatically attaches the `Tempo` class to the `window` object. +

+🌐 Browser & Lite Environments +For rapid prototyping without a package manager, use the global bundle: ```html - - ``` +For Import Maps or granular "Lite" builds, see the [Full Installation Guide](https://magmacomputing.github.io/magma/doc/installation). +
-### 🧪 Advanced: Granular ESM (Lite Build) -For maximum performance, you can use the lean **Core** engine and opt-in to specific modules. This prevents loading unused logic and keeps your production bundle minimal. - -```html - - -``` +--- -> [!TIP] -> **CDN Versioning**: The examples above use pinned versions (`@magmacomputing/tempo@2`, `@magmacomputing/library@2`, `@js-temporal/polyfill@0.5`) for production stability. To use the latest releases, you can omit the version string from every URL (e.g., remove `@2` from all Magma entries and `@0.5` from the polyfill). Ensure all `@magmacomputing/...` entries resolve to the same release to avoid mixed-version loading. +### ✨ Why Tempo? +* **🏗️ Future Standard**: Built natively on the TC39 `Temporal` proposal. Inherit the reliability of the future standard. +* **🗣️ Natural Language**: Resolve complex terms like `#friday.last` or "two days ago" with zero configuration. +* **🔄 Cycle Persistence**: Shift by semantic terms (Quarters, Seasons) while preserving your relative day-of-period offset. +* **⚡ Zero-Cost Parsing**: Lazy evaluation and smart matching ensure instantiation overhead is near-zero. +* **🛡️ Monorepo Resilient**: Built for stability in complex environments with proxy-protected registries. +* **📦 Tree-Shakable**: Keep your bundle light. Only load what you need—from Fiscal calendars to high-performance Tickers. --- -## 📚 Documentation +### 📚 Documentation For a deeper dive into the API, architecture, and advanced features: @@ -154,60 +88,24 @@ For a deeper dive into the API, architecture, and advanced features: * **[Full API Reference Guide](https://magmacomputing.github.io/magma/doc/tempo.api)** — Detailed technical documentation for every class and method. --- -## 🛠️ Quick Start -```javascript -import { Tempo } from '@magmacomputing/tempo'; - -// Instantiate -const now = new Tempo(); -const birthday = new Tempo('20-May-1990'); -const nextWeek = new Tempo('next Monday'); - -// Manipulate -const later = now.add({ days: 3, hours: 2 }); -const startOfMonth = now.set({ start: 'month' }); - -// Format -console.log(now.format('{dd} {mmm} {yyyy}')); // using custom format with tokens: "24 Jan 2026" -console.log(now.fmt.date); // using pre-built formats: "2026-01-24" -``` - - -## 💬 Contact & Support - -If you have a question, find a bug, or want to suggest a new feature: +### 💬 Contact & Support 1. **Bug Reports & Features**: Please open an [Issue](https://github.com/magmacomputing/magma/issues). 2. **Questions & Ideas**: Start a thread in [Discussions](https://github.com/magmacomputing/magma/discussions). 3. **Direct Contact**: You can reach me at `hello@magmacomputing.com.au`. -## 🛡️ Privacy & Transparency - -We value your privacy. **Tempo** does not include any runtime telemetry or "phone-home" features. -Tempo will never make network requests from your application. - -## 🗳️ Feedback & Reactions +--- -How are we doing? Let us know with a simple reaction! -*(This will open a pre-filled GitHub Issue)* +### 🗳️ Feedback & Reactions [🚀 Premium!](https://github.com/magmacomputing/magma/issues/new?title=Feedback:%20🚀%20Premium!)   |   [⭐ Loving it!](https://github.com/magmacomputing/magma/issues/new?title=Feedback:%20⭐%20Loving%20it!)   |   [💡 Needs work](https://github.com/magmacomputing/magma/issues/new?title=Feedback:%20💡%20Needs%20work)   |   [🐞 Found a bug](https://github.com/magmacomputing/magma/issues/new?title=Feedback:%20🐞%20Found%20a%20bug) -### ⚡ Quick Reactions -*(Native reactions available in [Discussions](https://github.com/magmacomputing/magma/discussions/categories/feedback))* - -[👍 Like](https://github.com/magmacomputing/magma/discussions/categories/feedback)   |   -[❤️ Love](https://github.com/magmacomputing/magma/discussions/categories/feedback)   |   -[😄 Haha](https://github.com/magmacomputing/magma/discussions/categories/feedback)   |   -[😮 Wow](https://github.com/magmacomputing/magma/discussions/categories/feedback)   |   -[😢 Sad](https://github.com/magmacomputing/magma/discussions/categories/feedback)   |   -[😡 Angry](https://github.com/magmacomputing/magma/discussions/categories/feedback)   |   -[💩 Poop](https://github.com/magmacomputing/magma/discussions/categories/feedback) +--- -## ⚖️ License +### ⚖️ License Distributed under the MIT License. See `LICENSE` for more information. diff --git a/packages/tempo/doc/installation.md b/packages/tempo/doc/installation.md new file mode 100644 index 00000000..418b60dd --- /dev/null +++ b/packages/tempo/doc/installation.md @@ -0,0 +1,117 @@ +# Installation Guide + +Tempo is designed to be environment-agnostic. Whether you are building a server-side application, a modern browser project with ESM, or a performance-critical "Lite" bundle, Tempo provides a specific path for you. + +--- + +## 💻 Server & Bundlers (Node.js, Bun, Vite) + +For most modern projects using a package manager, install Tempo via the npm registry. + +```bash +npm install @magmacomputing/tempo # npm +yarn add @magmacomputing/tempo # yarn +pnpm add @magmacomputing/tempo # pnpm +bun add @magmacomputing/tempo # bun +``` + +### Usage +```javascript +import { Tempo } from '@magmacomputing/tempo'; +const t = new Tempo('next Friday'); +``` + +--- + +## 🦕 Deno + +Tempo is a native ESM package and works perfectly with Deno. You can add it via the `deno add` command which will resolve it from the npm registry. + +```bash +deno add @magmacomputing/tempo +``` + +### Usage +```javascript +import { Tempo } from "@magmacomputing/tempo"; +const t = new Tempo(); +``` + +--- + +## 🌐 Browser (Modern ESM) + +For browser environments that support **Import Maps**, you can use the granular ESM modules. This is the recommended way to use Tempo in the browser as it allows for better caching and modularity. + +### 1. Import Map Setup +Add this to your `` to resolve the dependencies: + +```html + +``` + +### 2. Implementation +```html + +``` + +--- + +## 📦 Browser (Legacy / Global Bundle) + +If you aren't using ESM or just want a simple ` + + + + + +``` + +--- + +## 🧪 Granular "Lite" Builds (Advanced) + +If you are extremely concerned about bundle size, you can bypass the "Batteries Included" entry point and import only the core engine. You then manually opt-in to the modules you need. + +```javascript +import { Tempo } from '@magmacomputing/tempo/core'; +import { MutateModule } from '@magmacomputing/tempo/mutate'; + +// Opt-in to specific functionality +Tempo.extend(MutateModule); + +const t = new Tempo().add({ days: 1 }); +``` + +> [!IMPORTANT] +> When using the Lite build, the `Tempo` class will have almost no methods (like `.add()`, `.set()`, or `.format()`) until you explicitly call `Tempo.extend()` with the appropriate module. + +--- + +## 🛡️ Versioning Policy + +We recommend pinning your versions in production environments to ensure stability. + +* **JSDelivr**: `https://cdn.jsdelivr.net/npm/@magmacomputing/tempo@2/...` (Locks to major version 2) +* **Latest**: Omit the version string (e.g., `@magmacomputing/tempo/...`) to always receive the latest release. diff --git a/packages/tempo/doc/tempo.config.md b/packages/tempo/doc/tempo.config.md index 68b41fa6..223f472c 100644 --- a/packages/tempo/doc/tempo.config.md +++ b/packages/tempo/doc/tempo.config.md @@ -103,6 +103,7 @@ Tempo.init({ | `catch` | `boolean` | `false` | If true, invalid inputs return a Void instance instead of throwing. | | `mode` | `'auto' \| 'strict' \| 'defer'` | `'auto'` | Controls the hydration strategy (e.g., `defer` for Zero-Cost creation). | | `silent` | `boolean` | `false` | Suppresses console output. Combined with `catch: true` for silent failover. | +| `ignore` | `string \| string[]` | `['at']` | List of noise words to be stripped before parsing. | --- @@ -117,9 +118,14 @@ const t = new Tempo('now', { timeZone: 'UTC' }); --- -## 5. Advanced: Parsing Rules +## 5. Advanced Parsing Rules + +Beyond basic settings, Tempo's parsing engine can be extended with custom rules and behaviors to handle specialized natural language or high-volume processing requirements. + +### 📅 5.1 Custom Events and Periods + +You can extend Tempo's intelligence by supplying custom **Events** (date aliases) and **Periods** (time aliases) at any global configuration tier. -Beyond basic settings, you can extend Tempo's intelligence by supplying custom **Events** (date aliases) and **Periods** (time aliases) at any global configuration tier. ```javascript Tempo.init({ @@ -136,7 +142,7 @@ Tempo.init({ const delivery = new Tempo('deadline'); // Parsed using your custom logic ``` -### ⚡ 5b. Deferring Initialization (`mode: 'defer'`) +### ⚡ 5.2 Deferring Initialization (`mode: 'defer'`) By default (`mode: 'auto'`), Tempo uses the **Master Guard** to determine if a string can be lazily evaluated. For exceptionally high-volume scenarios where you may be creating thousands of Tempo instances but only using them for calculations (not formatting or terms), you can force a standard lazy behavior using `mode: 'defer'`. @@ -153,6 +159,29 @@ console.log(t.format('{yyyy}')); // Discovery triggers NOW, only once. > [!TIP] > **Zero-Cost Constructor**: Combining the **Master Guard** (automatic) and the **`defer`** mode allows Tempo to satisfy the "Zero-Cost Constructor" requirement for mass-processing applications. + +### 🧹 5.3 Noise Word Filtering (`ignore`) + +Tempo allows you to specify "noise words" that should be ignored during natural language parsing. This is particularly useful for handling human-readable strings that contain connectors or filler words. + +By default, Tempo ignores the word **"at"** (e.g., `"Friday at 3pm"` becomes `"Friday 3pm"` internally). + +```javascript +// Extend globally +Tempo.init({ ignore: ['the', 'o-clock'] }); + +// Use in a specific instance +const t = new Tempo('next Friday at 3 o-clock', { + ignore: 'o-clock' +}); + +console.log(t.toString()); // Resolved correctly +``` + +> [!TIP] +> **Registry Structure**: The `ignore` registry accepts a **String** or an **Array** of strings. These are converted to a high-performance internal format to support efficient prototype-based shadowing. + + --- ## 📊 Summary of Tiers diff --git a/packages/tempo/src/plugin/module/module.parse.ts b/packages/tempo/src/plugin/module/module.parse.ts index c2906548..d6cf9411 100644 --- a/packages/tempo/src/plugin/module/module.parse.ts +++ b/packages/tempo/src/plugin/module/module.parse.ts @@ -142,7 +142,7 @@ const ParseEngine = { conform(this: any, tempo: t.DateTime, dateTime: Temporal.ZonedDateTime, isAnchored = false, resolvingKeys = new Set()): TypeValue { const state = this[sym.$Internal](); const arg = asType(tempo); - const { type, value } = arg; + let { type, value } = arg; const TempoClass = this.constructor as typeof Tempo; const terms = getRuntime().pluginsDb.terms; @@ -191,7 +191,10 @@ const ParseEngine = { } if (isString(value)) { - const trim = (value as string).trim(); + let trim = (value as string).trim(); + if (state.parse.ignorePattern) + trim = trim.replace(state.parse.ignorePattern, ' ').replace(Match.spaces, ' ').trim(); + const guard = (TempoClass as any)[sym.$guard].test(trim); if (!guard) { @@ -208,6 +211,7 @@ const ParseEngine = { const bypass = local.some(key => trim.toLowerCase().includes(String(key).toLowerCase())); if (!bypass) return arg; } + value = trim; // Update value for downstream parsing } return ParseEngine.parseLayout.call(this, value as string | number, dateTime, isAnchored, resolvingKeys); @@ -218,7 +222,7 @@ const ParseEngine = { const state = this[sym.$Internal](); const arg = asType(value); const { type } = arg; - const trim = (type === 'String') ? (value as string).trim() : value.toString(); + const trim = value.toString().trim();//(type === 'String') ? (value as string).trim() : value.toString(); const resolving = new Set(resolvingKeys); const TempoClass = this.constructor as typeof Tempo; diff --git a/packages/tempo/src/support/support.index.ts b/packages/tempo/src/support/support.index.ts index 5d590533..85fe480a 100644 --- a/packages/tempo/src/support/support.index.ts +++ b/packages/tempo/src/support/support.index.ts @@ -30,7 +30,7 @@ export { export { isTempo } from './tempo.symbol.js'; export { registryUpdate, registryReset, onRegistryReset } from './tempo.register.js'; export { getRuntime, TempoRuntime } from './tempo.runtime.js'; -export { Match, Token, Snippet, Layout, Event, Period, Guard, Default } from './tempo.default.js'; +export { Match, Token, Snippet, Layout, Event, Period, Ignore, Guard, Default } from './tempo.default.js'; export { SCHEMA, getLargestUnit, getSafeFallbackStep } from './tempo.util.js'; export { default as lib } from '#library/symbol.library.js'; diff --git a/packages/tempo/src/support/tempo.default.ts b/packages/tempo/src/support/tempo.default.ts index f5d391b4..3cf5e5b2 100644 --- a/packages/tempo/src/support/tempo.default.ts +++ b/packages/tempo/src/support/tempo.default.ts @@ -183,6 +183,14 @@ export const Period = looseIndex()({ /** @internal Tempo Period type */ export type Period = typeof Period +/** + * an {ignore} is a list of noise words to be stripped during parsing. + */ +/** @internal Tempo Ignore registry */ +export const Ignore = ['at', 'the', 'o-clock', 'o\'clock', 'on', 'in', 'of', 'by', 'for', 'to'] as const; +/** @internal Tempo Ignore type */ +export type Ignore = string | string[]; + /** @internal Tempo Master Guard list */ export const Guard = [ diff --git a/packages/tempo/src/support/tempo.enum.ts b/packages/tempo/src/support/tempo.enum.ts index bcb20719..99539d03 100644 --- a/packages/tempo/src/support/tempo.enum.ts +++ b/packages/tempo/src/support/tempo.enum.ts @@ -1,12 +1,8 @@ import lib from '#library/symbol.library.js'; import { enumify, Enum } from '#library/enumerate.library.js'; import { proxify } from '#library/proxy.library.js'; -import { ownKeys } from '#library/primitive.library.js'; import { allDescriptors } from '#library/reflection.library.js'; -import { clearCache } from '#library/function.library.js'; -import { isUndefined, isDefined } from '#library/type.library.js'; -import type { OwnOf, KeyOf, ValueOf, LooseUnion, Mutable, Property } from '#library/type.library.js'; -import sym from './tempo.symbol.js'; +import type { OwnOf, KeyOf, ValueOf, LooseUnion, Mutable } from '#library/type.library.js'; /** calendar seasons */ export const SEASON = enumify({ diff --git a/packages/tempo/src/tempo.class.ts b/packages/tempo/src/tempo.class.ts index bf4a03d8..8684057d 100644 --- a/packages/tempo/src/tempo.class.ts +++ b/packages/tempo/src/tempo.class.ts @@ -20,7 +20,7 @@ import type { Property, Secure } from '#library/type.library.js'; import { registerPlugin, interpret, ensureModule } from './plugin/plugin.util.js' import { registerTerm, getTermRange } from './plugin/term.util.js'; -import sym, { getRuntime, isTempo, registryUpdate, registryReset, onRegistryReset, Match, Token, Snippet, Layout, Event, Period, Default, Guard, enums, STATE, DISCOVERY } from '#tempo/support'; +import sym, { getRuntime, isTempo, registryUpdate, registryReset, onRegistryReset, Match, Token, Snippet, Layout, Event, Period, Ignore, Default, Guard, enums, STATE, DISCOVERY } from '#tempo/support'; import * as t from './tempo.type.js'; // namespaced types (Tempo.*) declare module '#library/type.library.js' { @@ -310,6 +310,7 @@ export class Tempo { case 'layout': case 'event': case 'period': + case 'ignore': // lazy-shadowing: only create local object if it doesn't already exist on local shape if (!hasOwn(shape.parse, optKey)) shape.parse[optKey] = create(shape.parse, optKey); @@ -322,8 +323,14 @@ export class Tempo { : isRegExp(v) ? v.source : v ) } else { - asArray(arg.value as Event | Period) - .forEach(elm => ownEntries(elm).forEach(([key, val]) => (rule as Record)[key] = val)) + asArray(arg.value) + .forEach(elm => { + if (isObject(elm)) { + Object.assign(rule, elm); + } else if (isString(elm)) { + rule[elm] = elm; + } + }) } break; @@ -393,6 +400,7 @@ export class Tempo { if (isDefined(shape.parse.mdyLayouts)) Tempo.#swapLayout(shape); if (isDefined(shape.parse.event)) Tempo.#setEvents(shape); if (isDefined(shape.parse.period)) Tempo.#setPeriods(shape); + if (isDefined(shape.parse.ignore)) Tempo.#setIgnores(shape); Tempo.#setPatterns(shape); // setup Regex DateTime patterns } @@ -445,11 +453,16 @@ export class Tempo { // 4. Process Options let opts = discovery.options || {} + if (discovery.ignore) { + const ignore = isFunction(discovery.ignore) ? discovery.ignore() : discovery.ignore; + Tempo.init({ ignore }); + } return isFunction(opts) ? opts() : opts; } /** build RegExp patterns */ static #setPatterns(shape: Internal.State) { + if (isDefined(shape.parse.ignore)) Tempo.#setIgnores(shape); const snippet = shape.parse.snippet; // 1. ensure numeric snippets are current @@ -473,6 +486,25 @@ export class Tempo { Tempo.#buildGuard(); // build the high-performance 'Master Guard' ONLY for global changes } + /** build a Case-Insensitive regex pattern to strip noise words */ + static #setIgnores(shape: Internal.State) { + const ignores = ownKeys(shape.parse.ignore, true); + if (isLocal(shape) && !hasOwn(shape.parse, 'ignore')) + return; + + if (isEmpty(ignores)) { + delete shape.parse.ignorePattern; + return; + } + + const words = ignores + .filter(isString) + .map(w => Match.escape(w.toLowerCase())) + .join('|'); + + shape.parse.ignorePattern = new RegExp(`\\b(${words})\\b`, 'gi'); + } + static #buildGuard() { // Tempo.#dbg.error(Tempo.#global.config, 'Building Guard...'); const wordsList = [ @@ -486,6 +518,7 @@ export class Tempo { ...ownKeys(enums.TIMEZONE), ...ownKeys(Tempo.#global.parse.event), ...ownKeys(Tempo.#global.parse.period), + ...ownKeys(Tempo.#global.parse.ignore), ...ownKeys(Tempo.#global.parse.snippet), ...ownKeys(Tempo.#global.parse.layout), ...[Token.slk], @@ -717,6 +750,7 @@ export class Tempo { layout: Object.assign({}, Layout), event: Object.assign({}, Event), period: Object.assign({}, Period), + ignore: Object.fromEntries(asArray(Ignore).map(w => [w, w])), mdyLocales: Tempo.#mdyLocales(Default.mdyLocales as t.Options['mdyLocales']), mdyLayouts: asArray(Default.mdyLayouts as t.Options['mdyLayouts']) as t.Pair[], pivot: Default.pivot, @@ -935,6 +969,7 @@ export class Tempo { layout: { ...parse.layout }, event: { ...parse.event }, period: { ...parse.period }, + ignore: { ...parse.ignore }, mdyLocales: [...parse.mdyLocales], mdyLayouts: [...parse.mdyLayouts], mode: parse.mode @@ -949,6 +984,11 @@ export class Tempo { /** release global config and reset library to defaults */ static [Symbol.dispose]() { Tempo.init() } + /** static Tempo.ignores (registry) */ + static get ignores(): Secure { + return secure(ownKeys(Tempo.#global.parse.ignore, true)); + } + /** allow instanceof to work across module boundaries via the local brand symbol */ static [sym.$isTempo] = true; static [Symbol.hasInstance](instance: any) { @@ -989,8 +1029,6 @@ export class Tempo { /** instance parse rules (only populated if provided) */ parse: { result: [] as Internal.MatchResult[] } as Internal.Parse } as Internal.State; - - /** @internal internal key for signaling pre-errored state in constructor */ static [sym.$errored] = sym.$errored; diff --git a/packages/tempo/src/tempo.type.ts b/packages/tempo/src/tempo.type.ts index 6e1b1af0..f521daa4 100644 --- a/packages/tempo/src/tempo.type.ts +++ b/packages/tempo/src/tempo.type.ts @@ -9,7 +9,7 @@ import * as enums from '#tempo/support/tempo.enum.js'; import sym from '#tempo/support/tempo.symbol.js'; -import type { Snippet, Layout, Event, Period, Token } from '#tempo/support/tempo.default.js'; +import type { Snippet, Layout, Event, Period, Token, Ignore } from '#tempo/support/tempo.default.js'; import type { IntRange, NonOptional, Property, Plural, Prettify, TemporalObject, TypeValue } from '#library/type.library.js'; import type { Range, TermPlugin, ResolvedRange, Plugin, Terms, Module, Extension } from '#tempo/plugin/plugin.type.js'; @@ -170,6 +170,7 @@ export namespace Internal { /** patterns to help parse value */ layout: Layout | PatternOption; /** custom date aliases (events). */ event: Event | PatternOption; /** custom time aliases (periods). */ period: Period | PatternOption; + /** noise words to ignore during parsing. */ ignore: Ignore; /** custom format strings to merge in the FORMAT enum */formats: Property; /** plugins to be automatically extended */ plugins: Plugin | Plugin[]; /** supplied value to parse */ value: DateTime; @@ -210,6 +211,7 @@ export namespace Internal { /** Map of regex-patterns to match input-string */ pattern: Registry; /** configured Events */ event: Event; /** configured Periods */ period: Period; + /** noise words to ignore during parsing */ ignore: Record; /** pivot year for two-digit years */ pivot: number; /** parsing match result */ result: Match[]; /** was this a nested/anchored parse? */ isAnchored?: boolean; @@ -218,6 +220,7 @@ export namespace Internal { /** @internal lazy delegator for formats */ format?: any; /** @internal lazy delegator for terms */ term?: any; /** @internal localized Master Guard scanner */ guard?: { test(str: string): boolean }; + /** @internal localized Noise Word scanner */ ignorePattern?: RegExp; } /** drop the parse-only Options */ @@ -237,6 +240,7 @@ export namespace Internal { /** aliases to merge in the Number-Word dictionary */ numbers?: Record; /** term plugins to be registered via Tempo.addTerm() */terms?: TermPlugin | TermPlugin[]; /** custom format strings to merge in the FORMAT dictionary */formats?: Property; + /** noise words to ignore during parsing via Tempo.ignore() */ ignore?: Ignore | (() => Ignore); /** plugins to be automatically extended via Tempo.extend() */plugins?: Plugin | Plugin[]; } } From 92085862f421de0777a44f20bca6acba708e2db1 Mon Sep 17 00:00:00 2001 From: Michael McRae Date: Tue, 21 Apr 2026 20:01:01 +1000 Subject: [PATCH 3/6] review --- packages/tempo/package.json | 9 +- .../{esm.index.html => esm_core.index.html} | 6 +- packages/tempo/public/esm_full.index.html | 258 ++++++++++++++++++ packages/tempo/src/core.index.ts | 4 + .../tempo/src/plugin/extend/extend.ticker.ts | 2 +- .../tempo/src/plugin/module/module.format.ts | 2 +- .../tempo/src/plugin/module/module.mutate.ts | 3 +- .../tempo/src/plugin/module/module.parse.ts | 154 ++++++----- .../tempo/src/plugin/module/module.term.ts | 162 ++++++----- packages/tempo/src/plugin/plugin.type.ts | 5 +- packages/tempo/src/plugin/plugin.util.ts | 7 +- packages/tempo/src/plugin/term.util.ts | 6 +- packages/tempo/src/plugin/term/term.index.ts | 2 +- packages/tempo/src/support/support.index.ts | 8 +- packages/tempo/src/support/tempo.default.ts | 54 +--- packages/tempo/src/support/tempo.enum.ts | 12 +- packages/tempo/src/support/tempo.init.ts | 127 +++++++++ packages/tempo/src/support/tempo.runtime.ts | 20 +- packages/tempo/src/support/tempo.symbol.ts | 83 ++++-- packages/tempo/src/support/tempo.util.ts | 106 ++++--- packages/tempo/src/tempo.class.ts | 24 +- packages/tempo/src/tempo.index.ts | 8 +- packages/tempo/src/tempo.parse.ts | 36 +++ packages/tempo/src/tempo.type.ts | 13 +- packages/tempo/test/runtime_brand.test.ts | 2 +- packages/tempo/test/standalone_parse.test.ts | 56 ++++ packages/tempo/test/tempo_regexp.test.ts | 2 +- packages/tempo/vitest.config.ts | 4 +- 28 files changed, 880 insertions(+), 295 deletions(-) rename packages/tempo/public/{esm.index.html => esm_core.index.html} (96%) create mode 100644 packages/tempo/public/esm_full.index.html create mode 100644 packages/tempo/src/support/tempo.init.ts create mode 100644 packages/tempo/src/tempo.parse.ts create mode 100644 packages/tempo/test/standalone_parse.test.ts diff --git a/packages/tempo/package.json b/packages/tempo/package.json index 1d307fc4..e4baa1f0 100644 --- a/packages/tempo/package.json +++ b/packages/tempo/package.json @@ -54,8 +54,8 @@ "default": "./dist/plugin/module/module.format.js" }, "#tempo/parse": { - "development": "./src/plugin/module/module.parse.ts", - "default": "./dist/plugin/module/module.parse.js" + "development": "./src/tempo.parse.ts", + "default": "./dist/tempo.parse.js" }, "#tempo/mutate": { "development": "./src/plugin/module/module.mutate.ts", @@ -156,9 +156,8 @@ "import": "./dist/plugin/module/module.mutate.js" }, "./parse": { - "types": "./dist/plugin/module/module.parse.d.ts", - "development": "./src/plugin/module/module.parse.ts", - "default": "./dist/plugin/module/module.parse.js" + "types": "./dist/tempo.parse.d.ts", + "import": "./dist/tempo.parse.js" }, "./library": { "types": "./dist/library.index.d.ts", diff --git a/packages/tempo/public/esm.index.html b/packages/tempo/public/esm_core.index.html similarity index 96% rename from packages/tempo/public/esm.index.html rename to packages/tempo/public/esm_core.index.html index 5e21947c..58a617cb 100644 --- a/packages/tempo/public/esm.index.html +++ b/packages/tempo/public/esm_core.index.html @@ -232,15 +232,13 @@

Tempo

{ "imports": { "jsbi": "https://cdn.jsdelivr.net/npm/jsbi@4.3.0/dist/jsbi.mjs", + "@js-temporal/polyfill": "https://cdn.jsdelivr.net/npm/@js-temporal/polyfill@0.5/dist/index.esm.js", "@magmacomputing/tempo/core": "https://cdn.jsdelivr.net/npm/@magmacomputing/tempo@2/dist/core.index.js", - "@magmacomputing/tempo/mutate": "https://cdn.jsdelivr.net/npm/@magmacomputing/tempo@2/dist/plugin/module/module.mutate.js", - "@magmacomputing/library": "https://cdn.jsdelivr.net/npm/@magmacomputing/library@2/dist/common.index.js", - "@js-temporal/polyfill": "https://cdn.jsdelivr.net/npm/@js-temporal/polyfill@0.5/dist/index.esm.js" + "@magmacomputing/tempo/mutate": "https://cdn.jsdelivr.net/npm/@magmacomputing/tempo@2/dist/plugin/module/module.mutate.js" } } + + + \ No newline at end of file diff --git a/packages/tempo/src/core.index.ts b/packages/tempo/src/core.index.ts index 370c9dc5..55c95820 100644 --- a/packages/tempo/src/core.index.ts +++ b/packages/tempo/src/core.index.ts @@ -1,6 +1,10 @@ import { Tempo } from './tempo.class.js'; export * from './tempo.class.js'; +export { parse } from './tempo.parse.js'; +import { getRuntime } from '#tempo/support'; export { enums, Token, Snippet, Match, Default, Guard } from '#tempo/support'; +getRuntime().modules['Tempo'] = Tempo; + export default Tempo; diff --git a/packages/tempo/src/plugin/extend/extend.ticker.ts b/packages/tempo/src/plugin/extend/extend.ticker.ts index 658fcc3b..f7de4144 100644 --- a/packages/tempo/src/plugin/extend/extend.ticker.ts +++ b/packages/tempo/src/plugin/extend/extend.ticker.ts @@ -6,7 +6,7 @@ import { markConfig } from '#library/symbol.library.js' import { DURATIONS } from '../../support/tempo.enum.js' import { defineExtension, attachStatics } from '../plugin.util.js' -import sym from '../../support/tempo.symbol.js'; +import { sym } from '../../support/tempo.symbol.js'; import type { Tempo } from '../../tempo.class.js' import type { TempoType } from '../plugin.type.js' diff --git a/packages/tempo/src/plugin/module/module.format.ts b/packages/tempo/src/plugin/module/module.format.ts index ac8f1f8f..f71386b6 100644 --- a/packages/tempo/src/plugin/module/module.format.ts +++ b/packages/tempo/src/plugin/module/module.format.ts @@ -9,7 +9,7 @@ import type { Tempo } from '../../tempo.class.js'; declare module '../../tempo.class.js' { interface Tempo { - /** applies a format to the instance. */ format(fmt: any): any; + /** applies a format to the instance. */ format(fmt: any): any; } } diff --git a/packages/tempo/src/plugin/module/module.mutate.ts b/packages/tempo/src/plugin/module/module.mutate.ts index c29ea7b8..64cfdca6 100644 --- a/packages/tempo/src/plugin/module/module.mutate.ts +++ b/packages/tempo/src/plugin/module/module.mutate.ts @@ -1,6 +1,7 @@ import { isDefined, isObject, isString, isUndefined, isZonedDateTime } from '#library/type.library.js'; import { singular } from '#library/string.library.js'; -import sym from '../../support/tempo.symbol.js'; + +import { sym } from '../../support/tempo.symbol.js'; import enums from '../../support/tempo.enum.js'; import { defineInterpreterModule } from '../plugin.util.js'; import { findTermPlugin } from '../term.util.js'; diff --git a/packages/tempo/src/plugin/module/module.parse.ts b/packages/tempo/src/plugin/module/module.parse.ts index d6cf9411..dd759996 100644 --- a/packages/tempo/src/plugin/module/module.parse.ts +++ b/packages/tempo/src/plugin/module/module.parse.ts @@ -6,20 +6,27 @@ import { ownKeys, ownEntries } from '#library/primitive.library.js'; import type { Tempo } from '../../tempo.class.js'; import { prefix, parseWeekday, parseDate, parseTime, parseZone } from './module.lexer.js'; -import sym, { isTempo, Match, getRuntime } from '#tempo/support'; +import { sym, isTempo, Match, getRuntime } from '../../support/support.index.js'; import { resolveTermMutation, resolveTermValue } from './module.term.js'; import { compose } from './module.composer.js'; import { defineInterpreterModule } from '../plugin.util.js'; import { getRange, getTermRange } from '../term.util.js'; import * as t from '../../tempo.type.js'; +/** + * Internal helper to resolve state from 'this' context or first argument + */ +const withState = (fn: Function) => function (this: any, ...args: any[]) { + const state = isTempo(this) ? (this as any)[sym.$Internal]() : args.shift(); + return fn.call(this, state, ...args); +}; + /** * Internal Parse Engine Implementation */ -const ParseEngine = { +const _ParseEngine = { /** parse DateTime input */ - parse(this: any, tempo: t.DateTime, dateTime?: Temporal.ZonedDateTime, term?: string): Temporal.ZonedDateTime { - const state = this[sym.$Internal](); + parse(state: any, tempo: t.DateTime, dateTime?: Temporal.ZonedDateTime, term?: string): Temporal.ZonedDateTime { if (isNull(tempo)) { state.errored = true; return undefined as any; @@ -32,7 +39,7 @@ const ParseEngine = { try { const { config } = state; - const val = dateTime ?? state.anchor ?? (isTempo(tempo) ? tempo.toDateTime() : (isZonedDateTime(tempo) ? tempo : undefined)); + const val = dateTime ?? state.anchor ?? (isTempo(tempo) ? (tempo as any).toDateTime() : (isZonedDateTime(tempo) ? tempo : undefined)); const basis = isDefined(val) ? val : instant().toZonedDateTimeISO(config.timeZone); const tz = isTempo(basis) ? (basis as any).tz : (isZonedDateTime(basis) ? basis.timeZoneId : config.timeZone); @@ -40,20 +47,21 @@ const ParseEngine = { today = isZonedDateTime(basis) ? basis : (isTempo(basis) ? (basis as any).toDateTime() : instant().toZonedDateTimeISO(tz).withCalendar(cal)); - const TempoClass = this.constructor as typeof Tempo; + const TempoClass = getRuntime().modules['Tempo']; const terms = getRuntime().pluginsDb.terms; if (term) { const ident = term.startsWith('#') ? term.slice(1) : term; const termObj = terms.find((termEntry: any) => termEntry.key === ident || termEntry.scope === ident); if (!termObj) { - (TempoClass as any)[sym.$termError](state.config, term); + if (TempoClass) + (TempoClass as any)[sym.$termError](state.config, term); return undefined as any; } if (isNumeric(tempo as any)) { - const list = getRange(termObj, this, today); - const current = (getTermRange(this, list, false, today) as any); + const list = getRange(termObj, state as any, today); + const current = (getTermRange(state as any, list, false, today) as any); if (!current) throw new RangeError(`Term index out of range: ${tempo} for ${term}`); const isMultiCycle = isDefined(termObj.resolve) && list.some(r => r.year !== undefined); @@ -67,22 +75,22 @@ const ParseEngine = { const item = list[targetIdx]; if (item) { - const range = (getTermRange(this, [item], false, today) as any); + const range = (getTermRange(state as any, [item], false, today) as any); if (range?.start) return range.start.toDateTime().withTimeZone(tz).withCalendar(cal); } throw new RangeError(`Term index out of range: ${tempo} for ${term}`); } if (tempo === term) { - const range = termObj.define.call(this, false, today); + const range = termObj.define.call(state as any, false, today); const list = isUndefined(range) ? [] : asArray(range as t.Range | t.Range[]); - const current = getTermRange(this, list, false, today) as t.ResolvedRange | undefined; + const current = getTermRange(state as any, list, false, today) as t.ResolvedRange | undefined; if (current?.start) return current.start.toDateTime().withTimeZone(tz).withCalendar(cal); } } if (isString(tempo) && tempo.startsWith('#')) { - const res = resolveTermValue(TempoClass, this, tempo, today); + const res = resolveTermValue(TempoClass, state as any, tempo, today); if (isZonedDateTime(res)) return res; return undefined as any; } @@ -92,11 +100,11 @@ const ParseEngine = { if (termKey) { if (isUndefined(term)) { const msg = `Unsupported Syntax: Term-based mutations (#) cannot be passed to the constructor. Use new Tempo().set(${JSON.stringify(tempo)}) instead.`; - (TempoClass as any)[sym.$logError](state.config, msg); + if (TempoClass) (TempoClass as any)[sym.$logError](state.config, msg); throw new Error(msg); } if (terms.length === 0) { - (TempoClass as any)[sym.$termError](state.config, termKey); + if (TempoClass) (TempoClass as any)[sym.$termError](state.config, termKey); return undefined as any; } } @@ -104,7 +112,7 @@ const ParseEngine = { const isAnchored = isDefined(dateTime) || isDefined(state.anchor); const resolvingKeys = new Set(); - const res = ParseEngine.conform.call(this, tempo, today, isAnchored, resolvingKeys); + const res = _ParseEngine.conform(state, tempo, today, isAnchored, resolvingKeys); const { timeZone: tz2, calendar: cal2 } = state.config; const targetTz = isString(tz2) ? tz2 : (tz2 as any).id ?? (tz2 as any).timeZoneId; @@ -139,27 +147,26 @@ const ParseEngine = { }, /** conform input to a Temporal.ZonedDateTime */ - conform(this: any, tempo: t.DateTime, dateTime: Temporal.ZonedDateTime, isAnchored = false, resolvingKeys = new Set()): TypeValue { - const state = this[sym.$Internal](); + conform(state: any, tempo: t.DateTime, dateTime: Temporal.ZonedDateTime, isAnchored = false, resolvingKeys = new Set()): TypeValue { const arg = asType(tempo); let { type, value } = arg; - const TempoClass = this.constructor as typeof Tempo; + const TempoClass = getRuntime().modules['Tempo']; const terms = getRuntime().pluginsDb.terms; if (!isZonedDateTime(dateTime)) { - (TempoClass as any)[sym.$logError](state.config, new TypeError(`Sacred Anchor corrupted: ${String(value)}`)); + if (TempoClass) (TempoClass as any)[sym.$logError](state.config, new TypeError(`Sacred Anchor corrupted: ${String(value)}`)); return arg; } let zdt = dateTime as any; - if (ParseEngine.isZonedDateTimeLike.call(this, tempo)) { + if (_ParseEngine.isZonedDateTimeLike(state, tempo)) { const { timeZone, calendar, value: _, ...options } = tempo as t.Options; const termKey = Object.keys(options).find(k => k.startsWith('#')); if (termKey && terms.length === 0) { - (TempoClass as any)[sym.$termError](state.config, termKey); + if (TempoClass) (TempoClass as any)[sym.$termError](state.config, termKey); return undefined as any; } @@ -170,7 +177,7 @@ const ParseEngine = { if (calendar) zdt = zdt.withCalendar(calendar); - ParseEngine.result.call(this, { type: 'Temporal.ZonedDateTimeLike', value: zdt, match: 'Temporal.ZonedDateTimeLike' }); + _ParseEngine.result(state, { type: 'Temporal.ZonedDateTimeLike', value: zdt, match: 'Temporal.ZonedDateTimeLike' }); return Object.assign(arg, { type: 'Temporal.ZonedDateTime', @@ -185,9 +192,8 @@ const ParseEngine = { return Object.assign(arg, { type: 'Temporal.ZonedDateTime', value: res }); } - if (type !== 'String' && type !== 'Number' && type !== 'Function' && type !== 'AsyncFunction') { - ParseEngine.result.call(this, arg, { match: type }); - return arg; + if (isZonedDateTime(value)) { + return Object.assign(arg, { type: 'Temporal.ZonedDateTime', value }); } if (isString(value)) { @@ -195,7 +201,7 @@ const ParseEngine = { if (state.parse.ignorePattern) trim = trim.replace(state.parse.ignorePattern, ' ').replace(Match.spaces, ' ').trim(); - const guard = (TempoClass as any)[sym.$guard].test(trim); + const guard = (TempoClass as any)?.[sym.$guard]?.test(trim) ?? true; if (!guard) { const keys = (obj: any) => { @@ -214,30 +220,29 @@ const ParseEngine = { value = trim; // Update value for downstream parsing } - return ParseEngine.parseLayout.call(this, value as string | number, dateTime, isAnchored, resolvingKeys); + return _ParseEngine.parseLayout(state, value as string | number, dateTime, isAnchored, resolvingKeys); }, /** match a string or number against known layouts */ - parseLayout(this: any, value: string | number, dateTime: Temporal.ZonedDateTime, isAnchored = false, resolvingKeys = new Set()): TypeValue { - const state = this[sym.$Internal](); + parseLayout(state: any, value: string | number, dateTime: Temporal.ZonedDateTime, isAnchored = false, resolvingKeys = new Set()): TypeValue { const arg = asType(value); const { type } = arg; - const trim = value.toString().trim();//(type === 'String') ? (value as string).trim() : value.toString(); + const trim = value?.toString().trim() ?? ''; const resolving = new Set(resolvingKeys); - const TempoClass = this.constructor as typeof Tempo; + const TempoClass = getRuntime().modules['Tempo']; if (resolving.size >= 100) { - (TempoClass as any)[sym.$logError](state.config, new RangeError(`Infinite recursion detected in layout resolution for: ${String(value)}`)); + if (TempoClass) (TempoClass as any)[sym.$logError](state.config, new RangeError(`Infinite recursion detected in layout resolution for: ${String(value)}`)); return arg; } if (type === 'String') { if (isEmpty(trim)) { - ParseEngine.result.call(this, arg, { match: 'Empty' }); + _ParseEngine.result(state, { type: 'Empty', value: trim, match: 'Empty' }); return Object.assign(arg, { type: 'Empty' }); } if (isIntegerLike(trim)) { - ParseEngine.result.call(this, arg, { match: 'BigInt' }); + _ParseEngine.result(state, { type: 'BigInt', value: asInteger(trim), match: 'BigInt' }); return Object.assign(arg, { type: 'BigInt', value: asInteger(trim) }); } } @@ -245,7 +250,7 @@ const ParseEngine = { if (Number.isNaN(value) || !Number.isFinite(value)) return arg; if (trim.length <= 7) { const msg = 'Cannot safely interpret number with less than 8-digits: use string instead'; - (TempoClass as any)[sym.$logError](state.config, new TypeError(msg)); + if (TempoClass) (TempoClass as any)[sym.$logError](state.config, new TypeError(msg)); return arg; } } @@ -256,20 +261,20 @@ const ParseEngine = { const anchorTime = zdt.toPlainTime(); const map = state.parse.pattern; for (const [symKey, pat] of map) { - const groups = ParseEngine.parseMatch.call(this, pat, trim); + const groups = _ParseEngine.parseMatch(state, pat, trim); if (isEmpty(groups)) continue; const hasAlias = Object.keys(groups).some(k => k.includes('evt') || k.includes('per')); const isRootMatch = Object.keys(groups).some(k => k === 'dt' || k === 'tm'); const hadEventOrPeriod = hasAlias || isRootMatch; - ParseEngine.result.call(this, arg, { match: symKey.description, groups: { ...groups } }); + _ParseEngine.result(state, { match: symKey.description, value: trim, groups: { ...groups } }); dateTime = parseZone(groups, dateTime, state.config); - dateTime = ParseEngine.parseGroups.call(this, groups, dateTime, isAnchored, resolvingKeys); + dateTime = _ParseEngine.parseGroups(state, groups, dateTime, isAnchored, resolvingKeys); - dateTime = parseWeekday(groups, dateTime, (TempoClass as any)[sym.$dbg], state.config); - dateTime = parseDate(groups, dateTime, (TempoClass as any)[sym.$dbg], state.config, state.parse["pivot"]); + dateTime = parseWeekday(groups, dateTime, (TempoClass as any)?.[sym.$dbg], state.config); + dateTime = parseDate(groups, dateTime, (TempoClass as any)?.[sym.$dbg], state.config, state.parse["pivot"]); dateTime = parseTime(groups, dateTime); const hasTime = Object.keys(groups).some(key => ['hh', 'mi', 'ss', 'ms', 'us', 'ns', 'ff', 'mer'].includes(key) || Match.period.test(key)) @@ -283,8 +288,10 @@ const ParseEngine = { Object.assign(arg, { type: 'Temporal.ZonedDateTime', value: dateTime, match: symKey.description, groups }); } - (TempoClass as any)[sym.$logDebug](state.config, 'groups', groups); - (TempoClass as any)[sym.$logDebug](state.config, 'pattern', symKey.description); + if (TempoClass) { + (TempoClass as any)[sym.$logDebug](state.config, 'groups', groups); + (TempoClass as any)[sym.$logDebug](state.config, 'pattern', symKey.description); + } break; } @@ -293,7 +300,7 @@ const ParseEngine = { }, /** apply a regex-match against a value, and clean the result */ - parseMatch(this: any, pat: RegExp, value: string | number) { + parseMatch(state: any, pat: RegExp, value: string | number) { const groups = value.toString().match(pat)?.groups || {} ownEntries(groups) @@ -304,10 +311,9 @@ const ParseEngine = { }, /** resolve {event} | {period} to their date | time values (mutates groups) */ - parseGroups(this: any, groups: t.Groups, dateTime: Temporal.ZonedDateTime, isAnchored: boolean, resolvingKeys: Set): Temporal.ZonedDateTime { + parseGroups(state: any, groups: t.Groups, dateTime: Temporal.ZonedDateTime, isAnchored: boolean, resolvingKeys: Set): Temporal.ZonedDateTime { if (!isZonedDateTime(dateTime)) return dateTime; - const state = this[sym.$Internal](); - const TempoClass = this.constructor as typeof Tempo; + const TempoClass = getRuntime().modules['Tempo']; const prevAnchor = state.anchor; const prevZdt = state.zdt; @@ -328,7 +334,7 @@ const ParseEngine = { if (key === 'slk') { const slk = groups[key]; - const result = resolveTermMutation(TempoClass, this, 'set', slk, undefined, dateTime); + const result = resolveTermMutation(TempoClass, state as any, 'set', slk, undefined, dateTime); if (result === null) { state.errored = true; resolved.add(key); @@ -345,7 +351,7 @@ const ParseEngine = { const isGlobal = key.startsWith('g'); const isLocal = key.startsWith('l'); const idx = +key.substring((isGlobal || isLocal) ? 4 : 3); - const src = isGlobal ? (isEvent ? (TempoClass as any)[sym.$Internal]().parse.event : (TempoClass as any)[sym.$Internal]().parse.period) : (isEvent ? state.parse.event : state.parse.period); + const src = isGlobal ? (isEvent ? (getRuntime().modules['Tempo'] as any)[sym.$Internal]().parse.event : (getRuntime().modules['Tempo'] as any)[sym.$Internal]().parse.period) : (isEvent ? state.parse.event : state.parse.period); const entry = ownEntries(src, true)[idx]; @@ -358,7 +364,7 @@ const ParseEngine = { if (resolvingKeys.size > 50 || resolvingKeys.has(aliasKey)) { const msg = `Infinite recursion detected in Tempo resolution for: ${aliasKey}`; state.errored = true; - (TempoClass as any)[sym.$logError](state.config, new RangeError(msg)); + if (TempoClass) (TempoClass as any)[sym.$logError](state.config, new RangeError(msg)); resolved.add(key); continue; } @@ -372,9 +378,20 @@ const ParseEngine = { try { state.anchor = dateTime; state.zdt = dateTime; - const result = (definition as Function).call(this); - if (isTempo(result)) dateTime = result.toDateTime(); + + // Provide a host context that mimics a Tempo instance for the handler + const host = TempoClass ? new (TempoClass as any)(dateTime, state.config) : { + add: (val: any) => dateTime.add(val), + set: (val: any) => isObject(val) ? dateTime.with(val) : dateTime, + toNow: () => Temporal.Now.zonedDateTimeISO(state.config.timeZone), + toDateTime: () => dateTime, + [sym.$isTempo]: true + }; + + const result = (definition as Function).call(host); + if (isTempo(result)) dateTime = (result as any).toDateTime(); else if (isZonedDateTime(result)) dateTime = result as Temporal.ZonedDateTime; + else if (isObject(result) && isFunction((result as any).toDateTime)) dateTime = (result as any).toDateTime(); else dateTime = isZonedDateTime(state.zdt) ? (state.zdt as any) : dateTime; res = String(result); } catch (e: any) { @@ -390,18 +407,18 @@ const ParseEngine = { if (isEvent && !isAnchored && isZonedDateTime(dateTime)) dateTime = (dateTime as any).startOfDay(); - (TempoClass as any)[sym.$logDebug](state.config, 'event', `resolved "${key}" to "${res}" against ${(dateTime as any).toString?.() ?? String(dateTime)}`); + if (TempoClass) (TempoClass as any)[sym.$logDebug](state.config, 'event', `resolved "${key}" to "${res}" against ${(dateTime as any).toString?.() ?? String(dateTime)}`); try { const type = isEvent ? 'Event' : 'Period'; const val = entry![0]; const pat = (isEvent ? 'dt' : 'tm'); const resolveVal = typeof definition === 'function' ? res : definition; - ParseEngine.result.call(this, { type, value: val as any, match: pat, groups: { [key]: resolveVal as string } }); + _ParseEngine.result(state, { type, value: val as any, match: pat, groups: { [key]: resolveVal as string } }); const resolving = new Set(resolvingKeys); resolving.add(aliasKey); - const resMatch = ParseEngine.parseLayout.call(this, res, dateTime, isAnchored, resolving); + const resMatch = _ParseEngine.parseLayout(state, res, dateTime, isAnchored, resolving); if (resMatch.type === 'Temporal.ZonedDateTime') dateTime = resMatch.value; @@ -424,30 +441,28 @@ const ParseEngine = { if (isDefined(groups["mm"]) && !isNumeric(groups["mm"])) { const mm = prefix(groups["mm"] as t.MONTH); - groups["mm"] = (TempoClass as any).MONTH[mm as t.MONTH]!.toString().padStart(2, "0"); + if (TempoClass) groups["mm"] = (TempoClass as any).MONTH[mm as t.MONTH]!.toString().padStart(2, "0"); } return dateTime; }, /** check if we've been given a ZonedDateTimeLike object */ - isZonedDateTimeLike(this: any, tempo: t.DateTime | t.Options | undefined): tempo is Temporal.ZonedDateTimeLike & { value?: any } { + isZonedDateTimeLike(state: any, tempo: t.DateTime | t.Options | undefined): tempo is Temporal.ZonedDateTimeLike & { value?: any } { if (!isObject(tempo) || isEmpty(tempo)) return false; const keys = ownKeys(tempo); - const TempoClass = this.constructor as typeof Tempo; - if (keys.some(key => (TempoClass as any)[sym.$Internal]().OPTION.has(key) && key !== 'value')) + if (keys.some(key => state.OPTION.has(key) && key !== 'value')) return false; return keys .filter(isString) - .every((key: string) => (TempoClass as any)[sym.$Internal]().ZONED_DATE_TIME.has(key)) + .every((key: string) => state.ZONED_DATE_TIME.has(key)) }, /** accumulate match results */ - result(this: any, ...rest: Partial[]) { - const state = this[sym.$Internal](); + result(state: any, ...rest: Partial[]) { const match = Object.assign({}, ...rest) as t.Internal.Match; if (isDefined(state.anchor) && !match.isAnchored) @@ -460,6 +475,21 @@ const ParseEngine = { } }; +/** + * Public Parse Engine (wrapped for dual-mode support) + */ +export const ParseEngine = { + parse: withState(_ParseEngine.parse), + conform: withState(_ParseEngine.conform), + parseLayout: withState(_ParseEngine.parseLayout), + parseMatch: withState(_ParseEngine.parseMatch), + parseGroups: withState(_ParseEngine.parseGroups), + isZonedDateTimeLike: withState(_ParseEngine.isZonedDateTimeLike), + result: withState(_ParseEngine.result) +}; + +const isFunction = (v: any): v is Function => typeof v === 'function'; + /** * # ParseModule * The internal parsing engine for Tempo. diff --git a/packages/tempo/src/plugin/module/module.term.ts b/packages/tempo/src/plugin/module/module.term.ts index 9d354423..c4c567d6 100644 --- a/packages/tempo/src/plugin/module/module.term.ts +++ b/packages/tempo/src/plugin/module/module.term.ts @@ -1,13 +1,20 @@ import { toZonedDateTime, toInstant } from '#library/temporal.library.js'; import { isDefined, isString, isZonedDateTime } from '#library/type.library.js'; -import { isNumeric } from '#library/coercion.library.js'; +import { asArray, isNumeric } from '#library/coercion.library.js'; -import sym from '../../support/tempo.symbol.js'; -import { getSafeFallbackStep } from '../../support/tempo.util.js'; -import { Match } from '../../support/tempo.default.js'; +import { sym, getSafeFallbackStep, getLargestUnit, SCHEMA, Match, isTempo } from '#tempo/support'; import { getRange, getTermRange, resolveTermShift, findTermPlugin } from '../term.util.js'; +import { getHost } from '../plugin.util.js'; import { parseModifier } from './module.lexer.js'; +import type { Tempo } from '../../tempo.class.js'; +import type { TempoType } from '../plugin.type.js'; + +/** + * Internal helper to safely get the ZonedDateTime from a Tempo instance or raw object + */ +const toZdt = (v: any): Temporal.ZonedDateTime => isTempo(v) ? v.toDateTime() : v; + /** * Resolves a mutation (start/mid/end/add) against a Tempo Term. * @@ -19,7 +26,7 @@ import { parseModifier } from './module.lexer.js'; * @param zdt - The current ZonedDateTime state * @returns The mutated ZonedDateTime */ -export function resolveTermMutation(Tempo: any, instance: any, mutate: string, unit: string, offset: any, zdt: any): any { +export function resolveTermMutation(Tempo: TempoType, instance: Tempo, mutate: string, unit: string, offset: any, zdt: Temporal.ZonedDateTime): Temporal.ZonedDateTime | null { if (!isZonedDateTime(zdt)) return zdt; const [termPart, rangePart] = unit.startsWith('#') @@ -29,7 +36,7 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u const termObj = findTermPlugin(termPart); if (!termObj) { - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } @@ -74,12 +81,12 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u const rawList = getRange(termObj, instance, zdt); const currentRange = getTermRange(instance, rawList, false, zdt) as any; if (!currentRange) { - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } // Calculate cursor's offset within current range (nanoseconds) - const startNs = currentRange.start.toDateTime().epochNanoseconds as bigint; + const startNs = toZdt(currentRange.start).epochNanoseconds as bigint; const cursorNs = zdt.epochNanoseconds as bigint; const positionNs = cursorNs - startNs; @@ -97,8 +104,8 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u const matchKey = !rKey || range.key?.toLowerCase() === rKey.toLowerCase(); const hasMoved = (shiftDir > 0) - ? (range.start.toDateTime().epochNanoseconds as bigint) > (zdt.epochNanoseconds as bigint) - : (range.end.toDateTime().epochNanoseconds as bigint) < (zdt.epochNanoseconds as bigint); + ? (toZdt(range.start).epochNanoseconds as bigint) > (zdt.epochNanoseconds as bigint) + : (toZdt(range.end).epochNanoseconds as bigint) < (zdt.epochNanoseconds as bigint); if (matchKey && (iters > 1 || hasMoved)) { target = range; @@ -106,18 +113,18 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u } jump = (shiftDir > 0) - ? range.end.toDateTime() - : range.start.toDateTime().subtract({ nanoseconds: 1 }); + ? toZdt(range.end) + : toZdt(range.start).subtract({ nanoseconds: 1 }); } if (!target || remaining > 0) { - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } // Apply same position-offset, clamped to target range bounds - const tStartNs = target.start.toDateTime().epochNanoseconds as bigint; - const tEndNs = target.end.toDateTime().epochNanoseconds as bigint; + const tStartNs = toZdt(target.start).epochNanoseconds as bigint; + const tEndNs = toZdt(target.end).epochNanoseconds as bigint; let tNs = tStartNs + positionNs; if (tNs >= tEndNs) tNs = tEndNs - 1n; // clamp to range end if (tNs < tStartNs) tNs = tStartNs; // clamp to range start @@ -140,7 +147,7 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u if (rKey) { const found = rawList.some(r => r.key?.toLowerCase() === rKey.toLowerCase()); if (!found) { - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } candidates = rawList.filter(r => r.key?.toLowerCase() === rKey.toLowerCase()); @@ -184,7 +191,7 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u if (next) return next.start.withTimeZone(tz).withCalendar(cal); - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } @@ -202,7 +209,7 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u if (rKey) { const found = rawList.some(r => r.key?.toLowerCase() === rKey.toLowerCase()); if (!found) { - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } list = list.filter(r => r.key?.toLowerCase() === rKey.toLowerCase()); @@ -234,43 +241,43 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u const candidates = resolved.filter(c => rKey ? c.key?.toLowerCase() === rKey.toLowerCase() : true); // prefer latest start <= cursor (zdt) const prev = candidates - .filter(it => (it.start.toDateTime().epochNanoseconds as bigint) <= (zdt.epochNanoseconds as bigint)) + .filter(it => (toZdt(it.start).epochNanoseconds) <= (zdt.epochNanoseconds )) .sort((a, b) => { - const sa = a.start.toDateTime().epochNanoseconds as bigint; - const sb = b.start.toDateTime().epochNanoseconds as bigint; + const sa = toZdt(a.start).epochNanoseconds; + const sb = toZdt(b.start).epochNanoseconds; return sa === sb ? 0 : (sa > sb ? -1 : 1); })[0]; if (prev) { const target = prev; - const found = target.start.toDateTime().withTimeZone(tz).withCalendar(cal); + const found = toZdt(target.start).withTimeZone(tz).withCalendar(cal); remaining--; if (remaining === 0) { if (mutate === 'mid' || mutate === 'end') { jump = found; break; } return found; } - jump = target.end.toDateTime(); + jump = toZdt(target.end); continue; } // otherwise pick the nearest future start const next = candidates - .filter(it => (it.start.toDateTime().epochNanoseconds as bigint) > (zdt.epochNanoseconds as bigint)) + .filter(it => (toZdt(it.start).epochNanoseconds as bigint) > (zdt.epochNanoseconds)) .sort((a, b) => { - const sa = a.start.toDateTime().epochNanoseconds as bigint; - const sb = b.start.toDateTime().epochNanoseconds as bigint; + const sa = toZdt(a.start).epochNanoseconds; + const sb = toZdt(b.start).epochNanoseconds; return sa === sb ? 0 : (sa < sb ? -1 : 1); })[0]; if (next) { const target = next; - const found = target.start.toDateTime().withTimeZone(tz).withCalendar(cal); + const found = toZdt(target.start).withTimeZone(tz).withCalendar(cal); remaining--; if (remaining === 0) { if (mutate === 'mid' || mutate === 'end') { jump = found; break; } return found; } - jump = target.end.toDateTime(); + jump = toZdt(target.end); continue; } } @@ -280,22 +287,22 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u if (numericOnly && iterations > 1) { const candidates = resolved .filter(c => rKey ? c.key?.toLowerCase() === rKey.toLowerCase() : true) - .filter(it => (it.start.toDateTime().epochNanoseconds as bigint) > (jump.epochNanoseconds as bigint)) + .filter(it => (toZdt(it.start).epochNanoseconds as bigint) > (jump.epochNanoseconds as bigint)) .sort((a, b) => { - const sa = a.start.toDateTime().epochNanoseconds as bigint; - const sb = b.start.toDateTime().epochNanoseconds as bigint; + const sa = toZdt(a.start).epochNanoseconds as bigint; + const sb = toZdt(b.start).epochNanoseconds as bigint; return sa === sb ? 0 : (sa < sb ? -1 : 1); }); if (candidates.length > 0) { const target = candidates[0]; - const found = target.start.toDateTime().withTimeZone(tz).withCalendar(cal); + const found = toZdt(target.start).withTimeZone(tz).withCalendar(cal); remaining--; if (remaining === 0) { if (mutate === 'mid' || mutate === 'end') { jump = found; break; } return found; } - jump = target.end.toDateTime(); + jump = toZdt(target.end); continue; } } @@ -306,8 +313,8 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u const isShifter = (mod === '>' || mod === '<' || mod === 'next' || mod === 'prev' || mod === 'last' || mod === '+' || mod === '-'); const compare = (r: any) => { - const start = r.start.toDateTime().epochNanoseconds as bigint; - const end = r.end.toDateTime().epochNanoseconds as bigint; + const start = toZdt(r.start).epochNanoseconds as bigint; + const end = toZdt(r.end).epochNanoseconds as bigint; const cursor = (isShifter && iterations > 1) ? (jump.epochNanoseconds as bigint) : (zdt.epochNanoseconds as bigint); let match = false; @@ -340,9 +347,9 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u .filter(c => rKey ? c.key?.toLowerCase() === rKey.toLowerCase() : true) .filter(compare) .sort((a, b) => { - const startA = a.start.toDateTime().epochNanoseconds as bigint; - const startB = b.start.toDateTime().epochNanoseconds as bigint; - const cursor = jump.epochNanoseconds as bigint; + const startA = toZdt(a.start).epochNanoseconds; + const startB = toZdt(b.start).epochNanoseconds; + const cursor = jump.epochNanoseconds; if (isShifter) return direction > 0 ? (startA < startB ? -1 : 1) : (startA > startB ? -1 : 1); @@ -351,16 +358,16 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u return diffA < diffB ? -1 : (diffA > diffB ? 1 : 0); }).filter(m => { if (!isShifter) return true; - const start = m.start.toDateTime().epochNanoseconds as bigint; - const end = m.end.toDateTime().epochNanoseconds as bigint; - const cursor = jump.epochNanoseconds as bigint; + const start = toZdt(m.start).epochNanoseconds; + const end = toZdt(m.end).epochNanoseconds; + const cursor = jump.epochNanoseconds; if (direction > 0) return start >= cursor; return end <= cursor; }); if (matches.length > 0) { const target = matches[0]; - const found = target.start.toDateTime().withTimeZone(tz).withCalendar(cal); + const found = toZdt(target.start).withTimeZone(tz).withCalendar(cal); remaining--; if (remaining === 0) { if (mutate === 'mid' || mutate === 'end') { @@ -369,16 +376,16 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u } return found; } - jump = (direction > 0) ? target.end.toDateTime() : target.start.toDateTime().subtract({ nanoseconds: 1 }); + jump = (direction > 0) ? toZdt(target.end) : toZdt(target.start).subtract({ nanoseconds: 1 }); } else { const currentRes = (getTermRange(instance, rawList, false, jump) as any); if (!currentRes) { jump = (direction > 0) ? jump.add({ days: 30 }) : jump.subtract({ days: 30 }); continue; } - jump = (direction > 0) ? currentRes.end.toDateTime() : currentRes.start.toDateTime().subtract({ nanoseconds: 1 }); + jump = (direction > 0) ? toZdt(currentRes.end) : toZdt(currentRes.start).subtract({ nanoseconds: 1 }); } } if (remaining > 0) { - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } @@ -386,16 +393,16 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u if (mutate === 'mid' || mutate === 'end') { const finalRange = (getTermRange(instance, getRange(termObj, instance, jump), false, jump) as any); if (!finalRange) { - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } if (mutate === 'mid') { - const startNs = finalRange.start.toDateTime().epochNanoseconds as bigint; - const endNs = finalRange.end.toDateTime().epochNanoseconds as bigint; + const startNs = toZdt(finalRange.start).epochNanoseconds as bigint; + const endNs = toZdt(finalRange.end).epochNanoseconds as bigint; const midNs = startNs + (endNs - startNs) / BigInt(2); return toInstant(midNs).toZonedDateTimeISO(tz).withCalendar(cal); } - return finalRange.end.toDateTime().subtract({ nanoseconds: 1 }).withTimeZone(tz).withCalendar(cal); + return toZdt(finalRange.end).subtract({ nanoseconds: 1 }).withTimeZone(tz).withCalendar(cal); } return jump; } @@ -405,24 +412,41 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u if (isString(offset) && !offset.startsWith('#') && !isNumericString) { let jump = zdt; - const range = termObj.define.call(new Tempo(jump, { ...instance.config, mode: 'strict' }), false); - const step = getSafeFallbackStep(range as any, termObj.scope ?? (unit === '#period' ? 'period' : undefined)); - let next = jump.add(step); + const getStep = (currentRange: any) => { + if (currentRange) { + const items = asArray(currentRange); + const largestUnit = getLargestUnit(items); + const unitIndex = SCHEMA.findIndex(([u]) => u === largestUnit); + if (unitIndex !== -1) { + const rolloverIndex = Math.max(0, unitIndex - 1); + const stepUnit = SCHEMA[rolloverIndex][0]; + const stepVal = getSafeFallbackStep(stepUnit); + return { [`${stepUnit}s`]: stepVal === 0 ? 1 : stepVal } as any; + } + } + + // Fallback if range doesn't define units + const fallbackUnit = termObj.scope ?? 'year'; + const stepUnit = fallbackUnit === 'period' ? 'day' : fallbackUnit; + const stepVal = getSafeFallbackStep(stepUnit); + return { [`${stepUnit}s`]: stepVal === 0 ? 1 : stepVal } as any; + }; + + const range = termObj.define.call(new (getHost(instance))(jump, { ...instance.config, mode: 'strict' }), false); + let next = jump.add(getStep(range)); let iterations = 0; while (next.epochNanoseconds <= zdt.epochNanoseconds) { if (++iterations > 50) { // Safety-Valve: prevent infinite look-ahead - const range = termObj.define.call(new Tempo(jump, { ...instance.config, mode: 'strict' }), false); - const step = getSafeFallbackStep(range as any, termObj.scope ?? (unit === '#period' ? 'period' : undefined)); - jump = jump.add(step); + const currentRange = termObj.define.call(new (getHost(instance))(jump, { ...instance.config, mode: 'strict' }), false); + jump = jump.add(getStep(currentRange)); } else { - const range = termObj.define.call(new Tempo(jump, { ...instance.config, mode: 'strict' }), false); - const step = getSafeFallbackStep(range as any, termObj.scope ?? (unit === '#period' ? 'period' : undefined)); - jump = jump.add(step); + const currentRange = termObj.define.call(new (getHost(instance))(jump, { ...instance.config, mode: 'strict' }), false); + jump = jump.add(getStep(currentRange)); next = jump; } } - const res = new Tempo(offset, { ...instance.config, anchor: next, mode: 'strict' }).toDateTime(); + const res = new (getHost(instance))(offset, { ...instance.config, anchor: next, mode: 'strict' }).toDateTime(); return isZonedDateTime(res) ? res : next; } @@ -430,9 +454,9 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u if (mutate === 'set' && !mod && isNumeric(offset)) { const rawList = getRange(termObj, instance, zdt); const target = getTermRange(instance, rawList, Number(offset), zdt) as any; - if (target) return target.start.toDateTime().withTimeZone(tz).withCalendar(cal); - - Tempo[sym.$termError](instance.config, unit); + if (target) return toZdt(target.start).withTimeZone(tz).withCalendar(cal); + + Tempo[sym.$termError]?.(instance.config, unit); return null; } @@ -446,7 +470,7 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u let iterations = 0; while (remaining > 0) { if (++iterations > 100) { // Safety-Valve: prevent infinite shift - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } @@ -458,23 +482,23 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u } if (list.length === 0) { - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } - const res = resolveTermShift(new instance.constructor(jump, instance.config), list, unit, direction); + const res = resolveTermShift(new (getHost(instance))(jump, instance.config), list, unit, direction); if (isDefined(res)) { - jump = res.toDateTime(); + jump = toZdt(res); remaining--; } else { // if we hit the edge of the current list, jump to the end of the current cycle and try again const current = (getTermRange(instance, list, false, jump) as any); if (!current) { - Tempo[sym.$termError](instance.config, unit); + Tempo[sym.$termError]?.(instance.config, unit); return null; } - const nextJump = (direction > 0) ? current.end.toDateTime() : current.start.toDateTime().subtract({ nanoseconds: 1 }); + const nextJump = (direction > 0) ? toZdt(current.end) : toZdt(current.start).subtract({ nanoseconds: 1 }); if (nextJump.epochNanoseconds === jump.epochNanoseconds) { // detect zero-progress stall jump = (direction > 0) ? jump.add({ days: 1 }) : jump.subtract({ days: 1 }); } else { @@ -492,7 +516,7 @@ export function resolveTermMutation(Tempo: any, instance: any, mutate: string, u /** * Resolves a term identifier (e.g. '#quarter') to its current value (start of cycle). */ -export function resolveTermValue(Tempo: any, instance: any, term: string, zdt: any): any { +export function resolveTermValue(Tempo: TempoType, instance: Tempo, term: string, zdt: Temporal.ZonedDateTime): Temporal.ZonedDateTime | null { return resolveTermMutation(Tempo, instance, 'start', term, term, zdt); } diff --git a/packages/tempo/src/plugin/plugin.type.ts b/packages/tempo/src/plugin/plugin.type.ts index 04fdcf4b..8bfd4979 100644 --- a/packages/tempo/src/plugin/plugin.type.ts +++ b/packages/tempo/src/plugin/plugin.type.ts @@ -1,7 +1,10 @@ import type { Prettify, Property } from '#library/type.library.js'; import type { Tempo } from '../tempo.class.js'; +import { TermError } from '../support/tempo.symbol.js'; -export type TempoType = typeof Tempo; +export type TempoType = typeof Tempo & { + [TermError]?: (config: any, term: string) => void; +} /** * ## TermPlugin diff --git a/packages/tempo/src/plugin/plugin.util.ts b/packages/tempo/src/plugin/plugin.util.ts index 82ed37b5..5f21f9fe 100644 --- a/packages/tempo/src/plugin/plugin.util.ts +++ b/packages/tempo/src/plugin/plugin.util.ts @@ -1,12 +1,15 @@ import { isFunction, isString, isUndefined, isClass, isObject, isDefined } from '#library/type.library.js'; import { secureRef } from '#library/proxy.library.js'; -import sym, { getRuntime } from '#tempo/support'; +import { sym, getRuntime, isTempo } from '#tempo/support'; import type { Tempo } from '../tempo.class.js'; import type { Plugin } from './plugin.type.js'; export function getHost(t: any): any { - return isFunction(t) || isClass(t) ? t : (t as any).constructor; + const TempoClass = getRuntime().modules['Tempo']; + if (isFunction(t) || isClass(t)) return t; + if (isTempo(t)) return TempoClass ?? (t as any).constructor; + return TempoClass ?? (t as any).constructor; } /** diff --git a/packages/tempo/src/plugin/term.util.ts b/packages/tempo/src/plugin/term.util.ts index 0545ae68..a3c319fe 100644 --- a/packages/tempo/src/plugin/term.util.ts +++ b/packages/tempo/src/plugin/term.util.ts @@ -2,7 +2,7 @@ import { toZonedDateTime, toInstant } from '#library/temporal.library.js'; import { isDefined, isFunction, isString, isUndefined, isNumber } from '#library/type.library.js'; import { secure } from '#library/utility.library.js'; import { sortKey, byKey } from '#library/array.library.js'; -import sym, { SCHEMA, getLargestUnit, isTempo, getRuntime } from '#tempo/support'; +import { sym, SCHEMA, getLargestUnit, isTempo, getRuntime } from '#tempo/support'; import type { Tempo } from '../tempo.class.js'; import type { TermPlugin, Range, ResolvedRange } from './plugin.type.js'; import { getHost } from './plugin.util.js'; @@ -75,7 +75,7 @@ export function getTermRange(tempo: Tempo, list: Range[], keyOnly: boolean | num // @ts-ignore const resZdt = toZonedDateTime({ ...obj, timeZone: anchor.timeZoneId, calendar: anchor.calendarId }); // @ts-ignore - return new tempo.constructor(resZdt, (tempo as any).config); + return new (getHost(tempo))(resZdt, (tempo as any).config); } const matchIndex = chronological.findLastIndex(range => { @@ -258,7 +258,7 @@ type resolveOptions = { */ export function resolveCycleWindow(source: Tempo | any, template: Range[] | Record, { anchor, groupBy = [], ...options }: resolveOptions = {}): Range[] { // ensure we have a valid Tempo instance to work with - const t = isTempo(source) ? source : (isDefined(source) ? new (getHost(source))(source) : source); + const t = (isTempo(source) ? source : (isDefined(source) ? new (getHost(source))(source) : source)) as Tempo; if (!isTempo(t)) return []; // 1. Resolve Template (supporting optional dynamic grouping) diff --git a/packages/tempo/src/plugin/term/term.index.ts b/packages/tempo/src/plugin/term/term.index.ts index 57dc0491..ff61427b 100644 --- a/packages/tempo/src/plugin/term/term.index.ts +++ b/packages/tempo/src/plugin/term/term.index.ts @@ -1,5 +1,5 @@ import { defineModule } from '../plugin.util.js' -import sym, { getRuntime, onRegistryReset } from '#tempo/support'; +import { getRuntime, onRegistryReset } from '#tempo/support'; import { QuarterTerm } from './term.quarter.js' import { SeasonTerm } from './term.season.js' import { ZodiacTerm } from './term.zodiac.js' diff --git a/packages/tempo/src/support/support.index.ts b/packages/tempo/src/support/support.index.ts index 85fe480a..294406a9 100644 --- a/packages/tempo/src/support/support.index.ts +++ b/packages/tempo/src/support/support.index.ts @@ -1,5 +1,3 @@ -import sym from './tempo.symbol.js'; - export { default as enums, STATE, @@ -27,11 +25,11 @@ export { NumericPattern } from './tempo.enum.js'; -export { isTempo } from './tempo.symbol.js'; +export { sym, isTempo, Token, TermError, type TempoBrand } from './tempo.symbol.js'; export { registryUpdate, registryReset, onRegistryReset } from './tempo.register.js'; export { getRuntime, TempoRuntime } from './tempo.runtime.js'; -export { Match, Token, Snippet, Layout, Event, Period, Ignore, Guard, Default } from './tempo.default.js'; +export { Match, Snippet, Layout, Event, Period, Ignore, Guard, Default } from './tempo.default.js'; export { SCHEMA, getLargestUnit, getSafeFallbackStep } from './tempo.util.js'; +export { init, extendState } from './tempo.init.js'; export { default as lib } from '#library/symbol.library.js'; -export default sym; diff --git a/packages/tempo/src/support/tempo.default.ts b/packages/tempo/src/support/tempo.default.ts index 3cf5e5b2..fc8b38b5 100644 --- a/packages/tempo/src/support/tempo.default.ts +++ b/packages/tempo/src/support/tempo.default.ts @@ -1,17 +1,18 @@ import { looseIndex } from '#library/object.library.js'; import { secure } from '#library/utility.library.js'; import { proxify } from '#library/proxy.library.js'; +import { getDateTimeFormat } from '#library/international.library.js'; + import { NUMBER, MODE } from './tempo.enum.js'; +import { Token } from './tempo.symbol.js'; import type { Options } from '../tempo.type.js'; -import { getDateTimeFormat } from '#library/international.library.js'; import type { Tempo } from '../tempo.class.js'; -// BE VERY CAREFUL NOT TO BREAK THE REGEXP PATTERNS BELOW -// TEMPO functionality heavily depends on these patterns - /** characters allowed inside timezone/calendar brackets */ const bracket_content = /[^\]]+/; +// BE VERY CAREFUL NOT TO BREAK THE REGEXP PATTERNS BELOW +// TEMPO functionality heavily depends on these patterns /** @internal Tempo Match patterns */ export const Match = proxify({ /** match all {} pairs, if they start with a word char */ braces: /{([#]?[\w]+(?:\.[\w]+)*)}/g, @@ -37,44 +38,6 @@ export const Match = proxify({ /** numeric-only string detection */ numeric: /^\s*[-+]?\d+(\.\d+)?\s*$/ }, true, false); -/** @internal Tempo Symbol registry */ -export const Token = looseIndex()({ - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Snippet Symbols - /** year */ yy: Symbol('yy'), - /** ISO yearOfWeek */ yw: Symbol('yw'), - /** month */ mm: Symbol('mm'), - /** day */ dd: Symbol('dd'), - /** hour */ hh: Symbol('hh'), - /** minute */ mi: Symbol('mi'), - /** second */ ss: Symbol('ss'), - /** fraction */ ff: Symbol('ff'), - /** meridiem */ mer: Symbol('mer'), - /** short weekday name */ www: Symbol('www'), - /** relative-suffix */ afx: Symbol('afx'), - /** time-suffix */ sfx: Symbol('sfx'), - /** time unit */ unt: Symbol('unt'), - /** separator */ sep: Symbol('sep'), - /** modifier */ mod: Symbol('mod'), - /** generic number */ nbr: Symbol('nbr'), - /** Tempo slick shorthand */ slk: Symbol('slk'), - /** Tempo event */ evt: Symbol('evt'), - /** Tempo period */ per: Symbol('per'), - /** time zone offset */ tzd: Symbol('tzd'), - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Layout Symbols - /** date */ dt: Symbol('date'), - /** time */ tm: Symbol('time'), - /** date and time */ dtm: Symbol('dateTime'), - /** day-month-year */ dmy: Symbol('dayMonthYear'), - /** month-day-year */ mdy: Symbol('monthDayYear'), - /** year-month-day */ ymd: Symbol('yearMonthDay'), - /** day of month offset */ off: Symbol('offset'), - /** weekDay */ wkd: Symbol('weekDay'), - /** relative offset (years, days, hours, etc) */ rel: Symbol('relativeOffset'), - /** timezone/calendar brackets */ brk: Symbol('brackets'), -}) -/** @internal Tempo Symbol registry type */ -export type Token = typeof Token - /** * user will need to know these in order to configure their own patterns * Tempo.Snippet is a simple regex pattern object e.g. { Symbol('yy'): /(([0-9]{2})?[0-9]{2})/ } @@ -187,10 +150,9 @@ export type Period = typeof Period * an {ignore} is a list of noise words to be stripped during parsing. */ /** @internal Tempo Ignore registry */ -export const Ignore = ['at', 'the', 'o-clock', 'o\'clock', 'on', 'in', 'of', 'by', 'for', 'to'] as const; +export const Ignore = ['at', 'the', 'o-clock', 'o\'clock', 'on', 'in', 'of', 'by', 'for', 'to']; /** @internal Tempo Ignore type */ -export type Ignore = string | string[]; - +export type Ignore = string | string[] | (() => string | string[]) /** @internal Tempo Master Guard list */ export const Guard = [ @@ -199,7 +161,7 @@ export const Guard = [ 'years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds', 'milliseconds', 'microseconds', 'nanoseconds', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday', 'mondays', 'tuesdays', 'wednesdays', 'thursdays', 'fridays', 'saturdays', 'sundays' -] +] as const; /** @internal Tempo Default options */ export const Default = secure({ diff --git a/packages/tempo/src/support/tempo.enum.ts b/packages/tempo/src/support/tempo.enum.ts index 99539d03..40ca4530 100644 --- a/packages/tempo/src/support/tempo.enum.ts +++ b/packages/tempo/src/support/tempo.enum.ts @@ -2,6 +2,7 @@ import lib from '#library/symbol.library.js'; import { enumify, Enum } from '#library/enumerate.library.js'; import { proxify } from '#library/proxy.library.js'; import { allDescriptors } from '#library/reflection.library.js'; +import { looseIndex } from '#library/object.library.js'; import type { OwnOf, KeyOf, ValueOf, LooseUnion, Mutable } from '#library/type.library.js'; /** calendar seasons */ @@ -132,12 +133,13 @@ export type MONTHS = KeyOf export type Months = ValueOf /** number names (0-10) */ -export const NUMBER = proxify(enumify(STATE.NUMBER, false), true, false); +export const NUMBER = looseIndex()(proxify(enumify(STATE.NUMBER, false), true, false)); +export type NUMBER = typeof NUMBER; export type Number = KeyOf /** common time-zone aliases */ -export const TIMEZONE = proxify(STATE.TIMEZONE, true, false); -export type TIMEZONE = KeyOf +export const TIMEZONE = looseIndex()(proxify(STATE.TIMEZONE, true, false)); +export type TIMEZONE = typeof TIMEZONE; export type Timezone = ValueOf /** number of seconds in a time unit */ @@ -149,8 +151,8 @@ export const DURATIONS = enumify(STATE.DURATIONS, false); export type DURATIONS = KeyOf /** common format aliases */ -export const FORMAT = proxify(enumify(STATE.FORMAT, false), true, false); -export type FORMAT = ValueOf +export const FORMAT = looseIndex()(proxify(enumify(STATE.FORMAT, false), true, false)); +export type FORMAT = typeof FORMAT; export type Format = LooseUnion & string> /** patterns that return a number */ diff --git a/packages/tempo/src/support/tempo.init.ts b/packages/tempo/src/support/tempo.init.ts new file mode 100644 index 00000000..86e04b2f --- /dev/null +++ b/packages/tempo/src/support/tempo.init.ts @@ -0,0 +1,127 @@ +import '#library/temporal.polyfill.js'; +import { enumify } from '#library/enumerate.library.js'; +import { asArray } from '#library/coercion.library.js'; +import { getDateTimeFormat, getHemisphere } from '#library/international.library.js'; +import { markConfig } from '#library/symbol.library.js'; +import { ownEntries } from '#library/primitive.library.js'; + +import { getRuntime } from './tempo.runtime.js'; +import { setProperty, hasOwn, create, collect } from './tempo.util.js'; +import { sym } from './tempo.symbol.js'; +import { Match, Snippet, Layout, Event, Period, Ignore, Guard, Default } from './tempo.default.js'; +import enums, { STATE } from './tempo.enum.js'; +import * as t from '../tempo.type.js'; + +/** @internal Initialise the global Tempo state */ +export function init(options: t.Options = {}) { + const runtime = getRuntime(); + if (runtime.state) return runtime.state; + + const { timeZone, calendar } = getDateTimeFormat(); + + const state: any = { + config: {}, + parse: {} + }; + + // 1. Establish the base parsing state + state.parse = markConfig({ + snippet: Object.assign({}, Snippet), + layout: Object.assign({}, Layout), + event: Object.assign({}, Event), + period: Object.assign({}, Period), + ignore: Object.fromEntries(asArray(Ignore).map(w => [w, w])), + mdyLocales: asArray(Default.mdyLocales as any), + mdyLayouts: asArray(Default.mdyLayouts as any) as t.Pair[], + pivot: Default.pivot, + mode: Default.mode as any, + lazy: false, + pattern: new Map(), + }); + + // 2. Establish the base configuration options + state.config = markConfig(Object.create(Default)); + Object.defineProperties(state.config, { + calendar: { value: calendar, enumerable: true, writable: true, configurable: true }, + timeZone: { value: timeZone, enumerable: true, writable: true, configurable: true }, + locale: { value: (getDateTimeFormat() as any).locale ?? 'en-US', enumerable: true, writable: true, configurable: true }, + discovery: { value: Symbol.keyFor(sym.$Tempo) as string, enumerable: true, writable: true, configurable: true }, + formats: { value: enumify(STATE.FORMAT, false), enumerable: true, writable: true, configurable: true }, + sphere: { value: getHemisphere(timeZone), enumerable: true, writable: true, configurable: true }, + get: { value: function (key: string) { return this[key] }, enumerable: false, writable: true, configurable: true }, + scope: { value: 'global', enumerable: true, writable: true, configurable: true }, + catch: { value: options.catch ?? false, enumerable: true, writable: true, configurable: true } + }); + + // 3. Initialize registries that need objects + state.OPTION = new Set(Object.keys(Default)); + state.ZONED_DATE_TIME = new Set(['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond', 'microsecond', 'nanosecond', 'offset', 'timeZone', 'calendar']); + + runtime.state = state; + return state; +} + +/** @internal Extend a Tempo state with new options (Shadowing) */ +export function extendState(state: any, options: t.Options) { + const { isString, isObject, isUndefined, isRegExp, asType } = getRuntime().modules['Library'] ?? { + isString: (v: any) => typeof v === 'string', + isObject: (v: any) => typeof v === 'object' && v !== null, + isUndefined: (v: any) => v === undefined, + isRegExp: (v: any) => v instanceof RegExp, + asType: (v: any) => ({ type: typeof v, value: v }) // basic fallback + }; + + ownEntries(options).forEach(([optKey, optVal]) => { + if (isUndefined(optVal)) return; + const arg = asType(optVal); + + switch (optKey) { + case 'snippet': + case 'layout': + case 'event': + case 'period': + case 'ignore': + if (!hasOwn(state.parse, optKey)) + state.parse[optKey] = create(state.parse, optKey); + + const rule = state.parse[optKey]; + if (['snippet', 'layout'].includes(optKey)) { + collect(rule, arg.value, (v: any) => + optKey === 'snippet' + ? isRegExp(v) ? v : new RegExp(v) + : isRegExp(v) ? v.source : v + ) + } else { + asArray(arg.value).forEach(elm => { + if (isObject(elm)) Object.assign(rule, elm); + else if (isString(elm)) rule[elm] = elm; + }) + } + break; + + case 'timeZone': { + const zone = String(arg.value).toLowerCase(); + setProperty(state.config, 'timeZone', enums.TIMEZONE[zone] ?? arg.value); + break; + } + + case 'calendar': + setProperty(state.config, 'calendar', String(arg.value)); + break; + + case 'locale': + setProperty(state.config, 'locale', String(arg.value)); + break; + + case 'pivot': + state.parse.pivot = Number(arg.value); + break; + + case 'mode': + state.parse.mode = String(arg.value); + break; + } + }); + + return state; +} diff --git a/packages/tempo/src/support/tempo.runtime.ts b/packages/tempo/src/support/tempo.runtime.ts index 0a58e980..09b92b09 100644 --- a/packages/tempo/src/support/tempo.runtime.ts +++ b/packages/tempo/src/support/tempo.runtime.ts @@ -1,4 +1,4 @@ -import sym from './tempo.symbol.js'; +import { sym } from './tempo.symbol.js'; import type { TermPlugin, Extension, Plugin } from '../plugin/plugin.type.js'; /** @@ -26,9 +26,8 @@ import type { TermPlugin, Extension, Plugin } from '../plugin/plugin.type.js'; * `TempoRuntime.createScoped()` returns a fresh, isolated runtime that is *not* stored on `globalThis`, enabling clean test isolation without globalThis manipulation. **Note**: Scoped runtimes are currently an experimental internal feature and are not yet fully threaded through all core utilities. Scoped runtimes are not pinned to `globalThis`, lack the `defineProperty` descriptor protections of the primary instance, and instead rely solely on the lexical reference returned (contrasting with the hardened `getRuntime()` and `globalThis[BRIDGE]` behavior). Implementation examples of this test-scoping pattern can be found in [plugin_registration.test.ts](../test/plugin_registration.test.ts) and [duration.core.test.ts](../test/duration.core.test.ts). */ export class TempoRuntime { - constructor() { - (this as any)[sym.$RuntimeBrand] = true; - } + constructor() { (this as any)[sym.$RuntimeBrand] = true; } + /** raw extension-plugin storage array — consumed by REGISTRY */ readonly extensions: Extension[] = []; /** raw named-module map — consumed by REGISTRY */ @@ -39,14 +38,17 @@ export class TempoRuntime { readonly resetHooks: Set<() => void> = new Set(); /** * Persistent plugin/term discovery database. - * Replaces the `globalThis[sym.$Plugins]` slot. * Kept as a plain object (not a secureRef) so callers can push() into the arrays. - */ + */ readonly pluginsDb: { terms: TermPlugin[]; plugins: Plugin[] } = { terms: [], plugins: [] }; - readonly #hooks: Map void> = new Map(); + /** persistent global configuration state — mirrors Tempo.#global */ + state?: any; + /** cache for next-available 'usr' Token key */ + usrCount: number = 0; // ─── Register hook ──────────────────────────────────────────────────────── + readonly #hooks: Map void> = new Map(); /** Set a registration hook for a given symbol. Returns the previous hook. */ setHook(key: symbol, cb: (val: any) => void): ((val: any) => void) | undefined { @@ -66,7 +68,6 @@ export class TempoRuntime { } // ─── Validated mutation helpers ─────────────────────────────────────────── - /** * Record a Term in the discovery database. * Validates the shape before storing so malformed entries cannot corrupt state. @@ -98,7 +99,6 @@ export class TempoRuntime { } // ─── Factory helpers ────────────────────────────────────────────────────── - /** * @internal @experimental * Create a fresh, **scoped** runtime that is NOT stored on `globalThis`. @@ -115,7 +115,7 @@ let localFallbackRuntime: TempoRuntime | undefined; /** * Return the singleton `TempoRuntime`. * - * On the first call the runtime is created and pinned to `globalThis` under the BRIDGE + * On the first call the runtime is created and pinned to `globalThis` under the $Bridge * symbol with a hardened property descriptor (non-enumerable, non-configurable, * non-writable). Subsequent calls — even from other bundle copies — retrieve the same * object via `globalThis[BRIDGE]`, preserving the single-source-of-truth guarantee. diff --git a/packages/tempo/src/support/tempo.symbol.ts b/packages/tempo/src/support/tempo.symbol.ts index 2b95298a..01d7a7bb 100644 --- a/packages/tempo/src/support/tempo.symbol.ts +++ b/packages/tempo/src/support/tempo.symbol.ts @@ -1,4 +1,7 @@ -import type { Tempo } from '../tempo.class.js'; +import { looseIndex } from '#library/object.library.js'; + +/** check valid Tempo instance */ +export const isTempo = (tempo?: any): tempo is TempoBrand => Boolean(tempo?.[sym.$isTempo]); /** * Centralized registry for all Tempo-specific Global Symbols. @@ -7,25 +10,67 @@ import type { Tempo } from '../tempo.class.js'; * clean separation of concerns. */ +export const IsTempo: unique symbol = Symbol.for('magmacomputing/tempo/isTempo') as any; +export const TermError: unique symbol = Symbol.for('magmacomputing/tempo/termError') as any; + /** @internal Tempo Symbol Registry */ -const sym = { - /** key for Global Discovery of Tempo configuration */ $Tempo: Symbol.for('$Tempo'), - /** key for Reactive Plugin Registration */ $Register: Symbol.for('magmacomputing/tempo/register'), - /** key for Global Identity Brand for Tempo */ $isTempo: Symbol.for('magmacomputing/tempo/isTempo'), - /** key for Internal Interpreter Service */ $Interpreter: Symbol.for('magmacomputing/tempo/interpreter'), - /** key for contextual Error Logging */ $logError: Symbol.for('magmacomputing/tempo/logError'), - /** key for contextual Debug Logging */ $logDebug: Symbol.for('magmacomputing/tempo/logDebug'), - /** key for centralized Term Error dispatching */ $termError: Symbol.for('magmacomputing/tempo/termError'), - /** key for contextual Debugger */ $dbg: Symbol.for('magmacomputing/tempo/dbg'), - /** key for Master Guard */ $guard: Symbol.for('magmacomputing/tempo/guard'), - /** internal key for signaling pre-errored state */ $errored: Symbol.for('magmacomputing/tempo/errored'), - /** internal key for accessing private instance state */$Internal: Symbol.for('magmacomputing/tempo/internal'), - /** hardened globalThis bridge key for the TempoRuntime */$Bridge: Symbol.for('magmacomputing/tempo/runtime'), - /** cross-bundle brand check for TempoRuntime */ $RuntimeBrand: Symbol.for('magmacomputing/tempo/runtime/brand'), - /** branding for explicit PropertyDescriptors */ $Descriptor: Symbol.for('magmacomputing/tempo/descriptor'), +export const sym = { + /** key for Global Discovery of Tempo configuration */ $Tempo: Symbol.for('$Tempo'), + /** key for Reactive Plugin Registration */ $Register: Symbol.for('magmacomputing/tempo/register'), + /** key for Global Identity Brand for Tempo */ $isTempo: IsTempo, + /** key for centralized Term Error dispatching */ $termError:TermError, + /** key for Internal Interpreter Service */ $Interpreter: Symbol.for('magmacomputing/tempo/interpreter'), + /** key for contextual Error Logging */ $logError: Symbol.for('magmacomputing/tempo/logError'), + /** key for contextual Debug Logging */ $logDebug: Symbol.for('magmacomputing/tempo/logDebug'), + /** key for contextual Debugger */ $dbg: Symbol.for('magmacomputing/tempo/dbg'), + /** key for Master Guard */ $guard: Symbol.for('magmacomputing/tempo/guard'), + /** internal key for signaling pre-errored state */ $errored: Symbol.for('magmacomputing/tempo/errored'), + /** internal key for accessing private instance state */ $Internal: Symbol.for('magmacomputing/tempo/internal'), + /** hardened globalThis bridge key for the TempoRuntime */$Bridge: Symbol.for('magmacomputing/tempo/runtime'), + /** cross-bundle brand check for TempoRuntime */ $RuntimeBrand: Symbol.for('magmacomputing/tempo/runtime/brand'), + /** branding for explicit PropertyDescriptors */ $Descriptor: Symbol.for('magmacomputing/tempo/descriptor'), } as const; -/** check valid Tempo instance */ -export const isTempo = (tempo?: any): tempo is Tempo => tempo?.[sym.$isTempo] === true; +/** @internal Local interface for brand checking without circular imports */ +export interface TempoBrand { + [sym.$isTempo]: true; + toDateTime(): Temporal.ZonedDateTime; + config: any; +} -export default sym; +/** @internal Tempo Token registry */ +export const Token = looseIndex()({ + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Snippet Symbols + /** year */ yy: Symbol('yy'), + /** ISO yearOfWeek */ yw: Symbol('yw'), + /** month */ mm: Symbol('mm'), + /** day */ dd: Symbol('dd'), + /** hour */ hh: Symbol('hh'), + /** minute */ mi: Symbol('mi'), + /** second */ ss: Symbol('ss'), + /** fraction */ ff: Symbol('ff'), + /** meridiem */ mer: Symbol('mer'), + /** short weekday name */ www: Symbol('www'), + /** relative-suffix */ afx: Symbol('afx'), + /** time-suffix */ sfx: Symbol('sfx'), + /** time unit */ unt: Symbol('unt'), + /** separator */ sep: Symbol('sep'), + /** modifier */ mod: Symbol('mod'), + /** generic number */ nbr: Symbol('nbr'), + /** Tempo slick shorthand */ slk: Symbol('slk'), + /** Tempo event */ evt: Symbol('evt'), + /** Tempo period */ per: Symbol('per'), + /** time zone offset */ tzd: Symbol('tzd'), + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Layout Symbols + /** date */ dt: Symbol('date'), + /** time */ tm: Symbol('time'), + /** date and time */ dtm: Symbol('dateTime'), + /** day-month-year */ dmy: Symbol('dayMonthYear'), + /** month-day-year */ mdy: Symbol('monthDayYear'), + /** year-month-day */ ymd: Symbol('yearMonthDay'), + /** day of month offset */ off: Symbol('offset'), + /** weekDay */ wkd: Symbol('weekDay'), + /** relative offset (years, days, hours, etc) */ rel: Symbol('relativeOffset'), + /** timezone/calendar brackets */ brk: Symbol('brackets'), +}); +export type Token = typeof Token; diff --git a/packages/tempo/src/support/tempo.util.ts b/packages/tempo/src/support/tempo.util.ts index 7f8b3f8c..102fe494 100644 --- a/packages/tempo/src/support/tempo.util.ts +++ b/packages/tempo/src/support/tempo.util.ts @@ -1,40 +1,76 @@ -import { isDefined } from '#library/type.library.js'; -import { asArray } from '#library/coercion.library.js'; -import type { Tempo } from '../tempo.class.js'; -import type { Range, DateTimeUnit } from '../tempo.type.js'; +import { sym, Token } from './tempo.symbol.js'; +import { asType, isSymbol, isUndefined, isString } from '#library/type.library.js'; +import { ownEntries } from '#library/primitive.library.js'; +import { getRuntime } from './tempo.runtime.js'; -/** internal schema for Temporal units and their Tempo property aliases */ +/** @internal set a mutable, enumerable property on a target */ +export const setProperty = (target: object, key: PropertyKey, value: T) => + Object.defineProperty(target, key, { value, writable: true, configurable: true, enumerable: true }); + +/** @internal return the Prototype parent of an object */ +export const proto = (obj: object) => Object.getPrototypeOf(obj); + +/** @internal test object has own property with the given key */ +export const hasOwn = (obj: object, key: string) => Object.hasOwn(obj, key); + +/** @internal create an object based on a prototype */ +export const create = (obj: object, name: string): T => Object.create(proto(obj)[name]); + +/** @internal resolve a key to a symbol from Token or sym registries */ +export function getSymbol(key?: string | symbol): symbol { + if (isSymbol(key)) + return key as symbol; + + if (isUndefined(key)) { + const runtime = getRuntime(); + const usr = `usr.${++runtime.usrCount}`; // allocate a prefixed 'user' key + return (Token as any)[usr] = Symbol(usr); // add to Symbol register + } + + if (isString(key) && (key as string).includes('.')) { + const description = (key as string).split('.').pop()!; // use last segment as description + return (Token as any)[key as string] ??= Symbol(description); + } + + return (Token as any)[key!] ?? (sym as any)[key!] ?? Symbol.for(key as string); +} + +/** @internal helper to normalize snippet/layout Options into the target Config */ +export function collect(target: Record, value: any, convert: (v: any) => any) { + const itm = asType(value); + target ??= {} + + switch (itm.type) { + case 'Object': + ownEntries(itm.value as Record) + .forEach(([k, v]) => target[getSymbol(k)] = convert(v)); + break; + case 'String': + case 'RegExp': + target[getSymbol()] = convert(itm.value); + break; + case 'Array': + (itm.value as any[]).forEach(elm => collect(target, elm, convert)); + break; + } +} + +/** @internal standard date/time component order */ export const SCHEMA = [ - ['year', 'yy'], - ['month', 'mm'], - ['day', 'dd'], - ['hour', 'hh'], - ['minute', 'mi'], - ['second', 'ss'], - ['millisecond', 'ms'], - ['microsecond', 'us'], - ['nanosecond', 'ns'] -] as [DateTimeUnit, keyof Tempo][]; - -/** helper to find the largest Temporal unit defined in a Range list */ -export function getLargestUnit(list: Range | Range[]): DateTimeUnit | undefined { - const items = asArray(list); - return SCHEMA.find(([u]) => items.some(r => isDefined(r[u])))?.[0]; + ['year', 'yy'], ['month', 'mm'], ['day', 'dd'], ['hour', 'hh'], ['minute', 'mi'], ['second', 'ss'], ['millisecond', 'ms'], ['microsecond', 'us'], ['nanosecond', 'ns'] +] as const; + +/** @internal get the largest defined unit from a list of ranges */ +export function getLargestUnit(list: any[]): string { + for (const [unit] of SCHEMA) { + if (list.some(r => r[unit] !== undefined)) return unit; + } + return 'nanosecond'; } -/** helper to determine a safe forward step for infinite-loop recovery */ -export function getSafeFallbackStep(range: Range | Range[], scope?: string): Temporal.DurationLike { - const items = asArray(range); - const first = items[0] as any; - - // prioritize stashed 'rollover' metadata (calculated by getTermRange) if available - const rolloverUnit = first?.rollover || (() => { - const unit = getLargestUnit(items); - const unitIndex = SCHEMA.findIndex(([u]) => u === unit); - const rolloverIndex = Math.max(0, unitIndex - 1); - return (unitIndex !== -1) ? SCHEMA[rolloverIndex][0] : undefined; - })(); - - if (rolloverUnit) return { [`${rolloverUnit}s`]: 1 } as any; - return scope === 'period' ? { days: 1 } : { years: 1 }; +/** @internal get a safe fallback step for a given unit */ +export function getSafeFallbackStep(unit: string): number { + const idx = SCHEMA.findIndex(([u]) => u === unit); + if (idx === -1) return 1; + return (idx <= 2) ? 1 : 0; } diff --git a/packages/tempo/src/tempo.class.ts b/packages/tempo/src/tempo.class.ts index 8684057d..91fb6591 100644 --- a/packages/tempo/src/tempo.class.ts +++ b/packages/tempo/src/tempo.class.ts @@ -20,7 +20,7 @@ import type { Property, Secure } from '#library/type.library.js'; import { registerPlugin, interpret, ensureModule } from './plugin/plugin.util.js' import { registerTerm, getTermRange } from './plugin/term.util.js'; -import sym, { getRuntime, isTempo, registryUpdate, registryReset, onRegistryReset, Match, Token, Snippet, Layout, Event, Period, Ignore, Default, Guard, enums, STATE, DISCOVERY } from '#tempo/support'; +import { sym, TermError, getRuntime, init, isTempo, registryUpdate, registryReset, onRegistryReset, Match, Token, Snippet, Layout, Event, Period, Ignore, Default, Guard, enums, STATE, DISCOVERY, type TempoBrand } from '#tempo/support'; import * as t from './tempo.type.js'; // namespaced types (Tempo.*) declare module '#library/type.library.js' { @@ -69,7 +69,7 @@ namespace Internal { */ @Serializable @Immutable -export class Tempo { +export class Tempo implements TempoBrand { /** Weekday names (short-form) */ static get WEEKDAY() { return enums.WEEKDAY } /** Weekday names (long-form) */ static get WEEKDAYS() { return enums.WEEKDAYS } /** Month names (short-form) */ static get MONTH() { return enums.MONTH } @@ -90,10 +90,7 @@ export class Tempo { /** @internal check if Tempo is currently initializing */ static get isInitializing() { return !Tempo.#lifecycle.ready } /** @internal check if Tempo is currently extending */ static get isExtending() { return Tempo.#lifecycle.extendDepth > 0 } - static #dbg = new Logify('Tempo', { - debug: Default?.debug ?? false, - catch: Default?.catch ?? false - }) + /** Logify for internal errors and debug logs */ static #dbg = new Logify('Tempo', { debug: Default?.debug ?? false, catch: Default?.catch ?? false }) /** Tempo state for the global configuration */ static #global = {} as Internal.State /** cache for next-available 'usr' Token key */ static #usrCount = 0; @@ -351,7 +348,7 @@ export class Tempo { break; case 'timeZone': { - const zone = String(arg.value).toLowerCase() as t.TIMEZONE; + const zone = arg.value.toString().toLowerCase(); setProperty(shape.config, 'timeZone', enums.TIMEZONE[zone] ?? arg.value); break; } @@ -742,6 +739,10 @@ export class Tempo { Tempo.#lifecycle.initialising = true; try { + const rt = getRuntime(); + const state = rt.state ?? init(); + Tempo.#global = state; + const { timeZone, calendar } = getDateTimeFormat(); // 1. Establish the base parsing state @@ -783,7 +784,6 @@ export class Tempo { const discoveryKey = options.discovery ?? Symbol.keyFor(sym.$Tempo) as string; const storeKey = Symbol.keyFor(sym.$Tempo) as string; - const rt = getRuntime(); const userDiscovery = (globalThis as any)[isString(discoveryKey) ? Symbol.for(discoveryKey) : discoveryKey] as Internal.Discovery; Tempo.#setConfig(Tempo.#global, @@ -1032,7 +1032,7 @@ export class Tempo { /** @internal internal key for signaling pre-errored state in constructor */ static [sym.$errored] = sym.$errored; - /** @internal */ static [sym.$termError](config: Internal.Config, term: string): void { + /** @internal */ static [TermError](config: Internal.Config, term: string): void { const hint = Tempo.#terms.length === 0 ? ". (No term plugins are registered—did you forget to call Tempo.extend(TermsModule)?)" : ""; const msg = `Unknown Term identifier: ${term}${hint}`; Tempo.#dbg.error(config, msg); @@ -1089,7 +1089,7 @@ export class Tempo { return 'Tempo'; // hard-coded to avoid minification mangling } - get [sym.$isTempo]() { return true } + get [sym.$isTempo](): true { return true } /** * Instantiates a new `Tempo` object with configuration only. @@ -1459,10 +1459,10 @@ export class Tempo { /** resolve constructor / method arguments */ #swap(tempo?: t.DateTime | t.Options, options: t.Options = {}): [t.DateTime | undefined, t.Options] { - if (isTempo(tempo)) { + if (isTempo(tempo)) // preserve parse result history when creating new instance from an existing one return [tempo, Object.assign({ result: [...tempo.parse.result] }, options)]; - } + return this.#isOptions(tempo) ? [tempo.value, Object.assign({}, tempo)] : [tempo, options]; diff --git a/packages/tempo/src/tempo.index.ts b/packages/tempo/src/tempo.index.ts index 414fe440..f4c888ae 100644 --- a/packages/tempo/src/tempo.index.ts +++ b/packages/tempo/src/tempo.index.ts @@ -6,14 +6,20 @@ import { MutateModule } from '#tempo/mutate'; import { DurationModule } from '#tempo/duration'; import { FormatModule } from '#tempo/format'; import { TermsModule } from '#tempo/term'; +import { getRuntime } from '#tempo/support'; // Batteries Included: Register standard modules const core = [ParseModule, MutateModule, FormatModule, DurationModule, TermsModule]; -onRegistryReset(() => { Tempo.extend(core); }); +getRuntime().modules['Tempo'] = Tempo; +onRegistryReset(() => { + getRuntime().modules['Tempo'] = Tempo; + Tempo.extend(core); +}); Tempo.extend(core); export * from './tempo.class.js'; +export { parse } from './tempo.parse.js'; export { enums }; export default Tempo; diff --git a/packages/tempo/src/tempo.parse.ts b/packages/tempo/src/tempo.parse.ts new file mode 100644 index 00000000..9958809a --- /dev/null +++ b/packages/tempo/src/tempo.parse.ts @@ -0,0 +1,36 @@ +import '#library/temporal.polyfill.js'; + +import { getRuntime } from './support/tempo.runtime.js'; +import { init, extendState } from './support/tempo.init.js'; +import { ParseEngine } from './plugin/module/module.parse.js'; +import type { DateTime, Options } from './tempo.type.js'; + +export * from './plugin/module/module.parse.js'; + +/** + * Standalone Smart Parser + * Returns a native Temporal.ZonedDateTime without requiring the full Tempo class. + * + * @example + * import { parse } from '@magmacomputing/tempo/parse'; + * const zdt = parse('tomorrow', { timeZone: 'Europe/Paris' }); + */ +export function parse(value: DateTime, options: Options = {}): Temporal.ZonedDateTime { + const runtime = getRuntime(); + const globalState = runtime.state ?? init(); + + // Create a local state shadowed from the global state + const state = { + config: Object.create(globalState.config), + parse: Object.create(globalState.parse) + }; + + // Standalone parsing defaults to 'strict' mode + options.mode ??= 'strict'; + + // Apply options + extendState(state, options); + + // Execute the parse + return ParseEngine.parse(state, value); +} diff --git a/packages/tempo/src/tempo.type.ts b/packages/tempo/src/tempo.type.ts index f521daa4..293ce3c1 100644 --- a/packages/tempo/src/tempo.type.ts +++ b/packages/tempo/src/tempo.type.ts @@ -7,16 +7,12 @@ * Inside `tempo.class.ts` these are accessed via `import * as t`. */ +import { sym } from '#tempo/support/tempo.symbol.js'; import * as enums from '#tempo/support/tempo.enum.js'; -import sym from '#tempo/support/tempo.symbol.js'; -import type { Snippet, Layout, Event, Period, Token, Ignore } from '#tempo/support/tempo.default.js'; +import type { Snippet, Layout, Event, Period, Ignore } from '#tempo/support/tempo.default.js'; import type { IntRange, NonOptional, Property, Plural, Prettify, TemporalObject, TypeValue } from '#library/type.library.js'; import type { Range, TermPlugin, ResolvedRange, Plugin, Terms, Module, Extension } from '#tempo/plugin/plugin.type.js'; - -/** - * Structural forward-reference to the Tempo class. - * 'import type' is safe for circular ESM references — erased at runtime. -*/ +import type { Token } from '#tempo/support/tempo.symbol.js'; import type { Tempo } from '#tempo/tempo.class.js'; declare global { @@ -234,13 +230,14 @@ export namespace Internal { } /** structured configuration for Global Discovery via Symbol.for('$Tempo') */ + type Ignores = string | string[] | (() => string | string[]); export interface Discovery { /** pre-defined config options for Tempo.#global */ options?: Options | (() => Options); /** aliases to merge in the TimeZone dictionary */ timeZones?: Record; /** aliases to merge in the Number-Word dictionary */ numbers?: Record; /** term plugins to be registered via Tempo.addTerm() */terms?: TermPlugin | TermPlugin[]; /** custom format strings to merge in the FORMAT dictionary */formats?: Property; - /** noise words to ignore during parsing via Tempo.ignore() */ ignore?: Ignore | (() => Ignore); + /** noise words to ignore during parsing via Tempo.ignore() */ ignore?: Ignores /** plugins to be automatically extended via Tempo.extend() */plugins?: Plugin | Plugin[]; } } diff --git a/packages/tempo/test/runtime_brand.test.ts b/packages/tempo/test/runtime_brand.test.ts index fb4d63ba..c85e56ce 100644 --- a/packages/tempo/test/runtime_brand.test.ts +++ b/packages/tempo/test/runtime_brand.test.ts @@ -1,4 +1,4 @@ -import sym, { getRuntime, TempoRuntime } from '#tempo/support'; +import { sym, getRuntime, TempoRuntime } from '#tempo/support'; describe('TempoRuntime Cross-Bundle Adoption', () => { /** diff --git a/packages/tempo/test/standalone_parse.test.ts b/packages/tempo/test/standalone_parse.test.ts new file mode 100644 index 00000000..8ef41a2e --- /dev/null +++ b/packages/tempo/test/standalone_parse.test.ts @@ -0,0 +1,56 @@ +import { expect, test } from 'vitest'; +import { parse } from '#tempo/parse'; +import { Tempo } from '#tempo'; +import { Temporal } from '@js-temporal/polyfill'; + +test('standalone parse: tomorrow', () => { + const zdt = parse('tomorrow'); + expect(zdt).toBeInstanceOf(Temporal.ZonedDateTime); + + const now = Temporal.Now.zonedDateTimeISO(); + const tomorrow = now.add({ days: 1 }).startOfDay(); + + expect(zdt.year).toBe(tomorrow.year); + expect(zdt.month).toBe(tomorrow.month); + expect(zdt.day).toBe(tomorrow.day); +}); + +test('standalone parse: with options', () => { + const zdt = parse('10:00', { timeZone: 'America/New_York' }); + expect(zdt.timeZoneId).toBe('America/New_York'); + expect(zdt.hour).toBe(10); + expect(zdt.minute).toBe(0); +}); + +test('standalone parse: strict mode (ambiguous input)', () => { + // In strict mode, '20' alone might be ambiguous or invalid depending on context + // Actually, '20' is often parsed as a day if it's the only thing, but strict mode might reject it if it's not clearly a date. + + // Let's try something that requires 'strict' mode to fail or behave differently. + // Actually, the goal is just to ensure it works and returns ZonedDateTime. + + const zdt = parse('2025-05-20'); + expect(zdt.year).toBe(2025); + expect(zdt.month).toBe(5); + expect(zdt.day).toBe(20); +}); + +test('standalone parse: shared state with Tempo class', () => { + // Register a custom event via Tempo + Tempo.init({ + event: { + 'party-time': '2025-12-31T23:59:59' + } + }); + + const zdt = parse('party-time'); + expect(zdt.year).toBe(2025); + expect(zdt.month).toBe(12); + expect(zdt.day).toBe(31); + expect(zdt.hour).toBe(23); +}); + +test('standalone parse: timezone lookup', () => { + const zdt = parse('2025-05-20 10:00', { timeZone: 'pst' }); + expect(zdt.timeZoneId).toBe('America/Los_Angeles'); +}); diff --git a/packages/tempo/test/tempo_regexp.test.ts b/packages/tempo/test/tempo_regexp.test.ts index ea9ae06d..d660be0f 100644 --- a/packages/tempo/test/tempo_regexp.test.ts +++ b/packages/tempo/test/tempo_regexp.test.ts @@ -1,5 +1,5 @@ import { Tempo } from '#tempo'; -import { Token } from '#tempo/support/tempo.default.js'; +import { Token } from '#tempo/support'; describe('Tempo.regexp', () => { test('should expand snippets and handle nested named capture groups', () => { diff --git a/packages/tempo/vitest.config.ts b/packages/tempo/vitest.config.ts index 37a2ef0f..3333257e 100644 --- a/packages/tempo/vitest.config.ts +++ b/packages/tempo/vitest.config.ts @@ -26,7 +26,7 @@ export default defineConfig({ { find: /^#tempo\/term\/standard$/, replacement: resolve(__dirname, './dist/plugin/term/standard.index.js') }, { find: /^#tempo\/duration$/, replacement: resolve(__dirname, './dist/plugin/module/module.duration.js') }, { find: /^#tempo\/format$/, replacement: resolve(__dirname, './dist/plugin/module/module.format.js') }, - { find: /^#tempo\/parse$/, replacement: resolve(__dirname, './dist/plugin/module/module.parse.js') }, + { find: /^#tempo\/parse$/, replacement: resolve(__dirname, './dist/tempo.parse.js') }, { find: /^#tempo\/mutate$/, replacement: resolve(__dirname, './dist/plugin/module/module.mutate.js') }, { find: /^#tempo\/ticker$/, replacement: resolve(__dirname, './dist/plugin/extend/extend.ticker.js') }, { find: /^#tempo\/scripts\/(.*)\.js$/, replacement: resolve(__dirname, './scripts/$1.js') }, @@ -47,7 +47,7 @@ export default defineConfig({ { find: /^#tempo\/ticker$/, replacement: resolve(__dirname, './src/plugin/extend/extend.ticker.ts') }, { find: /^#tempo\/duration$/, replacement: resolve(__dirname, './src/plugin/module/module.duration.ts') }, { find: /^#tempo\/format$/, replacement: resolve(__dirname, './src/plugin/module/module.format.ts') }, - { find: /^#tempo\/parse$/, replacement: resolve(__dirname, './src/plugin/module/module.parse.ts') }, + { find: /^#tempo\/parse$/, replacement: resolve(__dirname, './src/tempo.parse.ts') }, { find: /^#tempo\/mutate$/, replacement: resolve(__dirname, './src/plugin/module/module.mutate.ts') }, { find: /^#tempo\/scripts\/(.*)\.js$/, replacement: resolve(__dirname, './scripts/$1.ts') }, { find: /^#tempo\/plugin\/plugin\.(.*)\.js$/, replacement: resolve(__dirname, './src/plugin/plugin.$1.ts') }, From 450596ed48f9832a9594b1b0f15be258837f41c0 Mon Sep 17 00:00:00 2001 From: Michael McRae Date: Tue, 21 Apr 2026 22:28:23 +1000 Subject: [PATCH 4/6] tests pass --- packages/tempo/README.md | 62 ++++++------ packages/tempo/doc/installation.md | 4 +- packages/tempo/doc/releases/v2.x.md | 65 +++++++------ packages/tempo/doc/tempo.config.md | 10 +- packages/tempo/index.md | 5 +- packages/tempo/package.json | 3 +- packages/tempo/public/esm_full.index.html | 8 +- packages/tempo/src/core.index.ts | 1 - .../tempo/src/plugin/module/module.parse.ts | 29 ++++-- .../tempo/src/plugin/module/module.term.ts | 8 +- packages/tempo/src/plugin/plugin.util.ts | 4 +- packages/tempo/src/support/support.index.ts | 2 +- packages/tempo/src/support/tempo.init.ts | 23 +++-- packages/tempo/src/support/tempo.runtime.ts | 11 ++- packages/tempo/src/support/tempo.util.ts | 15 ++- packages/tempo/src/tempo.class.ts | 94 ++++++++++--------- packages/tempo/src/tempo.parse.ts | 18 ++-- packages/tempo/src/tempo.type.ts | 18 ++-- packages/tempo/test/standalone_parse.test.ts | 10 +- packages/tempo/test/storage.test.ts | 5 +- 20 files changed, 220 insertions(+), 175 deletions(-) diff --git a/packages/tempo/README.md b/packages/tempo/README.md index 2fccddb3..da5b4c7d 100644 --- a/packages/tempo/README.md +++ b/packages/tempo/README.md @@ -1,31 +1,19 @@ - - - - - - - -
- Tempo logo - -

Tempo

-

The Professional Date-Time Library for the Temporal API

-
+# Tempo + +**The Professional Date-Time Library for the Temporal API** + +Tempo logo **Tempo** is a premium, high-performance wrapper for the ECMAScript `Temporal` API. Designed for professionals, it combines **immutable** state-management with a **fluent**, natural-language engine. It is the modern, type-safe successor to legacy libraries like Moment.js and Luxon.
- - - - - - - - - - -
License: MITTemporalTypeScript ReadyNative ESMDocumentation
+ +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Temporal](https://img.shields.io/badge/Temporal-Stage%204-green)](https://tc39.es/proposal-temporal/) +[![TypeScript Ready](https://img.shields.io/badge/TypeScript-Ready-blue?logo=typescript)](https://www.typescriptlang.org/) +[![Native ESM](https://img.shields.io/badge/Native-ESM-green)](https://nodejs.org/api/esm.html) +[![Documentation](https://img.shields.io/badge/Docs-VitePress-brightgreen?logo=vitepress)](https://magmacomputing.github.io/magma/) +
--- @@ -51,21 +39,33 @@ Tempo.ticker({ seconds: 1 }, (t) => { ### 📦 Installation ```bash -npm install @magmacomputing/tempo # npm -yarn add @magmacomputing/tempo # yarn -pnpm add @magmacomputing/tempo # pnpm -bun add @magmacomputing/tempo # bun -deno add @magmacomputing/tempo # deno +npm install @magmacomputing/tempo # npm +yarn add @magmacomputing/tempo # yarn +pnpm add @magmacomputing/tempo # pnpm +bun add @magmacomputing/tempo # bun +deno add npm:@magmacomputing/tempo # deno ```
🌐 Browser & Lite Environments -For rapid prototyping without a package manager, use the global bundle: +For modern browsers using **Import Maps**: +```html + +``` + +For rapid prototyping without a package manager (UMD): ```html ``` -For Import Maps or granular "Lite" builds, see the [Full Installation Guide](https://magmacomputing.github.io/magma/doc/installation). + +For granular "Lite" builds, see the [Full Installation Guide](https://magmacomputing.github.io/magma/doc/installation).
--- diff --git a/packages/tempo/doc/installation.md b/packages/tempo/doc/installation.md index 418b60dd..318d1031 100644 --- a/packages/tempo/doc/installation.md +++ b/packages/tempo/doc/installation.md @@ -28,7 +28,7 @@ const t = new Tempo('next Friday'); Tempo is a native ESM package and works perfectly with Deno. You can add it via the `deno add` command which will resolve it from the npm registry. ```bash -deno add @magmacomputing/tempo +deno add npm:@magmacomputing/tempo ``` ### Usage @@ -114,4 +114,4 @@ const t = new Tempo().add({ days: 1 }); We recommend pinning your versions in production environments to ensure stability. * **JSDelivr**: `https://cdn.jsdelivr.net/npm/@magmacomputing/tempo@2/...` (Locks to major version 2) -* **Latest**: Omit the version string (e.g., `@magmacomputing/tempo/...`) to always receive the latest release. +* **Latest**: `https://cdn.jsdelivr.net/npm/@magmacomputing/tempo/...` (Omit the version string to always receive the latest release. Note that JSDelivr will resolve a missing version tag to the latest published release). diff --git a/packages/tempo/doc/releases/v2.x.md b/packages/tempo/doc/releases/v2.x.md index 1dedb8ac..18dd2370 100644 --- a/packages/tempo/doc/releases/v2.x.md +++ b/packages/tempo/doc/releases/v2.x.md @@ -1,5 +1,19 @@ # 📜 Version 2.x History +## [v2.2.7] - 2026-04-22 +### 🧩 Parsing Innovations +- **Standalone Logic**: Extracted the natural language engine into a dedicated `parse()` function, enabling independent datetime string resolution without requiring a full Tempo instance. +- **Noise Filtering**: Introduced a configurable `ignore` option to strip "noise words" during parsing, significantly increasing the robustness of the natural language interpreter. + +### 📚 Documentation & UX +- **Ecosystem Installation**: Released a comprehensive installation guide covering Node.js (npm/pnpm/yarn), Deno, standard browser ESM, and specialized "Lite" build configurations. +- **Interactive Demo**: Enhanced the browser-based playground with a live timezone selector and real-time clock updates to demonstrate Temporal integration. +- **Quick Start Refinement**: Streamlined the README and configuration documentation to highlight simplified entry points and noise-filtering capabilities. + +### 🛠️ Refactor & Type Safety +- **State Management**: Optimized the internal parser state machine to reduce memory pressure and improve resolution speed for complex strings. +- **Type Safety**: Hardened the TypeScript definitions for all `parse` and `term` resolution functions, ensuring strict type-checking without consumer-side casting. + ## [v2.2.6] - 2026-04-20 ### 🚑 Emergency Hotfix - **Isomorphic Export Architecture**: Refactored `tempo.entry.ts` and Rollup configuration to ensure the browser ESM bundle exports `Tempo` as both a default and a named export. This guarantees that `import { Tempo } from '@magmacomputing/tempo'` functions identically across Node.js and browser environments without throwing resolution errors. @@ -26,22 +40,19 @@ - **ESM Integrity**: Bundled `tslib` into granular ESM builds to resolve resolution failures in standard browser environments. ## [v2.2.3] - 2026-04-19 -### New Features - -- Modular parse engine and standalone parsing support -- Layout patterns with snippet-based customization -- Added release notes pages and added MIT license -### Bug Fixes - -- Preserve parse results across cloned instances -- Fixed timezone/calendar drift during complex mutations -### Documentation +### ✨ New Features +- **Modular Parsing**: Initial decoupling of the parse engine to support standalone usage. +- **Layout Snippets**: Introduced pattern-based layout customization for granular formatting control. +- **Project Governance**: Integrated the MIT license and established a dedicated release history. -- Reorganized docs navigation with Cookbook, Advanced Reference, Utility Library, Services & Support -- Expanded API/constructor docs and custom-enum guidance -### Chores +### 🐛 Bug Fixes +- **Match Propagation**: Ensured parse results correctly propagate through instance clones. +- **Drift Resolution**: Corrected timezone and calendar drift during intensive mutation cycles. -- Improved module-loading diagnostics and general doc formatting cleanup +### 📚 Documentation & Chores +- **Knowledge Architecture**: Reorganized navigation into focused tracks: Cookbook, Advanced Reference, and Utility Library. +- **API Reference**: Expanded constructor documentation and added guidance for custom enum implementations. +- **Diagnostics**: Improved internal module-loading error messages for easier troubleshooting. ## [v2.2.2] - 2026-04-18 ### 🛡️ Registry Stabilization @@ -80,20 +91,18 @@ - Achieved **100% Test Pass Rate** (384/384) across all environments and distribution bundles. ## [v2.1.3] - 2026-04-18 -### New Features -Added VitePress-based documentation system with TypeDoc API reference integration -Introduced browser demo pages showcasing various loading patterns -Expanded Temporal utilities with nanosecond-precision support and helper functions - -### Improvements -Refactored plugin system to object-based API for improved extensibility -Enhanced memoization performance and caching mechanisms -Streamlined library exports for better modularity and tree-shaking - -### Documentation -New CONTRIBUTING.md guide for developers -Added release process documentation -Updated README with improved formatting +### 📚 Documentation & Ecosystem +- **VitePress Migration**: Launched a modern documentation system with integrated TypeDoc API references. +- **Loading Patterns**: Introduced interactive browser demos for ESM, IIFE, and granular module resolution. +- **Standardized README**: Refreshed the main project entry point with improved formatting and developer guides. + +### 🚀 Performance & Extensibility +- **Plugin Refactor**: Migrated the plugin system to a flexible object-based API for better extensibility. +- **Cache Optimization**: Enhanced memoization performance across the core engine. +- **Modular Exports**: Streamlined library entry points to improve tree-shaking and reduce bundle sizes. + +### ⏱️ Temporal Utilities +- **High Precision**: Expanded Temporal utility functions with native support for nanosecond-precision calculations. ## [v2.1.2] - 2026-04-16 Tempo v2.1.2 is a major milestone, delivering a more reactive architecture and rock-solid stability. diff --git a/packages/tempo/doc/tempo.config.md b/packages/tempo/doc/tempo.config.md index 223f472c..7d8d6db6 100644 --- a/packages/tempo/doc/tempo.config.md +++ b/packages/tempo/doc/tempo.config.md @@ -167,19 +167,21 @@ Tempo allows you to specify "noise words" that should be ignored during natural By default, Tempo ignores the word **"at"** (e.g., `"Friday at 3pm"` becomes `"Friday 3pm"` internally). ```javascript -// Extend globally +// Extend globally via Tempo.init() +// This adds 'the' and 'o-clock' to the existing default list (['at']) Tempo.init({ ignore: ['the', 'o-clock'] }); -// Use in a specific instance +// Use in a specific instance via the Tempo constructor (new Tempo(...)) +// This instance will ignore 'at', 'the', and 'o-clock' const t = new Tempo('next Friday at 3 o-clock', { ignore: 'o-clock' }); -console.log(t.toString()); // Resolved correctly +console.log(t.toString()); // Resolved correctly (noise words stripped) ``` > [!TIP] -> **Registry Structure**: The `ignore` registry accepts a **String** or an **Array** of strings. These are converted to a high-performance internal format to support efficient prototype-based shadowing. +> **Registry Structure**: The `ignore` registry accepts a **String** or an **Array** of strings. These are converted to a high-performance internal format to support efficient prototype-based shadowing. Note that values provided via `Tempo.init()` or the `new Tempo()` constructor **merge** with the default ignore list rather than replacing it. --- diff --git a/packages/tempo/index.md b/packages/tempo/index.md index 3f661b0b..8382cc4c 100644 --- a/packages/tempo/index.md +++ b/packages/tempo/index.md @@ -28,6 +28,7 @@ const commonZones = ref([ 'Asia/Tokyo', 'Australia/Sydney' ]) +const uniqueZones = computed(() => [...new Set(commonZones.value)]) // --- Carousel State --- const activeIndex = ref(0) @@ -114,7 +115,7 @@ async function startTicker() { } sync(new Tempo({ timeZone: selectedTz.value })) - ticker = Tempo.ticker({ seconds: 1, timeZone: selectedTz.value }, sync) + ticker = Tempo.ticker({ seconds: 1, seed: { timeZone: selectedTz.value } }, sync) } catch (e) { timeStr.value = `Error: ${e.message || 'Unknown'}` const fallback = () => { @@ -258,7 +259,7 @@ function focusActiveCard() { diff --git a/packages/tempo/package.json b/packages/tempo/package.json index e4baa1f0..0ce27c10 100644 --- a/packages/tempo/package.json +++ b/packages/tempo/package.json @@ -27,7 +27,8 @@ "**/*-polyfill.ts", "**/module.*.js", "**/module.*.ts", - "**/tempo.index.js" + "**/tempo.index.js", + "**/tempo.parse.js" ], "main": "dist/tempo.index.js", "types": "dist/tempo.index.d.ts", diff --git a/packages/tempo/public/esm_full.index.html b/packages/tempo/public/esm_full.index.html index be809af3..26b6fc93 100644 --- a/packages/tempo/public/esm_full.index.html +++ b/packages/tempo/public/esm_full.index.html @@ -205,10 +205,8 @@

Tempo

ESM Lite Build
- import { Tempo } from '@magmacomputing/tempo/core'; -import { MutateModule } from '@magmacomputing/tempo/mutate'; + import { Tempo } from '@magmacomputing/tempo'; -Tempo.extend(MutateModule); const t = new Tempo().add({ days: 1 });
@@ -233,8 +231,8 @@

Tempo

"imports": { "jsbi": "https://cdn.jsdelivr.net/npm/jsbi@4.3.0/dist/jsbi.mjs", "@js-temporal/polyfill": "https://cdn.jsdelivr.net/npm/@js-temporal/polyfill@0.5/dist/index.esm.js", - "@magmacomputing/tempo": "https://cdn.jsdelivr.net/npm/@magmacomputing/tempo@2/dist/tempo.index.js", - } + "@magmacomputing/tempo": "https://cdn.jsdelivr.net/npm/@magmacomputing/tempo@2/dist/tempo.bundle.esm.js" + } } diff --git a/packages/tempo/doc/tempo.enumerators.md b/packages/tempo/doc/tempo.enumerators.md index 31e3bee2..16b133da 100644 --- a/packages/tempo/doc/tempo.enumerators.md +++ b/packages/tempo/doc/tempo.enumerators.md @@ -30,11 +30,17 @@ After defining the enumify object, simple TypeScript helper aliases pull out the ```typescript export type SEASON = ValueOf; // Type: 'summer' | 'autumn' | 'winter' | 'spring' +export type Season = KeyOf; // Type: 'Summer' | 'Autumn' | 'Winter' | 'Spring' ``` +The above types allow for the use of `Season` and `SEASON` as type arguments, providing type safety for both the keys and values of the enum. + +It is generally recommended to use the **values** (lowercase) as type arguments, as they are used as the actual values in the enumify object. This allows for easier use of the enumify methods, which operate on the values. + +**Note:** TypeScript provides automatic typing for native enums, but it is not the case with enumify. ## 2. Using Enums Outside of Tempo -For consumers of the library, these enumerations are exposed cleanly as **static getters** on the core `Tempo` class. They are also available as a namespace object from the 'barrel' (index.ts) export `enums`. +For consumers of the library, these enumerations are exposed cleanly as **static getters** on the core `Tempo` class. They are also available as a namespace object from the 'barrel' (tempo.index.ts) export `enums`. You can use the values directly as arguments: diff --git a/packages/tempo/doc/tempo.modularity.md b/packages/tempo/doc/tempo.modularity.md index c3d55baa..c0821dc5 100644 --- a/packages/tempo/doc/tempo.modularity.md +++ b/packages/tempo/doc/tempo.modularity.md @@ -4,7 +4,7 @@ Tempo is designed as a modular library, allowing you to include only the feature ## Core vs. Full -* **@magmacomputing/tempo/core**: The bare-bones Tempo engine. Includes parsing, basic getters, and internal state management. +* **@magmacomputing/tempo/core**: The bare-bones Tempo engine. Includes parsing (standard ISO string or a native `Temporal` object), basic getters, and internal state management. * **@magmacomputing/tempo**: The "batteries included" version. Includes all standard modules (Duration, Format, Term Registry, Mutate, etc.). ```typescript diff --git a/packages/tempo/doc/tempo.parse.md b/packages/tempo/doc/tempo.parse.md new file mode 100644 index 00000000..156ed34e --- /dev/null +++ b/packages/tempo/doc/tempo.parse.md @@ -0,0 +1,95 @@ +# Smart Parsing Guide + +Tempo's strongest feature is its flexible, natural-language parsing engine. While native `Temporal` is strictly ISO-only, Tempo can interpret a vast range of human-friendly date and time expressions. + +## 🚀 Standalone Parsing (Zero-Overhead) + +If you only need Tempo's "Smart" parsing but want to keep your project lightweight, you can use the standalone `parse` function. This returns a native `Temporal.ZonedDateTime` without importing the full `Tempo` class. + +```typescript +import { parse } from '@magmacomputing/tempo/parse'; + +// Returns a native Temporal.ZonedDateTime +const zdt = parse('next Tuesday at 3pm', { timeZone: 'Australia/Sydney' }); + +console.log(zdt.toString()); // 2026-04-28T15:00:00+10:00[Australia/Sydney] +``` + +### Why use Standalone Parse? +* **Tree-Shaking**: Your bundler can skip the entire `Tempo` class and its associated methods, significantly reducing your bundle size. +* **Temporal Native**: Perfect for projects that already use native `Temporal` objects but need a friendlier input layer for users. +* **Strict by Default**: The standalone function defaults to `mode: 'strict'`, ensuring that it won't "guess" if the input is ambiguous. + +--- + +## 🏗️ Class-Based Parsing + +When using the `Tempo` class, parsing is handled automatically by the constructor. + +```typescript +import { Tempo } from '@magmacomputing/tempo'; + +const t = new Tempo('2 days ago'); +``` + +### Supported Formats +The engine can interpret: +* **ISO Strings**: `2024-05-20T10:00:00Z` +* **Short Dates**: `20-May`, `May 20` (locale-aware) +* **Relative Strings**: `next Monday`, `last Friday`, `2 days ago` +* **Numbers/BigInt**: Unix timestamps in milliseconds or nanoseconds. +* **Temporal Objects**: `ZonedDateTime`, `PlainDate`, `PlainDateTime`. + +--- + +## 🧩 Modularity: Core vs. Full + +The parsing engine is modular. Depending on which version of Tempo you are using, you may need to explicitly enable it: + +| Version | Smart Parsing Status | +| :--- | :--- | +| **Tempo Full** | **Built-in**. Works out of the box. | +| **Tempo Core** | **Opt-in**. You must call `Tempo.extend(ParseModule)` to enable natural language support. | + +### Enabling Smart Parsing in Core +If you are using `@magmacomputing/tempo/core`, the constructor only supports basic ISO strings by default. To enable "next Tuesday" style parsing, you must extend it: + +```typescript +import { Tempo } from '@magmacomputing/tempo/core'; +import { ParseModule } from '@magmacomputing/tempo/parse'; + +Tempo.extend(ParseModule); +``` + +--- + +## 🌍 TimeZone & Locale Awareness + +Tempo uses your configuration to resolve ambiguous dates. + +### US-Style Dates (`MM/DD/YYYY`) +If you parse a numeric string like `04012026`, Tempo uses your `timeZone` to decide if it means **April 1st** (US) or **4th of January** (UK/AU). + +```typescript +const us = new Tempo('04012026', { timeZone: 'America/New_York' }); // Apr 1 +const au = new Tempo('04012026', { timeZone: 'Australia/Sydney' }); // Jan 4 +``` + +### Custom Aliases (Events & Periods) +You can teach the parser new words: + +```typescript +Tempo.init({ + event: { + 'launch': '2026-12-01', + 'party': () => 'next Friday 8pm' + } +}); + +const t = new Tempo('party'); +``` + +--- + +## 🛡️ Performance: The Master Guard +Tempo uses a "Scan-and-Consume" engine called the **Master Guard**. This allows it to check your input string against dozens of patterns (weekdays, months, custom events) in a single pass, ensuring that parsing remains $O(1)$ relative to the number of plugins you have active. diff --git a/packages/tempo/index.md b/packages/tempo/index.md index 8382cc4c..8ebc2203 100644 --- a/packages/tempo/index.md +++ b/packages/tempo/index.md @@ -16,6 +16,7 @@ const sDeg = ref(0) const timeStr = ref('Loading...') const tzStr = ref('') const tickerActive = ref(true) +const isManualTickerPaused = ref(false) const isResuming = ref(false) const selectedTz = ref(Intl.DateTimeFormat().resolvedOptions().timeZone) const commonZones = ref([ @@ -115,6 +116,9 @@ async function startTicker() { } sync(new Tempo({ timeZone: selectedTz.value })) + + if (isManualTickerPaused.value) return + ticker = Tempo.ticker({ seconds: 1, seed: { timeZone: selectedTz.value } }, sync) } catch (e) { timeStr.value = `Error: ${e.message || 'Unknown'}` @@ -130,6 +134,18 @@ async function startTicker() { } } +function toggleTicker() { + isManualTickerPaused.value = !isManualTickerPaused.value + if (isManualTickerPaused.value) { + tickerActive.value = false + ticker?.stop() + if (fallbackIntervalId) clearInterval(fallbackIntervalId) + } else { + tickerActive.value = true + startTicker() + } +} + function startCarousel() { if (carouselTimer) clearInterval(carouselTimer) carouselTimer = setInterval(() => { @@ -152,11 +168,18 @@ function handleVisibility() { if (resumeTimer) clearTimeout(resumeTimer) if (document.visibilityState === 'visible') { + if (isManualTickerPaused.value) { + isResuming.value = false + return + } isResuming.value = true - console.info('%c[Tempo]%c ⏳ Waking Ticker...', 'color: #f59e0b; font-weight: bold', 'color: inherit') + console.info('%c[Tempo]%c ⏳ Syncing Ticker...', 'color: #f59e0b; font-weight: bold', 'color: inherit') resumeTimer = setTimeout(() => { - if (document.visibilityState !== 'visible') return + if (document.visibilityState !== 'visible' || isManualTickerPaused.value) { + isResuming.value = false + return + } isResuming.value = false tickerActive.value = true console.info('%c[Tempo]%c ⚡ Resuming Ticker', 'color: #2563eb; font-weight: bold', 'color: inherit') @@ -254,9 +277,13 @@ function focusActiveCard() {

{{ timeStr }}

- - {{ tickerActive ? 'Live' : (isResuming ? 'Waking...' : 'Standby') }} - +

Av!Uhwu#BKg_e?yY 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