diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 00000000..7b056c3a --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,10 @@ +# .coderabbit.yaml +reviews: + path_filters: + # Use "! " at the start of a pattern to EXCLUDE it from the review + - "!**/doc/api/**" # Ignore ONLY the generated TypeDoc API documentation + - "!**/docs/**" # Ignore other generated documentation artifacts + - "!**/.vitepress/cache/**" # Ignore VitePress cache + - "!**/.vitepress/dist/**" # Ignore VitePress build output + - "!**/dist/**" # Ignore all build artifacts + - "!**/vendor/**" # Ignore third-party code diff --git a/.gitignore b/.gitignore index 0a3463db..0f70dfe4 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,5 @@ Thumbs.db .~*.xlsx# .~*.xlsm# .rollup.cache/ +**/.vitepress/cache/ +**/.vitepress/dist/ diff --git a/.release-it.json b/.release-it.json index b62df6be..8d62775c 100644 --- a/.release-it.json +++ b/.release-it.json @@ -13,8 +13,14 @@ "access": "public" }, "hooks": { - "before:init": ["npm test"], - "after:bump": ["npm run build"] + "before:init": [ + "npm test" + ], + "after:bump": [ + "npm version ${version} -w @magmacomputing/tempo -w @magmacomputing/library --no-git-tag-version", + "npm run build:library", + "npm run build:tempo" + ] }, "plugins": { "@release-it/keep-a-changelog": { @@ -22,4 +28,4 @@ "filename": "CHANGELOG.md" } } -} +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f276f33..79fb178c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [2.0.1] - 2026-04-03 +## [Unreleased] ### Added +- **Browser Distribution Dashboard**: Launched a comprehensive verification suite at `/demo/index.html` to validate ESM, IIFE, and modular distributions. +- **Breaking Change**: The `Tempo.add()` and `Tempo.set()` methods now require the `MutateModule` to be explicitly registered via `Tempo.extend(MutateModule)`. This change moves the library towards a fully modular architecture where advanced mutation logic is opt-in, reducing the core bundle size for read-only consumers. + +## [2.1.2] - 2026-04-16 + +### Added +- **VitePress Documentation**: Launched a modern, searchable documentation site powered by VitePress and TypeDoc. +- **Proxy-Delegator Pattern**: Refined the lazy-evaluation engine for $O(1)$ property access. +- **Scan-and-Consume Guard**: Implemented high-performance token matching for v2.1.2 stabilization. - **Ticker Stability Guard**: Implemented a 10,000-iteration safety break in `resolveTermShift` to prevent infinite loops when resolving malformed or non-advancing custom terms. - **Unified Diagnostics (`Logify`)**: Integrated the `Logify` utility into core internal classes. This provides a standardized mechanism for `debug`, `catch`, and `silent` modes across the library. diff --git a/package-lock.json b/package-lock.json index ad4f151f..001e07c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,264 @@ "vitest": "^2.1.8" } }, + "node_modules/@algolia/abtesting": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.16.2.tgz", + "integrity": "sha512-n9s6bEV6imdtIEd+BGP7WkA4pEZ5YTdgQ05JQhHwWawHg3hyjpNwC0TShGz6zWhv+jfLDGA/6FFNbySFS0P9cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", + "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", + "@algolia/autocomplete-shared": "1.17.7" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", + "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", + "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", + "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.50.2.tgz", + "integrity": "sha512-52iq0vHy1sphgnwoZyx5PmbEt8hsh+m7jD123LmBs6qy4GK7LbYZIeKd+nSnSipN2zvKRZ2zScS6h9PW3J7SXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.50.2.tgz", + "integrity": "sha512-WpPIUg+cSG2aPUG0gS8Ko9DwRgbRPUZxJkolhL2aCsmSlcEEZT65dILrfg5ovcxtx0Kvr+xtBVsTMtsQWRtPDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.50.2.tgz", + "integrity": "sha512-Gj2MgtArGcsr82kIqRlo6/dCAFjrs2gLByEqyRENuT7ugrSMFuqg1vDzeBjRL1t3EJEJCFtT0PLX3gB8A6Hq4Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.50.2.tgz", + "integrity": "sha512-CUqoid5jDpmrc0oK3/xuZXFt6kwT0P9Lw7/nsM14YTr6puvmi+OUKmURpmebQF22S2vCG8L1DAoXXujxQUi/ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.50.2.tgz", + "integrity": "sha512-AndZWFoc0gbP5901OeQJ73BazgGgSGiBEba4ohdoJuZwHTO2Gio8Q4L1VLmytMBYcviVigB0iICToMvEJxI4ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.50.2.tgz", + "integrity": "sha512-NWoL+psEkz5dIzweaByVXuEB45wS8/rk0E0AhMMnaVJdVs7TcACPH2/OURm+N0xRDITkTHqCna823rd6Uqntdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.50.2.tgz", + "integrity": "sha512-ypSboUJ3XJoQz5DeDo82hCnrRuwq3q9ZdFhVKAik9TnZh1DvLqoQsrbBjXg7C7zQOtV/Qbge/HmyoV6V5L7MhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.50.2", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.50.2.tgz", + "integrity": "sha512-VlR2FRXLw2bCB94SQo6zxg/Qi+547aOji6Pb+dKE7h1DMCCY317St+OpjpmgzE+bT2O9ALIc0V4nVIBOd7Gy+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.50.2", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.50.2.tgz", + "integrity": "sha512-Cmvfp2+qopzQt8OilU97rhLhosq7ZrB6uieok3EwFUqG/aalPg6DgfCmu0yJMrYe+KMC1qRVt1MTRAUwLknUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.50.2.tgz", + "integrity": "sha512-jrkuyKoOM7dFWQ/6Y4hQAse2SC3L/RldG6GnPjMvAj65h+7Ubb51S0pKk4ofSStF0xm4LCNe0C4T6XX4nOFDiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.50.2.tgz", + "integrity": "sha512-4107YLJqCudPiBUlwnk6oTSUVwU7ab+qL1SfQGEDYI8DZH5gsf1ekPt9JykXRKYXf2IfouFL5GiCY/PHTFIjYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.50.2.tgz", + "integrity": "sha512-vOrd3MQpLgmf6wXAueTuZ/cA0W4uRwIHHaxNy3h+a6YcNn6bCV/gFdZuv3F13v593zRU2k5R75NmvRWLenvMrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.50.2.tgz", + "integrity": "sha512-Mu9BFtgzGqDUy5Bcs2nMyoILIFSN13GKQaklKAFIsd0K3/9CpNyfeBc+/+Qs6mFZLlxG9qzullO7h+bjcTBuGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", @@ -41,6 +299,16 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", @@ -51,6 +319,87 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", + "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docsearch/js": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", + "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/react": "3.8.2", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", + "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.17.7", + "@algolia/autocomplete-preset-algolia": "1.17.7", + "@docsearch/css": "3.8.2", + "algoliasearch": "^5.14.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -459,6 +808,20 @@ "node": ">=12" } }, + "node_modules/@gerrit0/mini-shiki": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.23.0.tgz", + "integrity": "sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-oniguruma": "^3.23.0", + "@shikijs/langs": "^3.23.0", + "@shikijs/themes": "^3.23.0", + "@shikijs/types": "^3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, "node_modules/@iarna/toml": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", @@ -466,6 +829,23 @@ "dev": true, "license": "ISC" }, + "node_modules/@iconify-json/simple-icons": { + "version": "1.2.78", + "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.78.tgz", + "integrity": "sha512-I3lkNp0Qu7q2iZWkdcf/I2hqGhzK6qxdILh9T7XqowQrnpmG/BayDsiCf6PktDoWlW0U971xA5g+panm+NFrfQ==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", @@ -1277,6 +1657,137 @@ "win32" ] }, + "node_modules/@shikijs/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", + "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/core/node_modules/@shikijs/engine-oniguruma": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/core/node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", + "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^3.1.0" + } + }, + "node_modules/@shikijs/engine-javascript/node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/transformers": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz", + "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/transformers/node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, "node_modules/@sindresorhus/is": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", @@ -1344,6 +1855,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", @@ -1358,6 +1879,41 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "25.5.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.2.tgz", @@ -1375,6 +1931,41 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, "node_modules/@vitest/expect": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.8.tgz", @@ -1473,41 +2064,319 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/ui": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-2.1.8.tgz", - "integrity": "sha512-5zPJ1fs0ixSVSs5+5V2XJjXLmNzjugHRyV11RqxYVR+oMcogZ9qTuSfKW+OcTV0JeFNznI83BNylzH6SSNJ1+w==", + "node_modules/@vitest/ui": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-2.1.8.tgz", + "integrity": "sha512-5zPJ1fs0ixSVSs5+5V2XJjXLmNzjugHRyV11RqxYVR+oMcogZ9qTuSfKW+OcTV0JeFNznI83BNylzH6SSNJ1+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "2.1.8", + "fflate": "^0.8.2", + "flatted": "^3.3.1", + "pathe": "^1.1.2", + "sirv": "^3.0.0", + "tinyglobby": "^0.2.10", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "2.1.8" + } + }, + "node_modules/@vitest/utils": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", + "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "2.1.8", + "loupe": "^3.1.2", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.32.tgz", + "integrity": "sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.2", + "@vue/shared": "3.5.32", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-core/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@vue/compiler-core/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.32.tgz", + "integrity": "sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.32", + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.32.tgz", + "integrity": "sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.2", + "@vue/compiler-core": "3.5.32", + "@vue/compiler-dom": "3.5.32", + "@vue/compiler-ssr": "3.5.32", + "@vue/shared": "3.5.32", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.8", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.32.tgz", + "integrity": "sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.32", + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.9.tgz", + "integrity": "sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.9" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.9.tgz", + "integrity": "sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.9", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.9.tgz", + "integrity": "sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.32.tgz", + "integrity": "sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.32.tgz", + "integrity": "sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.32", + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.32.tgz", + "integrity": "sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.32", + "@vue/runtime-core": "3.5.32", + "@vue/shared": "3.5.32", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.32.tgz", + "integrity": "sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.32", + "@vue/shared": "3.5.32" + }, + "peerDependencies": { + "vue": "3.5.32" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.32.tgz", + "integrity": "sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", + "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/integrations": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz", + "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vueuse/core": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", + "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", "dev": true, "license": "MIT", - "dependencies": { - "@vitest/utils": "2.1.8", - "fflate": "^0.8.2", - "flatted": "^3.3.1", - "pathe": "^1.1.2", - "sirv": "^3.0.0", - "tinyglobby": "^0.2.10", - "tinyrainbow": "^1.2.0" - }, "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "vitest": "2.1.8" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@vitest/utils": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", - "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", + "node_modules/@vueuse/shared": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.8", - "loupe": "^3.1.2", - "tinyrainbow": "^1.2.0" + "vue": "^3.5.13" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://github.com/sponsors/antfu" } }, "node_modules/agent-base": { @@ -1520,6 +2389,32 @@ "node": ">= 14" } }, + "node_modules/algoliasearch": { + "version": "5.50.2", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.50.2.tgz", + "integrity": "sha512-Tfp26yoNWurUjfgK4GOrVJQhSNXu9tJtHfFFNosgT2YClG+vPyUjX/gbC8rG39qLncnZg8Fj34iarQWpMkqefw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.16.2", + "@algolia/client-abtesting": "5.50.2", + "@algolia/client-analytics": "5.50.2", + "@algolia/client-common": "5.50.2", + "@algolia/client-insights": "5.50.2", + "@algolia/client-personalization": "5.50.2", + "@algolia/client-query-suggestions": "5.50.2", + "@algolia/client-search": "5.50.2", + "@algolia/ingestion": "1.50.2", + "@algolia/monitoring": "1.50.2", + "@algolia/recommend": "5.50.2", + "@algolia/requester-browser-xhr": "5.50.2", + "@algolia/requester-fetch": "5.50.2", + "@algolia/requester-node-http": "5.50.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -1744,6 +2639,16 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/birpc": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz", + "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -2067,6 +2972,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chai": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", @@ -2097,6 +3013,28 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -2209,6 +3147,17 @@ "dev": true, "license": "MIT" }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2254,6 +3203,22 @@ "url": "https://github.com/yeoman/configstore?sponsor=1" } }, + "node_modules/copy-anything": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz", + "integrity": "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^5.2.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", @@ -2325,6 +3290,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", @@ -2590,6 +3562,16 @@ "dev": true, "license": "ISC" }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/detect-newline": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-4.0.1.tgz", @@ -2603,6 +3585,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", @@ -2648,6 +3644,26 @@ "dev": true, "license": "MIT" }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -3127,6 +4143,16 @@ "dev": true, "license": "ISC" }, + "node_modules/focus-trap": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.8.0.tgz", + "integrity": "sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tabbable": "^6.4.0" + } + }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", @@ -3623,6 +4649,62 @@ "node": ">= 0.4" } }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", @@ -4555,6 +5637,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-what": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz", + "integrity": "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/is-wsl": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", @@ -4700,6 +5795,16 @@ "dev": true, "license": "MIT" }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -4802,6 +5907,13 @@ "node": ">=12" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true, + "license": "MIT" + }, "node_modules/macos-release": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.4.0.tgz", @@ -4825,6 +5937,31 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/markdown-it": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -4835,6 +5972,35 @@ "node": ">= 0.4" } }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -4852,6 +6018,100 @@ "node": ">= 8" } }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -4951,6 +6211,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minisearch": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.2.0.tgz", + "integrity": "sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==", + "dev": true, + "license": "MIT" + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -5188,6 +6462,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/oniguruma-to-es": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", + "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, "node_modules/open": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/open/-/open-10.0.3.tgz", @@ -5607,6 +6893,13 @@ "node": ">= 14.16" } }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -5666,6 +6959,17 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/preact": { + "version": "10.29.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.1.tgz", + "integrity": "sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, "node_modules/promise.allsettled": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.7.tgz", @@ -5684,7 +6988,18 @@ "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/proto-list": { @@ -5728,6 +7043,16 @@ "dev": true, "license": "MIT" }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/pupa": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.3.0.tgz", @@ -5851,6 +7176,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -6085,6 +7437,13 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, "node_modules/rollup": { "version": "4.60.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", @@ -6270,6 +7629,14 @@ "dev": true, "license": "MIT" }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", @@ -6405,6 +7772,65 @@ "node": ">=4" } }, + "node_modules/shiki": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", + "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/langs": "2.5.0", + "@shikijs/themes": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/shiki/node_modules/@shikijs/engine-oniguruma": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/shiki/node_modules/@shikijs/langs": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", + "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/shiki/node_modules/@shikijs/themes": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", + "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/shiki/node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -6591,6 +8017,27 @@ "node": ">=0.10.0" } }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -6723,6 +8170,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -6759,6 +8221,19 @@ "node": ">=0.10.0" } }, + "node_modules/superjson": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz", + "integrity": "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^4" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6785,6 +8260,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tabbable": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", + "dev": true, + "license": "MIT" + }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -6882,6 +8364,17 @@ "node": ">=6" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -7476,6 +8969,104 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typedoc": { + "version": "0.28.19", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.19.tgz", + "integrity": "sha512-wKh+lhdmMFivMlc6vRRcMGXeGEHGU2g8a2CkPTJjJlwRf1iXbimWIPcFolCqe4E0d/FRtGszpIrsp3WLpDB8Pw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@gerrit0/mini-shiki": "^3.23.0", + "lunr": "^2.3.9", + "markdown-it": "^14.1.1", + "minimatch": "^10.2.5", + "yaml": "^2.8.3" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 18", + "pnpm": ">= 10" + }, + "peerDependencies": { + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x" + } + }, + "node_modules/typedoc-plugin-markdown": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.11.0.tgz", + "integrity": "sha512-2iunh2ALyfyh204OF7h2u0kuQ84xB3jFZtFyUr01nThJkLvR8oGGSSDlyt2gyO4kXhvUxDcVbO0y43+qX+wFbw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "typedoc": "0.28.x" + } + }, + "node_modules/typedoc/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typescript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", + "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -7531,6 +9122,79 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universal-user-agent": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", @@ -7582,6 +9246,36 @@ "dev": true, "license": "MIT" }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vite": { "version": "5.4.21", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", @@ -7665,6 +9359,59 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/vitepress": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.4.tgz", + "integrity": "sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/css": "3.8.2", + "@docsearch/js": "3.8.2", + "@iconify-json/simple-icons": "^1.2.21", + "@shikijs/core": "^2.1.0", + "@shikijs/transformers": "^2.1.0", + "@shikijs/types": "^2.1.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^5.2.1", + "@vue/devtools-api": "^7.7.0", + "@vue/shared": "^3.5.13", + "@vueuse/core": "^12.4.0", + "@vueuse/integrations": "^12.4.0", + "focus-trap": "^7.6.4", + "mark.js": "8.11.1", + "minisearch": "^7.1.1", + "shiki": "^2.1.0", + "vite": "^5.4.14", + "vue": "^3.5.13" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vitepress/node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, "node_modules/vitest": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.8.tgz", @@ -7731,6 +9478,28 @@ } } }, + "node_modules/vue": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.32.tgz", + "integrity": "sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.32", + "@vue/compiler-sfc": "3.5.32", + "@vue/runtime-dom": "3.5.32", + "@vue/server-renderer": "3.5.32", + "@vue/shared": "3.5.32" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -8144,6 +9913,22 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", @@ -8154,6 +9939,17 @@ "node": ">=12" } }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "packages/library": { "name": "@magmacomputing/library", "version": "2.1.2", @@ -8184,7 +9980,10 @@ "@js-temporal/polyfill": "^0.5.1", "@magmacomputing/library": "^2.1.2", "@rollup/plugin-alias": "^6.0.0", - "magic-string": "^0.30.21" + "magic-string": "^0.30.21", + "typedoc": "^0.28.19", + "typedoc-plugin-markdown": "^4.11.0", + "vitepress": "^1.6.4" } } } diff --git a/package.json b/package.json index 8bb99ef4..54d3c43d 100644 --- a/package.json +++ b/package.json @@ -16,12 +16,12 @@ "build:library": "npm run build --workspace=@magmacomputing/library", "clean": "tsc -b --clean", "release": "release-it", - "release:tempo": "npm run build --workspace=@magmacomputing/tempo && npm run publish --workspace=@magmacomputing/tempo", - "version:patch": "npm version patch -w @magmacomputing/tempo -w @magmacomputing/library --no-git-tag-version", - "version:minor": "npm version minor -w @magmacomputing/tempo -w @magmacomputing/library --no-git-tag-version", - "version:major": "npm version major -w @magmacomputing/tempo -w @magmacomputing/library --no-git-tag-version", + "version:sync": "node -e \"require('child_process').execSync('npm version ' + process.env.npm_package_version + ' -w @magmacomputing/tempo -w @magmacomputing/library --no-git-tag-version', {stdio:'inherit'})\"", "repl": "npm run repl --workspace=@magmacomputing/tempo", - "core": "npm run core --workspace=@magmacomputing/tempo" + "core": "npm run core --workspace=@magmacomputing/tempo", + "docs:dev": "npm run docs:dev --workspace=@magmacomputing/tempo", + "docs:build": "npm run docs:build --workspace=@magmacomputing/tempo", + "docs:preview": "npm run docs:preview --workspace=@magmacomputing/tempo" }, "devDependencies": { "@js-temporal/polyfill": "^0.5.1", diff --git a/packages/library/src/browser/webstore.class.ts b/packages/library/src/browser/webstore.class.ts index 556bd817..9b10a6dc 100644 --- a/packages/library/src/browser/webstore.class.ts +++ b/packages/library/src/browser/webstore.class.ts @@ -1,5 +1,4 @@ -import { distinct } from '#library/array.library.js'; -import { ownEntries } from '#library/reflection.library.js'; +import { distinct, ownEntries } from '#library/primitive.library.js'; import { stringify, objectify } from '#library/serialize.library.js'; import { asType, isEmpty, isNullish, isString } from '#library/type.library.js'; import type { Property, ValueOf } from '#library/type.library.js'; diff --git a/packages/library/src/common/array.library.ts b/packages/library/src/common/array.library.ts index 0ba6d1dc..3b8baaf7 100644 --- a/packages/library/src/common/array.library.ts +++ b/packages/library/src/common/array.library.ts @@ -1,6 +1,5 @@ import { asString } from '#library/coercion.library.js'; -import { extract } from '#library/object.library.js'; -import { ownEntries } from '#library/reflection.library.js'; +import { extract, ownEntries } from '#library/primitive.library.js'; import { stringify } from '#library/serialize.library.js'; import { isNumber, isDate, isTempo, isObject, isDefined, isUndefined, isFunction, nullToValue } from '#library/type.library.js'; import type { Property } from '#library/type.library.js'; @@ -109,16 +108,6 @@ export function byLkp>(arr: T[], fnKey: GroupFn | key .reduce((acc, [key, grp]) => Object.assign(acc, { [key]: grp?.pop() }), {} as Record) } -/** return an array with no repeated elements */ -export function distinct(arr: T[]): T[]; -/** return a mapped array with no repeated elements */ -export function distinct(arr: T[], mapfn: (value: T, index: number, array: T[]) => S, thisArg?: any): S[]; -export function distinct(arr: T[], mapfn?: (value: any, index: number, array: any[]) => any) { - return mapfn - ? distinct(arr.map(mapfn)) - : Array.from(new Set(arr)); -} - /** clear down an Array */ export function clear(arr: T[]) { arr.fill(null as any).length = 0; diff --git a/packages/library/src/common/class.library.ts b/packages/library/src/common/class.library.ts index 4863c7f6..a2ad620d 100644 --- a/packages/library/src/common/class.library.ts +++ b/packages/library/src/common/class.library.ts @@ -1,4 +1,4 @@ -import { ownEntries } from '#library/reflection.library.js'; +import { ownEntries } from '#library/primitive.library.js'; import { registerSerializable } from '#library/serialize.library.js'; import { type Constructor, type Type, registerType } from '#library/type.library.js'; diff --git a/packages/library/src/common/enumerate.library.ts b/packages/library/src/common/enumerate.library.ts index c3cd41b2..aaca13ef 100644 --- a/packages/library/src/common/enumerate.library.ts +++ b/packages/library/src/common/enumerate.library.ts @@ -1,11 +1,11 @@ import { secure } from '#library/utility.library.js'; import { asType, isNumber } from '#library/type.library.js'; -import lib from '#library/symbol.library.js'; -import { ownEntries } from '#library/reflection.library.js'; +import { ownEntries } from '#library/primitive.library.js'; import { proxify } from '#library/proxy.library.js'; +import { Serializable } from '#library/class.library.js'; import { memoizeMethod } from '#library/function.library.js'; +import lib from '#library/symbol.library.js'; import type { Property, Index, KeyOf, ValueOf, EntryOf, Invert, LooseKey } from '#library/type.library.js'; -import { Serializable } from '#library/class.library.js'; declare module '#library/type.library.js' { interface TypeValueMap { diff --git a/packages/library/src/common/function.library.ts b/packages/library/src/common/function.library.ts index 388311a0..6d27ffdd 100644 --- a/packages/library/src/common/function.library.ts +++ b/packages/library/src/common/function.library.ts @@ -30,6 +30,28 @@ type Curry = ? (arg: FirstArg) => Curry : Res; +/** + * ## serialize + * Robust deterministic serialization for cache keys. + * Handles BigInt, Map, Set, Function, Undefined, and Circular refs. + */ +function serialize(val: any, seen = new WeakSet()): string { + return JSON.stringify(val, function(this: any, key: string, value: any) { + if (value === undefined) return '\u0000__undefined__\u0000'; + if (typeof value === 'bigint') return `bigint:${value}`; + if (typeof value === 'function') return `function:${value.name || 'anonymous'}`; + + if (value !== null && typeof value === 'object') { + if (seen.has(value)) return ''; + seen.add(value); + + if (value instanceof Map) return `map:[${Array.from(value.entries()).map(e => serialize(e, seen)).sort().join(',')}]`; + if (value instanceof Set) return `set:[${Array.from(value).map(v => serialize(v, seen)).sort().join(',')}]`; + } + return value; + }); +} + /** curry a Function to allow partial calls */ export function curry(fn: (...args: Args) => Res): Curry { return function curried(...args: any[]): any { @@ -40,19 +62,18 @@ export function curry(fn: (...args: Args) => Res): Curr } /** generic function to memoize repeated function calls */ -export function memoizeFunction any>(fn: F) { +export function memoizeFunction any>(fn: F): F { const cache = new Map>(); // using a Map for better key handling than plain objects - return function (...args: unknown[]) { - const key = JSON.stringify(args); // create a unique key from arguments + return function (this: any, ...args: Parameters): ReturnType { + const key = serialize(args); if (!cache.has(key)) { - // @ts-ignore const result = fn.apply(this, args); // call the original function with the correct context cache.set(key, Object.freeze(result)); // stash the result for subsequent calls } - return cache.get(key); - } + return cache.get(key)!; + } as F; } const wm = new WeakMap>(); @@ -69,7 +90,7 @@ export function memoizeMethod, T = any>(name: PropertyKe configurable: false, writable: false, value: function (this: Context, ...args: any[]) { - const key = `${String(name)},${JSON.stringify(args)}`; + const key = `${String(name)},${serialize(args)}`; let cache = wm.get(this as any); if (!cache) { // add a new Map into the WeakMap diff --git a/packages/library/src/common/international.library.ts b/packages/library/src/common/international.library.ts index 125c2209..97ecbbd0 100644 --- a/packages/library/src/common/international.library.ts +++ b/packages/library/src/common/international.library.ts @@ -1,4 +1,20 @@ import { getOffsets } from '#library/temporal.library.js'; +import { memoizeFunction } from '#library/function.library.js'; + +/** memoized helper for Intl.RelativeTimeFormat instances */ +const getRTF = memoizeFunction((locale?: string, style: Intl.RelativeTimeFormatStyle = 'narrow') => { + return new Intl.RelativeTimeFormat(locale, { style }); +}); + +/** memoized helper for Intl.ListFormat instances */ +const getLF = memoizeFunction((locale?: string, type: Intl.ListFormatType = 'conjunction', style: Intl.ListFormatStyle = 'long') => { + return new Intl.ListFormat(locale, { type, style }); +}); + +/** memoized helper for Intl.DateTimeFormat instances */ +const getDTF = memoizeFunction((locale?: string) => { + return new Intl.DateTimeFormat(locale); +}); /** * International Cookbook @@ -6,8 +22,8 @@ import { getOffsets } from '#library/temporal.library.js'; */ /** return the system's current TimeZone, Calendar, and Locale */ -export function getResolvedOptions() { - return Intl.DateTimeFormat().resolvedOptions(); +export function getDateTimeFormat() { + return getDTF().resolvedOptions(); } /** return the canonicalized locale string */ @@ -22,7 +38,7 @@ export function canonicalLocale(locale: string) { /** return a localized relative time string (e.g., 'in 2 days') */ export function getRelativeTime(value: number, unit: Intl.RelativeTimeFormatUnit, locale?: string, style: Intl.RelativeTimeFormatStyle = 'narrow') { try { - return new Intl.RelativeTimeFormat(locale, { style }).format(value, unit); + return getRTF(locale, style).format(value, unit); } catch (e) { return `${value} ${unit}`; } @@ -31,14 +47,14 @@ export function getRelativeTime(value: number, unit: Intl.RelativeTimeFormatUnit /** return a localized list string (e.g., 'A, B, and C') */ export function formatList(list: string[], locale?: string, type: Intl.ListFormatType = 'conjunction', style: Intl.ListFormatStyle = 'long') { try { - return new Intl.ListFormat(locale, { type, style }).format(list); + return getLF(locale, type, style).format(list); } catch (e) { return list.join(', '); } } /** try to infer hemisphere using the timezone's daylight-savings setting */ -export function getHemisphere(timeZone: string = getResolvedOptions().timeZone) { +export function getHemisphere(timeZone: string = getDateTimeFormat().timeZone) { try { const { jan, jul } = getOffsets(timeZone); // using default reference-year (2024) for stability diff --git a/packages/library/src/common/object.library.ts b/packages/library/src/common/object.library.ts index f9e7ef4c..0eb3728f 100644 --- a/packages/library/src/common/object.library.ts +++ b/packages/library/src/common/object.library.ts @@ -1,22 +1,7 @@ -import { ownKeys, ownEntries } from '#library/reflection.library.js'; -import { isObject, isArray, isReference, isFunction, isDefined, isEmpty, isNullish } from '#library/type.library.js'; +import { ownKeys, ownEntries } from '#library/primitive.library.js'; +import { isObject, isArray, isReference, isFunction, isDefined, isNullish } from '#library/type.library.js'; import type { Extend, Property } from '#library/type.library.js'; -/** Get nested value */ -export function extract(obj: any, path: string | number, dflt?: T): T { - if (isEmpty(path)) - return obj as T; // finished searching - if (!isObject(obj) && !isArray(obj)) - return obj as T; - - return path - .toString() - .replace(/\[([^\[\]]*)\]/g, '.$1.') // convert [indexes] to properties - .split('.') - .filter(field => !isEmpty(field)) // remove empty fields - .reduce((acc, field) => acc?.[field] ?? null, obj) ?? dflt -} - /** remove quotes around property names */ export const unQuoteObj = (obj: any) => { return JSON.stringify(obj) @@ -52,7 +37,7 @@ export const isEqual = (obj1: any = {}, obj2: any = {}): boolean => { const val2 = obj2[key]; return isReference(val1) && isReference(val2) - ? isEqual(val1, val2) // recurse into object + ? isEqual(val1, val2) // recurse into object : val1 === val2 }) } diff --git a/packages/library/src/common/primitive.library.ts b/packages/library/src/common/primitive.library.ts new file mode 100644 index 00000000..08704595 --- /dev/null +++ b/packages/library/src/common/primitive.library.ts @@ -0,0 +1,80 @@ +import sym from '#library/symbol.library.js'; +import { isEmpty } from '#library/type.library.js'; +import type { Obj, KeyOf, ValueOf, EntryOf } from '#library/type.library.js'; + +/** + * primitive.library.ts + * + * Deep-core utilities used to break circular dependencies in the library. + * These functions have NO dependencies on array, object, or reflection libraries. + */ + +/** Tuple of enumerable entries with string | symbol keys */ +export function ownEntries(json: T, all = false): EntryOf[] { + if (!json || typeof json !== 'object') + return [] as EntryOf[]; + + const unwrap = (obj: any): any => { + let curr = obj; + while (curr && curr[sym.$Target]) { + curr = curr[sym.$Target]; + } + return curr; + } + + const getOwn = (obj: any): [PropertyKey, any][] => { + const tgt = unwrap(obj); + return Reflect.ownKeys(tgt) + .filter(key => Object.getOwnPropertyDescriptor(tgt, key)?.enumerable) + .map(key => [key, tgt[key]]); + } + + if (!all) return getOwn(json) as EntryOf[]; + + const levels: [PropertyKey, any][][] = []; + const limit = 50; + let depth = 0; + let proto: any = json; + + do { + const t = unwrap(proto); + const lvl = getOwn(proto); + if (lvl.length) levels.push(lvl); + proto = Object.getPrototypeOf(t); + } while (proto && proto !== Object.prototype && ++depth < limit); + + return [...new Map(levels.reverse().flat()).entries()] as EntryOf[]; +} + +/** Array of all enumerable PropertyKeys */ +export function ownKeys(json: T, all = false): KeyOf[] { + return ownEntries(json, all).map(([key]) => key as KeyOf); +} + +/** Array of all enumerable object values */ +export function ownValues(json: T, all = false): ValueOf[] { + return ownEntries(json, all).map(([_, value]) => value as ValueOf); +} + +/** Get nested value using dot or bracket notation */ +export function extract(obj: any, path: string | number, dflt?: T): T { + if (isEmpty(path)) return obj as T; + if (obj === null || typeof obj !== 'object') return dflt as T; + + return path + .toString() + .replace(/\[([^\[\]]*)\]/g, '.$1.') + .split('.') + .filter(field => field.length > 0) + .reduce((acc, field) => acc?.[field] ?? null, obj) ?? dflt; +} + +/** Return an array with no repeated elements */ +export function distinct(arr: T[]): T[]; +/** return a mapped array with no repeated elements */ +export function distinct(arr: T[], mapfn: (value: T, index: number, array: T[]) => S, thisArg?: any): S[]; +export function distinct(arr: T[], mapfn?: (value: any, index: number, array: any[]) => any, thisArg?: any) { + return mapfn + ? distinct(arr.map(mapfn, thisArg)) + : Array.from(new Set(arr)); +} diff --git a/packages/library/src/common/proxy.library.ts b/packages/library/src/common/proxy.library.ts index 51bad36e..5df1998d 100644 --- a/packages/library/src/common/proxy.library.ts +++ b/packages/library/src/common/proxy.library.ts @@ -130,6 +130,10 @@ const assertSafe = (t: any, k: PropertyKey, v: any) => { */ export function secureRef(target: T): T { return new Proxy(target, { + get(t, k) { + if (k === lib.$Target) return t; + return Reflect.get(t, k); + }, set(t, k, v) { assertSafe(t, k, v); return Reflect.set(t, k, v); diff --git a/packages/library/src/common/reflection.library.ts b/packages/library/src/common/reflection.library.ts index 2ad8e5fa..a37e9cf6 100644 --- a/packages/library/src/common/reflection.library.ts +++ b/packages/library/src/common/reflection.library.ts @@ -1,31 +1,30 @@ -import lib from '#library/symbol.library.js'; -import { distinct } from '#library/array.library.js'; +import { distinct, ownKeys, ownEntries } from '#library/primitive.library.js'; import { asType, getType, isEmpty, isFunction, isPrimitive } from '#library/type.library.js'; -import type { Obj, KeyOf, ValueOf, EntryOf, Primitives } from '#library/type.library.js'; +import type { Obj, KeyOf, Primitives } from '#library/type.library.js'; /** mutate Object | Array by excluding values with specified primitive 'types' */ export function exclude(obj: T, ...types: (Primitives | Lowercase)[]) { const exclusions = distinct(types.map(item => item.toLowerCase())) as typeof types; - if (obj && typeof obj === 'object') { // only works on Objects and Arrays + if (obj && typeof obj === 'object') { // only works on Objects and Arrays const keys = [] as KeyOf[]; (ownEntries(obj) as [KeyOf, Obj][]) .forEach(([key, value]) => { const type = getType(value); - if (['Object', 'Array'].includes(type)) // recurse into object + if (['Object', 'Array'].includes(type)) // recurse into object exclude(value, ...exclusions); if (isPrimitive(value) && exclusions.includes(type.toLowerCase() as Primitives)) keys.push(key) }) - if (!isEmpty(keys)) // if any values to be excluded + if (!isEmpty(keys)) // if any values to be excluded omit(obj, ...keys); } - return obj; // return Object reference, even though Object has been mutated + return obj; // return Object reference, even though Object has been mutated } /** mutate Object | Array reference with properties removed */ @@ -37,7 +36,7 @@ export function omit(obj: T, ...keys: PropertyKey[]) { switch (type) { case 'Array': if (isEmpty(keys)) { - value.length = 0; // clear Array + value.length = 0; // clear Array break; } keys @@ -47,11 +46,11 @@ export function omit(obj: T, ...keys: PropertyKey[]) { break; case 'Object': - (isEmpty(keys) ? ownKeys(value) : keys) // if no {keys}, assume all ownKeys + (isEmpty(keys) ? ownKeys(value) : keys) // if no {keys}, assume all ownKeys .forEach(key => Reflect.deleteProperty(value, key)); } - return value; // return Object reference, even though Object has been mutated + return value; // return Object reference, even though Object has been mutated } /** remove all ownKeys from an Object | Array */ @@ -64,54 +63,6 @@ export function reset(orig: T, obj?: T) { return Object.assign(purge(orig), { ...obj }); } -// These functions are to preserve the typescript 'type' of an object's keys & values -// and will include both string and symbol keys - -/** array of all enumerable PropertyKeys */ -export function ownKeys(json: T, all = false) { - return ownEntries(json, all).map(([key]) => key as KeyOf); -} - -/** array of all enumerable object values */ -export function ownValues(json: T, all = false) { - return ownEntries(json, all).map(([_, value]) => value as ValueOf); -} - -/** tuple of enumerable entries with string | symbol keys */ -export function ownEntries(json: T, all = false) { - if (!json || typeof json !== 'object') - return [] as EntryOf[]; - - const getOwn = (obj: any): [PropertyKey, any][] => { // helper function to get own enumerable properties - const tgt = obj[lib.$Target] ?? obj; // unwrap if it's a proxy - - return Reflect.ownKeys(tgt) - .filter(key => Object.getOwnPropertyDescriptor(tgt, key)?.enumerable) - .map(key => [key, tgt[key]]); - } - - if (!all) - return getOwn(json) as EntryOf[]; - - // all=true: collect per-level bottom-up, reverse to top-down, dedup via Map - // Map preserves first-insertion position but allows value update (own key shadows ancestor) - const levels: [PropertyKey, any][][] = []; - const limit = 50; // prevent infinite loops (increased from 10) - let depth = 0; - let proto: any = json; - - do { - const t = proto[lib.$Target] ?? proto; // CRITICAL: unwrap before checking marker to avoid trap recursion - - const lvl = getOwn(proto); - if (lvl.length) levels.push(lvl); - - proto = Object.getPrototypeOf(t); - } while (proto && proto !== Object.prototype && ++depth < limit); - - return [...new Map(levels.reverse().flat()).entries()] as EntryOf[]; -} - /** return an Object containing all 'own' and 'inherited' enumerable properties */ export function allObject(json: T) { return Object.fromEntries(ownEntries(json, true)); diff --git a/packages/library/src/common/serialize.library.ts b/packages/library/src/common/serialize.library.ts index 7ed1abe6..35fa71a8 100644 --- a/packages/library/src/common/serialize.library.ts +++ b/packages/library/src/common/serialize.library.ts @@ -1,5 +1,5 @@ import { curry } from '#library/function.library.js'; -import { ownKeys, ownValues, ownEntries } from '#library/reflection.library.js'; +import { ownKeys, ownValues, ownEntries } from '#library/primitive.library.js'; import { isType, asType, isEmpty, isDefined, isUndefined, isNullish, isString, isObject, isArray, isFunction, isSymbolFor, isSymbol } from '#library/type.library.js'; import type { Obj, Type } from '#library/type.library.js'; diff --git a/packages/library/src/common/symbol.library.ts b/packages/library/src/common/symbol.library.ts index 728d3932..f855cd58 100644 --- a/packages/library/src/common/symbol.library.ts +++ b/packages/library/src/common/symbol.library.ts @@ -3,28 +3,29 @@ * These symbols utilize Symbol.for() to ensure consistency across module boundaries. */ -const $Target = Symbol.for('$LibraryTarget'); -const $Discover = Symbol.for('$LibraryDiscover'); -const $Extensible = Symbol.for('$LibraryExtensible'); -const $Inspect = Symbol.for('nodejs.util.inspect.custom'); -const $Logify = Symbol.for('$LibraryLogify'); -const $Registry = Symbol.for('$LibraryRegistry'); -const $Register = Symbol.for('$LibraryRegister'); +const sym = { + /** key to use for identifying the raw target of a Proxy */ + $Target: Symbol.for('$LibraryTarget'), + /** key to trigger full discovery of all lazy properties */ + $Discover: Symbol.for('$LibraryDiscover'), + /** key to identify objects that should remain extensible */ + $Extensible: Symbol.for('$LibraryExtensible'), + /** NodeJS custom inspection symbol for the Proxy pattern */ + $Inspect: Symbol.for('nodejs.util.inspect.custom'), + /** unique marker to identify a Logify configuration object */ + $Logify: Symbol.for('$LibraryLogify'), + /** key to identify the global type registry */ + $Registry: Symbol.for('$LibraryRegistry'), + /** key to identify the global registration hook */ + $Register: Symbol.for('$LibraryRegister'), +} as const; -/** identify and mark a Logify configuration object */ export function markConfig(obj: T): T { - if (!(obj as any)[$Logify] && Object.isExtensible(obj)) { - Object.defineProperty(obj, $Logify, { value: true, enumerable: false, writable: true, configurable: true }); - } - return obj; -} +/** identify and mark a Logify configuration object */ +export function markConfig(obj: T): T { + if (!(obj as any)[sym.$Logify] && Object.isExtensible(obj)) + Object.defineProperty(obj, sym.$Logify, { value: true, enumerable: false, writable: true, configurable: true }); -export default { -/** key to use for identifying the raw target of a Proxy */ $Target, -/** key to trigger full discovery of all lazy properties */ $Discover, -/** key to identify objects that should remain extensible */$Extensible, -/** NodeJS custom inspection symbol for the Proxy pattern */$Inspect, -/** unique marker to identify a Logify configuration object */$Logify, -/** key to identify the global type registry */ $Registry, -/** key to identify the global registration hook */ $Register, + return obj; } +export default sym; diff --git a/packages/library/src/common/temporal.library.ts b/packages/library/src/common/temporal.library.ts index cc9deaf5..41fdf465 100644 --- a/packages/library/src/common/temporal.library.ts +++ b/packages/library/src/common/temporal.library.ts @@ -21,9 +21,9 @@ export function unix() { return Math.trunc(instant().epochMilliseconds / 1_000); } -/** return the current Unix timestamp (milliseconds) */ +/** return the current Unix timestamp (nanoseconds) */ export function epoch() { - return instant().epochMilliseconds; + return instant().epochNanoseconds; } /** return the January and July offsets (nanoseconds) for a given timezone and year */ @@ -71,3 +71,37 @@ export function normaliseFractionalDurations(payload: Record) { return payload; } + +// ── Temporal Factory Helpers ───────────────────── +// These centralise all runtime Temporal constructor +// access so that consuming modules never need to +// import a polyfill directly. +// ───────────────────────────────────────────────── + +/** + * ## toZonedDateTime + * Create a `Temporal.ZonedDateTime` from a + * property-bag (year, month, day, …, timeZone, calendar). + */ +export function toZonedDateTime(bag: Temporal.ZonedDateTimeLike & { timeZone: Temporal.TimeZoneLike, calendar?: Temporal.CalendarLike }): Temporal.ZonedDateTime { + return Temporal.ZonedDateTime.from(bag); +} + +/** + * ## toPlainDate + * Create a `Temporal.PlainDate` from a + * property-bag or ISO string. + */ +export function toPlainDate(bag: Temporal.PlainDateLike | string): Temporal.PlainDate { + return Temporal.PlainDate.from(bag); +} + +/** + * ## toInstant + * Create a `Temporal.Instant` from epoch + * nanoseconds (bigint). + */ +export function toInstant(epochNanoseconds: bigint): Temporal.Instant { + return Temporal.Instant.fromEpochNanoseconds(epochNanoseconds); +} + diff --git a/packages/library/src/common/temporal.polyfill.ts b/packages/library/src/common/temporal.polyfill.ts index 7bd0a042..baa8fb33 100644 --- a/packages/library/src/common/temporal.polyfill.ts +++ b/packages/library/src/common/temporal.polyfill.ts @@ -1,13 +1,19 @@ /** * This file verifies native Temporal API support. - * Any library that depends on the Temporal API should ensure this is loaded first. + * It does NOT import or bundle any polyfill. + * If Temporal is not available, a clear error is thrown. + * + * Consumers who need polyfill support should load one + * (e.g. `@js-temporal/polyfill`) at their application + * entry point, before importing this library. */ -import { Temporal } from '@js-temporal/polyfill'; - -// @ts-ignore -if (!globalThis.Temporal) { - Object.defineProperty(globalThis, 'Temporal', { value: Temporal, enumerable: false, configurable: true, writable: true }); +if (typeof globalThis.Temporal === 'undefined') { + throw new Error( + 'Temporal API is not available. ' + + 'Please use a runtime with native Temporal support (Node 22+, Deno, Bun) ' + + 'or load a polyfill (e.g. @js-temporal/polyfill) before importing this library.' + ); } export { } diff --git a/packages/library/src/common/utility.library.ts b/packages/library/src/common/utility.library.ts index a471a96c..2c13e6a0 100644 --- a/packages/library/src/common/utility.library.ts +++ b/packages/library/src/common/utility.library.ts @@ -1,4 +1,4 @@ -import { ownValues } from '#library/reflection.library.js'; +import { ownValues } from '#library/primitive.library.js'; import { isDefined, isPrimitive } from '#library/type.library.js'; import type { Secure, ValueOf } from '#library/type.library.js'; diff --git a/packages/tempo/.vitepress/config.ts b/packages/tempo/.vitepress/config.ts new file mode 100644 index 00000000..00ae03e5 --- /dev/null +++ b/packages/tempo/.vitepress/config.ts @@ -0,0 +1,61 @@ +import { defineConfig } from 'vitepress' + +export default defineConfig({ + title: "Tempo", + description: "The Professional Date-Time Library for Temporal", + themeConfig: { + logo: '/logo.svg', + search: { + provider: 'local' + }, + nav: [ + { text: 'Guide', link: '/README' }, + { text: 'API', link: '/doc/tempo.api' }, + { text: 'Releases', link: '/doc/releases/versions' } + ], + sidebar: [ + { + text: 'Getting Started', + items: [ + { text: 'Introduction', link: '/README' }, + { text: 'Migration Guide', link: '/doc/migration-guide' }, + { text: 'Version History', link: '/doc/releases/versions' } + ] + }, + { + text: 'Core Concepts', + items: [ + { text: 'Configuration', link: '/doc/tempo.config' }, + { text: 'Modularity', link: '/doc/tempo.modularity' }, + { text: 'Shorthand Engine', link: '/doc/tempo.shorthand' }, + { text: 'Terms System', link: '/doc/tempo.term' }, + { text: 'Ticker Plugin', link: '/doc/tempo.ticker' } + ] + }, + { + text: 'Architecture & Internals', + items: [ + { text: 'Core Architecture', link: '/doc/architecture' }, + { text: 'Soft Freeze Strategy', link: '/doc/soft_freeze_strategy' }, + { text: 'Lazy Evaluation', link: '/doc/lazy-evaluation-pattern' }, + { text: 'Performance Benchmarks', link: '/doc/tempo.benchmarks' } + ] + }, + { + text: 'Ecosystem', + items: [ + { text: 'Contribution Guide', link: '/CONTRIBUTING' }, + { text: 'Comparison', link: '/doc/comparison' }, + { text: 'Project Vision', link: '/doc/vision' } + ] + } + ], + socialLinks: [ + { icon: 'github', link: 'https://github.com/magmacomputing/magma/tree/main/packages/tempo' } + ], + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright © 2026-present Magma Computing' + } + } +}) diff --git a/packages/tempo/CONTRIBUTING.md b/packages/tempo/CONTRIBUTING.md new file mode 100644 index 00000000..7ac1e2ad --- /dev/null +++ b/packages/tempo/CONTRIBUTING.md @@ -0,0 +1,57 @@ +# Contributing to Tempo + +Thank you for your interest in contributing to Tempo! This project is a professional-grade date-time utility built on top of the native `Temporal` API. To maintain the high performance and architectural integrity of the library, please follow these guidelines. + +## 🏗️ Project Architecture + +Tempo uses several advanced JavaScript patterns that contributors should be familiar with: +- **[Proxy-Delegators](./doc/lazy-evaluation-pattern.md)**: For $O(1)$ lazy evaluation of instance properties. +- **[Soft Freeze](./doc/soft_freeze_strategy.md)**: For secure but extensible global registries. +- **[Logify](./doc/architecture.md)**: For decoupled, symbol-based diagnostic logging. + +## 🛠️ Local Development + +### Prerequisites +- **Node.js 20+** (Tempo requires native `Temporal` support or a robust environment). +- **npm v9+** (For monorepo workspace support). + +### Setup +```bash +git clone https://github.com/magmacomputing/magma.git +cd magma +npm install +``` + +### Building +Tempo is a TypeScript project that compiles to **ES2022**. +```bash +npm run build -w @magmacomputing/tempo +``` + +## 🧪 Testing + +We use **Vitest** for our test suite. All new features or bug fixes must include corresponding tests. + +- **Run all tests**: `npm run test` +- **Watch mode**: `npm run dev` +- **Coverage**: `npm run coverage` + +> [!IMPORTANT] +> **Zero State Contamination**: Tests must be idempotent. If your test modifies a global registry (e.g., `Tempo.extend`), ensure you use the `using` keyword or manually call `Tempo[Symbol.dispose]()` to reset the engine for the next test. + +## 📜 Coding Standards + +1. **Private Fields**: Use native `#private` fields for internal state that should not be accessible via Proxies. +2. **Internal Symbols**: Use the symbols exported from `tempo.symbol.ts` for cross-module internal communication. +3. **Immutability**: Tempo instances are strictly immutable. Any method that changes state must return a *new* instance. +4. **Documentation**: If you change a public API, please update the corresponding `.md` file in the `doc/` directory. + +## 🚀 Pull Request Process + +1. Create a new branch for your feature or fix. +2. Ensure the test suite passes at 100%. +3. Update the `CHANGELOG.md` with a brief description of your changes. +4. Open a Pull Request and describe the problem you are solving and your technical approach. + +--- +*Tempo is maintained by Magma Computing. For commercial support or architectural consulting, please reach out via the [Contact Page](https://magmacomputing.com.au).* diff --git a/packages/tempo/README.md b/packages/tempo/README.md index 47d44ab2..4b0e5f4b 100644 --- a/packages/tempo/README.md +++ b/packages/tempo/README.md @@ -1,14 +1,39 @@ -# Tempo + + + + + + + + + + +
+ Tempo logo + + Tempo +
+ The Professional Date-Time Library for Temporal +
+ +
**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**. -[![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) +
+ + + + + + + + + +
License: MITTemporalTypeScript ReadyNative ESM
+
## 🚀 Overview - Working with `Date` in JavaScript has historically been painful. The new `Temporal` standard (Stage 4) fixes this, but it can be verbose and strict when parsing strings. **Tempo** bridges that gap by providing: @@ -19,31 +44,33 @@ Working with `Date` in JavaScript has historically been painful. The new `Tempor - **Plugin**: Extend core functionality safely; built-ins (like the Ticker) are ready-to-use in the full package, or can be opted-into via side-effect imports when using the lean Core engine. - **Terms**: Access complex date ranges (Quarters, Seasons, Zodiacs) easily. - **Immutable**: Operations (like `set` and `add`) return a new `Tempo` instance, ensuring thread safety and predictability. - -```javascript -// v2.1.2 - Automatic registration via side-effect import -import '@magmacomputing/tempo/ticker'; -``` - ## 🤔 Why Tempo? - If you're looking for a **modern date library** that leverages the native power of the browser's `Temporal` API, Tempo is for you. - **Type Safety**: Built from the ground up with TypeScript. - **Performance**: High-performance wrapper with minimal overhead. - **Familiarity**: If you like the fluent syntax of **Moment** or **Day.js**, you'll feel right at home. - **Future-Proof**: Built on the TC39 `Temporal` standard. - ## 🎯 Target Audience + Tempo is built for **modern JavaScript developers** who require a premium, type-safe, and developer-friendly interface over the native Temporal API. It is ideal for those migrating from legacy libraries like **Moment.js**, **Day.js**, or **Luxon**, as well as teams building complex, time-sensitive applications that demand reliability, immutability, and high-performance parsing. +Tempo is designed for a broad spectrum of developers and teams who interact with date and time data in JavaScript: + +### 1. Modern JavaScript Developers +For those who want to leverage the power of the native `Temporal` API today but find its raw implementation too verbose or strict for rapid development. +### 2. Teams Migrating from Legacy Libraries +Ideal for organizations looking to move away from **Moment.js**, **Day.js**, or **Luxon** without sacrificing the fluent, chainable API and flexible parsing on which they've come to rely. + +### 3. Enterprise Application Architects +For those building complex, time-sensitive systems (such as financial platforms, scheduling engines, or global logistics trackers) that demand the precision of Temporal combined with a premium, type-safe developer experience. ## 📦 Installation ```bash npm install @magmacomputing/tempo ``` -### 💻 Server (Node.js) +### 💻 on the Server Tempo is a native ESM package. In Node.js (20+), simply import the class. Node.js, Bun and Deno support native ESM out of the box. @@ -54,7 +81,7 @@ const t = new Tempo('next Friday'); console.log(t.format('{dd} {mon} {yyyy}')); ``` -### 🌐 Browser (Import Maps) +### 🌐 in the Browser (Import Maps) Since Tempo is a native ESM package, you can use it directly in modern browsers using `importmap`: ```html @@ -72,7 +99,7 @@ Since Tempo is a native ESM package, you can use it directly in modern browsers ``` -### 📦 Browser (Script Tag) +### 📦 in the Browser (Script Tag) For environments without `importmap` support or simple prototypes, use the bundled version: ```html @@ -82,7 +109,6 @@ For environments without `importmap` support or simple prototypes, use the bundl console.log(t.toString()); ``` - ## 🛠️ Quick Start ```javascript @@ -101,53 +127,8 @@ const startOfMonth = now.set({ start: 'month' }); 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" ``` + Looking for the full API reference? Check out the **[Tempo API Guide](./doc/tempo.api.md)**. -## 📚 Documentation - -> [!IMPORTANT] -> **Documentation Update**: We have been made aware that the documentation links between npmjs.com (the package host) and GitHub (the source repository) were broken a short while back. To overcome this, we have altered our Publish process to now include the doc/ subfolder (along with dist/ folder). We sincerely apologize for any past trouble and thank you for your support. - -## ✨ New in v2.1.2 - -Tempo v2.1.2 is a major milestone, delivering a more reactive architecture and rock-solid stability. - -- **Modular Architecture**: Tempo is now split into `core` and optional plugin/modules, allowing you to include only what you need. -- **Improved Logging**: Internal logging uses context-aware Symbols for better decoupling. -- **Static API**: `Tempo.duration()` static method for convenient duration creation. - -- **Side Effect Registration**: Plugins now support automatic registration. While the full package includes all modules by default, Core users can activate features simply by importing the corresponding module (e.g., `@magmacomputing/tempo/ticker`). -- **100% Reliability**: The engine passes all regression tests, ensuring complete stability across parsing, calculation, and formatting routines. -- **Unified Term Logic**: Terms (like Quarters and Seasons) are now fully integrated. Use `#` in `set()` to jump to boundaries, and `{#term}` in `format()` to embed semantic labels (e.g. "Second Quarter") directly into strings. -- **Relational Term Math**: A category-first feature. Shift dates by semantic "steps" with `.add({ '#quarter': 1 })`. Tempo preserves your relative duration within the term, jumping across gaps and handling overflows with mathematical precision. -- **Fluent Immutable Boundaries**: Term ranges now return fully functional, frozen `Tempo` instances for `start` and `end`, allowing for seamless chaining like `t.term.qtr.start.format('{dd} {mmm}')`. -- **Ticker Reliability**: Fully stabilized the Ticker subsystem by resolving async generator hangs and synchronizing pulse counts ($N$ pulses for `limit: N`), guaranteeing 100% predictable reactive streams. -- **Parsing Engine Optimization**: Re-engineered pattern generation for $O(1)$ instance creation and improved support for custom layout literals in local/one-off parsers. -- **Enhanced Parsing**: Significant refinements to the natural language engine for even more intuitive relative-date handling. -## ⚠️ Migrating from v1.x - -Tempo v2.1.2 continues the architectural improvements started in v2.0: - -- **Modular Architecture**: Use optional modules for `duration` and `format` to keep your bundle lean. -- **Automatic Registration**: Built-ins self-register on import (just import the module). - -For detailed technical guides, please refer to: -- [Vision & Value Proposition](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/vision.md) -- [Tempo vs. Native Temporal](./doc/tempo-vs-temporal.md) ([v2.1.2](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/tempo-vs-temporal.md)) -- [Tempo vs. The Competition](./doc/comparison.md) ([v2.1.2](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/comparison.md)) -- [Tempo Modularity](./doc/tempo.modularity.md) ([v2.1.2](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/tempo.modularity.md)) -- [Tempo API Reference](./doc/tempo.api.md) ([v2.1.2](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/tempo.api.md)) -- [Tempo Class Documentation](./doc/Tempo.md) ([v2.1.2](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/Tempo.md)) -- [Tempo Term Shorthand](./doc/tempo.shorthand.md) ([v2.1.2](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/tempo.shorthand.md)) -- [Plugin System](./doc/tempo.plugin.md) ([v2.1.2](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/tempo.plugin.md)) -- [Configuration Guide](./doc/tempo.config.md) ([v2.1.2](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/tempo.config.md)) -- [Architecture & Internal Protection](./doc/architecture.md) ([v2.1.2](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/architecture.md)) -- [Commercial Support](./doc/commercial.md) ([v2.1.2](https://github.com/magmacomputing/magma/blob/v2.1.2/packages/tempo/doc/commercial.md)) - -## 💖 Support the Project - -If you find **Tempo** useful and want to support its development, please consider sponsoring us on GitHub! Your support helps keep the project active and premium. - -[![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?style=for-the-badge&logo=github-sponsors)](https://github.com/sponsors/magmacomputing) ## 💬 Contact & Support diff --git a/packages/tempo/scripts/core.ts b/packages/tempo/bin/core.ts similarity index 100% rename from packages/tempo/scripts/core.ts rename to packages/tempo/bin/core.ts diff --git a/packages/tempo/scripts/repl.ts b/packages/tempo/bin/repl.ts similarity index 67% rename from packages/tempo/scripts/repl.ts rename to packages/tempo/bin/repl.ts index 3584f43d..66a04f8f 100644 --- a/packages/tempo/scripts/repl.ts +++ b/packages/tempo/bin/repl.ts @@ -1,10 +1,9 @@ import { Tempo, enums } from '#tempo'; -import { stringify, objectify, enumify, getType } from '#library'; -import { Token, Snippet } from '#tempo/tempo.default.js'; +import { stringify, objectify, enumify, getType, Pledge } from '#library'; import '#tempo/ticker'; -// pre-load Tempo and Token to the global scope for ease of use in the REPL -Object.assign(globalThis, { Tempo, Token, Snippet, getType, stringify, objectify, enumify, enums }); +// pre-load Tempo to the global scope for ease of use in the REPL +Object.assign(globalThis, { Tempo, getType, stringify, objectify, enumify, enums, Pledge }); console.log(`\n\x1b[38;2;252;194;1m\x1b[1m ⏳ Tempo \x1b[0m\x1b[38;2;45;212;191mREPL initialized.\x1b[0m\n`); diff --git a/packages/tempo/scripts/resolve-types.ts b/packages/tempo/bin/resolve-types.ts similarity index 80% rename from packages/tempo/scripts/resolve-types.ts rename to packages/tempo/bin/resolve-types.ts index a29a77a8..3682d56d 100644 --- a/packages/tempo/scripts/resolve-types.ts +++ b/packages/tempo/bin/resolve-types.ts @@ -59,13 +59,19 @@ function rewrite(filePath: string) { replacement = './'; } else { // If at root (or elsewhere), #library/ becomes ./lib/ (with relative prefix) - let prefix = './'; - for (let i = 0; i < depth; i++) prefix = '../' + prefix; - replacement = `${prefix}lib/`; + let prefix = ''; + for (let i = 0; i < depth; i++) prefix += '../'; + replacement = `${prefix || './'}lib/`; } const updatedContent = content - .replace(/#library\//g, replacement) + .replace(/#library\/([^"')]+\.js)/g, (match, libPath) => { + // NOTE: We use path.basename here because the @magmacomputing/library distribution + // is currently flat (dist/common/*.js), and our resolve process flattens all + // used library modules into the local dist/lib/ directory. + const fileName = path.basename(libPath); + return `${replacement}${fileName}`; + }) .replace(/#library(['"])/g, (match, quote) => `${replacement}index.js${quote}`); if (content !== updatedContent) { diff --git a/packages/tempo/bin/setup.polyfill.ts b/packages/tempo/bin/setup.polyfill.ts new file mode 100644 index 00000000..58d8dfab --- /dev/null +++ b/packages/tempo/bin/setup.polyfill.ts @@ -0,0 +1,21 @@ +/** + * Test/Dev Polyfill Bootstrap + * + * This file loads the @js-temporal/polyfill into + * globalThis so that the passive assertion in + * temporal.polyfill.ts succeeds. + * + * This is the "bring your own polyfill" entry point + * for development and testing environments that do + * not yet have native Temporal support. + */ +import { Temporal } from '@js-temporal/polyfill'; + +if (typeof globalThis.Temporal === 'undefined') { + Object.defineProperty(globalThis, 'Temporal', { + value: Temporal, + enumerable: false, + configurable: true, + writable: true, + }); +} diff --git a/packages/tempo/scripts/tsconfig.json b/packages/tempo/bin/tsconfig.json similarity index 100% rename from packages/tempo/scripts/tsconfig.json rename to packages/tempo/bin/tsconfig.json diff --git a/packages/tempo/demo/1-esm-importmap.html b/packages/tempo/demo/1-esm-importmap.html new file mode 100644 index 00000000..5bd6d4af --- /dev/null +++ b/packages/tempo/demo/1-esm-importmap.html @@ -0,0 +1,67 @@ + + + + + + Demo 1: ESM + Import Map + + + + +

⏳ Demo 1: ESM + Import Map

+
+ STATUS +
Loading...
+
+ RESULT +

+    
+ + + + + + + \ No newline at end of file diff --git a/packages/tempo/demo/2-global-bundle.html b/packages/tempo/demo/2-global-bundle.html new file mode 100644 index 00000000..8cf9e327 --- /dev/null +++ b/packages/tempo/demo/2-global-bundle.html @@ -0,0 +1,61 @@ + + + + + + Demo 2: Global Bundle + + + + +

⏳ Demo 2: Global Bundle

+
+ STATUS +
Loading...
+
+ RESULT +

+    
+ + + + + + + + \ No newline at end of file diff --git a/packages/tempo/demo/3-modular-granular.html b/packages/tempo/demo/3-modular-granular.html new file mode 100644 index 00000000..e555e1b8 --- /dev/null +++ b/packages/tempo/demo/3-modular-granular.html @@ -0,0 +1,49 @@ + + + + + Demo 3: Modular (Granular) + + + +

⏳ Demo 3: Modular (Granular)

+
+ STATUS +
Loading...
+
+ RESULT +

+    
+ + + + + + diff --git a/packages/tempo/demo/4-error-no-plugin.html b/packages/tempo/demo/4-error-no-plugin.html new file mode 100644 index 00000000..0816d272 --- /dev/null +++ b/packages/tempo/demo/4-error-no-plugin.html @@ -0,0 +1,48 @@ + + + + + Demo 4: Expected Error (No Plugin) + + + +

⏳ Demo 4: Expected Error (No Plugin)

+
+ STATUS +
Testing for expected error...
+
+ CAPTURED ERROR MESSAGE +
Waiting for error...
+
+ + + + + + diff --git a/packages/tempo/demo/index.html b/packages/tempo/demo/index.html new file mode 100644 index 00000000..70af293a --- /dev/null +++ b/packages/tempo/demo/index.html @@ -0,0 +1,131 @@ + + + + + + Tempo v2.1.2 | Verification Dashboard + + + + + +
+
+

⏳ Tempo v2.1.2

+

Official Verification Dashboard & Implementation Reference

+
+ ✓ Build: Passing + ✓ Polyfill: External + ✓ ESM: Granular + ✓ Bundle: IIFE Named +
+
+ +
+ +
+
+ Scenario 1: ESM + Import Maps + View Full Page ↗ +
+ +
+ + +
+
+ Scenario 2: Global IIFE Bundle + View Full Page ↗ +
+ +
+ + +
+
+ Scenario 3: Modular (Granular) + View Full Page ↗ +
+ +
+ + +
+
+ Scenario 4: Graceful Failure + View Full Page ↗ +
+ +
+
+ +
+ © 2026 Magma Computing Solutions. Verified for Production Deployment. +
+
+ + diff --git a/packages/tempo/doc/Tempo.md b/packages/tempo/doc/Tempo.md index e5435707..35f9f88b 100644 --- a/packages/tempo/doc/Tempo.md +++ b/packages/tempo/doc/Tempo.md @@ -65,13 +65,13 @@ npm install @magmacomputing/tempo --- -## ✨ What's New in v2.0.1 (Stabilized) -The **v2.0.1** release focus is on internal hardening, security, and developer ergonomics: +## ✨ What's New in v2.1.2 (Stabilized) +The **v2.1.2** release represents the stabilization of the modular architecture and the introduction of advanced relational math: -- **Parsing Engine Stabilization**: Re-engineered pattern generation for $O(1)$ instance creation and fixed a bug where local layout literals were being destroyed during state synchronization. -- **Registry Security (Soft Freeze)**: Core registries (`TIMEZONE`, `NUMBER`, `FORMAT`) are now protected by a proxy-based "Soft Freeze" layer. They are read-only for public consumers while remaining extensible via the primary public API **`Tempo.extend({ timeZones, formats, ... })`**. -- **Ticker & Registry Hardening**: Fully synchronized `pulse()` and `next()` logic to ensure consistent pulse counts ($N$ pulses for `limit: N`); resolved async generator hangs and cold-start scheduling issues, ensuring 100% reliability for long-running reactive streams. -- **Project Structure Refactoring**: Internal tooling moved from `#tempo/bin` to `#tempo/scripts` for better ESM/TS integration. +- **Modular Architecture**: Tempo is now split into **Core** (lite) and **Full** (batteries-included) versions. Features like Tickers and Durations are now side-effectable plugins. +- **Relational Math**: Shifting by terms (e.g., `.add({ '#quarter': 1 })`) now uses **Cycle Preservation**, maintaining your relative offset within semantic cycles. +- **Scan-and-Consume Guard**: A high-performance internal matching engine that enables $O(1)$ instantiation even with dozens of active terminology plugins. +- **Logify & Symbol Internalization**: Internal diagnostics and lifecycle hooks are now protected by context-aware Symbols, preventing state leakage and ensuring monorepo compatibility. --- diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/README.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/README.md new file mode 100644 index 00000000..0501d669 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/README.md @@ -0,0 +1,22 @@ +[**@magmacomputing/tempo**](../../../README.md) + +*** + +## Interfaces + +- [BaseOptions](interfaces/BaseOptions.md) +- [Config](interfaces/Config.md) +- [Discovery](interfaces/Discovery.md) +- [Parse](interfaces/Parse.md) +- [PluginContainer](interfaces/PluginContainer.md) +- [State](interfaces/State.md) + +## Type Aliases + +- [Match](type-aliases/Match.md) +- [MatchExtend](type-aliases/MatchExtend.md) +- [OptionsKeep](type-aliases/OptionsKeep.md) +- [PatternOption](type-aliases/PatternOption.md) +- [PatternOptionArray](type-aliases/PatternOptionArray.md) +- [Registry](type-aliases/Registry.md) +- [TimeStamp](type-aliases/TimeStamp.md) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/BaseOptions.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/BaseOptions.md new file mode 100644 index 00000000..d34856fa --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/BaseOptions.md @@ -0,0 +1,241 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +Defined in: [tempo.type.ts:155](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L155) + +the Options object found in a config-module, or passed to a call to Tempo.init({}) or 'new Tempo({})' + +## Extended by + +- [`BaseOptions`](../../Tempo/interfaces/BaseOptions.md) + +## Properties + +### calendar + +> **calendar**: `CalendarLike` + +Defined in: [tempo.type.ts:162](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L162) + +Temporal calendar + +*** + +### catch + +> **catch**: `boolean` \| `undefined` + +Defined in: [tempo.type.ts:159](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L159) + +catch or throw Errors + +*** + +### debug + +> **debug**: `boolean` \| `undefined` + +Defined in: [tempo.type.ts:158](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L158) + +additional console.log for tracking + +*** + +### discovery + +> **discovery**: `string` \| `symbol` + +Defined in: [tempo.type.ts:157](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L157) + +globalThis Discovery Symbol + +*** + +### event + +> **event**: `Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> + +Defined in: [tempo.type.ts:174](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L174) + +custom date aliases (events). + +*** + +### formats + +> **formats**: `Property`\<`any`\> + +Defined in: [tempo.type.ts:176](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L176) + +custom format strings to merge in the FORMAT enum + +*** + +### layout + +> **layout**: [`PatternOption`](../type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +Defined in: [tempo.type.ts:173](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L173) + +patterns to help parse value + +*** + +### locale + +> **locale**: `string` + +Defined in: [tempo.type.ts:163](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L163) + +locale (e.g. en-AU) + +*** + +### mdyLayouts + +> **mdyLayouts**: [`Pair`](../../../../type-aliases/Pair.md)[] + +Defined in: [tempo.type.ts:171](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L171) + +swap parse-order of layouts + +*** + +### mdyLocales + +> **mdyLocales**: `string` \| `string`[] + +Defined in: [tempo.type.ts:170](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L170) + +locale-names that prefer 'mm-dd-yy' date order + +*** + +### mode? + +> `optional` **mode?**: `"auto"` \| `"strict"` \| `"defer"` + +Defined in: [tempo.type.ts:169](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L169) + +initialization strategy ('auto'|'strict'|'defer') + +*** + +### period + +> **period**: [`PatternOption`](../type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +Defined in: [tempo.type.ts:175](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L175) + +custom time aliases (periods). + +*** + +### pivot + +> **pivot**: `number` + +Defined in: [tempo.type.ts:164](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L164) + +pivot year for two-digit years + +*** + +### plugins + +> **plugins**: [`Plugin`](../../../../interfaces/Plugin.md) \| [`Plugin`](../../../../interfaces/Plugin.md)[] + +Defined in: [tempo.type.ts:177](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L177) + +plugins to be automatically extended + +*** + +### rtfFormat? + +> `optional` **rtfFormat?**: `RelativeTimeFormat` + +Defined in: [tempo.type.ts:166](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L166) + +Pre-configured relative time formatter + +*** + +### rtfStyle? + +> `optional` **rtfStyle?**: `RelativeTimeFormatStyle` + +Defined in: [tempo.type.ts:167](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L167) + +Default style for relative time ('long' | 'short' | 'narrow') + +*** + +### silent + +> **silent**: `boolean` \| `undefined` + +Defined in: [tempo.type.ts:160](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L160) + +suppress console output during catch + +*** + +### snippet + +> **snippet**: `Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> + +Defined in: [tempo.type.ts:172](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L172) + +date-time snippets to help compose a Layout + +*** + +### sphere + +> **sphere**: `"north"` \| `"south"` \| `"east"` \| `"west"` \| `undefined` + +Defined in: [tempo.type.ts:165](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L165) + +hemisphere for term.qtr or term.szn + +*** + +### store + +> **store**: `string` + +Defined in: [tempo.type.ts:156](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L156) + +localStorage key + +*** + +### timeStamp? + +> `optional` **timeStamp?**: [`TimeStamp`](../type-aliases/TimeStamp.md) + +Defined in: [tempo.type.ts:168](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L168) + +Precision to measure timestamps (ms | us) + +*** + +### timeZone + +> **timeZone**: `TimeZoneLike` + +Defined in: [tempo.type.ts:161](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L161) + +Temporal timeZone + +*** + +### value + +> **value**: [`DateTime`](../../../../type-aliases/DateTime.md) + +Defined in: [tempo.type.ts:178](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L178) + +supplied value to parse diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/Config.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/Config.md new file mode 100644 index 00000000..6ecf9b3d --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/Config.md @@ -0,0 +1,233 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +Defined in: [tempo.type.ts:230](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L230) + +Instance configuration derived from supply, storage, and discovery. + +## Extends + +- `Required`\<`Omit`\<[`OptionsKeep`](../type-aliases/OptionsKeep.md), `"formats"`\>\> + +## Indexable + +> \[`key`: `string`\]: `any` + +index-signature + +## Properties + +### calendar + +> **calendar**: `CalendarLike` + +Defined in: [tempo.type.ts:162](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L162) + +Temporal calendar + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`calendar`](../../Tempo/interfaces/BaseOptions.md#calendar) + +*** + +### catch + +> **catch**: `boolean` \| `undefined` + +Defined in: [tempo.type.ts:159](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L159) + +catch or throw Errors + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`catch`](../../Tempo/interfaces/BaseOptions.md#catch) + +*** + +### debug + +> **debug**: `boolean` \| `undefined` + +Defined in: [tempo.type.ts:158](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L158) + +additional console.log for tracking + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`debug`](../../Tempo/interfaces/BaseOptions.md#debug) + +*** + +### discovery + +> **discovery**: `string` \| `symbol` + +Defined in: [tempo.type.ts:157](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L157) + +globalThis Discovery Symbol + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`discovery`](../../Tempo/interfaces/BaseOptions.md#discovery) + +*** + +### formats + +> **formats**: `EnumifyType` + +Defined in: [tempo.type.ts:232](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L232) + +pre-configured format strings + +*** + +### locale + +> **locale**: `string` + +Defined in: [tempo.type.ts:163](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L163) + +locale (e.g. en-AU) + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`locale`](../../Tempo/interfaces/BaseOptions.md#locale) + +*** + +### mode + +> **mode**: `"auto"` \| `"strict"` \| `"defer"` + +Defined in: [tempo.type.ts:169](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L169) + +initialization strategy ('auto'|'strict'|'defer') + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`mode`](../../Tempo/interfaces/BaseOptions.md#mode) + +*** + +### plugins + +> **plugins**: [`Plugin`](../../../../interfaces/Plugin.md) \| [`Plugin`](../../../../interfaces/Plugin.md)[] + +Defined in: [tempo.type.ts:177](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L177) + +plugins to be automatically extended + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`plugins`](../../Tempo/interfaces/BaseOptions.md#plugins) + +*** + +### rtfFormat + +> **rtfFormat**: `RelativeTimeFormat` + +Defined in: [tempo.type.ts:166](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L166) + +Pre-configured relative time formatter + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`rtfFormat`](../../Tempo/interfaces/BaseOptions.md#rtfformat) + +*** + +### rtfStyle + +> **rtfStyle**: `RelativeTimeFormatStyle` + +Defined in: [tempo.type.ts:167](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L167) + +Default style for relative time ('long' | 'short' | 'narrow') + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`rtfStyle`](../../Tempo/interfaces/BaseOptions.md#rtfstyle) + +*** + +### scope + +> **scope**: `"global"` \| `"local"` + +Defined in: [tempo.type.ts:231](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L231) + +configuration (global | local) + +*** + +### silent + +> **silent**: `boolean` \| `undefined` + +Defined in: [tempo.type.ts:160](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L160) + +suppress console output during catch + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`silent`](../../Tempo/interfaces/BaseOptions.md#silent) + +*** + +### sphere + +> **sphere**: `"north"` \| `"south"` \| `"east"` \| `"west"` \| `undefined` + +Defined in: [tempo.type.ts:165](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L165) + +hemisphere for term.qtr or term.szn + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`sphere`](../../Tempo/interfaces/BaseOptions.md#sphere) + +*** + +### store + +> **store**: `string` + +Defined in: [tempo.type.ts:156](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L156) + +localStorage key + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`store`](../../Tempo/interfaces/BaseOptions.md#store) + +*** + +### timeStamp + +> **timeStamp**: [`TimeStamp`](../type-aliases/TimeStamp.md) + +Defined in: [tempo.type.ts:168](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L168) + +Precision to measure timestamps (ms | us) + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`timeStamp`](../../Tempo/interfaces/BaseOptions.md#timestamp) + +*** + +### timeZone + +> **timeZone**: `TimeZoneLike` + +Defined in: [tempo.type.ts:161](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L161) + +Temporal timeZone + +#### Inherited from + +[`BaseOptions`](../../Tempo/interfaces/BaseOptions.md).[`timeZone`](../../Tempo/interfaces/BaseOptions.md#timezone) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/Discovery.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/Discovery.md new file mode 100644 index 00000000..2c1dcc0c --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/Discovery.md @@ -0,0 +1,233 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +Defined in: [tempo.type.ts:237](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L237) + +structured configuration for Global Discovery via Symbol.for('$Tempo') + +## Properties + +### formats? + +> `optional` **formats?**: `Property`\<`any`\> + +Defined in: [tempo.type.ts:241](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L241) + +custom format strings to merge in the FORMAT dictionary + +*** + +### numbers? + +> `optional` **numbers?**: `Record`\<`string`, `number`\> + +Defined in: [tempo.type.ts:240](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L240) + +aliases to merge in the Number-Word dictionary + +*** + +### options? + +> `optional` **options?**: \{\[`key`: `string`\]: `any`; `calendar?`: `CalendarLike`; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: `Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\>; `formats?`: `Property`\<`any`\>; `layout?`: [`PatternOption`](../type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\>; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../../../../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: [`PatternOption`](../type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\>; `pivot?`: `number`; `plugins?`: [`Plugin`](../../../../interfaces/Plugin.md) \| [`Plugin`](../../../../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: `RelativeTimeFormatStyle`; `silent?`: `boolean`; `snippet?`: `Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\>; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: [`TimeStamp`](../type-aliases/TimeStamp.md); `timeZone?`: `TimeZoneLike`; `value?`: [`DateTime`](../../../../type-aliases/DateTime.md); \} \| (() => `object`) + +Defined in: [tempo.type.ts:238](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L238) + +pre-defined config options for Tempo.#global + +#### Union Members + +##### Type Literal + +\{\[`key`: `string`\]: `any`; `calendar?`: `CalendarLike`; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: `Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\>; `formats?`: `Property`\<`any`\>; `layout?`: [`PatternOption`](../type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\>; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../../../../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: [`PatternOption`](../type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\>; `pivot?`: `number`; `plugins?`: [`Plugin`](../../../../interfaces/Plugin.md) \| [`Plugin`](../../../../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: `RelativeTimeFormatStyle`; `silent?`: `boolean`; `snippet?`: `Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\>; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: [`TimeStamp`](../type-aliases/TimeStamp.md); `timeZone?`: `TimeZoneLike`; `value?`: [`DateTime`](../../../../type-aliases/DateTime.md); \} + +##### Index Signature + +\[`key`: `string`\]: `any` + +##### calendar? + +> `optional` **calendar?**: `CalendarLike` + +Temporal calendar + +##### catch? + +> `optional` **catch?**: `boolean` + +catch or throw Errors + +##### debug? + +> `optional` **debug?**: `boolean` + +additional console.log for tracking + +##### discovery? + +> `optional` **discovery?**: `string` \| `symbol` + +globalThis Discovery Symbol + +##### event? + +> `optional` **event?**: `Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> + +custom date aliases (events). + +##### formats? + +> `optional` **formats?**: `Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +##### layout? + +> `optional` **layout?**: [`PatternOption`](../type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +##### locale? + +> `optional` **locale?**: `string` + +locale (e.g. en-AU) + +##### mdyLayouts? + +> `optional` **mdyLayouts?**: [`Pair`](../../../../type-aliases/Pair.md)[] + +swap parse-order of layouts + +##### mdyLocales? + +> `optional` **mdyLocales?**: `string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +##### mode? + +> `optional` **mode?**: `"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +##### period? + +> `optional` **period?**: [`PatternOption`](../type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +##### pivot? + +> `optional` **pivot?**: `number` + +pivot year for two-digit years + +##### plugins? + +> `optional` **plugins?**: [`Plugin`](../../../../interfaces/Plugin.md) \| [`Plugin`](../../../../interfaces/Plugin.md)[] + +plugins to be automatically extended + +##### rtfFormat? + +> `optional` **rtfFormat?**: `RelativeTimeFormat` + +Pre-configured relative time formatter + +##### rtfStyle? + +> `optional` **rtfStyle?**: `RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +##### silent? + +> `optional` **silent?**: `boolean` + +suppress console output during catch + +##### snippet? + +> `optional` **snippet?**: `Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +##### sphere? + +> `optional` **sphere?**: `"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +##### store? + +> `optional` **store?**: `string` + +localStorage key + +##### timeStamp? + +> `optional` **timeStamp?**: [`TimeStamp`](../type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +##### timeZone? + +> `optional` **timeZone?**: `TimeZoneLike` + +Temporal timeZone + +##### value? + +> `optional` **value?**: [`DateTime`](../../../../type-aliases/DateTime.md) + +supplied value to parse + +*** + +##### Function + +() => `object` + +*** + +### plugins? + +> `optional` **plugins?**: [`Plugin`](../../../../interfaces/Plugin.md) \| [`Plugin`](../../../../interfaces/Plugin.md)[] + +Defined in: [tempo.type.ts:243](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L243) + +plugins to be automatically extended via Tempo.extend() + +*** + +### term? + +> `optional` **term?**: [`TermPlugin`](../../../../interfaces/TermPlugin.md) \| [`TermPlugin`](../../../../interfaces/TermPlugin.md)[] + +Defined in: [tempo.type.ts:242](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L242) + +term plugins to be registered via Tempo.addTerm() + +*** + +### ~~terms?~~ + +> `optional` **terms?**: [`TermPlugin`](../../../../interfaces/TermPlugin.md) \| [`TermPlugin`](../../../../interfaces/TermPlugin.md)[] + +Defined in: [tempo.type.ts:244](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L244) + +#### Deprecated + +use term instead + +*** + +### timeZones? + +> `optional` **timeZones?**: `Record`\<`string`, `string`\> + +Defined in: [tempo.type.ts:239](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L239) + +aliases to merge in the TimeZone dictionary diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/Parse.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/Parse.md new file mode 100644 index 00000000..30583dea --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/Parse.md @@ -0,0 +1,145 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +Defined in: [tempo.type.ts:198](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L198) + +Debugging results of a parse operation. See `doc/tempo.api.md`. + +## Properties + +### event + +> **event**: `Extend` + +Defined in: [tempo.type.ts:206](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L206) + +configured Events + +*** + +### isAnchored? + +> `optional` **isAnchored?**: `boolean` + +Defined in: [tempo.type.ts:210](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L210) + +was this a nested/anchored parse? + +*** + +### isMonthDay? + +> `optional` **isMonthDay?**: `boolean` + +Defined in: [tempo.type.ts:201](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L201) + +is a timeZone that prefers 'mmddyyyy' date order + +*** + +### layout + +> **layout**: `Extend` + +Defined in: [tempo.type.ts:204](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L204) + +Tempo layout strings + +*** + +### mdyLayouts + +> **mdyLayouts**: [`Pair`](../../../../type-aliases/Pair.md)[] + +Defined in: [tempo.type.ts:200](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L200) + +Layout names that are switched to mdy + +*** + +### mdyLocales + +> **mdyLocales**: `object`[] + +Defined in: [tempo.type.ts:199](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L199) + +Locales which prefer 'mm-dd-yyyy' date-order + +#### locale + +> **locale**: `string` + +#### timeZones + +> **timeZones**: `string`[] + +*** + +### mode + +> **mode**: `"auto"` \| `"strict"` \| `"defer"` + +Defined in: [tempo.type.ts:211](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L211) + +initialization strategy ('auto'|'strict'|'defer') + +*** + +### pattern + +> **pattern**: [`Registry`](../type-aliases/Registry.md) + +Defined in: [tempo.type.ts:205](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L205) + +Map of regex-patterns to match input-string + +*** + +### period + +> **period**: `Extend` + +Defined in: [tempo.type.ts:207](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L207) + +configured Periods + +*** + +### pivot + +> **pivot**: `number` + +Defined in: [tempo.type.ts:208](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L208) + +pivot year for two-digit years + +*** + +### result + +> **result**: [`Match`](../type-aliases/Match.md)[] + +Defined in: [tempo.type.ts:209](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L209) + +parsing match result + +*** + +### snippet + +> **snippet**: `Extend` + +Defined in: [tempo.type.ts:203](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L203) + +Tempo snippets to aid in parsing + +*** + +### token + +> **token**: `Extend` + +Defined in: [tempo.type.ts:202](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L202) + +Symbol registry diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/PluginContainer.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/PluginContainer.md new file mode 100644 index 00000000..9ced2017 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/PluginContainer.md @@ -0,0 +1,57 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +Defined in: [tempo.type.ts:187](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L187) + +internal metadata for a plugin to track installation + +## Extends + +- [`Plugin`](../../../../interfaces/Plugin.md) + +## Properties + +### install + +> **install**: (`this`, `t`) => `void` + +Defined in: [plugin/plugin.type.ts:29](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L29) + +#### Parameters + +##### this + +[`Tempo`](../../../../classes/Tempo.md) + +##### t + +*typeof* [`Tempo`](../../Tempo/README.md) + +#### Returns + +`void` + +#### Inherited from + +[`Plugin`](../../../../interfaces/Plugin.md).[`install`](../../../../interfaces/Plugin.md#install) + +*** + +### installed? + +> `optional` **installed?**: `boolean` + +Defined in: [tempo.type.ts:188](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L188) + +*** + +### name + +> **name**: `string` + +Defined in: [plugin/plugin.type.ts:28](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L28) + +#### Inherited from + +[`Plugin`](../../../../interfaces/Plugin.md).[`name`](../../../../interfaces/Plugin.md#name) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/State.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/State.md new file mode 100644 index 00000000..2973244f --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/interfaces/State.md @@ -0,0 +1,27 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +Defined in: [tempo.type.ts:192](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L192) + +the encapsulated state of a Tempo instance + +## Properties + +### config + +> **config**: [`Config`](Config.md) + +Defined in: [tempo.type.ts:193](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L193) + +current defaults for all Tempo instances + +*** + +### parse + +> **parse**: [`Parse`](Parse.md) + +Defined in: [tempo.type.ts:194](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L194) + +parsing rules diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/Match.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/Match.md new file mode 100644 index 00000000..fcb2a3a4 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/Match.md @@ -0,0 +1,27 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Match** = `object` & `TypeValue`\<`any`\> \| [`MatchExtend`](MatchExtend.md) + +Defined in: [tempo.type.ts:220](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L220) + +## Type Declaration + +### groups? + +> `optional` **groups?**: [`Groups`](../../../../type-aliases/Groups.md) + +groups from the pattern match + +### isAnchored? + +> `optional` **isAnchored?**: `boolean` + +was this a nested/anchored parse? + +### match? + +> `optional` **match?**: `string` + +pattern which matched the input diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/MatchExtend.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/MatchExtend.md new file mode 100644 index 00000000..89cbeaae --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/MatchExtend.md @@ -0,0 +1,25 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **MatchExtend** = `object` + +Defined in: [tempo.type.ts:219](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L219) + +debug a Tempo instantiation + +## Properties + +### type + +> **type**: `"Event"` \| `"Period"` + +Defined in: [tempo.type.ts:219](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L219) + +*** + +### value + +> **value**: `string` \| `number` \| `Function` + +Defined in: [tempo.type.ts:219](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L219) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/OptionsKeep.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/OptionsKeep.md new file mode 100644 index 00000000..aa6764d8 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/OptionsKeep.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **OptionsKeep** = `Omit`\<[`BaseOptions`](../interfaces/BaseOptions.md), `"mdyLocales"` \| `"mdyLayouts"` \| `"pivot"` \| `"snippet"` \| `"layout"` \| `"event"` \| `"period"` \| `"value"`\> + +Defined in: [tempo.type.ts:227](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L227) + +drop the parse-only Options diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md new file mode 100644 index 00000000..8514e45b --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md @@ -0,0 +1,13 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **PatternOption**\<`T`\> = `T` \| `Record`\<`string` \| `symbol`, `T`\> \| [`PatternOptionArray`](PatternOptionArray.md)\<`T`\> + +Defined in: [tempo.type.ts:152](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L152) + +## Type Parameters + +### T + +`T` diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/PatternOptionArray.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/PatternOptionArray.md new file mode 100644 index 00000000..19e5b7d1 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/PatternOptionArray.md @@ -0,0 +1,13 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **PatternOptionArray**\<`T`\> = [`PatternOption`](PatternOption.md)\<`T`\>[] + +Defined in: [tempo.type.ts:151](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L151) + +## Type Parameters + +### T + +`T` diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/Registry.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/Registry.md new file mode 100644 index 00000000..74d7de95 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/Registry.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Registry** = `Map`\<`symbol`, `RegExp`\> + +Defined in: [tempo.type.ts:150](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L150) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md new file mode 100644 index 00000000..46b43dec --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **TimeStamp** = `"ss"` \| `"ms"` \| `"us"` \| `"ns"` + +Defined in: [tempo.type.ts:184](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L184) + +high-precision precision to measure timestamps (ms | us) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/README.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/README.md new file mode 100644 index 00000000..1a55515f --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/README.md @@ -0,0 +1,209 @@ +[**@magmacomputing/tempo**](../../../README.md) + +*** + +## Interfaces + +- [BaseOptions](interfaces/BaseOptions.md) +- [Params](interfaces/Params.md) + +## Type Aliases + +- [Add](type-aliases/Add.md) +- [COMPASS](type-aliases/COMPASS.md) +- [DateTime](type-aliases/DateTime.md) +- [Duration](type-aliases/Duration.md) +- [DURATION](type-aliases/DURATION-1.md) +- [DURATIONS](type-aliases/DURATIONS.md) +- [Element](type-aliases/Element.md) +- [ELEMENT](type-aliases/ELEMENT-1.md) +- [Extension](type-aliases/Extension.md) +- [Format](type-aliases/Format.md) +- [FormatRegistry](type-aliases/FormatRegistry.md) +- [Formats](type-aliases/Formats.md) +- [FormatType](type-aliases/FormatType.md) +- [Groups](type-aliases/Groups.md) +- [hh](type-aliases/hh.md) +- [Logic](type-aliases/Logic.md) +- [mi](type-aliases/mi.md) +- [mm](type-aliases/mm.md) +- [Modifier](type-aliases/Modifier.md) +- [Module](type-aliases/Module.md) +- [Month](type-aliases/Month.md) +- [MONTH](type-aliases/MONTH-1.md) +- [MONTHS](type-aliases/MONTHS.md) +- [ms](type-aliases/ms.md) +- [Mutate](type-aliases/Mutate.md) +- [ns](type-aliases/ns.md) +- [Options](type-aliases/Options.md) +- [OwnFormat](type-aliases/OwnFormat.md) +- [Pair](type-aliases/Pair.md) +- [Pattern](type-aliases/Pattern.md) +- [PatternOption](type-aliases/PatternOption.md) +- [PatternOptionArray](type-aliases/PatternOptionArray.md) +- [Plugin](type-aliases/Plugin.md) +- [Relative](type-aliases/Relative.md) +- [SEASON](type-aliases/SEASON.md) +- [Set](type-aliases/Set.md) +- [ss](type-aliases/ss.md) +- [TermPlugin](type-aliases/TermPlugin.md) +- [Terms](type-aliases/Terms.md) +- [Unit](type-aliases/Unit.md) +- [Until](type-aliases/Until.md) +- [us](type-aliases/us.md) +- [Weekday](type-aliases/Weekday.md) +- [WEEKDAY](type-aliases/WEEKDAY-1.md) +- [WEEKDAYS](type-aliases/WEEKDAYS.md) +- [ww](type-aliases/ww.md) + +## Variables + +- [tickers](variables/tickers.md) + +## Functions + +- [ticker](functions/ticker.md) + +## Accessors + +### COMPASS + +#### Get Signature + +> **get** **COMPASS**(): `EnumifyType`\<\{ `East`: `"east"`; `North`: `"north"`; `South`: `"south"`; `West`: `"west"`; \}\> + +Defined in: [tempo.class.ts:80](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L80) + +Compass cardinal points + +##### Returns + +`EnumifyType`\<\{ `East`: `"east"`; `North`: `"north"`; `South`: `"south"`; `West`: `"west"`; \}\> + +*** + +### DURATION + +#### Get Signature + +> **get** **DURATION**(): `EnumifyType`\<\{ `day`: `86400`; `hour`: `3600`; `microsecond`: `0.000001`; `millisecond`: `0.001`; `minute`: `60`; `month`: `2628000`; `nanosecond`: `1e-9`; `second`: `1`; `week`: `604800`; `year`: `31536000`; \}\> + +Defined in: [tempo.class.ts:76](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L76) + +Time durations as seconds (singular) + +##### Returns + +`EnumifyType`\<\{ `day`: `86400`; `hour`: `3600`; `microsecond`: `0.000001`; `millisecond`: `0.001`; `minute`: `60`; `month`: `2628000`; `nanosecond`: `1e-9`; `second`: `1`; `week`: `604800`; `year`: `31536000`; \}\> + +*** + +### DURATIONS + +#### Get Signature + +> **get** **DURATIONS**(): `EnumifyType`\<\{ `days`: `86400000`; `hours`: `3600000`; `microseconds`: `0.001`; `milliseconds`: `1`; `minutes`: `60000`; `months`: `2628000000`; `nanoseconds`: `0.000001`; `seconds`: `1000`; `weeks`: `604800000`; `years`: `31536000000`; \}\> + +Defined in: [tempo.class.ts:77](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L77) + +Time durations as milliseconds (plural) + +##### Returns + +`EnumifyType`\<\{ `days`: `86400000`; `hours`: `3600000`; `microseconds`: `0.001`; `milliseconds`: `1`; `minutes`: `60000`; `months`: `2628000000`; `nanoseconds`: `0.000001`; `seconds`: `1000`; `weeks`: `604800000`; `years`: `31536000000`; \}\> + +*** + +### ELEMENT + +#### Get Signature + +> **get** **ELEMENT**(): `EnumifyType`\<\{ `dd`: `"day"`; `hh`: `"hour"`; `mi`: `"minute"`; `mm`: `"month"`; `ms`: `"millisecond"`; `ns`: `"nanosecond"`; `ss`: `"second"`; `us`: `"microsecond"`; `ww`: `"week"`; `yy`: `"year"`; \}\> + +Defined in: [tempo.class.ts:82](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L82) + +Tempo to Temporal DateTime Units map + +##### Returns + +`EnumifyType`\<\{ `dd`: `"day"`; `hh`: `"hour"`; `mi`: `"minute"`; `mm`: `"month"`; `ms`: `"millisecond"`; `ns`: `"nanosecond"`; `ss`: `"second"`; `us`: `"microsecond"`; `ww`: `"week"`; `yy`: `"year"`; \}\> + +*** + +### MONTH + +#### Get Signature + +> **get** **MONTH**(): `EnumifyType`\<`Index`\\> + +Defined in: [tempo.class.ts:74](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L74) + +Month names (short-form) + +##### Returns + +`EnumifyType`\<`Index`\\> + +*** + +### MONTHS + +#### Get Signature + +> **get** **MONTHS**(): `EnumifyType`\<`Index`\\> + +Defined in: [tempo.class.ts:75](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L75) + +Month names (long-form) + +##### Returns + +`EnumifyType`\<`Index`\\> + +*** + +### SEASON + +#### Get Signature + +> **get** **SEASON**(): `EnumifyType`\<\{ `Autumn`: `"autumn"`; `Spring`: `"spring"`; `Summer`: `"summer"`; `Winter`: `"winter"`; \}\> + +Defined in: [tempo.class.ts:79](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L79) + +Quarterly Seasons + +##### Returns + +`EnumifyType`\<\{ `Autumn`: `"autumn"`; `Spring`: `"spring"`; `Summer`: `"summer"`; `Winter`: `"winter"`; \}\> + +*** + +### WEEKDAY + +#### Get Signature + +> **get** **WEEKDAY**(): `EnumifyType`\<`Index`\\> + +Defined in: [tempo.class.ts:72](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L72) + +Weekday names (short-form) + +##### Returns + +`EnumifyType`\<`Index`\\> + +*** + +### WEEKDAYS + +#### Get Signature + +> **get** **WEEKDAYS**(): `EnumifyType`\<`Index`\\> + +Defined in: [tempo.class.ts:73](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L73) + +Weekday names (long-form) + +##### Returns + +`EnumifyType`\<`Index`\\> diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/functions/ticker.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/functions/ticker.md new file mode 100644 index 00000000..9091bcfb --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/functions/ticker.md @@ -0,0 +1,111 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +## Call Signature + +> **ticker**(`interval?`): `Instance` + +Defined in: [plugin/extend/extend.ticker.ts:16](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/extend/extend.ticker.ts#L16) + +### Parameters + +#### interval? + +`Interval` + +### Returns + +`Instance` + +## Call Signature + +> **ticker**(`options`): `Instance` + +Defined in: [plugin/extend/extend.ticker.ts:17](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/extend/extend.ticker.ts#L17) + +### Parameters + +#### options + +`Options` + +### Returns + +`Instance` + +## Call Signature + +> **ticker**(`callback`): `Instance` + +Defined in: [plugin/extend/extend.ticker.ts:18](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/extend/extend.ticker.ts#L18) + +### Parameters + +#### callback + +`Callback` + +### Returns + +`Instance` + +## Call Signature + +> **ticker**(`interval`, `callback`): `Instance` + +Defined in: [plugin/extend/extend.ticker.ts:19](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/extend/extend.ticker.ts#L19) + +### Parameters + +#### interval + +`Interval` + +#### callback + +`Callback` + +### Returns + +`Instance` + +## Call Signature + +> **ticker**(`options`, `callback`): `Instance` + +Defined in: [plugin/extend/extend.ticker.ts:20](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/extend/extend.ticker.ts#L20) + +### Parameters + +#### options + +`Options` + +#### callback + +`Callback` + +### Returns + +`Instance` + +## Call Signature + +> **ticker**(`options`, `extraOptions`): `Instance` + +Defined in: [plugin/extend/extend.ticker.ts:21](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/extend/extend.ticker.ts#L21) + +### Parameters + +#### options + +`Options` + +#### extraOptions + +`Options` + +### Returns + +`Instance` diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/interfaces/BaseOptions.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/interfaces/BaseOptions.md new file mode 100644 index 00000000..c89bab50 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/interfaces/BaseOptions.md @@ -0,0 +1,333 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +Defined in: [tempo.class.ts:1836](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1836) + +the Options object found in a config-module, or passed to a call to Tempo.init({}) or 'new Tempo({})' + +## Extends + +- [`BaseOptions`](../../Internal/interfaces/BaseOptions.md) + +## Properties + +### calendar + +> **calendar**: `CalendarLike` + +Defined in: [tempo.type.ts:162](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L162) + +Temporal calendar + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`calendar`](../../Internal/interfaces/BaseOptions.md#calendar) + +*** + +### catch + +> **catch**: `boolean` \| `undefined` + +Defined in: [tempo.type.ts:159](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L159) + +catch or throw Errors + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`catch`](../../Internal/interfaces/BaseOptions.md#catch) + +*** + +### debug + +> **debug**: `boolean` \| `undefined` + +Defined in: [tempo.type.ts:158](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L158) + +additional console.log for tracking + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`debug`](../../Internal/interfaces/BaseOptions.md#debug) + +*** + +### discovery + +> **discovery**: `string` \| `symbol` + +Defined in: [tempo.type.ts:157](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L157) + +globalThis Discovery Symbol + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`discovery`](../../Internal/interfaces/BaseOptions.md#discovery) + +*** + +### event + +> **event**: `Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> + +Defined in: [tempo.type.ts:174](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L174) + +custom date aliases (events). + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`event`](../../Internal/interfaces/BaseOptions.md#event) + +*** + +### formats + +> **formats**: `Property`\<`any`\> + +Defined in: [tempo.type.ts:176](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L176) + +custom format strings to merge in the FORMAT enum + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`formats`](../../Internal/interfaces/BaseOptions.md#formats) + +*** + +### layout + +> **layout**: [`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +Defined in: [tempo.type.ts:173](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L173) + +patterns to help parse value + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`layout`](../../Internal/interfaces/BaseOptions.md#layout) + +*** + +### locale + +> **locale**: `string` + +Defined in: [tempo.type.ts:163](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L163) + +locale (e.g. en-AU) + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`locale`](../../Internal/interfaces/BaseOptions.md#locale) + +*** + +### mdyLayouts + +> **mdyLayouts**: [`Pair`](../../../../type-aliases/Pair.md)[] + +Defined in: [tempo.type.ts:171](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L171) + +swap parse-order of layouts + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`mdyLayouts`](../../Internal/interfaces/BaseOptions.md#mdylayouts) + +*** + +### mdyLocales + +> **mdyLocales**: `string` \| `string`[] + +Defined in: [tempo.type.ts:170](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L170) + +locale-names that prefer 'mm-dd-yy' date order + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`mdyLocales`](../../Internal/interfaces/BaseOptions.md#mdylocales) + +*** + +### mode? + +> `optional` **mode?**: `"auto"` \| `"strict"` \| `"defer"` + +Defined in: [tempo.type.ts:169](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L169) + +initialization strategy ('auto'|'strict'|'defer') + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`mode`](../../Internal/interfaces/BaseOptions.md#mode) + +*** + +### period + +> **period**: [`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +Defined in: [tempo.type.ts:175](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L175) + +custom time aliases (periods). + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`period`](../../Internal/interfaces/BaseOptions.md#period) + +*** + +### pivot + +> **pivot**: `number` + +Defined in: [tempo.type.ts:164](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L164) + +pivot year for two-digit years + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`pivot`](../../Internal/interfaces/BaseOptions.md#pivot) + +*** + +### plugins + +> **plugins**: [`Plugin`](../../../../interfaces/Plugin.md) \| [`Plugin`](../../../../interfaces/Plugin.md)[] + +Defined in: [tempo.type.ts:177](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L177) + +plugins to be automatically extended + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`plugins`](../../Internal/interfaces/BaseOptions.md#plugins) + +*** + +### rtfFormat? + +> `optional` **rtfFormat?**: `RelativeTimeFormat` + +Defined in: [tempo.type.ts:166](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L166) + +Pre-configured relative time formatter + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`rtfFormat`](../../Internal/interfaces/BaseOptions.md#rtfformat) + +*** + +### rtfStyle? + +> `optional` **rtfStyle?**: `RelativeTimeFormatStyle` + +Defined in: [tempo.type.ts:167](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L167) + +Default style for relative time ('long' | 'short' | 'narrow') + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`rtfStyle`](../../Internal/interfaces/BaseOptions.md#rtfstyle) + +*** + +### silent + +> **silent**: `boolean` \| `undefined` + +Defined in: [tempo.type.ts:160](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L160) + +suppress console output during catch + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`silent`](../../Internal/interfaces/BaseOptions.md#silent) + +*** + +### snippet + +> **snippet**: `Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> + +Defined in: [tempo.type.ts:172](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L172) + +date-time snippets to help compose a Layout + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`snippet`](../../Internal/interfaces/BaseOptions.md#snippet) + +*** + +### sphere + +> **sphere**: `"north"` \| `"south"` \| `"east"` \| `"west"` \| `undefined` + +Defined in: [tempo.type.ts:165](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L165) + +hemisphere for term.qtr or term.szn + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`sphere`](../../Internal/interfaces/BaseOptions.md#sphere) + +*** + +### store + +> **store**: `string` + +Defined in: [tempo.type.ts:156](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L156) + +localStorage key + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`store`](../../Internal/interfaces/BaseOptions.md#store) + +*** + +### timeStamp? + +> `optional` **timeStamp?**: [`TimeStamp`](../../Internal/type-aliases/TimeStamp.md) + +Defined in: [tempo.type.ts:168](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L168) + +Precision to measure timestamps (ms | us) + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`timeStamp`](../../Internal/interfaces/BaseOptions.md#timestamp) + +*** + +### timeZone + +> **timeZone**: `TimeZoneLike` + +Defined in: [tempo.type.ts:161](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L161) + +Temporal timeZone + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`timeZone`](../../Internal/interfaces/BaseOptions.md#timezone) + +*** + +### value + +> **value**: [`DateTime`](../../../../type-aliases/DateTime.md) + +Defined in: [tempo.type.ts:178](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L178) + +supplied value to parse + +#### Inherited from + +[`BaseOptions`](../../Internal/interfaces/BaseOptions.md).[`value`](../../Internal/interfaces/BaseOptions.md#value) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/interfaces/Params.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/interfaces/Params.md new file mode 100644 index 00000000..7d6ec789 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/interfaces/Params.md @@ -0,0 +1,329 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +Defined in: [tempo.class.ts:1887](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1887) + +Type for consistency in expected arguments for helper functions + +## Extends + +- [`Params`](../../../../interfaces/Params.md)\<`T`\> + +## Type Parameters + +### T + +`T` + +## Call Signature + +> **Params**(`tempo?`, `options?`): `T` + +Defined in: [tempo.class.ts:1887](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1887) + +Type for consistency in expected arguments for helper functions + +### Parameters + +#### tempo? + +[`DateTime`](../../../../type-aliases/DateTime.md) + +#### options? + +##### calendar? + +`CalendarLike` + +Temporal calendar + +##### catch? + +`boolean` + +catch or throw Errors + +##### debug? + +`boolean` + +additional console.log for tracking + +##### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +##### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> + +custom date aliases (events). + +##### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +##### layout? + +[`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +##### locale? + +`string` + +locale (e.g. en-AU) + +##### mdyLayouts? + +[`Pair`](../../../../type-aliases/Pair.md)[] + +swap parse-order of layouts + +##### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +##### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +##### period? + +[`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +##### pivot? + +`number` + +pivot year for two-digit years + +##### plugins? + +[`Plugin`](../../../../interfaces/Plugin.md) \| [`Plugin`](../../../../interfaces/Plugin.md)[] + +plugins to be automatically extended + +##### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +##### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +##### silent? + +`boolean` + +suppress console output during catch + +##### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +##### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +##### store? + +`string` + +localStorage key + +##### timeStamp? + +[`TimeStamp`](../../Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +##### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +##### value? + +[`DateTime`](../../../../type-aliases/DateTime.md) + +supplied value to parse + +### Returns + +`T` + +## Call Signature + +> **Params**(`options`): `T` + +Defined in: [tempo.class.ts:1887](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1887) + +Type for consistency in expected arguments for helper functions + +### Parameters + +#### options + +##### calendar? + +`CalendarLike` + +Temporal calendar + +##### catch? + +`boolean` + +catch or throw Errors + +##### debug? + +`boolean` + +additional console.log for tracking + +##### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +##### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => [`Tempo`](../../../../classes/Tempo.md); \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> + +custom date aliases (events). + +##### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +##### layout? + +[`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +##### locale? + +`string` + +locale (e.g. en-AU) + +##### mdyLayouts? + +[`Pair`](../../../../type-aliases/Pair.md)[] + +swap parse-order of layouts + +##### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +##### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +##### period? + +[`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Logic`](../../../../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +##### pivot? + +`number` + +pivot year for two-digit years + +##### plugins? + +[`Plugin`](../../../../interfaces/Plugin.md) \| [`Plugin`](../../../../interfaces/Plugin.md)[] + +plugins to be automatically extended + +##### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +##### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +##### silent? + +`boolean` + +suppress console output during catch + +##### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<[`Pattern`](../../../../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +##### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +##### store? + +`string` + +localStorage key + +##### timeStamp? + +[`TimeStamp`](../../Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +##### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +##### value? + +[`DateTime`](../../../../type-aliases/DateTime.md) + +supplied value to parse + +### Returns + +`T` diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Add.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Add.md new file mode 100644 index 00000000..2b45e943 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Add.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Add** = [`Add`](../../../../type-aliases/Add.md) + +Defined in: [tempo.class.ts:1849](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1849) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/COMPASS.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/COMPASS.md new file mode 100644 index 00000000..03acc8b0 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/COMPASS.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **COMPASS** = `t.COMPASS` + +Defined in: [tempo.class.ts:80](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L80) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/DURATION-1.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/DURATION-1.md new file mode 100644 index 00000000..590faa82 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/DURATION-1.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **DURATION** = `t.DURATION` + +Defined in: [tempo.class.ts:76](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L76) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/DURATIONS.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/DURATIONS.md new file mode 100644 index 00000000..da1c5a0d --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/DURATIONS.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **DURATIONS** = `t.DURATIONS` + +Defined in: [tempo.class.ts:77](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L77) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/DateTime.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/DateTime.md new file mode 100644 index 00000000..833443c2 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/DateTime.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **DateTime** = [`DateTime`](../../../../type-aliases/DateTime.md) + +Defined in: [tempo.class.ts:1827](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1827) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Duration.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Duration.md new file mode 100644 index 00000000..ee353130 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Duration.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Duration** = [`Duration`](../../../../type-aliases/Duration.md) + +Defined in: [tempo.class.ts:1871](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1871) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ELEMENT-1.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ELEMENT-1.md new file mode 100644 index 00000000..5a407693 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ELEMENT-1.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **ELEMENT** = `t.ELEMENT` + +Defined in: [tempo.class.ts:82](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L82) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Element.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Element.md new file mode 100644 index 00000000..252804f3 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Element.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Element** = [`Element`](../../../../type-aliases/Element.md) + +Defined in: [tempo.class.ts:1885](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1885) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Extension.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Extension.md new file mode 100644 index 00000000..d2bf9caa --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Extension.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Extension** = [`Extension`](../../../../interfaces/Extension.md) + +Defined in: [tempo.class.ts:1842](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1842) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Format.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Format.md new file mode 100644 index 00000000..cc4bae98 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Format.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Format** = [`Format`](../../../../type-aliases/Format.md) + +Defined in: [tempo.class.ts:1853](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1853) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/FormatRegistry.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/FormatRegistry.md new file mode 100644 index 00000000..dc9f1e0c --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/FormatRegistry.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **FormatRegistry** = [`FormatRegistry`](../../../../type-aliases/FormatRegistry.md) + +Defined in: [tempo.class.ts:1854](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1854) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/FormatType.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/FormatType.md new file mode 100644 index 00000000..1f5d0f77 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/FormatType.md @@ -0,0 +1,13 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **FormatType**\<`K`\> = [`FormatType`](../../../../type-aliases/FormatType.md)\<`K`\> + +Defined in: [tempo.class.ts:1855](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1855) + +## Type Parameters + +### K + +`K` *extends* `PropertyKey` diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Formats.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Formats.md new file mode 100644 index 00000000..cdd40c6d --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Formats.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Formats** = [`Formats`](../../../../type-aliases/Formats.md) + +Defined in: [tempo.class.ts:1852](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1852) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Groups.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Groups.md new file mode 100644 index 00000000..d6be9e53 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Groups.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Groups** = [`Groups`](../../../../type-aliases/Groups.md) + +Defined in: [tempo.class.ts:1831](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1831) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Logic.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Logic.md new file mode 100644 index 00000000..ba90c374 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Logic.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Logic** = [`Logic`](../../../../type-aliases/Logic.md) + +Defined in: [tempo.class.ts:1829](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1829) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/MONTH-1.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/MONTH-1.md new file mode 100644 index 00000000..400071c6 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/MONTH-1.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **MONTH** = `t.MONTH` + +Defined in: [tempo.class.ts:74](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L74) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/MONTHS.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/MONTHS.md new file mode 100644 index 00000000..531b984c --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/MONTHS.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **MONTHS** = `t.MONTHS` + +Defined in: [tempo.class.ts:75](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L75) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Modifier.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Modifier.md new file mode 100644 index 00000000..93241bd8 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Modifier.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Modifier** = [`Modifier`](../../../../type-aliases/Modifier.md) + +Defined in: [tempo.class.ts:1859](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1859) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Module.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Module.md new file mode 100644 index 00000000..cd8740a2 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Module.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Module** = [`Module`](../../../../interfaces/Module.md) + +Defined in: [tempo.class.ts:1841](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1841) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Month.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Month.md new file mode 100644 index 00000000..d1ff6e17 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Month.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Month** = [`Month`](../../../../type-aliases/Month.md) + +Defined in: [tempo.class.ts:1884](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1884) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Mutate.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Mutate.md new file mode 100644 index 00000000..719ca738 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Mutate.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Mutate** = [`Mutate`](../../../../type-aliases/Mutate.md) + +Defined in: [tempo.class.ts:1847](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1847) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Options.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Options.md new file mode 100644 index 00000000..0ac79253 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Options.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Options** = [`Options`](../../../../type-aliases/Options.md) + +Defined in: [tempo.class.ts:1837](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1837) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/OwnFormat.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/OwnFormat.md new file mode 100644 index 00000000..431356cc --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/OwnFormat.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **OwnFormat** = [`OwnFormat`](../../../../type-aliases/OwnFormat.md) + +Defined in: [tempo.class.ts:1851](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1851) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Pair.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Pair.md new file mode 100644 index 00000000..91afb29a --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Pair.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Pair** = [`Pair`](../../../../type-aliases/Pair.md) + +Defined in: [tempo.class.ts:1830](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1830) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Pattern.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Pattern.md new file mode 100644 index 00000000..ba7992e6 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Pattern.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Pattern** = [`Pattern`](../../../../type-aliases/Pattern.md) + +Defined in: [tempo.class.ts:1828](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1828) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/PatternOption.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/PatternOption.md new file mode 100644 index 00000000..4444fe41 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/PatternOption.md @@ -0,0 +1,13 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **PatternOption**\<`T`\> = [`PatternOption`](../../Internal/type-aliases/PatternOption.md)\<`T`\> + +Defined in: [tempo.class.ts:1834](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1834) + +## Type Parameters + +### T + +`T` diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/PatternOptionArray.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/PatternOptionArray.md new file mode 100644 index 00000000..b32a8fa8 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/PatternOptionArray.md @@ -0,0 +1,13 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **PatternOptionArray**\<`T`\> = [`PatternOptionArray`](../../Internal/type-aliases/PatternOptionArray.md)\<`T`\> + +Defined in: [tempo.class.ts:1833](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1833) + +## Type Parameters + +### T + +`T` diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Plugin.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Plugin.md new file mode 100644 index 00000000..7e3fa99f --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Plugin.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Plugin** = [`Plugin`](../../../../interfaces/Plugin.md) + +Defined in: [tempo.class.ts:1840](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1840) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Relative.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Relative.md new file mode 100644 index 00000000..9fa3f6a2 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Relative.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Relative** = [`Relative`](../../../../type-aliases/Relative.md) + +Defined in: [tempo.class.ts:1860](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1860) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/SEASON.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/SEASON.md new file mode 100644 index 00000000..7d31ad1b --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/SEASON.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **SEASON** = `t.SEASON` + +Defined in: [tempo.class.ts:79](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L79) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Set.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Set.md new file mode 100644 index 00000000..0f3a9eb9 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Set.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Set** = [`Set`](../../../../type-aliases/Set.md) + +Defined in: [tempo.class.ts:1848](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1848) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/TermPlugin.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/TermPlugin.md new file mode 100644 index 00000000..19a41c82 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/TermPlugin.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **TermPlugin** = [`TermPlugin`](../../../../interfaces/TermPlugin.md) + +Defined in: [tempo.class.ts:1839](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1839) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Terms.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Terms.md new file mode 100644 index 00000000..90451a2c --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Terms.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Terms** = [`Terms`](../../../../type-aliases/Terms.md) + +Defined in: [tempo.class.ts:1857](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1857) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Unit.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Unit.md new file mode 100644 index 00000000..a28dc4e4 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Unit.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Unit** = [`Unit`](../../../../type-aliases/Unit.md) + +Defined in: [tempo.class.ts:1845](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1845) + +Configuration to use for #until() and #since() argument diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Until.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Until.md new file mode 100644 index 00000000..89b5ccdf --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Until.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Until** = [`Until`](../../../../type-aliases/Until.md) + +Defined in: [tempo.class.ts:1846](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1846) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/WEEKDAY-1.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/WEEKDAY-1.md new file mode 100644 index 00000000..192d4571 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/WEEKDAY-1.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **WEEKDAY** = `t.WEEKDAY` + +Defined in: [tempo.class.ts:72](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L72) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/WEEKDAYS.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/WEEKDAYS.md new file mode 100644 index 00000000..d9dd9afa --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/WEEKDAYS.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **WEEKDAYS** = `t.WEEKDAYS` + +Defined in: [tempo.class.ts:73](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L73) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Weekday.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Weekday.md new file mode 100644 index 00000000..ae79e9c3 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/Weekday.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **Weekday** = [`Weekday`](../../../../type-aliases/Weekday.md) + +Defined in: [tempo.class.ts:1883](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1883) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/hh.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/hh.md new file mode 100644 index 00000000..146f29d4 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/hh.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **hh** = [`hh`](../../../../type-aliases/hh.md) + +Defined in: [tempo.class.ts:1863](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1863) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/mi.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/mi.md new file mode 100644 index 00000000..e762855e --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/mi.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **mi** = [`mi`](../../../../type-aliases/mi.md) + +Defined in: [tempo.class.ts:1864](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1864) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/mm.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/mm.md new file mode 100644 index 00000000..b728cd1e --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/mm.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **mm** = [`mm`](../../../../type-aliases/mm.md) + +Defined in: [tempo.class.ts:1862](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1862) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ms.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ms.md new file mode 100644 index 00000000..e9e71eda --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ms.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **ms** = [`ms`](../../../../type-aliases/ms.md) + +Defined in: [tempo.class.ts:1866](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1866) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ns.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ns.md new file mode 100644 index 00000000..7cef821c --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ns.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **ns** = [`ns`](../../../../type-aliases/ns.md) + +Defined in: [tempo.class.ts:1868](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1868) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ss.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ss.md new file mode 100644 index 00000000..4c98a624 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ss.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **ss** = [`ss`](../../../../type-aliases/ss.md) + +Defined in: [tempo.class.ts:1865](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1865) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/us.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/us.md new file mode 100644 index 00000000..dc75d6d0 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/us.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **us** = [`us`](../../../../type-aliases/us.md) + +Defined in: [tempo.class.ts:1867](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1867) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ww.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ww.md new file mode 100644 index 00000000..0125d3e7 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/type-aliases/ww.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> **ww** = [`ww`](../../../../type-aliases/ww.md) + +Defined in: [tempo.class.ts:1869](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1869) diff --git a/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/variables/tickers.md b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/variables/tickers.md new file mode 100644 index 00000000..ea19e6c3 --- /dev/null +++ b/packages/tempo/doc/api/@magmacomputing/namespaces/Tempo/variables/tickers.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../../../../README.md) + +*** + +> `const` **tickers**: `Ticker.Snapshot`[] + +Defined in: [plugin/extend/extend.ticker.ts:15](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/extend/extend.ticker.ts#L15) diff --git a/packages/tempo/doc/api/README.md b/packages/tempo/doc/api/README.md new file mode 100644 index 00000000..d51e9331 --- /dev/null +++ b/packages/tempo/doc/api/README.md @@ -0,0 +1,106 @@ +**@magmacomputing/tempo** + +*** + +## Namespaces + +- [Internal](@magmacomputing/namespaces/Internal/README.md) +- [Tempo](@magmacomputing/namespaces/Tempo/README.md) + +## Classes + +- [Tempo](classes/Tempo.md) + +## Interfaces + +- [Extension](interfaces/Extension.md) +- [Module](interfaces/Module.md) +- [Params](interfaces/Params.md) +- [Plugin](interfaces/Plugin.md) +- [TermPlugin](interfaces/TermPlugin.md) + +## Type Aliases + +- [Add](type-aliases/Add.md) +- [AddUnits](type-aliases/AddUnits.md) +- [BaseDuration](type-aliases/BaseDuration.md) +- [COMPASS](type-aliases/COMPASS.md) +- [DateTime](type-aliases/DateTime.md) +- [DateTimeUnit](type-aliases/DateTimeUnit.md) +- [Duration](type-aliases/Duration.md) +- [DURATION](type-aliases/DURATION-1.md) +- [DURATIONS](type-aliases/DURATIONS.md) +- [Element](type-aliases/Element.md) +- [ELEMENT](type-aliases/ELEMENT-1.md) +- [FlexibleDuration](type-aliases/FlexibleDuration.md) +- [Format](type-aliases/Format.md) +- [FORMAT](type-aliases/FORMAT-1.md) +- [FormatRegistry](type-aliases/FormatRegistry.md) +- [Formats](type-aliases/Formats.md) +- [FormatType](type-aliases/FormatType.md) +- [Groups](type-aliases/Groups.md) +- [hh](type-aliases/hh.md) +- [Logic](type-aliases/Logic.md) +- [mi](type-aliases/mi.md) +- [mm](type-aliases/mm.md) +- [Mode](type-aliases/Mode.md) +- [MODE](type-aliases/MODE-1.md) +- [Modifier](type-aliases/Modifier.md) +- [Month](type-aliases/Month.md) +- [MONTH](type-aliases/MONTH-1.md) +- [MONTHS](type-aliases/MONTHS.md) +- [ms](type-aliases/ms.md) +- [Mutate](type-aliases/Mutate.md) +- [MUTATION](type-aliases/MUTATION.md) +- [ns](type-aliases/ns.md) +- [Number](type-aliases/Number.md) +- [NumericPattern](type-aliases/NumericPattern.md) +- [Options](type-aliases/Options.md) +- [OwnFormat](type-aliases/OwnFormat.md) +- [Pair](type-aliases/Pair.md) +- [Pattern](type-aliases/Pattern.md) +- [Range](type-aliases/Range.md) +- [Relative](type-aliases/Relative.md) +- [ResolvedRange](type-aliases/ResolvedRange.md) +- [SEASON](type-aliases/SEASON.md) +- [Set](type-aliases/Set.md) +- [SetFields](type-aliases/SetFields.md) +- [ss](type-aliases/ss.md) +- [TermOffset](type-aliases/TermOffset.md) +- [Terms](type-aliases/Terms.md) +- [TIMEZONE](type-aliases/TIMEZONE.md) +- [Unit](type-aliases/Unit.md) +- [Units](type-aliases/Units.md) +- [Until](type-aliases/Until.md) +- [us](type-aliases/us.md) +- [Weekday](type-aliases/Weekday.md) +- [WEEKDAY](type-aliases/WEEKDAY-1.md) +- [WEEKDAYS](type-aliases/WEEKDAYS.md) +- [ww](type-aliases/ww.md) +- [ZONED\_DATE\_TIME](type-aliases/ZONED_DATE_TIME.md) + +## Variables + +- [COMPASS](variables/COMPASS.md) +- [DISCOVERY](variables/DISCOVERY.md) +- [DURATION](variables/DURATION.md) +- [DURATIONS](variables/DURATIONS.md) +- [ELEMENT](variables/ELEMENT.md) +- [enums](variables/enums.md) +- [fmtTempo](variables/fmtTempo.md) +- [FORMAT](variables/FORMAT.md) +- [getStamp](variables/getStamp.md) +- [getTempo](variables/getTempo.md) +- [LIMIT](variables/LIMIT.md) +- [MODE](variables/MODE.md) +- [MONTH](variables/MONTH.md) +- [MONTHS](variables/MONTHS.md) +- [MUTATION](variables/MUTATION.md) +- [NUMBER](variables/NUMBER.md) +- [OPTION](variables/OPTION.md) +- [PARSE](variables/PARSE.md) +- [SEASON](variables/SEASON.md) +- [TIMEZONE](variables/TIMEZONE.md) +- [WEEKDAY](variables/WEEKDAY.md) +- [WEEKDAYS](variables/WEEKDAYS.md) +- [ZONED\_DATE\_TIME](variables/ZONED_DATE_TIME.md) diff --git a/packages/tempo/doc/api/classes/Tempo.md b/packages/tempo/doc/api/classes/Tempo.md new file mode 100644 index 00000000..868ef4ac --- /dev/null +++ b/packages/tempo/doc/api/classes/Tempo.md @@ -0,0 +1,4693 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +Defined in: [tempo.class.ts:71](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L71) + +# Tempo +A powerful wrapper around `Temporal.ZonedDateTime` for flexible parsing and intuitive manipulation of date-time objects. +Bridges the gap between raw string/number inputs and the strict requirements of the ECMAScript Temporal API. + +## Indexable + +> \[`key`: `symbol`\]: `string` \| `boolean` \| ((`hint?`) => `string` \| `number` \| `bigint`) \| (() => `ArrayIterator`\<`EntryOf`\<`any`\>\>) \| (() => `object`) + +## Constructors + +### Constructor + +> **new Tempo**(`options?`): `Tempo` + +Defined in: [tempo.class.ts:1035](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1035) + +Instantiates a new `Tempo` object with configuration only. + +#### Parameters + +##### options? + +Configuration options for this specific instance. + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +#### Returns + +`Tempo` + +### Constructor + +> **new Tempo**(`tempo`, `options?`): `Tempo` + +Defined in: [tempo.class.ts:1042](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1042) + +Instantiates a new `Tempo` object with a value. + +#### Parameters + +##### tempo + +[`DateTime`](../type-aliases/DateTime.md) + +The date-time value to parse. + +##### options? + +Configuration options for this specific instance. + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +#### Returns + +`Tempo` + +## Accessors + +### \[toStringTag\] + +#### Get Signature + +> **get** **\[toStringTag\]**(): `string` + +Defined in: [tempo.class.ts:1024](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1024) + +##### Returns + +`string` + +*** + +### cal + +#### Get Signature + +> **get** **cal**(): `string` + +Defined in: [tempo.class.ts:1217](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1217) + +Temporal Calendar ID (e.g., 'iso8601' | 'gregory') + +##### Returns + +`string` + +*** + +### config + +#### Get Signature + +> **get** **config**(): [`Config`](../@magmacomputing/namespaces/Internal/interfaces/Config.md) + +Defined in: [tempo.class.ts:1258](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1258) + +current Tempo configuration + +##### Returns + +[`Config`](../@magmacomputing/namespaces/Internal/interfaces/Config.md) + +*** + +### day + +#### Get Signature + +> **get** **day**(): `number` + +Defined in: [tempo.class.ts:1208](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1208) + +Day of the month (alias for `dd`) + +##### Returns + +`number` + +*** + +### dd + +#### Get Signature + +> **get** **dd**(): `number` + +Defined in: [tempo.class.ts:1207](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1207) + +Day of the month (1-31) + +##### Returns + +`number` + +*** + +### dow + +#### Get Signature + +> **get** **dow**(): `0` \| `1` \| `2` \| `3` \| `4` \| `5` \| `6` \| `7` + +Defined in: [tempo.class.ts:1223](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1223) + +ISO weekday number: Mon=1, Sun=7 + +##### Returns + +`0` \| `1` \| `2` \| `3` \| `4` \| `5` \| `6` \| `7` + +*** + +### epoch + +#### Get Signature + +> **get** **epoch**(): `SecureObject`\<\{ `ms`: `number`; `ns`: `bigint`; `ss`: `number`; `us`: `number`; \}\> + +Defined in: [tempo.class.ts:1288](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1288) + +units since epoch + +##### Returns + +`SecureObject`\<\{ `ms`: `number`; `ns`: `bigint`; `ss`: `number`; `us`: `number`; \}\> + +*** + +### ff + +#### Get Signature + +> **get** **ff**(): `number` + +Defined in: [tempo.class.ts:1215](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1215) + +Fractional seconds (e.g., 0.123456789) + +##### Returns + +`number` + +*** + +### fmt + +#### Get Signature + +> **get** **fmt**(): `any` + +Defined in: [tempo.class.ts:1287](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1287) + +Formatted results for all pre-defined format codes + +##### Returns + +`any` + +*** + +### hh + +#### Get Signature + +> **get** **hh**(): [`hh`](../type-aliases/hh.md) + +Defined in: [tempo.class.ts:1209](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1209) + +Hour of the day (0-23) + +##### Returns + +[`hh`](../type-aliases/hh.md) + +*** + +### isValid + +#### Get Signature + +> **get** **isValid**(): `boolean` + +Defined in: [tempo.class.ts:1226](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1226) + +`true` if the underlying date-time is valid. + +##### Returns + +`boolean` + +*** + +### mi + +#### Get Signature + +> **get** **mi**(): [`mi`](../type-aliases/mi.md) + +Defined in: [tempo.class.ts:1210](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1210) + +Minutes of the hour (0-59) + +##### Returns + +[`mi`](../type-aliases/mi.md) + +*** + +### mm + +#### Get Signature + +> **get** **mm**(): [`mm`](../type-aliases/mm.md) + +Defined in: [tempo.class.ts:1205](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1205) + +Month number: Jan=1, Dec=12 + +##### Returns + +[`mm`](../type-aliases/mm.md) + +*** + +### mmm + +#### Get Signature + +> **get** **mmm**(): `"All"` \| `"Jan"` \| `"Feb"` \| `"Mar"` \| `"Apr"` \| `"May"` \| `"Jun"` \| `"Jul"` \| `"Aug"` \| `"Sep"` \| `"Oct"` \| `"Nov"` \| `"Dec"` + +Defined in: [tempo.class.ts:1219](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1219) + +Short month name (e.g., 'Jan') + +##### Returns + +`"All"` \| `"Jan"` \| `"Feb"` \| `"Mar"` \| `"Apr"` \| `"May"` \| `"Jun"` \| `"Jul"` \| `"Aug"` \| `"Sep"` \| `"Oct"` \| `"Nov"` \| `"Dec"` + +*** + +### mon + +#### Get Signature + +> **get** **mon**(): `"May"` \| `"Every"` \| `"January"` \| `"February"` \| `"March"` \| `"April"` \| `"June"` \| `"July"` \| `"August"` \| `"September"` \| `"October"` \| `"November"` \| `"December"` + +Defined in: [tempo.class.ts:1220](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1220) + +Full month name (e.g., 'January') + +##### Returns + +`"May"` \| `"Every"` \| `"January"` \| `"February"` \| `"March"` \| `"April"` \| `"June"` \| `"July"` \| `"August"` \| `"September"` \| `"October"` \| `"November"` \| `"December"` + +*** + +### ms + +#### Get Signature + +> **get** **ms**(): [`ms`](../type-aliases/ms.md) + +Defined in: [tempo.class.ts:1212](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1212) + +Milliseconds of the second (0-999) + +##### Returns + +[`ms`](../type-aliases/ms.md) + +*** + +### nano + +#### Get Signature + +> **get** **nano**(): `bigint` + +Defined in: [tempo.class.ts:1224](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1224) + +Nanoseconds since Unix epoch (BigInt) + +##### Returns + +`bigint` + +*** + +### ns + +#### Get Signature + +> **get** **ns**(): [`ns`](../type-aliases/ns.md) + +Defined in: [tempo.class.ts:1214](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1214) + +Nanoseconds of the microsecond (0-999) + +##### Returns + +[`ns`](../type-aliases/ns.md) + +*** + +### parse + +#### Get Signature + +> **get** **parse**(): [`Parse`](../@magmacomputing/namespaces/Internal/interfaces/Parse.md) + +Defined in: [tempo.class.ts:1281](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1281) + +Instance-specific parse rules (merged with global) + +##### Returns + +[`Parse`](../@magmacomputing/namespaces/Internal/interfaces/Parse.md) + +*** + +### ranges + +#### Get Signature + +> **get** **ranges**(): `Record`\<`string`, `string`\> + +Defined in: [tempo.class.ts:1245](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1245) + +current range key for every registered term + +##### Returns + +`Record`\<`string`, `string`\> + +*** + +### ss + +#### Get Signature + +> **get** **ss**(): [`ss`](../type-aliases/ss.md) + +Defined in: [tempo.class.ts:1211](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1211) + +Seconds of the minute (0-59) + +##### Returns + +[`ss`](../type-aliases/ss.md) + +*** + +### term + +#### Get Signature + +> **get** **term**(): `any` + +Defined in: [tempo.class.ts:1286](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1286) + +Object containing results from all term plugins + +##### Returns + +`any` + +*** + +### terms + +#### Get Signature + +> **get** **terms**(): `Record`\<`string`, `string`[]\> + +Defined in: [tempo.class.ts:1232](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1232) + +list of registered terms and their available range keys + +##### Returns + +`Record`\<`string`, `string`[]\> + +*** + +### ts + +#### Get Signature + +> **get** **ts**(): `number` \| `bigint` + +Defined in: [tempo.class.ts:1218](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1218) + +Unix timestamp (defaults to milliseconds) + +##### Returns + +`number` \| `bigint` + +*** + +### tz + +#### Get Signature + +> **get** **tz**(): `string` + +Defined in: [tempo.class.ts:1216](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1216) + +IANA Time Zone ID (e.g., 'Australia/Sydney') + +##### Returns + +`string` + +*** + +### us + +#### Get Signature + +> **get** **us**(): [`us`](../type-aliases/us.md) + +Defined in: [tempo.class.ts:1213](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1213) + +Microseconds of the millisecond (0-999) + +##### Returns + +[`us`](../type-aliases/us.md) + +*** + +### wkd + +#### Get Signature + +> **get** **wkd**(): `"Everyday"` \| `"Monday"` \| `"Tuesday"` \| `"Wednesday"` \| `"Thursday"` \| `"Friday"` \| `"Saturday"` \| `"Sunday"` + +Defined in: [tempo.class.ts:1222](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1222) + +Full weekday name (e.g., 'Monday') + +##### Returns + +`"Everyday"` \| `"Monday"` \| `"Tuesday"` \| `"Wednesday"` \| `"Thursday"` \| `"Friday"` \| `"Saturday"` \| `"Sunday"` + +*** + +### ww + +#### Get Signature + +> **get** **ww**(): [`ww`](../type-aliases/ww.md) + +Defined in: [tempo.class.ts:1206](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1206) + +ISO week number of the year + +##### Returns + +[`ww`](../type-aliases/ww.md) + +*** + +### www + +#### Get Signature + +> **get** **www**(): `"All"` \| `"Mon"` \| `"Tue"` \| `"Wed"` \| `"Thu"` \| `"Fri"` \| `"Sat"` \| `"Sun"` + +Defined in: [tempo.class.ts:1221](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1221) + +Short weekday name (e.g., 'Mon') + +##### Returns + +`"All"` \| `"Mon"` \| `"Tue"` \| `"Wed"` \| `"Thu"` \| `"Fri"` \| `"Sat"` \| `"Sun"` + +*** + +### yw + +#### Get Signature + +> **get** **yw**(): `number` \| `undefined` + +Defined in: [tempo.class.ts:1204](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1204) + +4-digit ISO week-numbering year + +##### Returns + +`number` \| `undefined` + +*** + +### yy + +#### Get Signature + +> **get** **yy**(): `number` + +Defined in: [tempo.class.ts:1203](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1203) + +4-digit year (e.g., 2024) + +##### Returns + +`number` + +*** + +### config + +#### Get Signature + +> **get** `static` **config**(): `any` + +Defined in: [tempo.class.ts:860](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L860) + +global Tempo configuration + +##### Returns + +`any` + +*** + +### default + +#### Get Signature + +> **get** `static` **default**(): `Readonly`\<\{ `calendar?`: `string` \| `SecureObject`\<`ZonedDateTime`\> \| `SecureObject`\<`PlainDate`\> \| `SecureObject`\<`PlainDateTime`\> \| `SecureObject`\<`PlainMonthDay`\> \| `SecureObject`\<`PlainYearMonth`\>; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: [`Logic`](../type-aliases/Logic.md) \| `SecureObject`\<`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\>\> \| `SecureObject`\<`Record`\<`string` \| `symbol`, [`Logic`](../type-aliases/Logic.md)\>\> \| `SecureArray`\<[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\>\>; `formats?`: `SecureObject`\<`Property`\<`any`\>\>; `layout?`: [`Pattern`](../type-aliases/Pattern.md) \| `SecureObject`\<`Record`\<`string` \| `symbol`, [`Pattern`](../type-aliases/Pattern.md)\>\> \| `SecureArray`\<[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\>\> \| `SecureObject`\<`Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\>\>; `locale?`: `string`; `mdyLayouts?`: `SecureArray`\<[`Pair`](../type-aliases/Pair.md)\>; `mdyLocales?`: `string` \| `SecureArray`\<`string`\>; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: [`Logic`](../type-aliases/Logic.md) \| `SecureObject`\<`Record`\<`string` \| `symbol`, [`Logic`](../type-aliases/Logic.md)\>\> \| `SecureArray`\<[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\>\> \| `SecureObject`\<`Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\>\>; `pivot?`: `number`; `plugins?`: `SecureObject`\<[`Plugin`](../interfaces/Plugin.md)\> \| `SecureArray`\<[`Plugin`](../interfaces/Plugin.md)\>; `rtfFormat?`: `SecureObject`\<`RelativeTimeFormat`\>; `rtfStyle?`: `RelativeTimeFormatStyle`; `scope`: `"default"`; `silent?`: `boolean`; `snippet?`: [`Pattern`](../type-aliases/Pattern.md) \| `SecureObject`\<`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\>\> \| `SecureObject`\<`Record`\<`string` \| `symbol`, [`Pattern`](../type-aliases/Pattern.md)\>\> \| `SecureArray`\<[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\>\>; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: [`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md); `timeZone`: `string` \| `SecureObject`\<`ZonedDateTime`\>; `value?`: `string` \| `number` \| `bigint` \| `Date` \| `SecureObject`\<`ZonedDateTime`\> \| `SecureObject`\<`PlainDate`\> \| `SecureObject`\<`PlainDateTime`\> \| `SecureObject`\<`Tempo`\> \| `SecureObject`\<`Instant`\> \| `SecureObject`\<`PlainTime`\> \| `SecureObject`\<`Duration`\> \| `SecureObject`\<`ZonedDateTimeLikeObject`\> \| `null`; \}\> + +Defined in: [tempo.class.ts:923](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L923) + +Tempo initial default settings + +##### Returns + +`Readonly`\<\{ `calendar?`: `string` \| `SecureObject`\<`ZonedDateTime`\> \| `SecureObject`\<`PlainDate`\> \| `SecureObject`\<`PlainDateTime`\> \| `SecureObject`\<`PlainMonthDay`\> \| `SecureObject`\<`PlainYearMonth`\>; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: [`Logic`](../type-aliases/Logic.md) \| `SecureObject`\<`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\>\> \| `SecureObject`\<`Record`\<`string` \| `symbol`, [`Logic`](../type-aliases/Logic.md)\>\> \| `SecureArray`\<[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\>\>; `formats?`: `SecureObject`\<`Property`\<`any`\>\>; `layout?`: [`Pattern`](../type-aliases/Pattern.md) \| `SecureObject`\<`Record`\<`string` \| `symbol`, [`Pattern`](../type-aliases/Pattern.md)\>\> \| `SecureArray`\<[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\>\> \| `SecureObject`\<`Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\>\>; `locale?`: `string`; `mdyLayouts?`: `SecureArray`\<[`Pair`](../type-aliases/Pair.md)\>; `mdyLocales?`: `string` \| `SecureArray`\<`string`\>; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: [`Logic`](../type-aliases/Logic.md) \| `SecureObject`\<`Record`\<`string` \| `symbol`, [`Logic`](../type-aliases/Logic.md)\>\> \| `SecureArray`\<[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\>\> \| `SecureObject`\<`Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\>\>; `pivot?`: `number`; `plugins?`: `SecureObject`\<[`Plugin`](../interfaces/Plugin.md)\> \| `SecureArray`\<[`Plugin`](../interfaces/Plugin.md)\>; `rtfFormat?`: `SecureObject`\<`RelativeTimeFormat`\>; `rtfStyle?`: `RelativeTimeFormatStyle`; `scope`: `"default"`; `silent?`: `boolean`; `snippet?`: [`Pattern`](../type-aliases/Pattern.md) \| `SecureObject`\<`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\>\> \| `SecureObject`\<`Record`\<`string` \| `symbol`, [`Pattern`](../type-aliases/Pattern.md)\>\> \| `SecureArray`\<[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\>\>; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: [`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md); `timeZone`: `string` \| `SecureObject`\<`ZonedDateTime`\>; `value?`: `string` \| `number` \| `bigint` \| `Date` \| `SecureObject`\<`ZonedDateTime`\> \| `SecureObject`\<`PlainDate`\> \| `SecureObject`\<`PlainDateTime`\> \| `SecureObject`\<`Tempo`\> \| `SecureObject`\<`Instant`\> \| `SecureObject`\<`PlainTime`\> \| `SecureObject`\<`Duration`\> \| `SecureObject`\<`ZonedDateTimeLikeObject`\> \| `null`; \}\> + +*** + +### discovery + +#### Get Signature + +> **get** `static` **discovery**(): `any` + +Defined in: [tempo.class.ts:876](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L876) + +global discovery configuration + +##### Returns + +`any` + +*** + +### FORMAT + +#### Get Signature + +> **get** `static` **FORMAT**(): `EnumifyType`\<\{ `date`: `"{yyyy}-{mm}-{dd}"`; `dayDate`: `"{dd}-{mmm}-{yyyy}"`; `dayMonth`: `"{dd}-{mmm}"`; `dayTime`: `"{dd}-{mmm}-{yyyy} {hh}:{mi}:{ss}"`; `display`: `"{www}, {dd} {mmm} {yyyy}"`; `logStamp`: `"{yyyy}{mm}{dd}T{hhmiss}.{ff}"`; `sortTime`: `"{yyyy}-{mm}-{dd} {hh}:{mi}:{ss}"`; `time`: `"{hh}:{mi}:{ss}"`; `weekDate`: `"{www}, {yyyy}-{mmm}-{dd}"`; `weekStamp`: `"{www}, {yyyy}-{mmm}-{dd} {hh}:{mi}:{ss}.{ff}"`; `weekTime`: `"{www}, {yyyy}-{mmm}-{dd} {hh}:{mi}:{ss}"`; `yearMonth`: `"{yyyy}{mm}"`; `yearMonthDay`: `"{yyyy}{mm}{dd}"`; `yearWeek`: `"{yw}{ww}"`; \}\> + +Defined in: [tempo.class.ts:83](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L83) + +Pre-configured format {name -> string} pairs + +##### Returns + +`EnumifyType`\<\{ `date`: `"{yyyy}-{mm}-{dd}"`; `dayDate`: `"{dd}-{mmm}-{yyyy}"`; `dayMonth`: `"{dd}-{mmm}"`; `dayTime`: `"{dd}-{mmm}-{yyyy} {hh}:{mi}:{ss}"`; `display`: `"{www}, {dd} {mmm} {yyyy}"`; `logStamp`: `"{yyyy}{mm}{dd}T{hhmiss}.{ff}"`; `sortTime`: `"{yyyy}-{mm}-{dd} {hh}:{mi}:{ss}"`; `time`: `"{hh}:{mi}:{ss}"`; `weekDate`: `"{www}, {yyyy}-{mmm}-{dd}"`; `weekStamp`: `"{www}, {yyyy}-{mmm}-{dd} {hh}:{mi}:{ss}.{ff}"`; `weekTime`: `"{www}, {yyyy}-{mmm}-{dd} {hh}:{mi}:{ss}"`; `yearMonth`: `"{yyyy}{mm}"`; `yearMonthDay`: `"{yyyy}{mm}{dd}"`; `yearWeek`: `"{yw}{ww}"`; \}\> + +*** + +### formats + +#### Get Signature + +> **get** `static` **formats**(): `any` + +Defined in: [tempo.class.ts:912](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L912) + +static Tempo.formats (registry) + +##### Returns + +`any` + +*** + +### instant + +#### Get Signature + +> **get** `static` **instant**(): `Instant` + +Defined in: [tempo.class.ts:895](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L895) + +get the current system Instant + +##### Returns + +`Instant` + +*** + +### LIMIT + +#### Get Signature + +> **get** `static` **LIMIT**(): `object` + +Defined in: [tempo.class.ts:87](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L87) + +some useful Dates + +##### Returns + +###### maxTempo + +###### Get Signature + +> **get** **maxTempo**(): `bigint` + +Tempo(31-Dec-9999.23:59:59).ns + +###### Returns + +`bigint` + +###### minTempo + +###### Get Signature + +> **get** **minTempo**(): `bigint` + +Tempo(01-Jan-1000.00:00:00).ns + +###### Returns + +`bigint` + +*** + +### MODE + +#### Get Signature + +> **get** `static` **MODE**(): `EnumifyType`\<\{ `Auto`: `"auto"`; `Defer`: `"defer"`; `Strict`: `"strict"`; \}\> + +Defined in: [tempo.class.ts:86](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L86) + +initialization strategies + +##### Returns + +`EnumifyType`\<\{ `Auto`: `"auto"`; `Defer`: `"defer"`; `Strict`: `"strict"`; \}\> + +*** + +### NUMBER + +#### Get Signature + +> **get** `static` **NUMBER**(): `EnumifyType`\<\{ `eight`: `8`; `five`: `5`; `four`: `4`; `nine`: `9`; `one`: `1`; `seven`: `7`; `six`: `6`; `ten`: `10`; `three`: `3`; `two`: `2`; `zero`: `0`; \}\> + +Defined in: [tempo.class.ts:84](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L84) + +Number names (0-10) + +##### Returns + +`EnumifyType`\<\{ `eight`: `8`; `five`: `5`; `four`: `4`; `nine`: `9`; `one`: `1`; `seven`: `7`; `six`: `6`; `ten`: `10`; `three`: `3`; `two`: `2`; `zero`: `0`; \}\> + +*** + +### options + +#### Get Signature + +> **get** `static` **options**(): `any` + +Defined in: [tempo.class.ts:882](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L882) + +##### Returns + +`any` + +*** + +### parse + +#### Get Signature + +> **get** `static` **parse**(): [`Parse`](../@magmacomputing/namespaces/Internal/interfaces/Parse.md) + +Defined in: [tempo.class.ts:930](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L930) + +configuration governing the static 'rules' used when parsing t.DateTime argument + +##### Returns + +[`Parse`](../@magmacomputing/namespaces/Internal/interfaces/Parse.md) + +*** + +### properties + +#### Get Signature + +> **get** `static` **properties**(): `SecureArray`\<`string`\> + +Defined in: [tempo.class.ts:917](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L917) + +static Tempo properties getter + +##### Returns + +`SecureArray`\<`string`\> + +*** + +### terms + +#### Get Signature + +> **get** `static` **terms**(): `SecureArray`\<`Omit`\<[`TermPlugin`](../interfaces/TermPlugin.md), `"define"` \| `"resolve"`\>\> & `Record`\<`string`, `Omit`\<[`TermPlugin`](../interfaces/TermPlugin.md), `"define"` \| `"resolve"`\>\> + +Defined in: [tempo.class.ts:898](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L898) + +static Tempo.terms (registry) + +##### Returns + +`SecureArray`\<`Omit`\<[`TermPlugin`](../interfaces/TermPlugin.md), `"define"` \| `"resolve"`\>\> & `Record`\<`string`, `Omit`\<[`TermPlugin`](../interfaces/TermPlugin.md), `"define"` \| `"resolve"`\>\> + +*** + +### TIMEZONE + +#### Get Signature + +> **get** `static` **TIMEZONE**(): `object` + +Defined in: [tempo.class.ts:85](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L85) + +TimeZone aliases + +##### Returns + +`object` + +###### acst + +> `readonly` **acst**: `"Australia/Adelaide"` = `'Australia/Adelaide'` + +###### aest + +> `readonly` **aest**: `"Australia/Sydney"` = `'Australia/Sydney'` + +###### awst + +> `readonly` **awst**: `"Australia/Perth"` = `'Australia/Perth'` + +###### cet + +> `readonly` **cet**: `"Europe/Paris"` = `'Europe/Paris'` + +###### cst + +> `readonly` **cst**: `"America/Chicago"` = `'America/Chicago'` + +###### eet + +> `readonly` **eet**: `"Europe/Helsinki"` = `'Europe/Helsinki'` + +###### est + +> `readonly` **est**: `"America/New_York"` = `'America/New_York'` + +###### gmt + +> `readonly` **gmt**: `"Europe/London"` = `'Europe/London'` + +###### ist + +> `readonly` **ist**: `"Asia/Kolkata"` = `'Asia/Kolkata'` + +###### jst + +> `readonly` **jst**: `"Asia/Tokyo"` = `'Asia/Tokyo'` + +###### mst + +> `readonly` **mst**: `"America/Denver"` = `'America/Denver'` + +###### npt + +> `readonly` **npt**: `"Asia/Kathmandu"` = `'Asia/Kathmandu'` + +###### nzt + +> `readonly` **nzt**: `"Pacific/Auckland"` = `'Pacific/Auckland'` + +###### pst + +> `readonly` **pst**: `"America/Los_Angeles"` = `'America/Los_Angeles'` + +###### utc + +> `readonly` **utc**: `"UTC"` = `'UTC'` + +## Methods + +### \[iterator\]() + +> **\[iterator\]**(): `ArrayIterator`\<`EntryOf`\<`any`\>\> + +Defined in: [tempo.class.ts:1020](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1020) + +iterate over instance formats + +#### Returns + +`ArrayIterator`\<`EntryOf`\<`any`\>\> + +*** + +### \[toPrimitive\]() + +> **\[toPrimitive\]**(`hint?`): `string` \| `number` \| `bigint` + +Defined in: [tempo.class.ts:1011](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1011) + +allow for auto-convert of Tempo to BigInt, Number or String + +#### Parameters + +##### hint? + +`"string"` \| `"number"` \| `"default"` + +#### Returns + +`string` \| `number` \| `bigint` + +*** + +### add() + +> **add**(`tempo?`, `options?`): `Tempo` + +Defined in: [tempo.class.ts:1321](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1321) + +returns a new `Tempo` with specific duration added. + +#### Parameters + +##### tempo? + +[`Add`](../type-aliases/Add.md) + +##### options? + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +#### Returns + +`Tempo` + +*** + +### clone() + +> **clone**(): `Tempo` + +Defined in: [tempo.class.ts:1323](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1323) + +returns a clone of the current `Tempo` instance. + +#### Returns + +`Tempo` + +*** + +### format() + +#### Call Signature + +> **format**\<`K`\>(`fmt`): `any` + +Defined in: [tempo.class.ts:1305](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1305) + +##### Type Parameters + +###### K + +`K` *extends* `Format` + +##### Parameters + +###### fmt + +`K` + +##### Returns + +`any` + +#### Call Signature + +> **format**(`fmt`): `any` + +Defined in: [plugin/module/module.format.ts:12](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/module/module.format.ts#L12) + +applies a format to the instance. + +##### Parameters + +###### fmt + +`any` + +##### Returns + +`any` + +*** + +### set() + +> **set**(`tempo?`, `options?`): `Tempo` + +Defined in: [tempo.class.ts:1322](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1322) + +returns a new `Tempo` with specific offsets. + +#### Parameters + +##### tempo? + +[`Set`](../type-aliases/Set.md) + +##### options? + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +#### Returns + +`Tempo` + +*** + +### since() + +#### Call Signature + +> **since**(...`args`): `any` + +Defined in: [tempo.class.ts:1316](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1316) + +time elapsed since another date-time + +##### Parameters + +###### args + +...`any`[] + +##### Returns + +`any` + +#### Call Signature + +> **since**(`until`, `opts?`): `string` + +Defined in: [plugin/module/module.duration.ts:18](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/module/module.duration.ts#L18) + +time elapsed since (with unit) + +##### Parameters + +###### until + +[`Until`](../type-aliases/Until.md) + +###### opts? + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +##### Returns + +`string` + +#### Call Signature + +> **since**(`dateTimeOrOpts`, `until`): `string` + +Defined in: [plugin/module/module.duration.ts:19](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/module/module.duration.ts#L19) + +time elapsed since another date-time (with unit) + +##### Parameters + +###### dateTimeOrOpts + +[`DateTime`](../type-aliases/DateTime.md) \| \{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +[`DateTime`](../type-aliases/DateTime.md) + +*** + +###### Type Literal + +\{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +###### calendar? + +CalendarLike \| undefined + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ... + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +RelativeTimeFormatStyle \| undefined + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +TimeStamp \| undefined + +Precision to measure timestamps (ms | us) + +###### timeZone? + +TimeZoneLike \| undefined + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +###### until + +[`Until`](../type-aliases/Until.md) + +##### Returns + +`string` + +#### Call Signature + +> **since**(`dateTimeOrOpts?`, `opts?`): `string` + +Defined in: [plugin/module/module.duration.ts:20](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/module/module.duration.ts#L20) + +time elapsed since another date-time (w'out unit) + +##### Parameters + +###### dateTimeOrOpts? + +[`DateTime`](../type-aliases/DateTime.md) \| \{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +[`DateTime`](../type-aliases/DateTime.md) + +*** + +###### Type Literal + +\{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +###### calendar? + +CalendarLike \| undefined + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ... + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +RelativeTimeFormatStyle \| undefined + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +TimeStamp \| undefined + +Precision to measure timestamps (ms | us) + +###### timeZone? + +TimeZoneLike \| undefined + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +###### opts? + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +##### Returns + +`string` + +#### Call Signature + +> **since**(`optsOrDate?`, `optsOrUntil?`): `string` + +Defined in: [plugin/module/module.duration.ts:21](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/module/module.duration.ts#L21) + +time elapsed since another date-time + +##### Parameters + +###### optsOrDate? + +`any` + +###### optsOrUntil? + +`any` + +##### Returns + +`string` + +*** + +### toDate() + +> **toDate**(): `Date` + +Defined in: [tempo.class.ts:1341](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1341) + +the date-time as a standard `Date` object. + +#### Returns + +`Date` + +*** + +### toDateTime() + +> **toDateTime**(): `ZonedDateTime` + +Defined in: [tempo.class.ts:1326](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1326) + +returns the underlying Temporal.ZonedDateTime + +#### Returns + +`ZonedDateTime` + +*** + +### toInstant() + +> **toInstant**(): `Instant` + +Defined in: [tempo.class.ts:1338](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1338) + +returns the underlying Temporal.Instant + +#### Returns + +`Instant` + +*** + +### toJSON() + +> **toJSON**(): `object` + +Defined in: [tempo.class.ts:1350](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1350) + +Custom JSON serialization for `JSON.stringify`. + +#### Returns + +##### calendar + +> **calendar**: `CalendarLike` + +Temporal calendar + +##### catch + +> **catch**: `boolean` \| `undefined` + +catch or throw Errors + +##### debug + +> **debug**: `boolean` \| `undefined` + +additional console.log for tracking + +##### discovery + +> **discovery**: `string` \| `symbol` + +globalThis Discovery Symbol + +##### formats + +> **formats**: `EnumifyType` + +pre-configured format strings + +##### locale + +> **locale**: `string` + +locale (e.g. en-AU) + +##### mode + +> **mode**: `"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +##### plugins + +> **plugins**: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +##### rtfFormat + +> **rtfFormat**: `RelativeTimeFormat` + +Pre-configured relative time formatter + +##### rtfStyle + +> **rtfStyle**: `RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +##### scope + +> **scope**: `"global"` \| `"local"` + +configuration (global | local) + +##### silent + +> **silent**: `boolean` \| `undefined` + +suppress console output during catch + +##### sphere + +> **sphere**: `"north"` \| `"south"` \| `"east"` \| `"west"` \| `undefined` + +hemisphere for term.qtr or term.szn + +##### store + +> **store**: `string` + +localStorage key + +##### timeStamp + +> **timeStamp**: [`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +##### timeZone + +> **timeZone**: `TimeZoneLike` + +Temporal timeZone + +##### value + +> **value**: `string` + +*** + +### toNow() + +> **toNow**(): `ZonedDateTime` + +Defined in: [tempo.class.ts:1340](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1340) + +the current system time localized to this instance. + +#### Returns + +`ZonedDateTime` + +*** + +### toPlainDate() + +> **toPlainDate**(): `PlainDate` + +Defined in: [tempo.class.ts:1335](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1335) + +returns a Temporal.PlainDate representation + +#### Returns + +`PlainDate` + +*** + +### toPlainDateTime() + +> **toPlainDateTime**(): `PlainDateTime` + +Defined in: [tempo.class.ts:1337](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1337) + +returns a Temporal.PlainDateTime representation + +#### Returns + +`PlainDateTime` + +*** + +### toPlainTime() + +> **toPlainTime**(): `PlainTime` + +Defined in: [tempo.class.ts:1336](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1336) + +returns a Temporal.PlainTime representation + +#### Returns + +`PlainTime` + +*** + +### toString() + +> **toString**(): `string` + +Defined in: [tempo.class.ts:1343](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1343) + +ISO8601 string representation of the date-time. + +#### Returns + +`string` + +*** + +### until() + +#### Call Signature + +> **until**(...`args`): `any` + +Defined in: [tempo.class.ts:1311](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1311) + +time duration until another date-time + +##### Parameters + +###### args + +...`any`[] + +##### Returns + +`any` + +#### Call Signature + +> **until**(`dateTimeOrOpts?`, `opts?`): [`Duration`](../type-aliases/Duration.md) + +Defined in: [plugin/module/module.duration.ts:13](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/module/module.duration.ts#L13) + +time duration until (returns Duration) + +##### Parameters + +###### dateTimeOrOpts? + +[`DateTime`](../type-aliases/DateTime.md) \| \{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +[`DateTime`](../type-aliases/DateTime.md) + +*** + +###### Type Literal + +\{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +###### calendar? + +CalendarLike \| undefined + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ... + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +RelativeTimeFormatStyle \| undefined + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +TimeStamp \| undefined + +Precision to measure timestamps (ms | us) + +###### timeZone? + +TimeZoneLike \| undefined + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +###### opts? + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +##### Returns + +[`Duration`](../type-aliases/Duration.md) + +#### Call Signature + +> **until**(`unit`, `opts?`): `number` + +Defined in: [plugin/module/module.duration.ts:14](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/module/module.duration.ts#L14) + +time duration until (with unit, returns number) + +##### Parameters + +###### unit + +[`Unit`](../type-aliases/Unit.md) + +###### opts? + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +##### Returns + +`number` + +#### Call Signature + +> **until**(`dateTimeOrOpts`, `unit`): `number` + +Defined in: [plugin/module/module.duration.ts:15](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/module/module.duration.ts#L15) + +time duration until another date-time (with unit ) + +##### Parameters + +###### dateTimeOrOpts + +[`DateTime`](../type-aliases/DateTime.md) \| \{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +[`DateTime`](../type-aliases/DateTime.md) + +*** + +###### Type Literal + +\{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +###### calendar? + +CalendarLike \| undefined + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ... + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +RelativeTimeFormatStyle \| undefined + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +TimeStamp \| undefined + +Precision to measure timestamps (ms | us) + +###### timeZone? + +TimeZoneLike \| undefined + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +###### unit + +[`Unit`](../type-aliases/Unit.md) + +##### Returns + +`number` + +#### Call Signature + +> **until**(`optsOrDate?`, `optsOrUntil?`): `number` \| [`Duration`](../type-aliases/Duration.md) + +Defined in: [plugin/module/module.duration.ts:16](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/module/module.duration.ts#L16) + +fallback: union of possible returns + +##### Parameters + +###### optsOrDate? + +`string` \| `number` \| `bigint` \| `Tempo` \| `Instant` \| `ZonedDateTime` \| `Date` \| `PlainDate` \| `PlainTime` \| `PlainDateTime` \| `Duration` \| `ZonedDateTimeLikeObject` \| \{\[`key`: `string`\]: `any`; `calendar?`: `CalendarLike`; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: `Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\>; `formats?`: `Property`\<`any`\>; `layout?`: [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\>; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\>; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: `RelativeTimeFormatStyle`; `silent?`: `boolean`; `snippet?`: `Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\>; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: [`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md); `timeZone?`: `TimeZoneLike`; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} \| `object` & `object` \| `null` + +`string` + +*** + +`number` + +*** + +`bigint` + +*** + +`Tempo` + +*** + +`Instant` + +*** + +`ZonedDateTime` + +*** + +`Date` + +*** + +`PlainDate` + +*** + +`PlainTime` + +*** + +`PlainDateTime` + +*** + +`Duration` + +*** + +`ZonedDateTimeLikeObject` + +*** + +###### Type Literal + +\{\[`key`: `string`\]: `any`; `calendar?`: `CalendarLike`; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: `Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\>; `formats?`: `Property`\<`any`\>; `layout?`: [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\>; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\>; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: `RelativeTimeFormatStyle`; `silent?`: `boolean`; `snippet?`: `Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\>; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: [`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md); `timeZone?`: `TimeZoneLike`; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +*** + +`object` & `object` + +*** + +`null` + +###### optsOrUntil? + +[`Until`](../type-aliases/Until.md) \| \{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +[`Until`](../type-aliases/Until.md) + +*** + +###### Type Literal + +\{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +###### calendar? + +CalendarLike \| undefined + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ... + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +RelativeTimeFormatStyle \| undefined + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +TimeStamp \| undefined + +Precision to measure timestamps (ms | us) + +###### timeZone? + +TimeZoneLike \| undefined + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +##### Returns + +`number` \| [`Duration`](../type-aliases/Duration.md) + +*** + +### \[dispose\]() + +> `static` **\[dispose\]**(): `void` + +Defined in: [tempo.class.ts:949](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L949) + +release global config and reset library to defaults + +#### Returns + +`void` + +*** + +### \[hasInstance\]() + +> `static` **\[hasInstance\]**(`instance`): `boolean` + +Defined in: [tempo.class.ts:953](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L953) + +#### Parameters + +##### instance + +`any` + +#### Returns + +`boolean` + +*** + +### \[iterator\]() + +> `static` **\[iterator\]**(): `ArrayIterator`\<`string`\> + +Defined in: [tempo.class.ts:944](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L944) + +iterate over Tempo properties + +#### Returns + +`ArrayIterator`\<`string`\> + +*** + +### compare() + +> `static` **compare**(`tempo1?`, `tempo2?`): `number` + +Defined in: [tempo.class.ts:853](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L853) + +Compares two `Tempo` instances or date-time values. + +#### Parameters + +##### tempo1? + +\{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} \| [`DateTime`](../type-aliases/DateTime.md) + +###### Type Literal + +\{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +###### calendar? + +CalendarLike \| undefined + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ... + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +RelativeTimeFormatStyle \| undefined + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +TimeStamp \| undefined + +Precision to measure timestamps (ms | us) + +###### timeZone? + +TimeZoneLike \| undefined + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +*** + +[`DateTime`](../type-aliases/DateTime.md) + +##### tempo2? + +\{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} \| [`DateTime`](../type-aliases/DateTime.md) + +###### Type Literal + +\{\[`key`: `string`\]: `any`; `calendar?`: CalendarLike \| undefined; `catch?`: `boolean`; `debug?`: `boolean`; `discovery?`: `string` \| `symbol`; `event?`: Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ...; `formats?`: `Property`\<`any`\>; `layout?`: PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined; `locale?`: `string`; `mdyLayouts?`: [`Pair`](../type-aliases/Pair.md)[]; `mdyLocales?`: `string` \| `string`[]; `mode?`: `"auto"` \| `"strict"` \| `"defer"`; `period?`: PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined; `pivot?`: `number`; `plugins?`: [`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[]; `rtfFormat?`: `RelativeTimeFormat`; `rtfStyle?`: RelativeTimeFormatStyle \| undefined; `silent?`: `boolean`; `snippet?`: Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined; `sphere?`: `"north"` \| `"south"` \| `"east"` \| `"west"`; `store?`: `string`; `timeStamp?`: TimeStamp \| undefined; `timeZone?`: TimeZoneLike \| undefined; `value?`: [`DateTime`](../type-aliases/DateTime.md); \} + +###### calendar? + +CalendarLike \| undefined + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +Extend\<\{ readonly 'new.?years? ?eve': "31 Dec"; readonly nye: "31 Dec"; readonly 'new.?years?( ?day)?': "01 Jan"; readonly ny: "01 Jan"; readonly 'christmas ?eve': "24 Dec"; readonly christmas: "25 Dec"; ... 5 more ...; readonly yesterday: (this: Tempo) =\> Tempo; \}, string, string \| Function\> \| PatternOption\<...\> \| ... + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +PatternOption\ \| Extend\<\{ readonly \[x: symbol\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| ... 5 more ... \| "\{nbr\}\{sep\}?\{unt\}\{sep\}?\{afx\}"; \}, symbol, string\> \| undefined + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +PatternOption\ \| Extend\<\{ readonly 'mid\[ -\]?night': "24:00"; readonly morning: "8:00"; readonly 'mid\[ -\]?morning': "10:00"; readonly 'mid\[ -\]?day': "12:00"; readonly noon: "12:00"; readonly 'after\[ -\]?noon': "3:00pm"; readonly evening: "18:00"; readonly night: "20:00"; \}, string, string \| Function\> \| undefined + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +RelativeTimeFormatStyle \| undefined + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +Extend\<\{ readonly \[x: symbol\]: RegExp; \}, symbol, RegExp\> \| PatternOption\ \| undefined + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +TimeStamp \| undefined + +Precision to measure timestamps (ms | us) + +###### timeZone? + +TimeZoneLike \| undefined + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +*** + +[`DateTime`](../type-aliases/DateTime.md) + +#### Returns + +`number` + +*** + +### duration() + +> `static` **duration**(`input`): [`Duration`](../type-aliases/Duration.md) + +Defined in: [tempo.class.ts:775](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L775) + +returns a full Tempo Duration object (EDO) for the given input + +#### Parameters + +##### input + +`any` + +#### Returns + +[`Duration`](../type-aliases/Duration.md) + +*** + +### extend() + +#### Call Signature + +> `static` **extend**(`plugin`, `options?`): *typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +Defined in: [tempo.class.ts:588](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L588) + +Register a plugin or term extension. + +##### Parameters + +###### plugin + +[`Plugin`](../interfaces/Plugin.md) + +A plugin or term extension to register. + +###### options? + +Optional configuration for the plugin. + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +##### Returns + +*typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +#### Call Signature + +> `static` **extend**(`plugins`, `options?`): *typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +Defined in: [tempo.class.ts:595](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L595) + +Register an array of plugins or term extensions. + +##### Parameters + +###### plugins + +`any`[] + +An array of plugins, terms, or extensions to register. + +###### options? + +Optional configuration for the plugins. + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +##### Returns + +*typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +#### Call Signature + +> `static` **extend**(...`args`): *typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +Defined in: [tempo.class.ts:601](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L601) + +Register multiple plugins or term extensions. + +##### Parameters + +###### args + +...`any`[] + +A plugin, term, or list of extensions to register. + +##### Returns + +*typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +*** + +### from() + +#### Call Signature + +> `static` **from**(`options?`): `Tempo` + +Defined in: [tempo.class.ts:889](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L889) + +Creates a new `Tempo` instance. + +##### Parameters + +###### options? + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +##### Returns + +`Tempo` + +#### Call Signature + +> `static` **from**(`tempo`, `options?`): `Tempo` + +Defined in: [tempo.class.ts:890](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L890) + +Creates a new `Tempo` instance. + +##### Parameters + +###### tempo + +[`DateTime`](../type-aliases/DateTime.md) + +###### options? + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +##### Returns + +`Tempo` + +*** + +### init() + +> `static` **init**(`options?`): *typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +Defined in: [tempo.class.ts:704](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L704) + +Reset Tempo to its default, built-in registration state + +#### Parameters + +##### options? + +###### calendar? + +`CalendarLike` + +Temporal calendar + +###### catch? + +`boolean` + +catch or throw Errors + +###### debug? + +`boolean` + +additional console.log for tracking + +###### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +###### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => `Tempo`; `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => `Tempo`; \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +###### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +###### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +###### locale? + +`string` + +locale (e.g. en-AU) + +###### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +###### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +###### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +###### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +###### pivot? + +`number` + +pivot year for two-digit years + +###### plugins? + +[`Plugin`](../interfaces/Plugin.md) \| [`Plugin`](../interfaces/Plugin.md)[] + +plugins to be automatically extended + +###### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +###### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +###### silent? + +`boolean` + +suppress console output during catch + +###### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +###### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +###### store? + +`string` + +localStorage key + +###### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +###### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +###### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +#### Returns + +*typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +*** + +### isTempo() + +> `static` **isTempo**(`instance?`): `instance is Tempo` + +Defined in: [tempo.class.ts:958](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L958) + +check if a supplied variable is a valid Tempo instance + +#### Parameters + +##### instance? + +`any` + +#### Returns + +`instance is Tempo` + +*** + +### now() + +> `static` **now**(): `bigint` + +Defined in: [tempo.class.ts:893](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L893) + +#### Returns + +`bigint` diff --git a/packages/tempo/doc/api/interfaces/Extension.md b/packages/tempo/doc/api/interfaces/Extension.md new file mode 100644 index 00000000..adf81f41 --- /dev/null +++ b/packages/tempo/doc/api/interfaces/Extension.md @@ -0,0 +1,54 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +Defined in: [plugin/plugin.type.ts:44](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L44) + +## Extension +Type for Extension plugins. + +## Extends + +- [`Plugin`](Plugin.md) + +## Indexable + +> \[`key`: `string`\]: `any` + +## Properties + +### install + +> **install**: (`this`, `t`) => `void` + +Defined in: [plugin/plugin.type.ts:29](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L29) + +#### Parameters + +##### this + +[`Tempo`](../classes/Tempo.md) + +##### t + +*typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +#### Returns + +`void` + +#### Inherited from + +[`Plugin`](Plugin.md).[`install`](Plugin.md#install) + +*** + +### name + +> **name**: `string` + +Defined in: [plugin/plugin.type.ts:28](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L28) + +#### Inherited from + +[`Plugin`](Plugin.md).[`name`](Plugin.md#name) diff --git a/packages/tempo/doc/api/interfaces/Module.md b/packages/tempo/doc/api/interfaces/Module.md new file mode 100644 index 00000000..65120196 --- /dev/null +++ b/packages/tempo/doc/api/interfaces/Module.md @@ -0,0 +1,54 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +Defined in: [plugin/plugin.type.ts:36](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L36) + +## Module +Type for Module plugins. + +## Extends + +- [`Plugin`](Plugin.md) + +## Indexable + +> \[`key`: `string`\]: `any` + +## Properties + +### install + +> **install**: (`this`, `t`) => `void` + +Defined in: [plugin/plugin.type.ts:29](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L29) + +#### Parameters + +##### this + +[`Tempo`](../classes/Tempo.md) + +##### t + +*typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +#### Returns + +`void` + +#### Inherited from + +[`Plugin`](Plugin.md).[`install`](Plugin.md#install) + +*** + +### name + +> **name**: `string` + +Defined in: [plugin/plugin.type.ts:28](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L28) + +#### Inherited from + +[`Plugin`](Plugin.md).[`name`](Plugin.md#name) diff --git a/packages/tempo/doc/api/interfaces/Params.md b/packages/tempo/doc/api/interfaces/Params.md new file mode 100644 index 00000000..00f3be09 --- /dev/null +++ b/packages/tempo/doc/api/interfaces/Params.md @@ -0,0 +1,329 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +Defined in: [tempo.type.ts:144](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L144) + +Type for consistency in expected arguments for helper functions + +## Extended by + +- [`Params`](../@magmacomputing/namespaces/Tempo/interfaces/Params.md) + +## Type Parameters + +### T + +`T` + +## Call Signature + +> **Params**(`tempo?`, `options?`): `T` + +Defined in: [tempo.type.ts:145](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L145) + +Type for consistency in expected arguments for helper functions + +### Parameters + +#### tempo? + +[`DateTime`](../type-aliases/DateTime.md) + +#### options? + +##### calendar? + +`CalendarLike` + +Temporal calendar + +##### catch? + +`boolean` + +catch or throw Errors + +##### debug? + +`boolean` + +additional console.log for tracking + +##### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +##### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => [`Tempo`](../classes/Tempo.md); `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => [`Tempo`](../classes/Tempo.md); \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +##### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +##### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +##### locale? + +`string` + +locale (e.g. en-AU) + +##### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +##### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +##### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +##### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +##### pivot? + +`number` + +pivot year for two-digit years + +##### plugins? + +[`Plugin`](Plugin.md) \| [`Plugin`](Plugin.md)[] + +plugins to be automatically extended + +##### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +##### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +##### silent? + +`boolean` + +suppress console output during catch + +##### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +##### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +##### store? + +`string` + +localStorage key + +##### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +##### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +##### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +### Returns + +`T` + +## Call Signature + +> **Params**(`options`): `T` + +Defined in: [tempo.type.ts:146](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L146) + +Type for consistency in expected arguments for helper functions + +### Parameters + +#### options + +##### calendar? + +`CalendarLike` + +Temporal calendar + +##### catch? + +`boolean` + +catch or throw Errors + +##### debug? + +`boolean` + +additional console.log for tracking + +##### discovery? + +`string` \| `symbol` + +globalThis Discovery Symbol + +##### event? + +`Extend`\<\{ `christmas`: `"25 Dec"`; `christmas ?eve`: `"24 Dec"`; `new.?years? ?eve`: `"31 Dec"`; `new.?years?( ?day)?`: `"01 Jan"`; `now`: (`this`) => `ZonedDateTime`; `ny`: `"01 Jan"`; `nye`: `"31 Dec"`; `today`: (`this`) => `ZonedDateTime`; `tomorrow`: (`this`) => [`Tempo`](../classes/Tempo.md); `xmas`: `"25 Dec"`; `xmas ?eve`: `"24 Dec"`; `yesterday`: (`this`) => [`Tempo`](../classes/Tempo.md); \}, `string`, `string` \| `Function`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> + +custom date aliases (events). + +##### formats? + +`Property`\<`any`\> + +custom format strings to merge in the FORMAT enum + +##### layout? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> \| `Extend`\<\{\[`key`: `symbol`\]: "(\{dd\}\{sep\}?\{mm\}(\{sep\}?\{yy\})?\|\{mod\}?(\{evt\})\|(?\\{slk\}))" \| "(\{hh\}\{mi\}?\{ss\}?\{ff\}?\{mer\}?\|\{per\})" \| "(\{dt\})(?:(?:\{sep\}+\|T)(\{tm\}))?\{tzd\}?\{brk\}?" \| `"({wkd}{sep}+)?{dd}{sep}?{mm}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{mm}{sep}?{dd}({sep}?{yy})?{sfx}?{brk}?"` \| `"({wkd}{sep}+)?{yy}{sep}?{mm}({sep}?{dd})?{sfx}?{brk}?"` \| `"{mod}?{wkd}{afx}?{sfx}?"` \| `"{mod}?{dd}{afx}?"` \| `"{nbr}{sep}?{unt}{sep}?{afx}"`; \}, `symbol`, `string`\> + +patterns to help parse value + +##### locale? + +`string` + +locale (e.g. en-AU) + +##### mdyLayouts? + +[`Pair`](../type-aliases/Pair.md)[] + +swap parse-order of layouts + +##### mdyLocales? + +`string` \| `string`[] + +locale-names that prefer 'mm-dd-yy' date order + +##### mode? + +`"auto"` \| `"strict"` \| `"defer"` + +initialization strategy ('auto'|'strict'|'defer') + +##### period? + +[`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Logic`](../type-aliases/Logic.md)\> \| `Extend`\<\{ `after[ -]?noon`: `"3:00pm"`; `evening`: `"18:00"`; `mid[ -]?day`: `"12:00"`; `mid[ -]?morning`: `"10:00"`; `mid[ -]?night`: `"24:00"`; `morning`: `"8:00"`; `night`: `"20:00"`; `noon`: `"12:00"`; \}, `string`, `string` \| `Function`\> + +custom time aliases (periods). + +##### pivot? + +`number` + +pivot year for two-digit years + +##### plugins? + +[`Plugin`](Plugin.md) \| [`Plugin`](Plugin.md)[] + +plugins to be automatically extended + +##### rtfFormat? + +`RelativeTimeFormat` + +Pre-configured relative time formatter + +##### rtfStyle? + +`RelativeTimeFormatStyle` + +Default style for relative time ('long' | 'short' | 'narrow') + +##### silent? + +`boolean` + +suppress console output during catch + +##### snippet? + +`Extend`\<\{\[`key`: `symbol`\]: `RegExp`; \}, `symbol`, `RegExp`\> \| [`PatternOption`](../@magmacomputing/namespaces/Internal/type-aliases/PatternOption.md)\<[`Pattern`](../type-aliases/Pattern.md)\> + +date-time snippets to help compose a Layout + +##### sphere? + +`"north"` \| `"south"` \| `"east"` \| `"west"` + +hemisphere for term.qtr or term.szn + +##### store? + +`string` + +localStorage key + +##### timeStamp? + +[`TimeStamp`](../@magmacomputing/namespaces/Internal/type-aliases/TimeStamp.md) + +Precision to measure timestamps (ms | us) + +##### timeZone? + +`TimeZoneLike` + +Temporal timeZone + +##### value? + +[`DateTime`](../type-aliases/DateTime.md) + +supplied value to parse + +### Returns + +`T` diff --git a/packages/tempo/doc/api/interfaces/Plugin.md b/packages/tempo/doc/api/interfaces/Plugin.md new file mode 100644 index 00000000..aa68894b --- /dev/null +++ b/packages/tempo/doc/api/interfaces/Plugin.md @@ -0,0 +1,44 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +Defined in: [plugin/plugin.type.ts:27](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L27) + +## Plugin +Interface for general Tempo plugins (Modules/Extensions). + +## Extended by + +- [`PluginContainer`](../@magmacomputing/namespaces/Internal/interfaces/PluginContainer.md) +- [`Module`](Module.md) +- [`Extension`](Extension.md) + +## Properties + +### install + +> **install**: (`this`, `t`) => `void` + +Defined in: [plugin/plugin.type.ts:29](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L29) + +#### Parameters + +##### this + +[`Tempo`](../classes/Tempo.md) + +##### t + +*typeof* [`Tempo`](../@magmacomputing/namespaces/Tempo/README.md) + +#### Returns + +`void` + +*** + +### name + +> **name**: `string` + +Defined in: [plugin/plugin.type.ts:28](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L28) diff --git a/packages/tempo/doc/api/interfaces/TermPlugin.md b/packages/tempo/doc/api/interfaces/TermPlugin.md new file mode 100644 index 00000000..69b69a30 --- /dev/null +++ b/packages/tempo/doc/api/interfaces/TermPlugin.md @@ -0,0 +1,96 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +Defined in: [plugin/plugin.type.ts:10](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L10) + +## TermPlugin +Interface for term-driven parsing and resolution. + +## Properties + +### define + +> **define**: (`this`, `keyOnly?`, `anchor?`) => `string` \| [`Range`](../type-aliases/Range.md) \| [`Range`](../type-aliases/Range.md)[] \| `undefined` + +Defined in: [plugin/plugin.type.ts:17](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L17) + +#### Parameters + +##### this + +[`Tempo`](../classes/Tempo.md) + +##### keyOnly? + +`boolean` + +##### anchor? + +`any` + +#### Returns + +`string` \| [`Range`](../type-aliases/Range.md) \| [`Range`](../type-aliases/Range.md)[] \| `undefined` + +*** + +### description? + +> `optional` **description?**: `string` + +Defined in: [plugin/plugin.type.ts:13](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L13) + +*** + +### groups? + +> `optional` **groups?**: `any` + +Defined in: [plugin/plugin.type.ts:14](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L14) + +*** + +### key + +> **key**: `string` + +Defined in: [plugin/plugin.type.ts:11](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L11) + +*** + +### ranges? + +> `optional` **ranges?**: `any`[] + +Defined in: [plugin/plugin.type.ts:15](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L15) + +*** + +### resolve? + +> `optional` **resolve?**: (`this`, `anchor?`) => [`Range`](../type-aliases/Range.md)[] + +Defined in: [plugin/plugin.type.ts:16](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L16) + +#### Parameters + +##### this + +[`Tempo`](../classes/Tempo.md) + +##### anchor? + +`any` + +#### Returns + +[`Range`](../type-aliases/Range.md)[] + +*** + +### scope? + +> `optional` **scope?**: `string` + +Defined in: [plugin/plugin.type.ts:12](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L12) diff --git a/packages/tempo/doc/api/type-aliases/Add.md b/packages/tempo/doc/api/type-aliases/Add.md new file mode 100644 index 00000000..a5c5c31c --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Add.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Add** = `Prettify`\<[`AddUnits`](AddUnits.md) & [`TermOffset`](TermOffset.md)\> \| [`DateTime`](DateTime.md) + +Defined in: [tempo.type.ts:92](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L92) diff --git a/packages/tempo/doc/api/type-aliases/AddUnits.md b/packages/tempo/doc/api/type-aliases/AddUnits.md new file mode 100644 index 00000000..ba6d652a --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/AddUnits.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **AddUnits** = `{ [K in Unit]?: number }` + +Defined in: [tempo.type.ts:91](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L91) diff --git a/packages/tempo/doc/api/type-aliases/BaseDuration.md b/packages/tempo/doc/api/type-aliases/BaseDuration.md new file mode 100644 index 00000000..2d9ca364 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/BaseDuration.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **BaseDuration** = `Record`\<[`Units`](Units.md), `number`\> + +Defined in: [tempo.type.ts:60](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L60) diff --git a/packages/tempo/doc/api/type-aliases/COMPASS.md b/packages/tempo/doc/api/type-aliases/COMPASS.md new file mode 100644 index 00000000..7967ac83 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/COMPASS.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **COMPASS** = `ValueOf`\<*typeof* [`COMPASS`](../variables/COMPASS.md)\> + +Defined in: [tempo.enum.ts:21](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L21) + +cardinal directions diff --git a/packages/tempo/doc/api/type-aliases/DURATION-1.md b/packages/tempo/doc/api/type-aliases/DURATION-1.md new file mode 100644 index 00000000..72b2677a --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/DURATION-1.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **DURATION** = `KeyOf`\<*typeof* [`DURATION`](../variables/DURATION.md)\> + +Defined in: [tempo.enum.ts:148](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L148) + +number of seconds in a time unit diff --git a/packages/tempo/doc/api/type-aliases/DURATIONS.md b/packages/tempo/doc/api/type-aliases/DURATIONS.md new file mode 100644 index 00000000..a1c01965 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/DURATIONS.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **DURATIONS** = `KeyOf`\<*typeof* [`DURATIONS`](../variables/DURATIONS.md)\> + +Defined in: [tempo.enum.ts:152](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L152) + +number of milliseconds in a time unit diff --git a/packages/tempo/doc/api/type-aliases/DateTime.md b/packages/tempo/doc/api/type-aliases/DateTime.md new file mode 100644 index 00000000..b8da1b54 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/DateTime.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **DateTime** = `string` \| `number` \| `bigint` \| `Date` \| [`Tempo`](../classes/Tempo.md) \| `TemporalObject` \| `Temporal.ZonedDateTimeLike` \| `undefined` \| `null` + +Defined in: [tempo.type.ts:38](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L38) + +the value that Tempo will attempt to interpret as a valid ISO date / time diff --git a/packages/tempo/doc/api/type-aliases/DateTimeUnit.md b/packages/tempo/doc/api/type-aliases/DateTimeUnit.md new file mode 100644 index 00000000..6aa25e28 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/DateTimeUnit.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **DateTimeUnit** = `Temporal.DateUnit` \| `Temporal.TimeUnit` + +Defined in: [tempo.type.ts:57](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L57) + +Configuration to use for #until() and #since() argument diff --git a/packages/tempo/doc/api/type-aliases/Duration.md b/packages/tempo/doc/api/type-aliases/Duration.md new file mode 100644 index 00000000..38a74463 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Duration.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Duration** = `NonOptional`\<`Temporal.DurationLikeObject`\> & `Record`\<`"iso"`, `string`\> & `Record`\<`"sign"`, `number`\> & `Record`\<`"blank"`, `boolean`\> & `Record`\<`"unit"`, `string` \| `undefined`\> + +Defined in: [tempo.type.ts:106](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L106) diff --git a/packages/tempo/doc/api/type-aliases/ELEMENT-1.md b/packages/tempo/doc/api/type-aliases/ELEMENT-1.md new file mode 100644 index 00000000..ce9cc0d0 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/ELEMENT-1.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **ELEMENT** = `ValueOf`\<*typeof* [`ELEMENT`](../variables/ELEMENT.md)\> + +Defined in: [tempo.enum.ts:184](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L184) diff --git a/packages/tempo/doc/api/type-aliases/Element.md b/packages/tempo/doc/api/type-aliases/Element.md new file mode 100644 index 00000000..40c370d3 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Element.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Element** = `enums.Element` + +Defined in: [tempo.type.ts:137](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L137) diff --git a/packages/tempo/doc/api/type-aliases/FORMAT-1.md b/packages/tempo/doc/api/type-aliases/FORMAT-1.md new file mode 100644 index 00000000..a8b84c73 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/FORMAT-1.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **FORMAT** = `ValueOf`\<*typeof* [`FORMAT`](../variables/FORMAT.md)\> + +Defined in: [tempo.enum.ts:156](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L156) + +common format aliases diff --git a/packages/tempo/doc/api/type-aliases/FlexibleDuration.md b/packages/tempo/doc/api/type-aliases/FlexibleDuration.md new file mode 100644 index 00000000..5c39b13b --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/FlexibleDuration.md @@ -0,0 +1,23 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **FlexibleDuration** = `{ [K in Units]: Pick & { [P in keyof Omit]?: number } }`\[[`Units`](Units.md)\] + +Defined in: [tempo.type.ts:75](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L75) + +# FlexibleDuration +A distributive mapped type over [Units](Units.md) which requires at least one duration key +from [BaseDuration](BaseDuration.md) (the mapped key K) while making all other BaseDuration +properties optional. + +## Example + +```ts +// Valid: at least one key is present +const a: FlexibleDuration = { hours: 1 }; +const b: FlexibleDuration = { hours: 1, minutes: 30 }; + +// Invalid: empty object (no mandatory key) +const c: FlexibleDuration = {}; +``` diff --git a/packages/tempo/doc/api/type-aliases/Format.md b/packages/tempo/doc/api/type-aliases/Format.md new file mode 100644 index 00000000..017ac84f --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Format.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Format** = `enums.Format` + +Defined in: [tempo.type.ts:115](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L115) + +Union of all known format strings diff --git a/packages/tempo/doc/api/type-aliases/FormatRegistry.md b/packages/tempo/doc/api/type-aliases/FormatRegistry.md new file mode 100644 index 00000000..27fb63e1 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/FormatRegistry.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **FormatRegistry** = `enums.FormatEnum` + +Defined in: [tempo.type.ts:117](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L117) + +Enum registry of format strings diff --git a/packages/tempo/doc/api/type-aliases/FormatType.md b/packages/tempo/doc/api/type-aliases/FormatType.md new file mode 100644 index 00000000..a4ead0f5 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/FormatType.md @@ -0,0 +1,13 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **FormatType**\<`K`\> = `enums.FormatType`\<`K`\> + +Defined in: [tempo.type.ts:118](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L118) + +## Type Parameters + +### K + +`K` *extends* `PropertyKey` diff --git a/packages/tempo/doc/api/type-aliases/Formats.md b/packages/tempo/doc/api/type-aliases/Formats.md new file mode 100644 index 00000000..b495f67f --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Formats.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Formats** = `enums.Formats` + +Defined in: [tempo.type.ts:112](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L112) + +mapping of format names to instance-resolutions (string | number) diff --git a/packages/tempo/doc/api/type-aliases/Groups.md b/packages/tempo/doc/api/type-aliases/Groups.md new file mode 100644 index 00000000..b1cd28cf --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Groups.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Groups** = `Record`\<`string`, `string`\> + +Defined in: [tempo.type.ts:43](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L43) diff --git a/packages/tempo/doc/api/type-aliases/Logic.md b/packages/tempo/doc/api/type-aliases/Logic.md new file mode 100644 index 00000000..d07b1170 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Logic.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Logic** = `string` \| `number` \| `Function` + +Defined in: [tempo.type.ts:41](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L41) diff --git a/packages/tempo/doc/api/type-aliases/MODE-1.md b/packages/tempo/doc/api/type-aliases/MODE-1.md new file mode 100644 index 00000000..8bd4792a --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/MODE-1.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **MODE** = `ValueOf`\<*typeof* [`MODE`](../variables/MODE.md)\> + +Defined in: [tempo.enum.ts:217](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L217) + +initialization strategies diff --git a/packages/tempo/doc/api/type-aliases/MONTH-1.md b/packages/tempo/doc/api/type-aliases/MONTH-1.md new file mode 100644 index 00000000..d0d8dcaf --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/MONTH-1.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **MONTH** = `KeyOf`\<*typeof* [`MONTH`](../variables/MONTH.md)\> + +Defined in: [tempo.enum.ts:129](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L129) + +Gregorian calendar months (short-form) diff --git a/packages/tempo/doc/api/type-aliases/MONTHS.md b/packages/tempo/doc/api/type-aliases/MONTHS.md new file mode 100644 index 00000000..e8750d2e --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/MONTHS.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **MONTHS** = `KeyOf`\<*typeof* [`MONTHS`](../variables/MONTHS.md)\> + +Defined in: [tempo.enum.ts:131](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L131) + +Gregorian calendar months (long-form) diff --git a/packages/tempo/doc/api/type-aliases/MUTATION.md b/packages/tempo/doc/api/type-aliases/MUTATION.md new file mode 100644 index 00000000..d3fdfc0a --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/MUTATION.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **MUTATION** = `ValueOf`\<*typeof* [`MUTATION`](../variables/MUTATION.md)\> + +Defined in: [tempo.enum.ts:201](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L201) diff --git a/packages/tempo/doc/api/type-aliases/Mode.md b/packages/tempo/doc/api/type-aliases/Mode.md new file mode 100644 index 00000000..2bdde262 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Mode.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Mode** = [`MODE`](MODE-1.md) + +Defined in: [tempo.type.ts:139](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L139) diff --git a/packages/tempo/doc/api/type-aliases/Modifier.md b/packages/tempo/doc/api/type-aliases/Modifier.md new file mode 100644 index 00000000..5704ff29 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Modifier.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Modifier** = `"="` \| `"-"` \| `"+"` \| `"<"` \| `"<="` \| `"-="` \| `">"` \| `">="` \| `"+="` \| `"this"` \| `"next"` \| `"prev"` \| `"last"` \| `"first"` \| `undefined` + +Defined in: [tempo.type.ts:94](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L94) diff --git a/packages/tempo/doc/api/type-aliases/Month.md b/packages/tempo/doc/api/type-aliases/Month.md new file mode 100644 index 00000000..ea07ab91 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Month.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Month** = `enums.Month` + +Defined in: [tempo.type.ts:136](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L136) diff --git a/packages/tempo/doc/api/type-aliases/Mutate.md b/packages/tempo/doc/api/type-aliases/Mutate.md new file mode 100644 index 00000000..7afee34b --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Mutate.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Mutate** = `"start"` \| `"mid"` \| `"end"` + +Defined in: [tempo.type.ts:80](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L80) diff --git a/packages/tempo/doc/api/type-aliases/Number.md b/packages/tempo/doc/api/type-aliases/Number.md new file mode 100644 index 00000000..35c5e295 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Number.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Number** = `enums.Number` + +Defined in: [tempo.type.ts:138](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L138) diff --git a/packages/tempo/doc/api/type-aliases/NumericPattern.md b/packages/tempo/doc/api/type-aliases/NumericPattern.md new file mode 100644 index 00000000..0f751973 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/NumericPattern.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **NumericPattern** = *typeof* `enums.NumericPattern`\[`number`\] + +Defined in: [tempo.type.ts:140](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L140) diff --git a/packages/tempo/doc/api/type-aliases/Options.md b/packages/tempo/doc/api/type-aliases/Options.md new file mode 100644 index 00000000..d2c1e9f8 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Options.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Options** = `Prettify`\<`{ [K in keyof BaseOptions]?: BaseOptions[K] }` & `Record`\<`string`, `any`\>\> + +Defined in: [tempo.type.ts:45](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L45) diff --git a/packages/tempo/doc/api/type-aliases/OwnFormat.md b/packages/tempo/doc/api/type-aliases/OwnFormat.md new file mode 100644 index 00000000..b9821a48 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/OwnFormat.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **OwnFormat** = `enums.OwnFormat` + +Defined in: [tempo.type.ts:109](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L109) + +pre-configured format strings diff --git a/packages/tempo/doc/api/type-aliases/Pair.md b/packages/tempo/doc/api/type-aliases/Pair.md new file mode 100644 index 00000000..e5a9a621 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Pair.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Pair** = \[`string`, `string`\] + +Defined in: [tempo.type.ts:42](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L42) diff --git a/packages/tempo/doc/api/type-aliases/Pattern.md b/packages/tempo/doc/api/type-aliases/Pattern.md new file mode 100644 index 00000000..2789c1e4 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Pattern.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Pattern** = `string` \| `RegExp` + +Defined in: [tempo.type.ts:40](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L40) diff --git a/packages/tempo/doc/api/type-aliases/Range.md b/packages/tempo/doc/api/type-aliases/Range.md new file mode 100644 index 00000000..fbba4cd9 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Range.md @@ -0,0 +1,10 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Range** = `Prettify`\<`object` & \{ `year`: `number`; \} \| \{ `month`: `number`; \} \| \{ `week`: `number`; \} \| \{ `day`: `number`; \} \| \{ `hour`: `number`; \} \| \{ `minute`: `number`; \} \| \{ `second`: `number`; \} \| \{ `millisecond`: `number`; \} \| \{ `microsecond`: `number`; \} \| \{ `nanosecond`: `number`; \} & `object`\> + +Defined in: [plugin/plugin.type.ts:59](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L59) + +## Range +Discrete time interval within a specific term. diff --git a/packages/tempo/doc/api/type-aliases/Relative.md b/packages/tempo/doc/api/type-aliases/Relative.md new file mode 100644 index 00000000..95c00293 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Relative.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Relative** = `"ago"` \| `"hence"` \| `"prior"` \| `"from now"` + +Defined in: [tempo.type.ts:95](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L95) diff --git a/packages/tempo/doc/api/type-aliases/ResolvedRange.md b/packages/tempo/doc/api/type-aliases/ResolvedRange.md new file mode 100644 index 00000000..17fc7c60 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/ResolvedRange.md @@ -0,0 +1,36 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **ResolvedRange** = [`Range`](Range.md) & `object` + +Defined in: [plugin/plugin.type.ts:90](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L90) + +## ResolvedRange +Range with additional metadata. + +## Type Declaration + +### end + +> **end**: [`Tempo`](../classes/Tempo.md) + +### label? + +> `optional` **label?**: `string` + +### rollover? + +> `optional` **rollover?**: `string` + +### scope? + +> `optional` **scope?**: `string` + +### start + +> **start**: [`Tempo`](../classes/Tempo.md) + +### unit? + +> `optional` **unit?**: `string` diff --git a/packages/tempo/doc/api/type-aliases/SEASON.md b/packages/tempo/doc/api/type-aliases/SEASON.md new file mode 100644 index 00000000..b70e825a --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/SEASON.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **SEASON** = `ValueOf`\<*typeof* [`SEASON`](../variables/SEASON.md)\> + +Defined in: [tempo.enum.ts:12](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L12) + +calendar seasons diff --git a/packages/tempo/doc/api/type-aliases/Set.md b/packages/tempo/doc/api/type-aliases/Set.md new file mode 100644 index 00000000..0bede66d --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Set.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Set** = `Prettify`\<[`SetFields`](SetFields.md) & `object` & [`TermOffset`](TermOffset.md)\> \| [`DateTime`](DateTime.md) + +Defined in: [tempo.type.ts:87](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L87) diff --git a/packages/tempo/doc/api/type-aliases/SetFields.md b/packages/tempo/doc/api/type-aliases/SetFields.md new file mode 100644 index 00000000..2e09f78d --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/SetFields.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **SetFields** = \{ \[K in Mutate\]?: Unit \| \`#$\{string\}\` \} & \{ \[K in "date" \| "time" \| "event" \| "period"\]?: string \} + +Defined in: [tempo.type.ts:82](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L82) diff --git a/packages/tempo/doc/api/type-aliases/TIMEZONE.md b/packages/tempo/doc/api/type-aliases/TIMEZONE.md new file mode 100644 index 00000000..78886a58 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/TIMEZONE.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **TIMEZONE** = `KeyOf`\<*typeof* [`TIMEZONE`](../variables/TIMEZONE.md)\> + +Defined in: [tempo.enum.ts:143](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L143) + +common time-zone aliases diff --git a/packages/tempo/doc/api/type-aliases/TermOffset.md b/packages/tempo/doc/api/type-aliases/TermOffset.md new file mode 100644 index 00000000..d8454561 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/TermOffset.md @@ -0,0 +1,11 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **TermOffset** = `object` + +Defined in: [tempo.type.ts:81](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L81) + +## Index Signature + +\[`K`: `` `#${string}` ``\]: `string` \| `number` diff --git a/packages/tempo/doc/api/type-aliases/Terms.md b/packages/tempo/doc/api/type-aliases/Terms.md new file mode 100644 index 00000000..fc30f5aa --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Terms.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Terms** = `Property`\<`any`\> + +Defined in: [plugin/plugin.type.ts:21](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/plugin/plugin.type.ts#L21) + +mapping of terms to their resolved values diff --git a/packages/tempo/doc/api/type-aliases/Unit.md b/packages/tempo/doc/api/type-aliases/Unit.md new file mode 100644 index 00000000..063f05d0 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Unit.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Unit** = [`DateTimeUnit`](DateTimeUnit.md) \| `Plural`\<[`DateTimeUnit`](DateTimeUnit.md)\> + +Defined in: [tempo.type.ts:58](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L58) diff --git a/packages/tempo/doc/api/type-aliases/Units.md b/packages/tempo/doc/api/type-aliases/Units.md new file mode 100644 index 00000000..6fba868f --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Units.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Units** = `Temporal.PluralizeUnit`\<[`DateTimeUnit`](DateTimeUnit.md)\> + +Defined in: [tempo.type.ts:59](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L59) diff --git a/packages/tempo/doc/api/type-aliases/Until.md b/packages/tempo/doc/api/type-aliases/Until.md new file mode 100644 index 00000000..f437808e --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Until.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Until** = [`Options`](Options.md) & `object` \| [`Unit`](Unit.md) + +Defined in: [tempo.type.ts:78](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L78) diff --git a/packages/tempo/doc/api/type-aliases/WEEKDAY-1.md b/packages/tempo/doc/api/type-aliases/WEEKDAY-1.md new file mode 100644 index 00000000..84a18d76 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/WEEKDAY-1.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **WEEKDAY** = `KeyOf`\<*typeof* [`WEEKDAY`](../variables/WEEKDAY.md)\> + +Defined in: [tempo.enum.ts:119](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L119) + +Gregorian calendar week-days (short-form) diff --git a/packages/tempo/doc/api/type-aliases/WEEKDAYS.md b/packages/tempo/doc/api/type-aliases/WEEKDAYS.md new file mode 100644 index 00000000..ec01515f --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/WEEKDAYS.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **WEEKDAYS** = `KeyOf`\<*typeof* [`WEEKDAYS`](../variables/WEEKDAYS.md)\> + +Defined in: [tempo.enum.ts:121](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L121) + +Gregorian calendar week-days (long-form) diff --git a/packages/tempo/doc/api/type-aliases/Weekday.md b/packages/tempo/doc/api/type-aliases/Weekday.md new file mode 100644 index 00000000..efe26da8 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/Weekday.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **Weekday** = `enums.Weekday` + +Defined in: [tempo.type.ts:135](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L135) diff --git a/packages/tempo/doc/api/type-aliases/ZONED_DATE_TIME.md b/packages/tempo/doc/api/type-aliases/ZONED_DATE_TIME.md new file mode 100644 index 00000000..23f68ea2 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/ZONED_DATE_TIME.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **ZONED\_DATE\_TIME** = `ValueOf`\<*typeof* [`ZONED_DATE_TIME`](../variables/ZONED_DATE_TIME.md)\> + +Defined in: [tempo.enum.ts:207](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L207) diff --git a/packages/tempo/doc/api/type-aliases/hh.md b/packages/tempo/doc/api/type-aliases/hh.md new file mode 100644 index 00000000..05804041 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/hh.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **hh** = `IntRange`\<`0`, `24`\> + +Defined in: [tempo.type.ts:98](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L98) diff --git a/packages/tempo/doc/api/type-aliases/mi.md b/packages/tempo/doc/api/type-aliases/mi.md new file mode 100644 index 00000000..6ce4bd0e --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/mi.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **mi** = `IntRange`\<`0`, `60`\> + +Defined in: [tempo.type.ts:99](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L99) diff --git a/packages/tempo/doc/api/type-aliases/mm.md b/packages/tempo/doc/api/type-aliases/mm.md new file mode 100644 index 00000000..9540ef9f --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/mm.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **mm** = `IntRange`\<`0`, `12`\> + +Defined in: [tempo.type.ts:97](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L97) diff --git a/packages/tempo/doc/api/type-aliases/ms.md b/packages/tempo/doc/api/type-aliases/ms.md new file mode 100644 index 00000000..a0fb6640 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/ms.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **ms** = `IntRange`\<`0`, `999`\> + +Defined in: [tempo.type.ts:101](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L101) diff --git a/packages/tempo/doc/api/type-aliases/ns.md b/packages/tempo/doc/api/type-aliases/ns.md new file mode 100644 index 00000000..ae88d110 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/ns.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **ns** = `IntRange`\<`0`, `999`\> + +Defined in: [tempo.type.ts:103](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L103) diff --git a/packages/tempo/doc/api/type-aliases/ss.md b/packages/tempo/doc/api/type-aliases/ss.md new file mode 100644 index 00000000..abb57ca0 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/ss.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **ss** = `IntRange`\<`0`, `60`\> + +Defined in: [tempo.type.ts:100](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L100) diff --git a/packages/tempo/doc/api/type-aliases/us.md b/packages/tempo/doc/api/type-aliases/us.md new file mode 100644 index 00000000..7ac493b1 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/us.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **us** = `IntRange`\<`0`, `999`\> + +Defined in: [tempo.type.ts:102](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L102) diff --git a/packages/tempo/doc/api/type-aliases/ww.md b/packages/tempo/doc/api/type-aliases/ww.md new file mode 100644 index 00000000..f2c58716 --- /dev/null +++ b/packages/tempo/doc/api/type-aliases/ww.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **ww** = `IntRange`\<`1`, `53`\> + +Defined in: [tempo.type.ts:104](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.type.ts#L104) diff --git a/packages/tempo/doc/api/variables/COMPASS.md b/packages/tempo/doc/api/variables/COMPASS.md new file mode 100644 index 00000000..75c3ff11 --- /dev/null +++ b/packages/tempo/doc/api/variables/COMPASS.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **COMPASS**: `EnumifyType`\<\{ `East`: `"east"`; `North`: `"north"`; `South`: `"south"`; `West`: `"west"`; \}\> + +Defined in: [tempo.enum.ts:21](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L21) + +cardinal directions diff --git a/packages/tempo/doc/api/variables/DISCOVERY.md b/packages/tempo/doc/api/variables/DISCOVERY.md new file mode 100644 index 00000000..f674abed --- /dev/null +++ b/packages/tempo/doc/api/variables/DISCOVERY.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **DISCOVERY**: `EnumifyType`\<`Index`\\> + +Defined in: [tempo.enum.ts:227](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L227) diff --git a/packages/tempo/doc/api/variables/DURATION.md b/packages/tempo/doc/api/variables/DURATION.md new file mode 100644 index 00000000..46fad38d --- /dev/null +++ b/packages/tempo/doc/api/variables/DURATION.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **DURATION**: `EnumifyType`\<\{ `day`: `86400`; `hour`: `3600`; `microsecond`: `0.000001`; `millisecond`: `0.001`; `minute`: `60`; `month`: `2628000`; `nanosecond`: `1e-9`; `second`: `1`; `week`: `604800`; `year`: `31536000`; \}\> + +Defined in: [tempo.enum.ts:148](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L148) + +number of seconds in a time unit diff --git a/packages/tempo/doc/api/variables/DURATIONS.md b/packages/tempo/doc/api/variables/DURATIONS.md new file mode 100644 index 00000000..4b8238be --- /dev/null +++ b/packages/tempo/doc/api/variables/DURATIONS.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **DURATIONS**: `EnumifyType`\<\{ `days`: `86400000`; `hours`: `3600000`; `microseconds`: `0.001`; `milliseconds`: `1`; `minutes`: `60000`; `months`: `2628000000`; `nanoseconds`: `0.000001`; `seconds`: `1000`; `weeks`: `604800000`; `years`: `31536000000`; \}\> + +Defined in: [tempo.enum.ts:152](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L152) + +number of milliseconds in a time unit diff --git a/packages/tempo/doc/api/variables/ELEMENT.md b/packages/tempo/doc/api/variables/ELEMENT.md new file mode 100644 index 00000000..b9150bc6 --- /dev/null +++ b/packages/tempo/doc/api/variables/ELEMENT.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **ELEMENT**: `EnumifyType`\<\{ `dd`: `"day"`; `hh`: `"hour"`; `mi`: `"minute"`; `mm`: `"month"`; `ms`: `"millisecond"`; `ns`: `"nanosecond"`; `ss`: `"second"`; `us`: `"microsecond"`; `ww`: `"week"`; `yy`: `"year"`; \}\> + +Defined in: [tempo.enum.ts:184](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L184) diff --git a/packages/tempo/doc/api/variables/FORMAT.md b/packages/tempo/doc/api/variables/FORMAT.md new file mode 100644 index 00000000..b54823ff --- /dev/null +++ b/packages/tempo/doc/api/variables/FORMAT.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **FORMAT**: `EnumifyType`\<\{ `date`: `"{yyyy}-{mm}-{dd}"`; `dayDate`: `"{dd}-{mmm}-{yyyy}"`; `dayMonth`: `"{dd}-{mmm}"`; `dayTime`: `"{dd}-{mmm}-{yyyy} {hh}:{mi}:{ss}"`; `display`: `"{www}, {dd} {mmm} {yyyy}"`; `logStamp`: `"{yyyy}{mm}{dd}T{hhmiss}.{ff}"`; `sortTime`: `"{yyyy}-{mm}-{dd} {hh}:{mi}:{ss}"`; `time`: `"{hh}:{mi}:{ss}"`; `weekDate`: `"{www}, {yyyy}-{mmm}-{dd}"`; `weekStamp`: `"{www}, {yyyy}-{mmm}-{dd} {hh}:{mi}:{ss}.{ff}"`; `weekTime`: `"{www}, {yyyy}-{mmm}-{dd} {hh}:{mi}:{ss}"`; `yearMonth`: `"{yyyy}{mm}"`; `yearMonthDay`: `"{yyyy}{mm}{dd}"`; `yearWeek`: `"{yw}{ww}"`; \}\> + +Defined in: [tempo.enum.ts:156](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L156) + +common format aliases diff --git a/packages/tempo/doc/api/variables/LIMIT.md b/packages/tempo/doc/api/variables/LIMIT.md new file mode 100644 index 00000000..b953527c --- /dev/null +++ b/packages/tempo/doc/api/variables/LIMIT.md @@ -0,0 +1,33 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **LIMIT**: `object` + +Defined in: [tempo.enum.ts:180](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L180) + +## Type Declaration + +### maxTempo + +#### Get Signature + +> **get** **maxTempo**(): `bigint` + +Tempo(31-Dec-9999.23:59:59).ns + +##### Returns + +`bigint` + +### minTempo + +#### Get Signature + +> **get** **minTempo**(): `bigint` + +Tempo(01-Jan-1000.00:00:00).ns + +##### Returns + +`bigint` diff --git a/packages/tempo/doc/api/variables/MODE.md b/packages/tempo/doc/api/variables/MODE.md new file mode 100644 index 00000000..b92c175a --- /dev/null +++ b/packages/tempo/doc/api/variables/MODE.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **MODE**: `EnumifyType`\<\{ `Auto`: `"auto"`; `Defer`: `"defer"`; `Strict`: `"strict"`; \}\> + +Defined in: [tempo.enum.ts:217](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L217) + +initialization strategies diff --git a/packages/tempo/doc/api/variables/MONTH.md b/packages/tempo/doc/api/variables/MONTH.md new file mode 100644 index 00000000..b4452d1c --- /dev/null +++ b/packages/tempo/doc/api/variables/MONTH.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **MONTH**: `EnumifyType`\<`Index`\\> + +Defined in: [tempo.enum.ts:129](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L129) + +Gregorian calendar months (short-form) diff --git a/packages/tempo/doc/api/variables/MONTHS.md b/packages/tempo/doc/api/variables/MONTHS.md new file mode 100644 index 00000000..f31a0833 --- /dev/null +++ b/packages/tempo/doc/api/variables/MONTHS.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **MONTHS**: `EnumifyType`\<`Index`\\> + +Defined in: [tempo.enum.ts:131](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L131) + +Gregorian calendar months (long-form) diff --git a/packages/tempo/doc/api/variables/MUTATION.md b/packages/tempo/doc/api/variables/MUTATION.md new file mode 100644 index 00000000..fd166505 --- /dev/null +++ b/packages/tempo/doc/api/variables/MUTATION.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **MUTATION**: `EnumifyType`\<`Index`\\> + +Defined in: [tempo.enum.ts:201](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L201) diff --git a/packages/tempo/doc/api/variables/NUMBER.md b/packages/tempo/doc/api/variables/NUMBER.md new file mode 100644 index 00000000..8230c7c0 --- /dev/null +++ b/packages/tempo/doc/api/variables/NUMBER.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **NUMBER**: `EnumifyType`\<\{ `eight`: `8`; `five`: `5`; `four`: `4`; `nine`: `9`; `one`: `1`; `seven`: `7`; `six`: `6`; `ten`: `10`; `three`: `3`; `two`: `2`; `zero`: `0`; \}\> + +Defined in: [tempo.enum.ts:139](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L139) + +number names (0-10) diff --git a/packages/tempo/doc/api/variables/OPTION.md b/packages/tempo/doc/api/variables/OPTION.md new file mode 100644 index 00000000..b77a41e9 --- /dev/null +++ b/packages/tempo/doc/api/variables/OPTION.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **OPTION**: `EnumifyType`\<`Index`\\> + +Defined in: [tempo.enum.ts:213](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L213) diff --git a/packages/tempo/doc/api/variables/PARSE.md b/packages/tempo/doc/api/variables/PARSE.md new file mode 100644 index 00000000..91639321 --- /dev/null +++ b/packages/tempo/doc/api/variables/PARSE.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **PARSE**: `EnumifyType`\<`Index`\\> + +Defined in: [tempo.enum.ts:222](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L222) diff --git a/packages/tempo/doc/api/variables/SEASON.md b/packages/tempo/doc/api/variables/SEASON.md new file mode 100644 index 00000000..dae74e2f --- /dev/null +++ b/packages/tempo/doc/api/variables/SEASON.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **SEASON**: `EnumifyType`\<\{ `Autumn`: `"autumn"`; `Spring`: `"spring"`; `Summer`: `"summer"`; `Winter`: `"winter"`; \}\> + +Defined in: [tempo.enum.ts:12](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L12) + +calendar seasons diff --git a/packages/tempo/doc/api/variables/TIMEZONE.md b/packages/tempo/doc/api/variables/TIMEZONE.md new file mode 100644 index 00000000..ce8b1329 --- /dev/null +++ b/packages/tempo/doc/api/variables/TIMEZONE.md @@ -0,0 +1,71 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **TIMEZONE**: `object` + +Defined in: [tempo.enum.ts:143](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L143) + +common time-zone aliases + +## Type Declaration + +### acst + +> `readonly` **acst**: `"Australia/Adelaide"` = `'Australia/Adelaide'` + +### aest + +> `readonly` **aest**: `"Australia/Sydney"` = `'Australia/Sydney'` + +### awst + +> `readonly` **awst**: `"Australia/Perth"` = `'Australia/Perth'` + +### cet + +> `readonly` **cet**: `"Europe/Paris"` = `'Europe/Paris'` + +### cst + +> `readonly` **cst**: `"America/Chicago"` = `'America/Chicago'` + +### eet + +> `readonly` **eet**: `"Europe/Helsinki"` = `'Europe/Helsinki'` + +### est + +> `readonly` **est**: `"America/New_York"` = `'America/New_York'` + +### gmt + +> `readonly` **gmt**: `"Europe/London"` = `'Europe/London'` + +### ist + +> `readonly` **ist**: `"Asia/Kolkata"` = `'Asia/Kolkata'` + +### jst + +> `readonly` **jst**: `"Asia/Tokyo"` = `'Asia/Tokyo'` + +### mst + +> `readonly` **mst**: `"America/Denver"` = `'America/Denver'` + +### npt + +> `readonly` **npt**: `"Asia/Kathmandu"` = `'Asia/Kathmandu'` + +### nzt + +> `readonly` **nzt**: `"Pacific/Auckland"` = `'Pacific/Auckland'` + +### pst + +> `readonly` **pst**: `"America/Los_Angeles"` = `'America/Los_Angeles'` + +### utc + +> `readonly` **utc**: `"UTC"` = `'UTC'` diff --git a/packages/tempo/doc/api/variables/WEEKDAY.md b/packages/tempo/doc/api/variables/WEEKDAY.md new file mode 100644 index 00000000..93d53e2e --- /dev/null +++ b/packages/tempo/doc/api/variables/WEEKDAY.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **WEEKDAY**: `EnumifyType`\<`Index`\\> + +Defined in: [tempo.enum.ts:119](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L119) + +Gregorian calendar week-days (short-form) diff --git a/packages/tempo/doc/api/variables/WEEKDAYS.md b/packages/tempo/doc/api/variables/WEEKDAYS.md new file mode 100644 index 00000000..1618aa7e --- /dev/null +++ b/packages/tempo/doc/api/variables/WEEKDAYS.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **WEEKDAYS**: `EnumifyType`\<`Index`\\> + +Defined in: [tempo.enum.ts:121](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L121) + +Gregorian calendar week-days (long-form) diff --git a/packages/tempo/doc/api/variables/ZONED_DATE_TIME.md b/packages/tempo/doc/api/variables/ZONED_DATE_TIME.md new file mode 100644 index 00000000..f64df3ed --- /dev/null +++ b/packages/tempo/doc/api/variables/ZONED_DATE_TIME.md @@ -0,0 +1,7 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **ZONED\_DATE\_TIME**: `EnumifyType`\<`Index`\\> + +Defined in: [tempo.enum.ts:207](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L207) diff --git a/packages/tempo/doc/api/variables/enums.md b/packages/tempo/doc/api/variables/enums.md new file mode 100644 index 00000000..92c5b9e2 --- /dev/null +++ b/packages/tempo/doc/api/variables/enums.md @@ -0,0 +1,195 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> **enums**: `object` + +Defined in: [tempo.enum.ts:237](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L237) + +public-reachable enums + +## Type Declaration + +### COMPASS + +> **COMPASS**: `EnumifyType`\<\{ `East`: `"east"`; `North`: `"north"`; `South`: `"south"`; `West`: `"west"`; \}\> + +cardinal directions + +### DURATION + +> **DURATION**: `EnumifyType`\<\{ `day`: `86400`; `hour`: `3600`; `microsecond`: `0.000001`; `millisecond`: `0.001`; `minute`: `60`; `month`: `2628000`; `nanosecond`: `1e-9`; `second`: `1`; `week`: `604800`; `year`: `31536000`; \}\> + +number of seconds in a time unit + +### DURATIONS + +> **DURATIONS**: `EnumifyType`\<\{ `days`: `86400000`; `hours`: `3600000`; `microseconds`: `0.001`; `milliseconds`: `1`; `minutes`: `60000`; `months`: `2628000000`; `nanoseconds`: `0.000001`; `seconds`: `1000`; `weeks`: `604800000`; `years`: `31536000000`; \}\> + +number of milliseconds in a time unit + +### ELEMENT + +> **ELEMENT**: `EnumifyType`\<\{ `dd`: `"day"`; `hh`: `"hour"`; `mi`: `"minute"`; `mm`: `"month"`; `ms`: `"millisecond"`; `ns`: `"nanosecond"`; `ss`: `"second"`; `us`: `"microsecond"`; `ww`: `"week"`; `yy`: `"year"`; \}\> + +### FORMAT + +> **FORMAT**: `EnumifyType`\<\{ `date`: `"{yyyy}-{mm}-{dd}"`; `dayDate`: `"{dd}-{mmm}-{yyyy}"`; `dayMonth`: `"{dd}-{mmm}"`; `dayTime`: `"{dd}-{mmm}-{yyyy} {hh}:{mi}:{ss}"`; `display`: `"{www}, {dd} {mmm} {yyyy}"`; `logStamp`: `"{yyyy}{mm}{dd}T{hhmiss}.{ff}"`; `sortTime`: `"{yyyy}-{mm}-{dd} {hh}:{mi}:{ss}"`; `time`: `"{hh}:{mi}:{ss}"`; `weekDate`: `"{www}, {yyyy}-{mmm}-{dd}"`; `weekStamp`: `"{www}, {yyyy}-{mmm}-{dd} {hh}:{mi}:{ss}.{ff}"`; `weekTime`: `"{www}, {yyyy}-{mmm}-{dd} {hh}:{mi}:{ss}"`; `yearMonth`: `"{yyyy}{mm}"`; `yearMonthDay`: `"{yyyy}{mm}{dd}"`; `yearWeek`: `"{yw}{ww}"`; \}\> + +common format aliases + +### LIMIT + +> **LIMIT**: `object` + +#### LIMIT.maxTempo + +##### Get Signature + +> **get** **maxTempo**(): `bigint` + +Defined in: [tempo.enum.ts:97](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L97) + +Tempo(31-Dec-9999.23:59:59).ns + +###### Returns + +`bigint` + +#### LIMIT.minTempo + +##### Get Signature + +> **get** **minTempo**(): `bigint` + +Defined in: [tempo.enum.ts:98](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.enum.ts#L98) + +Tempo(01-Jan-1000.00:00:00).ns + +###### Returns + +`bigint` + +### MODE + +> **MODE**: `EnumifyType`\<\{ `Auto`: `"auto"`; `Defer`: `"defer"`; `Strict`: `"strict"`; \}\> + +initialization strategies + +### MONTH + +> **MONTH**: `EnumifyType`\<`Index`\\> + +Gregorian calendar months (short-form) + +### MONTHS + +> **MONTHS**: `EnumifyType`\<`Index`\\> + +Gregorian calendar months (long-form) + +### MUTATION + +> **MUTATION**: `EnumifyType`\<`Index`\\> + +### NUMBER + +> **NUMBER**: `EnumifyType`\<\{ `eight`: `8`; `five`: `5`; `four`: `4`; `nine`: `9`; `one`: `1`; `seven`: `7`; `six`: `6`; `ten`: `10`; `three`: `3`; `two`: `2`; `zero`: `0`; \}\> + +number names (0-10) + +### OPTION + +> **OPTION**: `EnumifyType`\<`Index`\\> + +### PARSE + +> **PARSE**: `EnumifyType`\<`Index`\\> + +### SEASON + +> **SEASON**: `EnumifyType`\<\{ `Autumn`: `"autumn"`; `Spring`: `"spring"`; `Summer`: `"summer"`; `Winter`: `"winter"`; \}\> + +calendar seasons + +### TIMEZONE + +> **TIMEZONE**: `object` + +common time-zone aliases + +#### TIMEZONE.acst + +> `readonly` **acst**: `"Australia/Adelaide"` = `'Australia/Adelaide'` + +#### TIMEZONE.aest + +> `readonly` **aest**: `"Australia/Sydney"` = `'Australia/Sydney'` + +#### TIMEZONE.awst + +> `readonly` **awst**: `"Australia/Perth"` = `'Australia/Perth'` + +#### TIMEZONE.cet + +> `readonly` **cet**: `"Europe/Paris"` = `'Europe/Paris'` + +#### TIMEZONE.cst + +> `readonly` **cst**: `"America/Chicago"` = `'America/Chicago'` + +#### TIMEZONE.eet + +> `readonly` **eet**: `"Europe/Helsinki"` = `'Europe/Helsinki'` + +#### TIMEZONE.est + +> `readonly` **est**: `"America/New_York"` = `'America/New_York'` + +#### TIMEZONE.gmt + +> `readonly` **gmt**: `"Europe/London"` = `'Europe/London'` + +#### TIMEZONE.ist + +> `readonly` **ist**: `"Asia/Kolkata"` = `'Asia/Kolkata'` + +#### TIMEZONE.jst + +> `readonly` **jst**: `"Asia/Tokyo"` = `'Asia/Tokyo'` + +#### TIMEZONE.mst + +> `readonly` **mst**: `"America/Denver"` = `'America/Denver'` + +#### TIMEZONE.npt + +> `readonly` **npt**: `"Asia/Kathmandu"` = `'Asia/Kathmandu'` + +#### TIMEZONE.nzt + +> `readonly` **nzt**: `"Pacific/Auckland"` = `'Pacific/Auckland'` + +#### TIMEZONE.pst + +> `readonly` **pst**: `"America/Los_Angeles"` = `'America/Los_Angeles'` + +#### TIMEZONE.utc + +> `readonly` **utc**: `"UTC"` = `'UTC'` + +### WEEKDAY + +> **WEEKDAY**: `EnumifyType`\<`Index`\\> + +Gregorian calendar week-days (short-form) + +### WEEKDAYS + +> **WEEKDAYS**: `EnumifyType`\<`Index`\\> + +Gregorian calendar week-days (long-form) + +### ZONED\_DATE\_TIME + +> **ZONED\_DATE\_TIME**: `EnumifyType`\<`Index`\\> diff --git a/packages/tempo/doc/api/variables/fmtTempo.md b/packages/tempo/doc/api/variables/fmtTempo.md new file mode 100644 index 00000000..fd3f12ff --- /dev/null +++ b/packages/tempo/doc/api/variables/fmtTempo.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **fmtTempo**: `Fmt` + +Defined in: [tempo.class.ts:1824](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1824) + +format a Tempo diff --git a/packages/tempo/doc/api/variables/getStamp.md b/packages/tempo/doc/api/variables/getStamp.md new file mode 100644 index 00000000..b0e9e68f --- /dev/null +++ b/packages/tempo/doc/api/variables/getStamp.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **getStamp**: [`Params`](../interfaces/Params.md)\<`number` \| `bigint`\> + +Defined in: [tempo.class.ts:1822](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1822) + +current timestamp (ts) diff --git a/packages/tempo/doc/api/variables/getTempo.md b/packages/tempo/doc/api/variables/getTempo.md new file mode 100644 index 00000000..2c6e74b6 --- /dev/null +++ b/packages/tempo/doc/api/variables/getTempo.md @@ -0,0 +1,9 @@ +[**@magmacomputing/tempo**](../README.md) + +*** + +> `const` **getTempo**: [`Params`](../interfaces/Params.md)\<[`Tempo`](../classes/Tempo.md)\> + +Defined in: [tempo.class.ts:1823](https://github.com/magmacomputing/magma/blob/5faff5120d794572ccb66101602099151541b1b6/packages/tempo/src/tempo.class.ts#L1823) + +create new Tempo diff --git a/packages/tempo/doc/architecture.md b/packages/tempo/doc/architecture.md index 89fe373e..f3c3ae54 100644 --- a/packages/tempo/doc/architecture.md +++ b/packages/tempo/doc/architecture.md @@ -5,11 +5,16 @@ Tempo v2.0.1 introduces several industry-leading architectural patterns designed ## 🌐 Shared Global Registry To solve the "Split-Brain" issue inherent in monorepo development (where multiple instances of the same library might be loaded), Tempo utilizes a **Shared Global Registry**. By leveraging `Symbol.for('magmacomputing/library/registry')` on `globalThis`, all versions of the Tempo and Library packages share a unified type-identification engine. This ensures that classes are correctly identified as constructors even when loaded across different module boundaries. +## 🕵️ Decoupled Logging (Logify) +Tempo uses **Logify**, a diagnostic engine that leverages private Symbols to avoid polluting the public console or object state. +- **Context-Aware**: Logs track their discovery path (e.g., "Applied via Global Discovery"). +- **Zero-Footprint**: When `debug: false`, the logging overhead is mathematically eliminated. +- **Symbol-Gated**: Diagnostic metadata is attached via `Symbol.for($Logify)`, making it invisible to standard iteration (`Object.keys`) and serialization (`JSON.stringify`). + ## 🛡️ Hardened Functional Resolution -Tempo implements a "Fail-Safe" execution pattern for functional inputs. The **Hardened Functional Resolution** engine automatically detects and recovers from misidentified types—such as ES6 classes wrapped in defensive Proxies. -- **Defensive Execution**: All plugin and factory invocations are wrapped in recursive `try/catch` blocks. -- **Automatic Recovery**: If a class constructor is accidentally invoked as a function, Tempo catches the `TypeError`, downgrades it to a diagnostic warning, and returns the original constructor to ensure the library remains operational. -- **Deep Identification**: A three-tiered identification strategy (Reference, Tag, and Name matching) ensures "Perfect Identification" of constructors across all module boundaries. +The engine implements a "Fail-Safe" execution pattern for functional inputs, automatically recovering from misidentified types—such as ES6 classes wrapped in defensive Proxies or circular dependency deadlocks. +- **Defensive Execution**: All plugin invocations are wrapped in recursive `try/catch` blocks. +- **Silent Failover**: When combined with `catch: true`, resolution failures return a **Void Instance**, preventing application crashes while providing clear diagnostic symbols for debugging. ## 🏗️ Tempo Architecture: Internal Protection & Performance @@ -97,10 +102,10 @@ Used for: `new Tempo(string | number)` The **Guarded-Lazy** strategy ensures that even with hundreds of custom plugins, the entry point remains nearly instantaneous. In **v2.0.1**, this was refined for 100% matching reliability. ### How it works: -1. **Length-Sorted Terms**: To prevent "partial matching" (e.g., matching `noon` inside `afternoon`), all registered terms are sorted by length (descending) before the Guard regex is built. -2. **Automated Escaping**: All custom terms are escaped to prevent regex injection or character collision. -3. **High-Speed Gatekeeper**: This single-pass $O(1)$ regex acts as the fast-fail gatekeeper. -4. **Auto-Lazy**: Valid inputs that pass the guard automatically switch the instance to `mode: 'defer'` mode, deferring the $O(N)$ full-parse work until the first property access. +1. **Longest-Token Matching**: To prevent partial matching (e.g., matching `qtr` inside `quarter`), the guard uses a "Scan-and-Consume" loop that prioritizes the longest available token. +2. **Unified Wordlist**: The guard automatically ingests all registered Terms, Timezones, Month names, and Custom Events into a single high-speed lookup Set. +3. **High-Speed Gatekeeper**: By avoiding complex backtracking regexes, the gatekeeper provides predictable $O(1)$ performance even as the plugin list grows. +4. **Auto-Lazy**: Valid inputs that pass the guard automatically switch the instance to `mode: 'defer'`, deferring the full $O(N)$ parse work until a property is actually read. ### 📈 Validation & Performance The efficiency of the Master Guard and the success of the Zero-Cost objective have been validated via local benchmarking: @@ -113,6 +118,21 @@ The efficiency of the Master Guard and the success of the Zero-Cost objective ha --- +## 🔄 Internal Lifecycle & Reactive Sync +Tempo maintains system-wide synchronization through a private, Symbol-based hook system. + +### Reactive Registration +When a plugin is imported via a side-effect (`import '@magmacomputing/tempo/ticker'`), it triggers a **`sym.$Register`** hook. +- **Auto-Sync**: The `Tempo` class listens for these hooks and automatically updates its internal registries. +- **Guard Rebuild**: Every time a new term or layout is registered, the **Master Guard** is automatically rebuilt to include the new tokens, ensuring the "Zero-Cost Constructor" always stays up to date. + +### Disposable Engine (`Symbol.dispose`) +The `Tempo` class implements the explicit resource management pattern. +- **Clean Slate**: Calling `Tempo[Symbol.dispose]()` (or using the `using` keyword in a test suite) resets all global registries and configuration to their factory defaults. +- **Isolation**: This is critical for testing environments to prevent state-leaks between test cases. + +--- + ## ⚖️ Summary The Tempo architecture follows the principle of **"Right Tool for the Job"**: - **Shadowing** provides the extreme performance and memory efficiency required for **per-instance computed state**. diff --git a/packages/tempo/doc/lazy-evaluation-pattern.md b/packages/tempo/doc/lazy-evaluation-pattern.md index 3d33c9ef..75a93560 100644 --- a/packages/tempo/doc/lazy-evaluation-pattern.md +++ b/packages/tempo/doc/lazy-evaluation-pattern.md @@ -1,95 +1,69 @@ -# The Immutable Prototype-Shadowing Lazy Evaluation Pattern +# The Immutable Proxy-Delegator Lazy Evaluation Pattern When building complex JavaScript libraries (like date-time utilities), exposing numerous computed properties as getters on an object is common. However, computing them all upfront is expensive, and re-computing them on every access is wasteful. The standard solution is "Lazy Evaluation": evaluate the getter on first access, and then overwrite the getter with the literal value. But what if the base object is strictly **immutable** (via `Object.freeze`)? -This article details a highly optimized $O(1)$ pattern for securely lazy-evaluating properties on immutable objects using prototype shadowing and private fields. +This article details a highly optimized $O(1)$ pattern for securely lazy-evaluating properties on immutable objects using a Proxy-based delegator and private fields. ## The Problem: Mutating Frozen State A traditional lazy evaluation approach destroys and recreates the properties on the parent object. If the parent object is `Object.freeze()`'d for security (preventing API consumers from tampering with state), you cannot simply `Object.defineProperty` to overwrite the getter with a literal value. -To get around freezing, you might try taking all property descriptors, wiping the object, mapping the other getters to a new object, adding the evaluated value, and calling `Object.freeze()` on the new object. +To get around freezing, you might try taking all property descriptors, wiping the object, mapping the other getters to a new object, adding the evaluated value, and calling `Object.freeze()` on the new object. This operation runs in $O(N)$ time every single time *any* getter is accessed. -```javascript -// The O(N) approach - Extremely slow and memory-heavy - -get: function () { - const props = Object.getOwnPropertyDescriptors(this.#term); - this.#term = {}; // wipe - - // Re-assign all N other getters - Object.entries(props).forEach(([prop, desc]) => { - if (prop !== name) Object.defineProperty(this.#term, prop, desc); - }); - - const value = computeExpensiveValue(); - Object.defineProperty(this.#term, name, { value, enumerable: true }); - - return Object.freeze(value); -} -``` +## The Solution: Proxy-Delegator with Memoization -This operation runs in $O(N)$ time (where $N$ is the number of getters on the object) every single time *any* getter is accessed. In a hot loop, building and throwing away objects with dozens of descriptors wrecks memory (GC churn) and severely hits the CPU. - -## The Solution: Prototype Shadowing - -We can achieve lazy evaluation in $O(1)$ time by swapping out `Object.defineProperty` for `Object.create()`. +Tempo achieves lazy evaluation in $O(1)$ time using a **Delegator Proxy** that memoizes results back onto the target object. ```javascript // The O(1) approach - Extremely fast, zero overhead -#setTerm(name, defineFunction) { - Object.defineProperty(this.#term, name, { - configurable: false, - enumerable: false, - get: () => { - const value = defineFunction.call(this); // Evaluate the value - - // Prototype-shadow the getter with a frozen wrapper object - this.#term = Object.freeze(Object.create(this.#term, { - [name]: { - value, - configurable: false, - writable: false, - enumerable: true - } - })); - - return Object.freeze(value); - } - }); +#setLazy(target, name, defineFunction) { + const get = () => { + const value = defineFunction.call(this); // Evaluate the value + + // Memoize the value by defining it as a static property on the target + Object.defineProperty(target, name, { + value, + enumerable: true, + configurable: true, + writable: false + }); + + return value; + }; + + // Define the initial getter + Object.defineProperty(target, name, { get, enumerable: true, configurable: true }); } ``` ### How it Works -1. **Reassignment, not Mutation:** - We freeze the properties of the base object (`this.#term`) upfront. Instead of modifying the frozen object, we build a *new* object that has the literal `value` property, and we set its prototype to the *old* `this.#term`. Then, we point `this.#term` to the new object. Freezing prevents mutation, but it does not prevent variable reassignment. +1. **Proxy Entry Point:** + Tempo uses a single Proxy (the `delegate` helper) to catch the very first access to a property. This Proxy doesn't store state; it just routes the request to the lazy evaluator. 2. **Private Fields Bypass the Freeze:** - If `this.#term` were a public property (`this.term`), freezing the outer class `this` would prevent us from reassigning `this.term`. However, native JS Private Fields (`#term`) don't exist as properties on the object; they are internal engine slots. Thus, `Object.freeze(this)` cannot lock `#term`, allowing us to freely reassign the pointer to the new prototype chain internally while keeping it completely insulated from outside tampering. + The internal containers (`#term`, `#fmt`) are private fields. Native JS Private Fields don't exist as properties on the object; they are internal engine slots. Thus, even if the `Tempo` instance is frozen, we can still update the *internal* state of the container objects. 3. **Innate JS Engine Optimizations:** - When `.quarter` is evaluated next, it creates another object on top: - `[Newest Link (quarter)]` → `[Middle Link (qtr)]` → `[Base Object (un-evaluated getters)]` - - If the user asks for `.yearly` (not yet evaluated), the JS engine traverses the prototype chain transparently. V8 and SpiderMonkey are massively optimized for prototype traversal via Inline Caches. You exchange an `O(N)` property iteration penalty for an `O(K)` prototype lookup (where `K` is the number of evaluated properties), executing in Native C++ at lightning speed. + Once a property (e.g., `.quarter`) is evaluated, it is "baked" into the target object as a standard value property. Subsequent lookups bypass the Proxy and the getter entirely. The JS engine treats it as a raw property access, which is the fastest possible operation in JavaScript. 4. **Zero Over-allocation:** - Unused getters remain safely tucked away on the root object at the bottom of the prototype chain. They cost absolutely nothing in execution time or memory until they are needed. + Unused getters remain as simple function pointers. They cost absolutely nothing in execution time or memory until they are needed. ### Summary -By strategically combining **Private Fields**, **`Object.create()`**, and **Prototype lookups**, we can build securely immutable APIs that lazy-load computed getters with absolute minimal overhead. +By combining **Private Fields**, **Proxies**, and **Property Memoization**, Tempo builds securely immutable APIs that lazy-load computed getters with zero overhead after the initial call. ## 🌈 The Best of All Worlds -As of **v2.0.1**, Tempo maintains **`enumerable: true`** for all properties in its `#term` and `#fmt` containers. This design choice provides a unique trifecta of benefits: +As of **v2.1.2**, Tempo uses a **Proxy-Delegator** that combines the security of immutability with the speed of raw property access: 1. **Lazy by Default**: Properties are only evaluated when accessed, keeping the constructor near-instant. -2. **Targeted Evaluation**: Accessing a single property (e.g., `t.term.quarter`) only evaluates that specific getter. -3. **Transparent Discovery**: Because properties are enumerable, a simple `console.log(t.term)` will trigger the eager evaluation of *all* currently registered terms. +2. **Memoized Evaluation**: Once accessed (e.g., `t.term.quarter`), the result is "baked" into the instance using `Object.defineProperty`. +3. **$O(1)$ Performance**: Every access *after* the first is a direct property lookup—no Proxy traps, no prototype traversal. +4. **Transparent Discovery**: Because properties are enumerable, `console.log(t.term)` or `JSON.stringify` will trigger the evaluation of all registered terms at once, providing a perfect "snapshot" of the instance state. -This transparency is invaluable for debugging, as it allows developers to see the full state of the grammar-engine at a glance. To prevent terminal noise during these "Full Evaluation" events (especially on invalid dates), use the **`silent: true`** configuration option. +To prevent diagnostic noise during these full-evaluation events, initialize Tempo with **`silent: true`**. diff --git a/packages/tempo/doc/migration-guide.md b/packages/tempo/doc/migration-guide.md new file mode 100644 index 00000000..94eb9e15 --- /dev/null +++ b/packages/tempo/doc/migration-guide.md @@ -0,0 +1,47 @@ +# ⚠️ Migrating to Tempo v2.x + +Tempo v2.x introduces architectural improvements and a more modular engine. While we strive for backward compatibility, there are some key changes to consider when upgrading from v1.x. + +## 📦 Modular Architecture +Tempo is now split into a `core` engine and optional modules. + +### If you use the full package: +If you import from `@magmacomputing/tempo`, everything (except Plugin extensions, like .ticker()) is included and works exactly like v1.x. No changes are required. + +### If you want a lean bundle: +You can now import the core engine only: +```javascript +import { Tempo } from '@magmacomputing/tempo/core'; +``` +If you do this, you must manually import the features you need. Built-in features now self-register on import via side-effects. + +## 🔌 Feature Registration +Features like `mutation`, `duration`, `format`, and the `ticker` are now modular. + +### v1.x (Automatic) +In v1.x, all features were always present. + +### v2.x (Opt-in for Core) +If using the Core engine, simply import the module to activate the feature: +```javascript +import '@magmacomputing/tempo/duration'; +import '@magmacomputing/tempo/ticker'; +``` + +## 🗓️ Term Logic Refactor +The way Terms (Quarters, Seasons, Zodiacs, etc.) are handled has been unified. + +- **v1.x:** Some term properties were ad-hoc on the instance. +- **v2.x:** All term logic is centralized under the `.term` property or accessible via the `#` shorthand in `.set()` and `.add()`. + +Example of new syntax: +```javascript +// Snap to start of quarter +t.set({ start: '#quarter' }); + +// Add two quarters while preserving day-of-quarter +t.add({ '#quarter': 2 }); +``` + +## 🧪 Testing and Stability +v2.x has been hardened with a 100% pass rate on our regression suite. If you were relying on undocumented "quirks" or bugs in v1.x parsing, you may find that v2.x is more strict and deterministic. diff --git a/packages/tempo/doc/releases/versions.md b/packages/tempo/doc/releases/versions.md new file mode 100644 index 00000000..56ca2419 --- /dev/null +++ b/packages/tempo/doc/releases/versions.md @@ -0,0 +1,64 @@ +# 📜 Version History + +## [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 + +## [v2.1.2] - 2026-04-16 +Tempo v2.1.2 is a major milestone, delivering a more reactive architecture and rock-solid stability. + +### 🏗️ Modular Architecture +Tempo is now split into `core` and optional plugin/modules, allowing you to include only what you need. This reduces bundle size for users who only need the basic engine. + +### 📝 Improved Logging +Internal logging now uses context-aware Symbols. This decouples the logging logic from the core engine, allowing for cleaner diagnostics without performance overhead. + +### ⏱️ Static API +- Added `Tempo.duration()` static method for convenient duration creation without instantiating a full Tempo date object first. + +### 🔌 Side Effect Registration +Plugins now support automatic registration. +- The full `@magmacomputing/tempo` package includes all modules by default. +- Core users (`@magmacomputing/tempo/core`) can activate features simply by importing the corresponding module (e.g., `import '@magmacomputing/tempo/ticker'`). + +### 🛡️ 100% Reliability +The engine passes all regression tests, ensuring complete stability across: +- Parsing complex date strings. +- Calculation and relative math. +- Formatting routines. + +### 🗓️ Unified Term Logic +Terms (like Quarters and Seasons) are now fully integrated: +- Use `#` in `set()` to jump to boundaries (e.g., `t.set({ start: '#quarter' })`). +- Use `{#term}` in `format()` to embed semantic labels (e.g. "Second Quarter") directly into strings (e.g., `t.format('Today is {yyyy}-{mm}-{dd} in the {#quarter}')`. + +### ➗ Relational Term Math +A category-first feature. Shift dates by semantic "steps" with `.add({ '#quarter': 1 })`. Tempo preserves your relative duration within the term, jumping across gaps and handling overflows with mathematical precision. + +### 🔗 Fluent Immutable Boundaries +Term ranges now return fully functional, frozen `Tempo` instances for `start` and `end`. This allows for seamless chaining: +```javascript +t.term.qtr.start.format('{dd} {mmm}') +``` + +### ⚡ Ticker Reliability +Fully stabilized the Ticker subsystem: +- Resolved async generator hangs. +- Synchronized pulse counts ($N$ pulses for `limit: N`), guaranteeing 100% predictable reactive streams. + +### 🚀 Parsing Engine Optimization +- Re-engineered pattern generation for $O(1)$ instance creation. +- Improved support for custom layout literals in local/one-off parsers. +- Significant refinements to the natural language engine for even more intuitive relative-date handling ("next Friday", "two days ago", etc.). diff --git a/packages/tempo/doc/soft_freeze_strategy.md b/packages/tempo/doc/soft_freeze_strategy.md index 142a4d3d..c8406993 100644 --- a/packages/tempo/doc/soft_freeze_strategy.md +++ b/packages/tempo/doc/soft_freeze_strategy.md @@ -79,7 +79,12 @@ export function enumify(list, frozen = true) { To prevent a global discovery object from "trashing" the registry, the library implements a **Safe Merge** rule for all shared states. When merging external data (discovery or plugin): -- New keys are added. -- Existing keys are **preserved**. +- **Additive Only**: New keys are added. +- **Root Protection**: Core building blocks (like `NUMBER['one']` or `FORMAT['iso']`) are protected from being overwritten. -This ensures that while the library is extensible, its fundamental building blocks (like `NUMBER['one']`) remain immutable and secure. +This ensures that while the library is extensible, its fundamental logic remains deterministic and secure across all environments. + +--- + +> [!NOTE] +> **v2.1.2 Update**: The Soft Freeze is now tightly integrated with **Logify**. Internal state updates bypass the Proxy using a private Symbol, allowing the engine to remain "Silent" while performing complex transactional updates during the discovery phase. diff --git a/packages/tempo/doc/tempo.api.md b/packages/tempo/doc/tempo.api.md index 142b5cc5..ed42e15b 100644 --- a/packages/tempo/doc/tempo.api.md +++ b/packages/tempo/doc/tempo.api.md @@ -110,8 +110,17 @@ Returns a formatted string or number based on the provided token or named format Calculates the duration until another date-time. - **Returns:** `number` (if a unit is provided) or a `Tempo.Duration` object. -### `tempo.since(since, opts?)` +### `tempo.since(since?: Tempo.DateTime | Tempo.Options, opts?: Tempo.Options)` Returns a human-readable relative time string (e.g., "3 days ago"). +- **Returns:** `string` +- **Options:** + - `rtfStyle`: `'long' | 'short' | 'narrow'` (default: `'narrow'`). See `Intl.RelativeTimeFormatStyle`. + - `rtfFormat`: A pre-configured `Intl.RelativeTimeFormat` instance. +- **Example:** + - `t.since('yesterday')` -> `"1d ago"` + - `t.since('yesterday', { rtfStyle: 'long' })` -> `"1 day ago"` + - `t.since(t2, { rtfFormat: new Intl.RelativeTimeFormat('fr') })` -> `"il y a 2 heures"` +- **Performance:** Tempo memoizes `Intl` object creation internally. For maximum performance in high-volume loops, you can pass a pre-allocated `rtfFormat` instance. ### `tempo.isValid` Returns `true` if the instance represents a valid date-time. diff --git a/packages/tempo/doc/tempo.benchmarks.md b/packages/tempo/doc/tempo.benchmarks.md index 4edf7839..5a748f51 100644 --- a/packages/tempo/doc/tempo.benchmarks.md +++ b/packages/tempo/doc/tempo.benchmarks.md @@ -17,11 +17,12 @@ Timings were captured over **1,000 iterations** to measure micro-overhead and co ## 🏗️ Architectural Impact -### 1. Lazy Property Delegation ($O(1)$) +### 1. Proxy-Delegator Delegation ($O(1)$) -By using a [Lazy Proxy](../src/common/proxy.library.ts), the constructor returns instantly without populating the formatting (`fmt`) or term (`term`) objects. These registries are only discovered and shadow-linked on the first property access. +By using a **Proxy-Delegator** pattern, the constructor returns near-instantly without populating the formatting (`fmt`) or term (`term`) objects. These registries are only discovered and memoized on the first property access. - **Gain**: ~65% reduction in instantiation overhead. +- **v2.1.2 Update**: The Scan-and-Consume guard further stabilizes the "Zero-Cost Constructor" by ensuring that even with massive plugin lists, the entry-point remains $O(1)$. ### 2. The Master Guard (Fast-Fail) diff --git a/packages/tempo/doc/tempo.config.md b/packages/tempo/doc/tempo.config.md index 02300340..68b41fa6 100644 --- a/packages/tempo/doc/tempo.config.md +++ b/packages/tempo/doc/tempo.config.md @@ -7,18 +7,18 @@ Settings are loaded in the following order (where later stages override earlier ones): 1. **Library Defaults**: Sensible out-of-the-box baseline. 2. **Persistent Storage**: Sticky user preferences (which merge into Defaults). -3. **Global Discovery**: Enterprise-level setup discovered via `Symbol.for($Tempo)`. -4. **Implicit/Explicit Initialization**: Baseline configuration via `Tempo.init()`. -5. **Instance Constructor**: Specific overrides for a single `new Tempo()` call. +3. **Global Discovery**: Enterprise-level setup discovered via `Symbol.for('$Tempo')`. +4. **Library Extension**: Dynamic feature registration via `Tempo.extend()`. +5. **Explicit Initialization**: Baseline configuration via `Tempo.init()`. +6. **Instance Constructor**: Specific overrides for a single `new Tempo()` call. --- ## 🔒 Registry Protection (Soft Freeze) -As of **v2.0.1**, Tempo implements a **Soft Freeze** strategy for core registries (`TIMEZONE`, `NUMBER`, `FORMAT`, etc.). - -- **Read-Only Proxy**: Registries are returned as read-only proxies. Any attempt to directly assign to them (e.g., `Tempo.TIMEZONE.myzone = '...' `) will fail or be ignored. -- **Controlled Extension**: To update a registry, you must use the provided extension methods like `Tempo.extend()` or `Tempo.registryUpdate()`. This ensures that internal caches (like the Master Guard regex) are correctly synchronized. +- **Read-Only Proxy**: Core registries (`TIMEZONE`, `FORMAT`, etc.) are returned as read-only proxies. Any attempt to directly assign to them will fail. +- **Controlled Extension**: To update a registry, you must use `Tempo.extend()` or `Tempo.init()`. This ensures internal caches (like the Master Guard regex) are synchronized. +- **Atomic Updates**: Multiple extensions are batched, ensuring that the parsing engine is only rebuilt once per change. This strategy prevents accidental state corruption while maintaining the flexible, extensible nature of the library. @@ -96,11 +96,13 @@ Tempo.init({ | `calendar` | `string` | `'iso8601'` | Default calendar system. | | `pivot` | `number` | `75` | Cutoff for parsing two-digit years. | | `timeStamp`| `'ms' \| 'ns'` | `'ms'` | Precision for timestamps. | -| `sphere` | `'north' \| 'south'`| Auto-inferred (from time zones' daylight saving rules) Hemisphere for seasonal plugins. | -| `debug` | `boolean` | `false` | Enables internal log tracking. | -| `catch` | `boolean` | `false` | If true, invalid inputs return a Void instance. | -| `mode` | `'auto' \| 'strict' \| 'defer'` | `'auto'` | Controls the hydration strategy and parsing strictness. | -| `silent` | `boolean` | `false` | Suppresses both `console.error` and `console.warn` output. When combined with `catch: true`, expected failures (like invalid date strings) produce no console output. | +| `sphere` | `'north' \| 'south'`| Auto-inferred | Hemisphere for seasonal plugins. | +| `rtfFormat` | `Intl.RTF` | `undefined` | Pre-configured relative time formatter. | +| `rtfStyle` | `'long' \| 'short' \| 'narrow'` | `'narrow'` | Default style for relative time formatting. | +| `debug` | `boolean` | `false` | Enables internal log tracking using context-aware Symbols. | +| `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. | --- diff --git a/packages/tempo/doc/tempo.modularity.md b/packages/tempo/doc/tempo.modularity.md index 6424ef8d..afc15aff 100644 --- a/packages/tempo/doc/tempo.modularity.md +++ b/packages/tempo/doc/tempo.modularity.md @@ -81,11 +81,11 @@ export const MyModule = defineModule((options, TempoClass) => { There is a subtle but important distinction between how features are activated in Core mode: -* **`Tempo.extend(Module)`**: This is **Immediate and Explicit**. It applies the module to the class exactly when the line is executed. This is the safest pattern for most users. -* **`Tempo.init()`**: This is **Reactive Discovery**. It scans the global registry for any plugins that were imported via side effects (e.g., `import '@magmacomputing/tempo/ticker'`) and applies them all at once. +* **`Tempo.extend(Module)`**: This is **Immediate and Explicit**. It applies the module to the class exactly when the line is executed. This is the recommended pattern for modular applications. +* **`Tempo.init()`**: This is **Discovery-Driven**. It scans the global environment for any plugins that were imported via side effects (e.g., `import '@magmacomputing/tempo/ticker'`) and hydrates the engine all at once. > [!CAUTION] -> **The State Refresh**: `Tempo.init()` performs a **full state refresh** for the engine. It resets the global configuration, internal term registries, and formatting maps back to defaults before re-applying all currently registered plugins from the global discovery layer. While it does **not** wipe out manual monkey-patches to the `Tempo` prototype, it *does* clear all previously registered terms and custom formats. To ensure your custom logic is managed correctly within the initialization lifecycle, always use `Tempo.extend()` or encapsulate your changes within a formal plugin. +> **The Initialization Lifecycle**: `Tempo.init()` performs a **full state refresh**. It resets configuration, term registries, and formatting maps to defaults before re-applying all currently discovered plugins. To ensure your custom logic is managed correctly, always use `Tempo.extend()` or encapsulate changes within a formal plugin. -**The Trap**: If you import a side-effect plugin *after* you have already called `Tempo.init()`, the feature will **not** appear on the `Tempo` class. You would need to call `Tempo.init()` again to "refresh" the engine's feature set and pick up the latecomers. +**The Side-Effect Trap**: If you import a side-effect plugin *after* you have already called `Tempo.init()`, the feature will **not** automatically appear on the `Tempo` class. You would need to call `Tempo.init()` again or use `Tempo.extend()` to pick up the latecomers. diff --git a/packages/tempo/doc/tempo.pledge.md b/packages/tempo/doc/tempo.pledge.md index 4616ccee..6b9627e8 100644 --- a/packages/tempo/doc/tempo.pledge.md +++ b/packages/tempo/doc/tempo.pledge.md @@ -18,9 +18,25 @@ p.resolve('Success!'); // 3. Await the promise anywhere const result = await p.promise; + +// Note: resolve/reject are idempotent. Calling them on an already-settled +// pledge is safe; it will log a warning but won't change the state. +``` + +## 2. Then-ability + +A `Pledge` is a first-class "Then-able". You don't need to access `.promise` to chain your logic; you can call `.then()` and `.catch()` directly on the `Pledge` instance. + +```typescript +const p = new Pledge('NaturalAction'); + +p.then(val => console.log(val)) + .catch(err => console.error(err)); + +p.resolve('Victory!'); ``` -## 2. Advanced Callbacks +## 3. Advanced Callbacks You can register lifecycle hooks during instantiation. These are useful for cross-cutting concerns like logging or resource cleanup. @@ -37,7 +53,7 @@ const p = new Pledge({ * **`onReject`**: Triggered when `p.reject()` is called. * **`onSettle`**: Triggered regardless of outcome (analogous to `finally`). -## 3. Debugging with Tags +## 4. Debugging with Tags Each `Pledge` can be assigned a `tag` string. This tag is included in logs and error messages if the `debug` or `catch` flags are set. @@ -49,7 +65,7 @@ const p = new Pledge({ tag: 'DatabaseQuery', debug: true }); p.reject('Timeout'); ``` -## 4. Global Configuration +## 5. Global Configuration You can set global defaults for all future `Pledge` instances using `Pledge.init()`. @@ -62,10 +78,10 @@ Pledge.init({ To reset to library defaults: ```typescript -Pledge.init({}); +Pledge.init(); ``` -## 5. Automatic Cleanup (Symbol.dispose) +## 6. Automatic Cleanup (Symbol.dispose) `Pledge` implements the `Disposable` interface. If a `Pledge` goes out of scope while still pending, it will automatically reject to prevent "hanging" async operations. @@ -77,7 +93,7 @@ Pledge.init({}); } ``` -## 6. State Accessors +## 7. State Accessors * **`p.state`**: Returns `'pending'`, `'resolved'`, or `'rejected'`. * **`p.isPending`**: `boolean` diff --git a/packages/tempo/doc/tempo.shorthand.md b/packages/tempo/doc/tempo.shorthand.md index 775ff99b..317cfc76 100644 --- a/packages/tempo/doc/tempo.shorthand.md +++ b/packages/tempo/doc/tempo.shorthand.md @@ -1,130 +1,103 @@ # Tempo Shorthand Engine -The Tempo Shorthand Engine provides a powerful, namespace-based syntax for resolving complex date/time ranges (Terms) such as fiscal quarters, daily periods, and zodiac signs. It allows you to navigate temporal cycles with high-performance, intuitive expressions. +The Tempo Shorthand Engine (the "Slick" engine) provides a powerful, namespace-based syntax for navigating and manipulating complex date/time cycles (Terms). It allows you to treat high-level concepts like Quarters, Seasons, and Daily Periods as first-class units of measure. -## 1. Syntax Overview +## 1. The Three Modes of Shorthand -Shorthand follows the pattern: `#[namespace].[modifier][repeat][range]` +Shorthand behavior changes depending on whether you provide a **String**, an **Object**, or a **Structural Key**. -- **Namespace**: The registered key of a Term Plugin (e.g., `qtr`, `period`, `zodiac`). -- **Separator**: A literal dot `.` used to trigger range-mode. -- **Modifier**: Optional symbols to control direction and inclusivity (e.g., `>`, `<=`). -- **Repeat**: Optional digit to shift by multiple boundaries (e.g., `>2`). -- **Range (Optional)**: A specific range identifier defined by the plugin (e.g., `q1`, `morning`, `aries`). +### A. Navigation Mode (String Shorthand) +**Used in:** `.set()`, `.add()`, `.until()`, `.since()`, and the Ticker. +**Pattern:** `#[namespace].[modifier][repeat][range]` +**Best for:** Jumping to specific boundaries (e.g., "the start of the next Q1"). -> [!IMPORTANT] -> **Prerequisite**: Shorthand resolution requires the Terms Module to be activated in Core environments (e.g., `Tempo.extend(TermsModule)` or `import '@magmacomputing/tempo/term/standard'`). +```javascript +t.set('#qtr.>q1'); // Snaps to the start of the next available Q1 +t.add('#period.next'); // Jumps to the start of the next defined period +``` -> Shorthand literals are **not** supported in the `Tempo` constructor. They are resolved relative to an existing instance and must be used via instance methods (`.set()`, `.add()`, `.until()`, `.since()`) or the Ticker. +### B. Relational Mode (Object Shorthand) +**Used in:** `.add()` and `.set()`. +**Pattern:** `{ '#namespace': value }` +**Best for:** Shifting by semantic "steps" while preserving your relative position. ---- +```javascript +// Relational Add: Preserves your offset within the cycle +t.add({ '#qtr': 1 }); // If you are 20 days into Q1, you resolve to 20 days into Q2. -## 2. Shorthand Modifiers +// Relational Set: Absolute index alignment +t.set({ '#qtr': 2 }); // Aligns to the start of the 2nd quarter of the current year +``` -The engine supports a variety of modifiers to control how a term is resolved. Modifiers can be combined with optional repeat counts (e.g., `>2`). +### C. Structural Mode (Key Shorthand) +**Used in:** `.set()`. +**Pattern:** `{ start: '#namespace', end: '#namespace' }` +**Best for:** Snapping a date to the precise boundaries of its current term. -| Modifier | Type | Meaning | Example | -| :--- | :--- | :--- | :--- | -| `>` | **Forward Shifter** | Move forward to the next term boundary. | `#qtr.>` | -| `<` | **Backward Shifter** | Move backward to the previous term boundary. | `#qtr.<` | -| `>=` | **Inclusive Forward** | Matches current term or next forward boundary. | `#qtr.>=q1` | -| `<=` | **Inclusive Backward** | Matches current term or previous backward boundary. | `#qtr.<=q1` | -| `+` | **Future Relative** | Offset forward by N instances (default 1). | `#qtr.+2` | -| `-` | **Past Relative** | Offset backward by N instances (default 1). | `#qtr.-1` | -| `next` | **Alias (>)** | Semantically identical to `>`. | `#qtr.next` | -| `prev` | **Alias (<)** | Semantically identical to `<`. | `#qtr.prev` | -| `last` | **Alias (<)** | Semantically identical to `<`. | `#qtr.last` | -| `this` | **Identity** | Resolves the term containing the current point. | `#qtr.this` | -| *none* | **Contextual** | Resolves the nearest instance (absolute). | `#qtr.q1` | +```javascript +t.set({ start: '#qtr' }); // Snaps to the exact start of the current quarter +t.set({ end: '#year' }); // Snaps to the final nanosecond of the current year +``` --- -## 3. Usage & Method Behaviors - -The shorthand resolves differently depending on the method invoked. - -### `.set(shorthand)` - Absolute Alignment -Aligns the instance forward or backward to the matched term boundary. -- `t.set('#zodiac.aries')`: Snaps to the start of the current year's Aries. -- `t.set('#qtr.>q1')`: Snaps to the start of the *next* available Q1. - -### `.add(shorthand)` - Targeted Momentum -Advances the instance relative to its current position. -- **Cycle Shifting**: `t.add('#qtr')` moves to the start of the next quarter boundary. -- **Multi-Boundary**: `t.add('#qtr.>2')` moves forward exactly two quarter boundaries. -- **Step Shifting**: Providing an object like `t.add({ '#qtr': 1 })` allows shifting by a specific number of "slots" or "steps" within the term's cycle while preserving your relative duration from the start of the term. +## 2. Navigation Modifiers -### `.until(shorthand)` - Duration Forward -Returns a **Duration** representing the time remaining **until** the target is reached. -- `t.until('#qtr.q1', 'days')`: Calculates days until the next Q1. +Modifiers control the direction and inclusivity of the search. -### `.since(shorthand)` - Duration Backward -Returns a **Duration** representing the time elapsed **since** the target was passed. -- `t.since('#period.morning')`: Calculates time elapsed since the start of the current morning. +| Modifier | Meaning | Behavior | +| :--- | :--- | :--- | +| `>` | **Forward (Exclusive)** | Finds the next boundary strictly *after* the current time. | +| `<` | **Backward (Exclusive)** | Finds the previous boundary strictly *before* the current time. | +| `>=` | **Forward (Inclusive)** | Returns the current term if it contains the cursor; otherwise, the next. | +| `<=` | **Backward (Inclusive)** | Returns the current term if it contains the cursor; otherwise, the previous. | +| `+` | **Relative Future** | Alias for `>`. | +| `-` | **Relative Past** | Alias for `<`. | +| `this` | **Identity** | Resolves the term currently containing the cursor. | --- -## 4. Resolution Logic: Proximity vs. Momentum +## 3. Proximity vs. Momentum -The "Slick" engine uses a bifurcated sorting strategy to ensure results are intuitive: +The "Slick" engine uses two different sorting strategies to ensure results feel "natural." -1. **Absolute Terms** (`#namespace.id`): - Uses **Past-Leaning Resolution**. The engine finds the latest matching range whose start date is at or before the current cursor (this favors the current or most recent instance). - -2. **Shifters & Directed Targets** (`#namespace.>id`): - Uses **Chronological Momentum**. - - Modifiers `>` and `<` are **exclusive** (start/end must be strictly after/before cursor). - - Modifiers `>=` and `<=` are **inclusive** (current term is allowed if it contains the cursor). +### Proximity Resolution (Identifiers) +When you use a simple identifier like `#zodiac.aries`, Tempo uses **Past-Leaning Resolution**. It finds the most recent instance of Aries that has already started. If you are *currently* in Aries, it returns the start of the current one. -### Examples - -```typescript -// Assume today is Dec 25th 2024 (Explicitly North Hemisphere, Q4) -const t = new Tempo('2024-12-25', { sphere: 'north' }); - -// ABSOLUTE: Finds latest Q1 at or before Dec 25th (Jan 1st 2024) -t.set('#qtr.q1'); // 2024-01-01 - -// DIRECTED: Finds the next Q1 AFTER current (Jan 1st 2025) -t.add('#qtr.>q1'); // 2025-01-01 - -// MULTI-SHIFT: Advances two boundary quarters forward (Q2 2025) -t.add('#qtr.>2'); // 2025-04-01 -``` +### Momentum Resolution (Shifters) +When you use a shifter like `>q1`, Tempo uses **Chronological Momentum**. It ignores where you are now and looks exclusively into the future for the next occurrence. --- -## 5. Advanced Behaviors +## 4. The "Cycle Preservation" Guarantee + +One of Tempo's premium features is its ability to maintain your **relative offset** when shifting across terms. -### Cycle Identity Preservation -The engine is "context-aware" across boundaries. When shifting by term, Tempo maintains the identity of the current state: -- If you are in **Q2 2026** and shift by `+1` Quarter, it resolves to **Q3 2026**. -- If you are in **morning** of Jan 1st and shift by `+1` Period, it resolves to the next registered period (e.g., `midmorning`). +If you are 45% of the way through a **Morning** period and you call `t.add({ '#period': 1 })`, Tempo doesn't just add a fixed number of hours. It: +1. Determines your relative percentage/offset within the current Morning. +2. Finds the boundaries of the *next* registered period (e.g., Afternoon). +3. Calculates the same 45% point within that new period. -### Multi-Day & Multi-Year Resolution -Terms automatically resolve across logical boundaries: -- **Daily Cycles**: (e.g., `#period`) resolve within a 3-day window (`yesterday`, `today`, `tomorrow`) to ensure smooth transit across midnight. -- **Yearly Cycles**: (e.g., `#qtr`, `#zodiac`) resolve within a 3-year window to handle boundary-crossing ranges (like North vs South fiscal years). +This ensures that "shifting by a quarter" or "shifting by a period" feels mathematically correct even when those terms have different durations. --- -## 6. Development Constraints (Range-Keys) +## 5. Development Constraints -When defining ranges in a Terminology Plugin, you must adhere to the **Golden Rules of Range-Keys** to avoid lexer collisions with modifiers. +When building custom Terminology Plugins, you must follow the **Golden Rules of Range-Keys** to ensure the lexer can resolve them: -> [!CAUTION] -> **Reserved Characters**: Range-Keys **MUST NOT** contain any of the following characters: +> [!IMPORTANT] +> **No Reserved Characters**: Range-Keys (e.g., `q1`, `aries`) must not contain: > `> < + = , . ! @ # $ % ^ & * ( ) [ ] { }` -> These characters are reserved for directional shifters and lexer boundaries. > [!WARNING] -> **Numeric Anchoring**: Range-Keys **MUST NOT** start with a digit (0-9). -> For example: `1q` is **INVALID**, use `q1` instead. Leading numbers are reserved for repetition counts. +> **No Leading Numbers**: Range-Keys must not start with a digit. +> `1q` is **Invalid** (Lexer thinks it's a repeat count). Use `q1` instead. --- -## 7. Best Practices +## 6. Best Practices -- **Sphere Locking**: When working with hemisphere-dependent terms (like Quarters), ensure your Tempo instance has an explicit `sphere` config (`north` or `south`) for deterministic results. -- **Error Handling**: Use `{ catch: true }` in your Tempo config if you want to gracefully handle unknown shorthand without throwing. -- **Step Shifting**: Use integer values (e.g. `{ '#qtr': 1 }`) in a **Ticker** to create standard recurring intervals. +- **Explicit Spheres**: Always set `sphere: 'north'` or `'south'` in your config if using seasonal terms. +- **Method Intent**: Use **String shorthand** for "Jumping" to boundaries and **Object shorthand** for "Shifting" relative to your current time. +- **Fail-Safe**: Use `catch: true` in your global config to allow shorthand resolution to fail silently (returning a `void` instance) instead of throwing. diff --git a/packages/tempo/doc/tempo.types.md b/packages/tempo/doc/tempo.types.md index 46bc6ea6..2011d199 100644 --- a/packages/tempo/doc/tempo.types.md +++ b/packages/tempo/doc/tempo.types.md @@ -34,6 +34,8 @@ interface Options { catch?: boolean; // If true, invalid inputs return a Void instance store?: string; // Key for persistent storage (e.g., localStorage) sphere?: 'north' | 'south'; // Hemisphere for seasonal plugins + rtfFormat?: Intl.RelativeTimeFormat; // Pre-configured formatter + rtfStyle?: 'long' | 'short' | 'narrow'; // Default style (default: 'narrow') timeStamp?: 'ms' | 'ns'; // Precision for numeric timestamps [key: string]: any; // Allows custom configurations shared with plugins } diff --git a/packages/tempo/doc/vision.md b/packages/tempo/doc/vision.md index 853e36ee..96137925 100644 --- a/packages/tempo/doc/vision.md +++ b/packages/tempo/doc/vision.md @@ -15,19 +15,7 @@ Data in the real world is messy. Tempo's **Layout** and **Snippet** engine allow Tempo extends beyond simple date arithmetic through its **Terms** system. By providing declarative access to complex calculations—such as fiscal quarters, meteorological seasons, and zodiac signs, Tempo moves domain-specific logic out of the application code and into a reusable, extensible plugin architecture. ### 4. Lean but Robust -Tempo is designed to be a thin, highly capable layer. It prioritizes a lightweight API surface for the developer while maintaining robust internal logic to handle the complexities of timezones, calendars, and durations. - -## Target Audience -Tempo is designed for a broad spectrum of developers and teams who interact with date and time data in JavaScript: - -### 1. Modern JavaScript Developers -For those who want to leverage the power of the native `Temporal` API today but find its raw implementation too verbose or strict for rapid development. - -### 2. Teams Migrating from Legacy Libraries -Ideal for organizations looking to move away from **Moment.js**, **Day.js**, or **Luxon** without sacrificing the fluent, chainable API and flexible parsing on which they've come to rely. - -### 3. Enterprise Application Architects -For those building complex, time-sensitive systems (such as financial platforms, scheduling engines, or global logistics trackers) that demand the precision of Temporal combined with a premium, type-safe developer experience. +Tempo is designed to be a thin, highly capable layer. It prioritizes a lightweight API surface for the developer while maintaining robust internal logic to handle the complexities of timezones, calendars, and durations ## Conclusion Tempo is not intended to replace Temporal, but to humanize it. It is the tool for developers who want the future of JavaScript dates today, without the overhead of building their own high-level utility library from scratch. diff --git a/packages/tempo/img/hourglass-svgrepo-com.svg b/packages/tempo/img/logo.svg similarity index 100% rename from packages/tempo/img/hourglass-svgrepo-com.svg rename to packages/tempo/img/logo.svg diff --git a/packages/tempo/index.md b/packages/tempo/index.md new file mode 100644 index 00000000..34dbed4c --- /dev/null +++ b/packages/tempo/index.md @@ -0,0 +1,26 @@ +--- +layout: home + +hero: + name: "Tempo" + text: "The Professional Date-Time Library" + tagline: "Fluent, Immutable, and Zero-Cost wrapper for the Temporal API." + image: + src: /logo.svg + alt: Tempo Logo + actions: + - theme: brand + text: Get Started + link: /README + - theme: alt + text: View on GitHub + link: https://github.com/magmacomputing/magma/tree/main/packages/tempo + +features: + - title: "Zero-Cost Constructor" + details: "Lazy evaluation and smart matching ensure instantiation overhead is near-zero, even with massive plugin lists." + - title: "Relational Math" + details: "Shift by semantic terms (Quarters, Seasons, Periods) while preserving your relative cycle offset." + - title: "Hardened & Modular" + details: "Built for resilience in complex monorepos with proxy-protected registries and decoupled diagnostics." +--- diff --git a/packages/tempo/package.json b/packages/tempo/package.json index 5ee6d96c..3904596d 100644 --- a/packages/tempo/package.json +++ b/packages/tempo/package.json @@ -43,6 +43,10 @@ "development": "./src/plugin/module/module.format.ts", "default": "./dist/plugin/module/module.format.js" }, + "#tempo/mutate": { + "development": "./src/plugin/module/module.mutate.ts", + "default": "./dist/plugin/module/module.mutate.js" + }, "#tempo/ticker": { "development": "./src/plugin/extend/extend.ticker.ts", "default": "./dist/plugin/extend/extend.ticker.js" @@ -125,6 +129,10 @@ "types": "./dist/plugin/module/module.format.d.ts", "import": "./dist/plugin/module/module.format.js" }, + "./mutate": { + "types": "./dist/plugin/module/module.mutate.d.ts", + "import": "./dist/plugin/module/module.mutate.js" + }, "./library": { "types": "./dist/library.index.d.ts", "import": "./dist/library.index.js" @@ -140,30 +148,38 @@ }, "scripts": { "test": "vitest run --workspace ../../vitest.workspace.ts", - "repl": "tsx --conditions=development -i --import ./scripts/repl.ts", - "core": "tsx --conditions=development -i --import ./scripts/core.ts", + "repl": "tsx --conditions=development -i --import ./bin/setup.polyfill.ts --import ./bin/repl.ts", + "core": "tsx --conditions=development -i --import ./bin/setup.polyfill.ts --import ./bin/core.ts", "build": "tsc -b && npm run build:bundle && npm run build:resolve", "build:bundle": "rollup -c", - "build:resolve": "tsx scripts/resolve-types.ts", + "build:resolve": "tsx bin/resolve-types.ts", "clean": "tsc -b --clean && rm -rf dist", "publish": "npm publish --access public", - "prepublishOnly": "npm run build" + "prepublishOnly": "npm run build", + "docs:api": "typedoc", + "docs:dev": "npm run docs:api && vitepress dev", + "docs:build": "npm run docs:api && vitepress build", + "docs:preview": "vitepress preview" }, "files": [ "doc/", - "dist/" + "dist/", + ".vitepress/dist/" ], "dependencies": { "tslib": "^2.8.1" }, "devDependencies": { "@js-temporal/polyfill": "^0.5.1", - "@magmacomputing/library": "^2.1.2", + "@magmacomputing/library": "workspace:*", "@rollup/plugin-alias": "^6.0.0", - "magic-string": "^0.30.21" + "magic-string": "^0.30.21", + "typedoc": "^0.28.19", + "typedoc-plugin-markdown": "^4.11.0", + "vitepress": "^1.6.4" }, "directories": { "doc": "doc", "test": "test" } -} \ No newline at end of file +} diff --git a/packages/tempo/plan/doc_cleanup.md b/packages/tempo/plan/doc_cleanup.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/tempo/plan/release-process.md b/packages/tempo/plan/release-process.md new file mode 100644 index 00000000..0c0597e6 --- /dev/null +++ b/packages/tempo/plan/release-process.md @@ -0,0 +1,60 @@ +# 🚀 Tempo Release Process (v2.1.2+) + +This document outlines the automated release process for the Tempo monorepo using **release-it**. + +## 📋 Prerequisites Checklist + +Before running the release command, ensure the following are met: + +1. **NPM Authentication**: + You must be logged into NPM. Verify with: + ```bash + npm whoami + ``` + If not logged in, run `npm login`. + +2. **GitHub Authentication**: + `release-it` needs to create Tags and GitHub Releases. + - **GitHub Token**: Ensure you have a Personal Access Token (PAT) with `repo` scope. + - **Environment Variable**: Export your token as `GITHUB_TOKEN`: + ```bash + export GITHUB_TOKEN="your_token_here" + ``` + +3. **Clean Git Directory**: + Commit all your changes before running the release. `release-it` will refuse to run with a dirty working directory. + +4. **Main Branch**: + Always perform releases from the `main` branch. + +## 🛠️ How to Publish a New Version + +1. **Stage your Changes**: + Add any notable changes to the `## [Unreleased]` section of the root **`CHANGELOG.md`**. + +2. **Run the Release Command**: + From the monorepo root, run: + ```bash + npm run release + ``` + +3. **Follow the Interactive Prompts**: + `release-it` will ask you to: + - Select the next version (Patch, Minor, Major). + - Review the changelog. + - Confirm the git commit and tag. + - Confirm the NPM publish. + - Confirm the GitHub Release creation. + +## 🔗 Automated Workflow Details + +The `npm run release` command triggers the following automated steps: +- **`npm test`**: Runs the full test suite. +- **Version Bumping**: Bumps the version in the root `package.json` and synchronizes both `@magmacomputing/tempo` and `@magmacomputing/library` packages. +- **`after:bump` Hook**: Automatically builds both packages *after* the version bump to ensure the built artifacts contain the correct version. +- **Changelog Automation**: The `keep-a-changelog` plugin automatically converts the `[Unreleased]` section into a new version block with the current date. +- **Git Operations**: Commits the version bump and changelog update, tags the release (e.g., `v2.1.3`), and pushes to GitHub. +- **NPM & GitHub**: Publishes the packages to NPM and creates a formal release on GitHub. + +--- +*Maintained by Magma Computing. For internal support, contact the project lead.* diff --git a/packages/tempo/public/bundle-demo.html b/packages/tempo/public/bundle-demo.html new file mode 100644 index 00000000..a191a2cb --- /dev/null +++ b/packages/tempo/public/bundle-demo.html @@ -0,0 +1,75 @@ + + + + + + Tempo Bundle Demo + + + + +

Tempo Bundle Demo

+

Loaded via a plain <script> tag (no import-maps, no modules).

+
Running…
+ + + + + + + + \ No newline at end of file diff --git a/packages/tempo/public/logo.svg b/packages/tempo/public/logo.svg new file mode 100644 index 00000000..dc052b0f --- /dev/null +++ b/packages/tempo/public/logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/packages/tempo/rollup.config.js b/packages/tempo/rollup.config.js index f7ff27e2..74460d19 100644 --- a/packages/tempo/rollup.config.js +++ b/packages/tempo/rollup.config.js @@ -3,64 +3,80 @@ import resolve from '@rollup/plugin-node-resolve'; import MagicString from 'magic-string'; /** - * Custom logic to route modules based on origin. - * We want Tempo code in the root and internal library code in lib/ + * Rollup Configuration for Tempo + * + * 1. Global IIFE Bundle: Single file for