Use browser default time and number formatting with polyfills if needed (#9481)

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
This commit is contained in:
Bram Kragten 2021-09-30 01:34:52 +02:00 committed by GitHub
parent d7f00df391
commit 1bccbd4173
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
91 changed files with 952 additions and 974 deletions

View File

@ -12,7 +12,7 @@ on:
env:
NODE_VERSION: 14
NODE_OPTIONS: --max_old_space_size=4096
NODE_OPTIONS: --max_old_space_size=6144
jobs:
lint:
@ -53,8 +53,8 @@ jobs:
run: yarn install
env:
CI: true
- name: Run Mocha
run: yarn run mocha
- name: Run Tests
run: yarn run test
build:
runs-on: ubuntu-latest
needs: [lint, test]

View File

@ -7,7 +7,7 @@ on:
env:
NODE_VERSION: 14
NODE_OPTIONS: --max_old_space_size=4096
NODE_OPTIONS: --max_old_space_size=6144
jobs:
deploy:

View File

@ -8,7 +8,7 @@ on:
env:
PYTHON_VERSION: 3.8
NODE_VERSION: 14
NODE_OPTIONS: --max_old_space_size=4096
NODE_OPTIONS: --max_old_space_size=6144
jobs:
release:

View File

@ -1,4 +0,0 @@
module.exports = {
require: "test-mocha/testconf.js",
timeout: 10000,
};

View File

@ -82,6 +82,7 @@ module.exports.babelOptions = ({ latestBuild }) => ({
// Only support the syntax, Webpack will handle it.
"@babel/plugin-syntax-import-meta",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-top-level-await",
"@babel/plugin-proposal-optional-chaining",
"@babel/plugin-proposal-nullish-coalescing-operator",
["@babel/plugin-proposal-decorators", { decoratorsBeforeExport: true }],

View File

@ -6,6 +6,7 @@ const { WebpackManifestPlugin } = require("webpack-manifest-plugin");
const paths = require("./paths.js");
const bundle = require("./bundle.js");
const log = require("fancy-log");
const WebpackBar = require("webpackbar");
class LogStartCompilePlugin {
ignoredFirst = false;
@ -74,6 +75,7 @@ const createWebpackConfig = ({
chunkIds: isProdBuild && !isStatsBuild ? "deterministic" : "named",
},
plugins: [
new WebpackBar({ fancy: !isProdBuild }),
new WebpackManifestPlugin({
// Only include the JS of entrypoints
filter: (file) => file.isInitial && !file.name.endsWith(".map"),
@ -149,6 +151,9 @@ const createWebpackConfig = ({
// To silence warning in worker plugin
globalObject: "self",
},
experiments: {
topLevelAwait: true,
},
};
};

View File

@ -14,7 +14,7 @@ import { customElement, property, query, state } from "lit/decorators";
import { classMap } from "lit/directives/class-map";
import memoizeOne from "memoize-one";
import { atLeastVersion } from "../../../src/common/config/version";
import relativeTime from "../../../src/common/datetime/relative_time";
import { relativeTime } from "../../../src/common/datetime/relative_time";
import { HASSDomEvent } from "../../../src/common/dom/fire_event";
import {
DataTableColumnContainer,
@ -133,7 +133,7 @@ export class HassioBackups extends LitElement {
filterable: true,
sortable: true,
template: (entry: string) =>
relativeTime(new Date(entry), this.hass.localize),
relativeTime(new Date(entry), this.hass.locale),
},
secondary: {
title: "",

View File

@ -1,3 +1,3 @@
[build.environment]
YARN_VERSION = "1.22.11"
NODE_OPTIONS = "--max_old_space_size=4096"
NODE_OPTIONS = "--max_old_space_size=6144"

View File

@ -16,8 +16,7 @@
"lint:lit": "lit-analyzer \"**/src/**/*.ts\" --format markdown --outFile result.md",
"lint": "yarn run lint:eslint && yarn run lint:prettier && yarn run lint:types",
"format": "yarn run format:eslint && yarn run format:prettier",
"mocha": "ts-mocha -p test-mocha/tsconfig.test.json \"test-mocha/**/*.ts\"",
"test": "yarn run mocha"
"test": "instant-mocha --webpack-config ./test/webpack.config.js --require ./test/setup.js \"test/**/*.ts\""
},
"author": "Paulus Schoutsen <Paulus@PaulusSchoutsen.nl> (http://paulusschoutsen.nl)",
"license": "Apache-2.0",
@ -34,9 +33,13 @@
"@codemirror/stream-parser": "^0.19.1",
"@codemirror/text": "^0.19.2",
"@codemirror/view": "^0.19.4",
"@formatjs/intl-datetimeformat": "^4.2.4",
"@formatjs/intl-getcanonicallocales": "^1.7.3",
"@formatjs/intl-locale": "^2.4.37",
"@formatjs/intl-pluralrules": "^4.1.3",
"@formatjs/intl-locale": "^2.4.38",
"@formatjs/intl-numberformat": "^7.2.4",
"@formatjs/intl-pluralrules": "^4.1.4",
"@formatjs/intl-relativetimeformat": "^9.3.1",
"@formatjs/intl-utils": "^3.8.4",
"@fullcalendar/common": "5.9.0",
"@fullcalendar/core": "5.9.0",
"@fullcalendar/daygrid": "5.9.0",
@ -103,7 +106,6 @@
"date-fns": "^2.23.0",
"deep-clone-simple": "^1.1.1",
"deep-freeze": "^0.0.1",
"fecha": "^4.2.0",
"fuse.js": "^6.0.0",
"google-timezones-json": "^1.0.2",
"hls.js": "^1.0.10",
@ -152,6 +154,7 @@
"@babel/plugin-proposal-optional-chaining": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-import-meta": "^7.10.4",
"@babel/plugin-syntax-top-level-await": "^7.14.5",
"@babel/preset-env": "^7.14.7",
"@babel/preset-typescript": "^7.14.5",
"@koa/cors": "^3.1.0",
@ -197,6 +200,7 @@
"gulp-zopfli-green": "^3.0.1",
"html-minifier": "^4.0.0",
"husky": "^1.3.1",
"instant-mocha": "^1.3.1",
"lint-staged": "^11.0.1",
"lit-analyzer": "^1.2.1",
"lodash.template": "^4.5.0",
@ -216,16 +220,16 @@
"sinon": "^11.0.0",
"source-map-url": "^0.4.0",
"systemjs": "^6.3.2",
"terser-webpack-plugin": "^5.1.4",
"terser-webpack-plugin": "^5.2.4",
"ts-lit-plugin": "^1.2.1",
"ts-mocha": "^8.0.0",
"typescript": "^4.3.5",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0",
"webpack": "^5.43.0",
"webpack-cli": "^4.7.2",
"webpack-dev-server": "^3.11.2",
"webpack-manifest-plugin": "^3.1.1",
"webpack": "^5.55.1",
"webpack-cli": "^4.8.0",
"webpack-dev-server": "^4.3.0",
"webpack-manifest-plugin": "^4.0.2",
"webpackbar": "^5.0.0-3",
"workbox-build": "^6.1.5"
},
"_comment": "Polymer 3.2 contained a bug, fixed in https://github.com/Polymer/polymer/pull/5569, add as patch",

View File

@ -1,34 +0,0 @@
// Check for support of native locale string options
function checkToLocaleDateStringSupportsOptions() {
try {
new Date().toLocaleDateString("i");
} catch (e) {
return e.name === "RangeError";
}
return false;
}
function checkToLocaleTimeStringSupportsOptions() {
try {
new Date().toLocaleTimeString("i");
} catch (e) {
return e.name === "RangeError";
}
return false;
}
function checkToLocaleStringSupportsOptions() {
try {
new Date().toLocaleString("i");
} catch (e) {
return e.name === "RangeError";
}
return false;
}
export const toLocaleDateStringSupportsOptions =
checkToLocaleDateStringSupportsOptions();
export const toLocaleTimeStringSupportsOptions =
checkToLocaleTimeStringSupportsOptions();
export const toLocaleStringSupportsOptions =
checkToLocaleStringSupportsOptions();

View File

@ -1,13 +1,15 @@
import { format } from "fecha";
import memoizeOne from "memoize-one";
import { FrontendLocaleData } from "../../data/translation";
import { toLocaleDateStringSupportsOptions } from "./check_options_support";
import { polyfillsLoaded } from "../translations/localize";
if (__BUILD__ === "latest" && polyfillsLoaded) {
await polyfillsLoaded;
}
// Tuesday, August 10
export const formatDateWeekday = toLocaleDateStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatDateWeekdayMem(locale).format(dateObj)
: (dateObj: Date) => format(dateObj, "dddd, MMMM D");
export const formatDateWeekday = (dateObj: Date, locale: FrontendLocaleData) =>
formatDateWeekdayMem(locale).format(dateObj);
const formatDateWeekdayMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
@ -18,10 +20,9 @@ const formatDateWeekdayMem = memoizeOne(
);
// August 10, 2021
export const formatDate = toLocaleDateStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatDateMem(locale).format(dateObj)
: (dateObj: Date) => format(dateObj, "MMMM D, YYYY");
export const formatDate = (dateObj: Date, locale: FrontendLocaleData) =>
formatDateMem(locale).format(dateObj);
const formatDateMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
@ -32,10 +33,9 @@ const formatDateMem = memoizeOne(
);
// 10/08/2021
export const formatDateNumeric = toLocaleDateStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatDateNumericMem(locale).format(dateObj)
: (dateObj: Date) => format(dateObj, "M/D/YYYY");
export const formatDateNumeric = (dateObj: Date, locale: FrontendLocaleData) =>
formatDateNumericMem(locale).format(dateObj);
const formatDateNumericMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
@ -46,10 +46,9 @@ const formatDateNumericMem = memoizeOne(
);
// Aug 10
export const formatDateShort = toLocaleDateStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatDateShortMem(locale).format(dateObj)
: (dateObj: Date) => format(dateObj, "MMM D");
export const formatDateShort = (dateObj: Date, locale: FrontendLocaleData) =>
formatDateShortMem(locale).format(dateObj);
const formatDateShortMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
@ -59,10 +58,11 @@ const formatDateShortMem = memoizeOne(
);
// August 2021
export const formatDateMonthYear = toLocaleDateStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatDateMonthYearMem(locale).format(dateObj)
: (dateObj: Date) => format(dateObj, "MMMM YYYY");
export const formatDateMonthYear = (
dateObj: Date,
locale: FrontendLocaleData
) => formatDateMonthYearMem(locale).format(dateObj);
const formatDateMonthYearMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
@ -72,10 +72,9 @@ const formatDateMonthYearMem = memoizeOne(
);
// August
export const formatDateMonth = toLocaleDateStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatDateMonthMem(locale).format(dateObj)
: (dateObj: Date) => format(dateObj, "MMMM");
export const formatDateMonth = (dateObj: Date, locale: FrontendLocaleData) =>
formatDateMonthMem(locale).format(dateObj);
const formatDateMonthMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
@ -84,10 +83,9 @@ const formatDateMonthMem = memoizeOne(
);
// 2021
export const formatDateYear = toLocaleDateStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatDateYearMem(locale).format(dateObj)
: (dateObj: Date) => format(dateObj, "YYYY");
export const formatDateYear = (dateObj: Date, locale: FrontendLocaleData) =>
formatDateYearMem(locale).format(dateObj);
const formatDateYearMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {

View File

@ -1,15 +1,16 @@
import { format } from "fecha";
import memoizeOne from "memoize-one";
import { FrontendLocaleData } from "../../data/translation";
import { toLocaleStringSupportsOptions } from "./check_options_support";
import { useAmPm } from "./use_am_pm";
import { polyfillsLoaded } from "../translations/localize";
if (__BUILD__ === "latest" && polyfillsLoaded) {
await polyfillsLoaded;
}
// August 9, 2021, 8:23 AM
export const formatDateTime = toLocaleStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatDateTimeMem(locale).format(dateObj)
: (dateObj: Date, locale: FrontendLocaleData) =>
format(dateObj, "MMMM D, YYYY, HH:mm" + useAmPm(locale) ? " A" : "");
export const formatDateTime = (dateObj: Date, locale: FrontendLocaleData) =>
formatDateTimeMem(locale).format(dateObj);
const formatDateTimeMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
@ -23,11 +24,11 @@ const formatDateTimeMem = memoizeOne(
);
// August 9, 2021, 8:23:15 AM
export const formatDateTimeWithSeconds = toLocaleStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatDateTimeWithSecondsMem(locale).format(dateObj)
: (dateObj: Date, locale: FrontendLocaleData) =>
format(dateObj, "MMMM D, YYYY, HH:mm:ss" + useAmPm(locale) ? " A" : "");
export const formatDateTimeWithSeconds = (
dateObj: Date,
locale: FrontendLocaleData
) => formatDateTimeWithSecondsMem(locale).format(dateObj);
const formatDateTimeWithSecondsMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
@ -42,11 +43,11 @@ const formatDateTimeWithSecondsMem = memoizeOne(
);
// 9/8/2021, 8:23 AM
export const formatDateTimeNumeric = toLocaleStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatDateTimeNumericMem(locale).format(dateObj)
: (dateObj: Date, locale: FrontendLocaleData) =>
format(dateObj, "M/D/YYYY, HH:mm" + useAmPm(locale) ? " A" : "");
export const formatDateTimeNumeric = (
dateObj: Date,
locale: FrontendLocaleData
) => formatDateTimeNumericMem(locale).format(dateObj);
const formatDateTimeNumericMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {

View File

@ -1,30 +1,31 @@
import { format } from "fecha";
import memoizeOne from "memoize-one";
import { FrontendLocaleData } from "../../data/translation";
import { toLocaleTimeStringSupportsOptions } from "./check_options_support";
import { useAmPm } from "./use_am_pm";
import { polyfillsLoaded } from "../translations/localize";
if (__BUILD__ === "latest" && polyfillsLoaded) {
await polyfillsLoaded;
}
// 9:15 PM || 21:15
export const formatTime = toLocaleTimeStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatTimeMem(locale).format(dateObj)
: (dateObj: Date, locale: FrontendLocaleData) =>
format(dateObj, "shortTime" + useAmPm(locale) ? " A" : "");
export const formatTime = (dateObj: Date, locale: FrontendLocaleData) =>
formatTimeMem(locale).format(dateObj);
const formatTimeMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
hour: useAmPm(locale) ? "numeric" : "2-digit",
hour: "numeric",
minute: "2-digit",
hour12: useAmPm(locale),
})
);
// 9:15:24 PM || 21:15:24
export const formatTimeWithSeconds = toLocaleTimeStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatTimeWithSecondsMem(locale).format(dateObj)
: (dateObj: Date, locale: FrontendLocaleData) =>
format(dateObj, "mediumTime" + useAmPm(locale) ? " A" : "");
export const formatTimeWithSeconds = (
dateObj: Date,
locale: FrontendLocaleData
) => formatTimeWithSecondsMem(locale).format(dateObj);
const formatTimeWithSecondsMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
@ -36,17 +37,15 @@ const formatTimeWithSecondsMem = memoizeOne(
);
// Tuesday 7:00 PM || Tuesday 19:00
export const formatTimeWeekday = toLocaleTimeStringSupportsOptions
? (dateObj: Date, locale: FrontendLocaleData) =>
formatTimeWeekdayMem(locale).format(dateObj)
: (dateObj: Date, locale: FrontendLocaleData) =>
format(dateObj, "dddd, HH:mm" + useAmPm(locale) ? " A" : "");
export const formatTimeWeekday = (dateObj: Date, locale: FrontendLocaleData) =>
formatTimeWeekdayMem(locale).format(dateObj);
const formatTimeWeekdayMem = memoizeOne(
(locale: FrontendLocaleData) =>
new Intl.DateTimeFormat(locale.language, {
weekday: "long",
hour: useAmPm(locale) ? "numeric" : "2-digit",
minute: "2-digit",
second: "2-digit",
hour12: useAmPm(locale),
})
);

View File

@ -1,48 +1,32 @@
import { LocalizeFunc } from "../translations/localize";
import { selectUnit } from "@formatjs/intl-utils";
import memoizeOne from "memoize-one";
import { FrontendLocaleData } from "../../data/translation";
import { polyfillsLoaded } from "../translations/localize";
/**
* Calculate a string representing a date object as relative time from now.
*
* Example output: 5 minutes ago, in 3 days.
*/
const tests = [60, 60, 24, 7];
const langKey = ["second", "minute", "hour", "day"];
export default function relativeTime(
dateObj: Date,
localize: LocalizeFunc,
options: {
compareTime?: Date;
includeTense?: boolean;
} = {}
): string {
const compareTime = options.compareTime || new Date();
let delta = (compareTime.getTime() - dateObj.getTime()) / 1000;
const tense = delta >= 0 ? "past" : "future";
delta = Math.abs(delta);
let roundedDelta = Math.round(delta);
if (roundedDelta === 0) {
return localize("ui.components.relative_time.just_now");
}
let unit = "week";
for (let i = 0; i < tests.length; i++) {
if (roundedDelta < tests[i]) {
unit = langKey[i];
break;
}
delta /= tests[i];
roundedDelta = Math.round(delta);
}
return localize(
options.includeTense === false
? `ui.components.relative_time.duration.${unit}`
: `ui.components.relative_time.${tense}_duration.${unit}`,
"count",
roundedDelta
);
if (__BUILD__ === "latest" && polyfillsLoaded) {
await polyfillsLoaded;
}
const formatRelTimeMem = memoizeOne(
(locale: FrontendLocaleData) =>
// @ts-expect-error
new Intl.RelativeTimeFormat(locale.language, { numeric: "auto" })
);
export const relativeTime = (
from: Date,
locale: FrontendLocaleData,
to?: Date,
includeTense = true
): string => {
const diff = selectUnit(from, to);
if (includeTense) {
return formatRelTimeMem(locale).format(diff.value, diff.unit);
}
return Intl.NumberFormat(locale.language, {
style: "unit",
// @ts-expect-error
unit: diff.unit,
unitDisplay: "long",
}).format(Math.abs(diff.value));
};

View File

@ -4,7 +4,7 @@ import { FrontendLocaleData } from "../../data/translation";
import { formatDate } from "../datetime/format_date";
import { formatDateTime } from "../datetime/format_date_time";
import { formatTime } from "../datetime/format_time";
import { formatNumber } from "../string/format_number";
import { formatNumber } from "../number/format_number";
import { LocalizeFunc } from "../translations/localize";
import { computeStateDomain } from "./compute_state_domain";

View File

@ -1,5 +1,5 @@
import { FrontendLocaleData, NumberFormat } from "../../data/translation";
import { round } from "../number/round";
import { round } from "./round";
export const numberFormatToLocale = (
localeOptions: FrontendLocaleData

View File

@ -1,4 +1,7 @@
import { shouldPolyfill } from "@formatjs/intl-pluralrules/lib/should-polyfill";
import { shouldPolyfill as shouldPolyfillLocale } from "@formatjs/intl-locale/lib/should-polyfill";
import { shouldPolyfill as shouldPolyfillPluralRules } from "@formatjs/intl-pluralrules/lib/should-polyfill";
import { shouldPolyfill as shouldPolyfillRelativeTime } from "@formatjs/intl-relativetimeformat/lib/should-polyfill";
import { shouldPolyfill as shouldPolyfillDateTime } from "@formatjs/intl-datetimeformat/lib/should-polyfill";
import IntlMessageFormat from "intl-messageformat";
import { Resources } from "../../types";
@ -14,14 +17,34 @@ export interface FormatsType {
let loadedPolyfillLocale: Set<string> | undefined;
let polyfillLoaded = !shouldPolyfill();
const polyfillProm = polyfillLoaded
const polyfillPluralRules = shouldPolyfillPluralRules();
const polyfillRelativeTime = shouldPolyfillRelativeTime();
const polyfillDateTime = shouldPolyfillDateTime();
const polyfills: Promise<any>[] = [];
if (__BUILD__ === "latest") {
if (shouldPolyfillLocale()) {
polyfills.push(import("@formatjs/intl-locale/polyfill"));
}
if (polyfillPluralRules) {
polyfills.push(import("@formatjs/intl-pluralrules/polyfill"));
}
if (polyfillRelativeTime) {
polyfills.push(import("@formatjs/intl-relativetimeformat/polyfill"));
}
if (polyfillDateTime) {
polyfills.push(import("@formatjs/intl-datetimeformat/polyfill"));
}
}
let polyfillLoaded = polyfills.length === 0;
export const polyfillsLoaded = polyfillLoaded
? undefined
: import("@formatjs/intl-locale/polyfill")
.then(() => import("@formatjs/intl-pluralrules/polyfill"))
.then(() => {
: Promise.all(polyfills).then(() => {
loadedPolyfillLocale = new Set();
polyfillLoaded = true;
// Load English so it becomes the default
return loadPolyfillLocales("en");
});
/**
@ -52,17 +75,10 @@ export const computeLocalize = async (
formats?: FormatsType
): Promise<LocalizeFunc> => {
if (!polyfillLoaded) {
await polyfillProm;
await polyfillsLoaded;
}
if (loadedPolyfillLocale && !loadedPolyfillLocale.has(language)) {
try {
loadedPolyfillLocale.add(language);
await import("@formatjs/intl-pluralrules/locale-data/en");
} catch (_e) {
// Ignore
}
}
loadPolyfillLocales(language);
// Everytime any of the parameters change, invalidate the strings cache.
cache._localizationCache = {};
@ -114,3 +130,23 @@ export const computeLocalize = async (
}
};
};
export const loadPolyfillLocales = async (language: string) => {
if (!loadedPolyfillLocale || loadedPolyfillLocale.has(language)) {
return;
}
loadedPolyfillLocale.add(language);
try {
if (polyfillPluralRules) {
await import(`@formatjs/intl-pluralrules/locale-data/${language}`);
}
if (polyfillRelativeTime) {
await import(`@formatjs/intl-relativetimeformat/locale-data/${language}`);
}
if (polyfillDateTime) {
await import(`@formatjs/intl-datetimeformat/locale-data/${language}`);
}
} catch (_e) {
// Ignore
}
};

View File

@ -5,7 +5,7 @@ import { getColorByIndex } from "../../common/color/colors";
import {
formatNumber,
numberFormatToLocale,
} from "../../common/string/format_number";
} from "../../common/number/format_number";
import { LineChartEntity, LineChartState } from "../../data/history";
import { HomeAssistant } from "../../types";
import "./ha-chart-base";

View File

@ -5,7 +5,7 @@ import { customElement, property, state } from "lit/decorators";
import { getColorByIndex } from "../../common/color/colors";
import { formatDateTimeWithSeconds } from "../../common/datetime/format_date_time";
import { computeDomain } from "../../common/entity/compute_domain";
import { numberFormatToLocale } from "../../common/string/format_number";
import { numberFormatToLocale } from "../../common/number/format_number";
import { computeRTL } from "../../common/util/compute_rtl";
import { TimelineEntity } from "../../data/history";
import { HomeAssistant } from "../../types";

View File

@ -19,7 +19,7 @@ import { computeStateName } from "../../common/entity/compute_state_name";
import {
formatNumber,
numberFormatToLocale,
} from "../../common/string/format_number";
} from "../../common/number/format_number";
import {
getStatisticIds,
Statistics,

View File

@ -15,7 +15,7 @@ import { computeStateDomain } from "../../common/entity/compute_state_domain";
import { computeStateName } from "../../common/entity/compute_state_name";
import { stateIcon } from "../../common/entity/state_icon";
import { timerTimeRemaining } from "../../data/timer";
import { formatNumber } from "../../common/string/format_number";
import { formatNumber } from "../../common/number/format_number";
import { UNAVAILABLE, UNKNOWN } from "../../data/entity";
import { HomeAssistant } from "../../types";
import "../ha-label-badge";

View File

@ -1,7 +1,7 @@
import { HassEntity } from "home-assistant-js-websocket";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators";
import { formatNumber } from "../common/string/format_number";
import { formatNumber } from "../common/number/format_number";
import { CLIMATE_PRESET_NONE } from "../data/climate";
import type { HomeAssistant } from "../types";

View File

@ -2,7 +2,7 @@ import { css, LitElement, PropertyValues, svg, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators";
import { ifDefined } from "lit/directives/if-defined";
import { styleMap } from "lit/directives/style-map";
import { formatNumber } from "../common/string/format_number";
import { formatNumber } from "../common/number/format_number";
import { afterNextRender } from "../common/util/render-status";
import { FrontendLocaleData } from "../data/translation";
import { getValueInPercentage, normalize } from "../util/calculate";

View File

@ -1,6 +1,6 @@
import { PropertyValues, ReactiveElement } from "lit";
import { customElement, property } from "lit/decorators";
import relativeTime from "../common/datetime/relative_time";
import { relativeTime } from "../common/datetime/relative_time";
import type { HomeAssistant } from "../types";
@customElement("ha-relative-time")
@ -55,10 +55,7 @@ class HaRelativeTime extends ReactiveElement {
if (!this.datetime) {
this.innerHTML = this.hass.localize("ui.components.relative_time.never");
} else {
this.innerHTML = relativeTime(
new Date(this.datetime),
this.hass.localize
);
this.innerHTML = relativeTime(new Date(this.datetime), this.hass.locale);
}
}
}

View File

@ -2,7 +2,7 @@ import { html } from "@polymer/polymer/lib/utils/html-tag";
/* eslint-plugin-disable lit */
import { PolymerElement } from "@polymer/polymer/polymer-element";
import { computeStateDisplay } from "../common/entity/compute_state_display";
import { formatNumber } from "../common/string/format_number";
import { formatNumber } from "../common/number/format_number";
import LocalizeMixin from "../mixins/localize-mixin";
/*

View File

@ -17,7 +17,7 @@ import {
import { customElement, property } from "lit/decorators";
import { ifDefined } from "lit/directives/if-defined";
import { formatDateTimeWithSeconds } from "../../common/datetime/format_date_time";
import relativeTime from "../../common/datetime/relative_time";
import { relativeTime } from "../../common/datetime/relative_time";
import { fireEvent } from "../../common/dom/fire_event";
import { toggleAttribute } from "../../common/dom/toggle_attribute";
import { LogbookEntry } from "../../data/logbook";
@ -66,11 +66,7 @@ class RenderedTimeTracker {
renderTime(from: Date, to: Date): void {
this.entries.push(html`
<ha-timeline label>
${relativeTime(from, this.hass.localize, {
compareTime: to,
includeTense: false,
})}
later
${relativeTime(from, this.hass.locale, to, false)} later
</ha-timeline>
`);
this.lastReportedTime = to;

View File

@ -11,7 +11,7 @@ import {
} from "home-assistant-js-websocket";
import { css, html, svg, SVGTemplateResult, TemplateResult } from "lit";
import { styleMap } from "lit/directives/style-map";
import { formatNumber } from "../common/string/format_number";
import { formatNumber } from "../common/number/format_number";
import "../components/ha-icon";
import "../components/ha-svg-icon";
import type { HomeAssistant } from "../types";

View File

@ -2,7 +2,7 @@ import { HassEntity } from "home-assistant-js-websocket";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators";
import { formatTime } from "../../../common/datetime/format_time";
import { formatNumber } from "../../../common/string/format_number";
import { formatNumber } from "../../../common/number/format_number";
import "../../../components/ha-relative-time";
import { HomeAssistant } from "../../../types";

View File

@ -31,7 +31,7 @@ import {
import { customElement, property } from "lit/decorators";
import { formatDateWeekday } from "../../../common/datetime/format_date";
import { formatTimeWeekday } from "../../../common/datetime/format_time";
import { formatNumber } from "../../../common/string/format_number";
import { formatNumber } from "../../../common/number/format_number";
import "../../../components/ha-svg-icon";
import { getWeatherUnit, getWind } from "../../../data/weather";
import { HomeAssistant } from "../../../types";

View File

@ -17,7 +17,7 @@ import { computeStateName } from "../../../../common/entity/compute_state_name";
import {
formatNumber,
numberFormatToLocale,
} from "../../../../common/string/format_number";
} from "../../../../common/number/format_number";
import "../../../../components/chart/ha-chart-base";
import type HaChartBase from "../../../../components/chart/ha-chart-base";
import "../../../../components/ha-card";

View File

@ -15,7 +15,7 @@ import { css, html, LitElement, svg } from "lit";
import { customElement, property, state } from "lit/decorators";
import { classMap } from "lit/directives/class-map";
import "@material/mwc-button";
import { formatNumber } from "../../../../common/string/format_number";
import { formatNumber } from "../../../../common/number/format_number";
import "../../../../components/ha-card";
import "../../../../components/ha-svg-icon";
import {

View File

@ -32,7 +32,7 @@ import "../../../../components/chart/ha-chart-base";
import {
formatNumber,
numberFormatToLocale,
} from "../../../../common/string/format_number";
} from "../../../../common/number/format_number";
import { SubscribeMixin } from "../../../../mixins/subscribe-mixin";
import { FrontendLocaleData } from "../../../../data/translation";
import {

View File

@ -3,7 +3,7 @@ import "@polymer/paper-tooltip";
import { UnsubscribeFunc } from "home-assistant-js-websocket";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators";
import { formatNumber } from "../../../../common/string/format_number";
import { formatNumber } from "../../../../common/number/format_number";
import "../../../../components/ha-card";
import "../../../../components/ha-svg-icon";
import "../../../../components/ha-gauge";

View File

@ -33,7 +33,7 @@ import "../../../../components/chart/ha-chart-base";
import {
formatNumber,
numberFormatToLocale,
} from "../../../../common/string/format_number";
} from "../../../../common/number/format_number";
import { SubscribeMixin } from "../../../../mixins/subscribe-mixin";
import { FrontendLocaleData } from "../../../../data/translation";
import {

View File

@ -19,7 +19,7 @@ import {
} from "../../../../common/color/convert-color";
import { labDarken } from "../../../../common/color/lab";
import { computeStateName } from "../../../../common/entity/compute_state_name";
import { formatNumber } from "../../../../common/string/format_number";
import { formatNumber } from "../../../../common/number/format_number";
import "../../../../components/chart/statistics-chart";
import "../../../../components/ha-card";
import {

View File

@ -17,7 +17,7 @@ import { computeStateName } from "../../../../common/entity/compute_state_name";
import {
formatNumber,
numberFormatToLocale,
} from "../../../../common/string/format_number";
} from "../../../../common/number/format_number";
import "../../../../components/chart/ha-chart-base";
import "../../../../components/ha-card";
import { EnergyData, getEnergyDataCollection } from "../../../../data/energy";

View File

@ -16,7 +16,7 @@ import { computeStateDomain } from "../../../common/entity/compute_state_domain"
import { computeStateName } from "../../../common/entity/compute_state_name";
import { stateIcon } from "../../../common/entity/state_icon";
import { isValidEntityId } from "../../../common/entity/valid_entity_id";
import { formatNumber } from "../../../common/string/format_number";
import { formatNumber } from "../../../common/number/format_number";
import { iconColorCSS } from "../../../common/style/icon_color_css";
import "../../../components/ha-card";
import "../../../components/ha-icon";

View File

@ -9,7 +9,7 @@ import {
import { customElement, property, state } from "lit/decorators";
import { classMap } from "lit/directives/class-map";
import { ifDefined } from "lit/directives/if-defined";
import relativeTime from "../../../common/datetime/relative_time";
import { relativeTime } from "../../../common/datetime/relative_time";
import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element";
import { computeDomain } from "../../../common/entity/compute_domain";
import { computeStateDisplay } from "../../../common/entity/compute_state_display";
@ -330,7 +330,7 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard {
: entityConf.show_last_changed
? relativeTime(
new Date(stateObj.last_changed),
this.hass!.localize
this.hass!.locale
)
: computeStateDisplay(
this.hass!.localize,

View File

@ -16,7 +16,7 @@ import { UNIT_F } from "../../../common/const";
import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element";
import { fireEvent } from "../../../common/dom/fire_event";
import { computeStateName } from "../../../common/entity/compute_state_name";
import { formatNumber } from "../../../common/string/format_number";
import { formatNumber } from "../../../common/number/format_number";
import "../../../components/ha-card";
import type { HaCard } from "../../../components/ha-card";
import "../../../components/ha-icon-button";

View File

@ -14,7 +14,7 @@ import { computeStateDisplay } from "../../../common/entity/compute_state_displa
import { computeStateName } from "../../../common/entity/compute_state_name";
import { stateIcon } from "../../../common/entity/state_icon";
import { isValidEntityId } from "../../../common/entity/valid_entity_id";
import { formatNumber } from "../../../common/string/format_number";
import { formatNumber } from "../../../common/number/format_number";
import { debounce } from "../../../common/util/debounce";
import "../../../components/ha-card";
import "../../../components/ha-icon";

View File

@ -3,7 +3,7 @@ import { customElement, property, state } from "lit/decorators";
import { formatDate } from "../../../common/datetime/format_date";
import { formatDateTime } from "../../../common/datetime/format_date_time";
import { formatTime } from "../../../common/datetime/format_time";
import relativeTime from "../../../common/datetime/relative_time";
import { relativeTime } from "../../../common/datetime/relative_time";
import { FrontendLocaleData } from "../../../data/translation";
import { HomeAssistant } from "../../../types";
import { TimestampRenderingFormat } from "./types";
@ -103,11 +103,13 @@ class HuiTimestampDisplay extends LitElement {
if (this.ts && this.hass!.localize) {
this._relative =
this._format === "relative"
? relativeTime(this.ts, this.hass!.localize)
: (this._relative = relativeTime(new Date(), this.hass!.localize, {
compareTime: this.ts,
includeTense: false,
}));
? relativeTime(this.ts, this.hass!.locale)
: (this._relative = relativeTime(
new Date(),
this.hass!.locale,
this.ts,
false
));
}
}
}

View File

@ -14,7 +14,7 @@ import { computeDomain } from "../../../common/entity/compute_domain";
import { computeStateDisplay } from "../../../common/entity/compute_state_display";
import { computeStateName } from "../../../common/entity/compute_state_name";
import { stateIcon } from "../../../common/entity/state_icon";
import { formatNumber } from "../../../common/string/format_number";
import { formatNumber } from "../../../common/number/format_number";
import "../../../components/entity/state-badge";
import { UNAVAILABLE_STATES } from "../../../data/entity";
import { ActionHandlerEvent } from "../../../data/lovelace";

View File

@ -8,7 +8,7 @@ import {
} from "lit";
import { customElement, property, state } from "lit/decorators";
import checkValidDate from "../../../common/datetime/check_valid_date";
import { formatNumber } from "../../../common/string/format_number";
import { formatNumber } from "../../../common/number/format_number";
import { HomeAssistant } from "../../../types";
import { formatAttributeValue } from "../../../util/hass-attributes-util";
import { hasConfigOrEntityChanged } from "../common/has-changed";

View File

@ -4,7 +4,7 @@ import { mdiDelete } from "@mdi/js";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators";
import memoizeOne from "memoize-one";
import relativeTime from "../../common/datetime/relative_time";
import { relativeTime } from "../../common/datetime/relative_time";
import { fireEvent } from "../../common/dom/fire_event";
import "../../components/ha-card";
import "../../components/ha-settings-row";
@ -69,10 +69,7 @@ class HaLongLivedTokens extends LitElement {
${this.hass.localize(
"ui.panel.profile.long_lived_access_tokens.created",
"date",
relativeTime(
new Date(token.created_at),
this.hass.localize
)
relativeTime(new Date(token.created_at), this.hass.locale)
)}
</div>
<mwc-icon-button

View File

@ -3,7 +3,7 @@ import "@polymer/paper-listbox/paper-listbox";
import { html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators";
import { fireEvent } from "../../common/dom/fire_event";
import { formatNumber } from "../../common/string/format_number";
import { formatNumber } from "../../common/number/format_number";
import "../../components/ha-card";
import "../../components/ha-paper-dropdown-menu";
import "../../components/ha-settings-row";

View File

@ -4,7 +4,7 @@ import "@polymer/paper-tooltip/paper-tooltip";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators";
import memoizeOne from "memoize-one";
import relativeTime from "../../common/datetime/relative_time";
import { relativeTime } from "../../common/datetime/relative_time";
import { fireEvent } from "../../common/dom/fire_event";
import "../../components/ha-card";
import "../../components/ha-settings-row";
@ -64,7 +64,7 @@ class HaRefreshTokens extends LitElement {
{
date: relativeTime(
new Date(token.created_at),
this.hass.localize
this.hass.locale
),
}
)}
@ -76,7 +76,7 @@ class HaRefreshTokens extends LitElement {
{
date: relativeTime(
new Date(token.last_used_at),
this.hass.localize
this.hass.locale
),
location: token.last_used_ip,
}

View File

@ -1,8 +1,19 @@
import "core-js";
import "regenerator-runtime/runtime";
import "lit/polyfill-support";
// For localize
// For localize & formatting
import "@formatjs/intl-getcanonicallocales/polyfill";
import "@formatjs/intl-locale/polyfill";
import "@formatjs/intl-pluralrules/polyfill";
import "@formatjs/intl-pluralrules/locale-data/en";
import "@formatjs/intl-numberformat/polyfill";
import "@formatjs/intl-numberformat/locale-data/en";
import "@formatjs/intl-relativetimeformat/polyfill";
import "@formatjs/intl-relativetimeformat/locale-data/en";
import "@formatjs/intl-datetimeformat/polyfill";
import "@formatjs/intl-datetimeformat/locale-data/en";
// To use comlink under ES5
import "proxy-polyfill";
import "unfetch/polyfill";

View File

@ -436,29 +436,7 @@
}
},
"relative_time": {
"never": "Never",
"just_now": "Just now",
"duration": {
"second": "{count} {count, plural,\n one {second}\n other {seconds}\n}",
"minute": "{count} {count, plural,\n one {minute}\n other {minutes}\n}",
"hour": "{count} {count, plural,\n one {hour}\n other {hours}\n}",
"day": "{count} {count, plural,\n one {day}\n other {days}\n}",
"week": "{count} {count, plural,\n one {week}\n other {weeks}\n}"
},
"past_duration": {
"second": "{count} {count, plural,\n one {second}\n other {seconds}\n} ago",
"minute": "{count} {count, plural,\n one {minute}\n other {minutes}\n} ago",
"hour": "{count} {count, plural,\n one {hour}\n other {hours}\n} ago",
"day": "{count} {count, plural,\n one {day}\n other {days}\n} ago",
"week": "{count} {count, plural,\n one {week}\n other {weeks}\n} ago"
},
"future_duration": {
"second": "In {count} {count, plural,\n one {second}\n other {seconds}\n}",
"minute": "In {count} {count, plural,\n one {minute}\n other {minutes}\n}",
"hour": "In {count} {count, plural,\n one {hour}\n other {hours}\n}",
"day": "In {count} {count, plural,\n one {day}\n other {days}\n}",
"week": "In {count} {count, plural,\n one {week}\n other {weeks}\n}"
}
"never": "Never"
},
"history_charts": {
"history_disabled": "History integration disabled",

View File

@ -1,217 +0,0 @@
import { assert } from "chai";
import relativeTime from "../../../src/common/datetime/relative_time";
describe("relativeTime", () => {
// Mock localize function for testing
const localize = (message, ...args) =>
message + (args.length ? ": " + args.join(",") : "");
it("now", () => {
const now = new Date();
assert.strictEqual(
relativeTime(now, localize, { compareTime: now }),
"ui.components.relative_time.just_now"
);
});
it("past_second", () => {
const inputdt = new Date("2021-02-03T11:22:00+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, { compareTime: compare }),
"ui.components.relative_time.past_duration.second: count,33"
);
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.second: count,33"
);
});
it("past_minute", () => {
const inputdt = new Date("2021-02-03T11:20:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, { compareTime: compare }),
"ui.components.relative_time.past_duration.minute: count,2"
);
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.minute: count,2"
);
});
it("past_hour", () => {
const inputdt = new Date("2021-02-03T09:22:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, { compareTime: compare }),
"ui.components.relative_time.past_duration.hour: count,2"
);
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.hour: count,2"
);
});
it("past_day", () => {
let inputdt = new Date("2021-02-01T11:22:33+00:00");
let compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, { compareTime: compare }),
"ui.components.relative_time.past_duration.day: count,2"
);
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.day: count,2"
);
// Test switch from days to weeks
inputdt = new Date("2021-01-28T11:22:33+00:00");
compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.day: count,6"
);
inputdt = new Date("2021-01-27T11:22:33+00:00");
compare = new Date("2021-02-03T11:22:33+00:00");
assert.notStrictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.day: count,7"
);
});
it("past_week", () => {
const inputdt = new Date("2021-01-03T11:22:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, { compareTime: compare }),
"ui.components.relative_time.past_duration.week: count,4"
);
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.week: count,4"
);
});
it("future_second", () => {
const inputdt = new Date("2021-02-03T11:22:55+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, { compareTime: compare }),
"ui.components.relative_time.future_duration.second: count,22"
);
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.second: count,22"
);
});
it("future_minute", () => {
const inputdt = new Date("2021-02-03T11:24:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, { compareTime: compare }),
"ui.components.relative_time.future_duration.minute: count,2"
);
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.minute: count,2"
);
});
it("future_hour", () => {
const inputdt = new Date("2021-02-03T13:22:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, { compareTime: compare }),
"ui.components.relative_time.future_duration.hour: count,2"
);
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.hour: count,2"
);
});
it("future_day", () => {
let inputdt = new Date("2021-02-05T11:22:33+00:00");
let compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, { compareTime: compare }),
"ui.components.relative_time.future_duration.day: count,2"
);
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.day: count,2"
);
// Test switch from days to weeks
inputdt = new Date("2021-02-09T11:22:33+00:00");
compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.day: count,6"
);
inputdt = new Date("2021-02-10T11:22:33+00:00");
compare = new Date("2021-02-03T11:22:33+00:00");
assert.notStrictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.day: count,7"
);
});
it("future_week", () => {
const inputdt = new Date("2021-03-03T11:22:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, localize, { compareTime: compare }),
"ui.components.relative_time.future_duration.week: count,4"
);
assert.strictEqual(
relativeTime(inputdt, localize, {
compareTime: compare,
includeTense: false,
}),
"ui.components.relative_time.duration.week: count,4"
);
});
});

View File

@ -16,7 +16,7 @@ describe("formatDateTime", () => {
number_format: NumberFormat.language,
time_format: TimeFormat.am_pm,
}),
"November 18, 2017, 11:12 PM"
"November 18, 2017 at 11:12 PM"
);
assert.strictEqual(
formatDateTime(dateObj, {
@ -24,7 +24,7 @@ describe("formatDateTime", () => {
number_format: NumberFormat.language,
time_format: TimeFormat.twenty_four,
}),
"November 18, 2017, 23:12"
"November 18, 2017 at 23:12"
);
});
});
@ -39,7 +39,7 @@ describe("formatDateTimeWithSeconds", () => {
number_format: NumberFormat.language,
time_format: TimeFormat.am_pm,
}),
"November 18, 2017, 11:12:13 PM"
"November 18, 2017 at 11:12:13 PM"
);
assert.strictEqual(
formatDateTimeWithSeconds(dateObj, {
@ -47,7 +47,7 @@ describe("formatDateTimeWithSeconds", () => {
number_format: NumberFormat.language,
time_format: TimeFormat.twenty_four,
}),
"November 18, 2017, 23:12:13"
"November 18, 2017 at 23:12:13"
);
});
});

View File

@ -0,0 +1,115 @@
import { assert } from "chai";
import { relativeTime } from "../../../src/common/datetime/relative_time";
import { NumberFormat, TimeFormat } from "../../../src/data/translation";
describe("relativeTime", () => {
const locale = {
language: "en",
number_format: NumberFormat.language,
time_format: TimeFormat.language,
};
it("now", () => {
const now = new Date();
assert.strictEqual(relativeTime(now, locale, now), "now");
assert.strictEqual(relativeTime(now, locale, now, false), "0 seconds");
});
it("past_second", () => {
const inputdt = new Date("2021-02-03T11:22:00+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(
relativeTime(inputdt, locale, compare),
"33 seconds ago"
);
assert.strictEqual(
relativeTime(inputdt, locale, compare, false),
"33 seconds"
);
});
it("past_minute", () => {
const inputdt = new Date("2021-02-03T11:20:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(relativeTime(inputdt, locale, compare), "2 minutes ago");
assert.strictEqual(
relativeTime(inputdt, locale, compare, false),
"2 minutes"
);
});
it("past_hour", () => {
const inputdt = new Date("2021-02-03T09:22:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(relativeTime(inputdt, locale, compare), "2 hours ago");
assert.strictEqual(
relativeTime(inputdt, locale, compare, false),
"2 hours"
);
});
it("past_day", () => {
const inputdt = new Date("2021-02-01T11:22:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(relativeTime(inputdt, locale, compare), "2 days ago");
assert.strictEqual(relativeTime(inputdt, locale, compare, false), "2 days");
});
it("future_second", () => {
const inputdt = new Date("2021-02-03T11:22:55+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(relativeTime(inputdt, locale, compare), "in 22 seconds");
assert.strictEqual(
relativeTime(inputdt, locale, compare, false),
"22 seconds"
);
});
it("future_minute", () => {
const inputdt = new Date("2021-02-03T11:24:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(relativeTime(inputdt, locale, compare), "in 2 minutes");
assert.strictEqual(
relativeTime(inputdt, locale, compare, false),
"2 minutes"
);
});
it("future_hour", () => {
const inputdt = new Date("2021-02-03T13:22:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(relativeTime(inputdt, locale, compare), "in 2 hours");
assert.strictEqual(
relativeTime(inputdt, locale, compare, false),
"2 hours"
);
});
it("future_day", () => {
const inputdt = new Date("2021-02-05T11:22:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(relativeTime(inputdt, locale, compare), "in 2 days");
assert.strictEqual(relativeTime(inputdt, locale, compare, false), "2 days");
});
it("future_week", () => {
const inputdt = new Date("2021-03-24T11:22:33+00:00");
const compare = new Date("2021-03-03T11:22:33+00:00");
assert.strictEqual(relativeTime(inputdt, locale, compare), "in 3 weeks");
assert.strictEqual(
relativeTime(inputdt, locale, compare, false),
"3 weeks"
);
});
it("future_month", () => {
const inputdt = new Date("2021-03-03T11:22:33+00:00");
const compare = new Date("2021-02-03T11:22:33+00:00");
assert.strictEqual(relativeTime(inputdt, locale, compare), "next month");
assert.strictEqual(
relativeTime(inputdt, locale, compare, false),
"1 month"
);
});
});

View File

@ -172,14 +172,14 @@ describe("computeStateDisplay", () => {
it("Uses am/pm time format", () => {
assert.strictEqual(
computeStateDisplay(localize, stateObj, localeData),
"November 18, 2017, 11:12 PM"
"November 18, 2017 at 11:12 PM"
);
});
it("Uses 24h time format", () => {
localeData.time_format = TimeFormat.twenty_four;
assert.strictEqual(
computeStateDisplay(localize, stateObj, localeData),
"November 18, 2017, 23:12"
"November 18, 2017 at 23:12"
);
});
});
@ -259,7 +259,7 @@ describe("computeStateDisplay", () => {
localeData,
"2021-07-04 15:40:03"
),
"July 4, 2021, 3:40 PM"
"July 4, 2021 at 3:40 PM"
);
});
it("Uses 24h time format", () => {
@ -271,7 +271,7 @@ describe("computeStateDisplay", () => {
localeData,
"2021-07-04 15:40:03"
),
"July 4, 2021, 15:40"
"July 4, 2021 at 15:40"
);
});
});

View File

@ -1,6 +1,6 @@
import { assert } from "chai";
import { formatNumber } from "../../../src/common/string/format_number";
import { formatNumber } from "../../../src/common/number/format_number";
import {
FrontendLocaleData,
NumberFormat,

12
test/setup.js Normal file
View File

@ -0,0 +1,12 @@
const fs = require("fs");
const path = require("path");
process.env.TZ = "Etc/UTC";
process.env.IS_TEST = "true";
const MDI_OUTPUT_DIR = path.resolve(__dirname, "../build/mdi");
if (!fs.existsSync(MDI_OUTPUT_DIR)) {
fs.mkdirSync(MDI_OUTPUT_DIR, { recursive: true });
fs.writeFileSync(path.resolve(MDI_OUTPUT_DIR, "iconMetadata.json"), "{}");
}

7
test/webpack.config.js Normal file
View File

@ -0,0 +1,7 @@
const { createAppConfig } = require("../build-scripts/webpack.js");
module.exports = createAppConfig({
isProdBuild: false,
latestBuild: true,
isStatsBuild: false,
});

1060
yarn.lock
View File

@ -1519,6 +1519,16 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/ecma402-abstract@npm:1.9.9":
version: 1.9.9
resolution: "@formatjs/ecma402-abstract@npm:1.9.9"
dependencies:
"@formatjs/intl-localematcher": 0.2.21
tslib: ^2.1.0
checksum: f0834658319ed9add4a64ee13704f1616c0af771038debe38ec7ba96a79a65e684b8e363c1573841798856d87c832c29a8be249b50c41cf46980a1a0a38c5cf7
languageName: node
linkType: hard
"@formatjs/fast-memoize@npm:1.2.0":
version: 1.2.0
resolution: "@formatjs/fast-memoize@npm:1.2.0"
@ -1549,6 +1559,17 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/intl-datetimeformat@npm:^4.2.4":
version: 4.2.4
resolution: "@formatjs/intl-datetimeformat@npm:4.2.4"
dependencies:
"@formatjs/ecma402-abstract": 1.9.9
"@formatjs/intl-localematcher": 0.2.21
tslib: ^2.1.0
checksum: 081ea0a3065b8a40867a188f81d67ff40a98a81825c2cea79ae6a61ce28bd5aaecb756633b1c0f688a61e774925176f84c0f0f06b87b50c1d2977c9e1c59027f
languageName: node
linkType: hard
"@formatjs/intl-getcanonicallocales@npm:1.7.3, @formatjs/intl-getcanonicallocales@npm:^1.7.3":
version: 1.7.3
resolution: "@formatjs/intl-getcanonicallocales@npm:1.7.3"
@ -1560,14 +1581,14 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/intl-locale@npm:^2.4.37":
version: 2.4.37
resolution: "@formatjs/intl-locale@npm:2.4.37"
"@formatjs/intl-locale@npm:^2.4.38":
version: 2.4.38
resolution: "@formatjs/intl-locale@npm:2.4.38"
dependencies:
"@formatjs/ecma402-abstract": 1.9.8
"@formatjs/ecma402-abstract": 1.9.9
"@formatjs/intl-getcanonicallocales": 1.7.3
tslib: ^2.1.0
checksum: b6c912f763992b9b03e0c47f86199576d9956a7f11b26bc51b78394d8c5db4d46ffef512134fe57d042cc26017b4c79cd03d57c5702209e16a3ffdb7455cd016
checksum: 86e28c576a65679fe626e1e275bb3bed1209e5ced0066d7d9631a125800a4420bc748d800ee98c9a6c862755c05ec330dd3d71c3f10062cb762ec7a3b3f787d7
languageName: node
linkType: hard
@ -1580,14 +1601,53 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/intl-pluralrules@npm:^4.1.3":
version: 4.1.3
resolution: "@formatjs/intl-pluralrules@npm:4.1.3"
"@formatjs/intl-localematcher@npm:0.2.21":
version: 0.2.21
resolution: "@formatjs/intl-localematcher@npm:0.2.21"
dependencies:
"@formatjs/ecma402-abstract": 1.9.8
"@formatjs/intl-localematcher": 0.2.20
tslib: ^2.1.0
checksum: 96c737c85faf306b7748c1a633ce8d2dbb90e4e9877f68782060b079ff47841a633d9ee911d4fb5d2b8a9c49977f3c6eac0658f5716a357b2b99e088ccf9ea4b
checksum: d766eb8ce8b2628d781fdb34fd0833a0a1b28f20e70a72dfabbca27cf02bd1b994a72c357b2b3d4888bc20c33b6b7cc7e10e92847ec228a40745a2e84d8d2e24
languageName: node
linkType: hard
"@formatjs/intl-numberformat@npm:^7.2.4":
version: 7.2.4
resolution: "@formatjs/intl-numberformat@npm:7.2.4"
dependencies:
"@formatjs/ecma402-abstract": 1.9.9
tslib: ^2.1.0
checksum: 3cb315707d40f2d14c3f3922a58252c02eb38b6654d4e453ff152fcd2ad8819c827fd15741767e69290282b841dbadd035f4544dd0bebd326413ece7cc7af400
languageName: node
linkType: hard
"@formatjs/intl-pluralrules@npm:^4.1.4":
version: 4.1.4
resolution: "@formatjs/intl-pluralrules@npm:4.1.4"
dependencies:
"@formatjs/ecma402-abstract": 1.9.9
"@formatjs/intl-localematcher": 0.2.21
tslib: ^2.1.0
checksum: c11d408148fa0be7d94c79596ac2730dee123a6ac1b50aa4f9c94eb4e9f7a7035a8fd58524664dd6a009b992ec8d6383ff58a2b8118888d47248313ac9f324f1
languageName: node
linkType: hard
"@formatjs/intl-relativetimeformat@npm:^9.3.1":
version: 9.3.1
resolution: "@formatjs/intl-relativetimeformat@npm:9.3.1"
dependencies:
"@formatjs/ecma402-abstract": 1.9.9
"@formatjs/intl-localematcher": 0.2.21
tslib: ^2.1.0
checksum: d0146fbf85db9925b7243e83d030824c1a5ec489b5bc29aab27198732753f9360f89408c63c38fbeb0c5ef7c9f81676f760b68e8013a9d37544b51717234cc58
languageName: node
linkType: hard
"@formatjs/intl-utils@npm:^3.8.4":
version: 3.8.4
resolution: "@formatjs/intl-utils@npm:3.8.4"
dependencies:
emojis-list: ^3.0.0
checksum: e38a98d391ec68d8abc4bb1824426bd804dfb022ce61be004459faec69f7843ddb3733bae8d0dce4aafbfafad59cb10e67fc21d22d62f68d98251ce0bce8e704
languageName: node
linkType: hard
@ -3619,10 +3679,10 @@ __metadata:
languageName: node
linkType: hard
"@types/estree@npm:*, @types/estree@npm:^0.0.49":
version: 0.0.49
resolution: "@types/estree@npm:0.0.49"
checksum: a01577ca7bdb30a668ac92d07122afcca8b1eb44d95ae1efe6dfefbc0b54953a137d7c2ebcab034568f1c04f2a42e85bf6bb97af47cdfaf9d5f01e58ac27ecf5
"@types/estree@npm:*, @types/estree@npm:^0.0.50":
version: 0.0.50
resolution: "@types/estree@npm:0.0.50"
checksum: 9a2b6a4a8c117f34d08fbda5e8f69b1dfb109f7d149b60b00fd7a9fb6ac545c078bc590aa4ec2f0a256d680cf72c88b3b28b60c326ee38a7bc8ee1ee95624922
languageName: node
linkType: hard
@ -3718,6 +3778,15 @@ __metadata:
languageName: node
linkType: hard
"@types/http-proxy@npm:^1.17.5":
version: 1.17.7
resolution: "@types/http-proxy@npm:1.17.7"
dependencies:
"@types/node": "*"
checksum: 88f9c75ca65378d0287d8d0b1dbeed372c8267f4841fe2f6f2d759522494382d3943bc6cc774bef7dd125464a266bafeda813d3658b17a2d1e74acc4efb6e21c
languageName: node
linkType: hard
"@types/js-yaml@npm:^4":
version: 4.0.3
resolution: "@types/js-yaml@npm:4.0.3"
@ -3725,10 +3794,10 @@ __metadata:
languageName: node
linkType: hard
"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.7":
version: 7.0.8
resolution: "@types/json-schema@npm:7.0.8"
checksum: f1d0fe76ab1db93846f36a9179faa44b9b66f2f5f44597e46e65456a1c998f632c63b94ed347058ed1a230cbf95a9a164b4daf4d70aa3d651d5033f7856df83c
"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.8":
version: 7.0.9
resolution: "@types/json-schema@npm:7.0.9"
checksum: 259d0e25f11a21ba5c708f7ea47196bd396e379fddb79c76f9f4f62c945879dc21657904914313ec2754e443c5018ea8372362f323f30e0792897fdb2098a705
languageName: node
linkType: hard
@ -3877,6 +3946,13 @@ __metadata:
languageName: node
linkType: hard
"@types/retry@npm:^0.12.0":
version: 0.12.1
resolution: "@types/retry@npm:0.12.1"
checksum: 5f46b2556053655f78262bb33040dc58417c900457cc63ff37d6c35349814471453ef511af0cec76a540c601296cd2b22f64bab1ab649c0dacc0223765ba876c
languageName: node
linkType: hard
"@types/serve-static@npm:*":
version: 1.13.7
resolution: "@types/serve-static@npm:1.13.7"
@ -4595,15 +4671,15 @@ __metadata:
languageName: node
linkType: hard
"@webpack-cli/serve@npm:^1.5.1":
version: 1.5.1
resolution: "@webpack-cli/serve@npm:1.5.1"
"@webpack-cli/serve@npm:^1.5.2":
version: 1.5.2
resolution: "@webpack-cli/serve@npm:1.5.2"
peerDependencies:
webpack-cli: 4.x.x
peerDependenciesMeta:
webpack-dev-server:
optional: true
checksum: 62485c3ddfe337c9fbe755423a63990f3544793ca2d380baf03017f49d53e6ff88d37399119865a204dfbb5941d1de2dba6f41cf8737b25145f20762368c1dee
checksum: 1666c69606581193574fb5f2cd58fececf933f34725261752d44c8097640474903de8bec4076c717d48838cfc8937fccee699ce74e4c880e1c327157757250fa
languageName: node
linkType: hard
@ -4645,6 +4721,15 @@ __metadata:
languageName: node
linkType: hard
"acorn-import-assertions@npm:^1.7.6":
version: 1.7.6
resolution: "acorn-import-assertions@npm:1.7.6"
peerDependencies:
acorn: ^8
checksum: bc8a1585abd70ebfb3a6b3112f5e3974fee3ac598230f916a3857f0ad4fa7e72197be532c49d1feeb83678ef264f34bee9bf1934dfb2f276d88468134a51fa9f
languageName: node
linkType: hard
"acorn-jsx@npm:^5.3.1":
version: 5.3.1
resolution: "acorn-jsx@npm:5.3.1"
@ -4692,7 +4777,7 @@ __metadata:
languageName: node
linkType: hard
"aggregate-error@npm:^3.0.0":
"aggregate-error@npm:^3.0.0, aggregate-error@npm:^3.1.0":
version: 3.1.0
resolution: "aggregate-error@npm:3.1.0"
dependencies:
@ -4702,16 +4787,7 @@ __metadata:
languageName: node
linkType: hard
"ajv-errors@npm:^1.0.0":
version: 1.0.1
resolution: "ajv-errors@npm:1.0.1"
peerDependencies:
ajv: ">=5.0.0"
checksum: 2c9fc02cf58f9aae5bace61ebd1b162e1ea372ae9db5999243ba5e32a9a78c0d635d29ae085f652c61c941a43af0b2b1acdb255e29d44dc43a6e021085716d8c
languageName: node
linkType: hard
"ajv-keywords@npm:^3.1.0, ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2":
"ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2":
version: 3.5.2
resolution: "ajv-keywords@npm:3.5.2"
peerDependencies:
@ -4732,7 +4808,7 @@ __metadata:
languageName: node
linkType: hard
"ajv@npm:^6.1.0, ajv@npm:^6.10.0, ajv@npm:^6.12.0, ajv@npm:^6.12.4, ajv@npm:^6.12.5":
"ajv@npm:^6.10.0, ajv@npm:^6.12.0, ajv@npm:^6.12.4, ajv@npm:^6.12.5":
version: 6.12.6
resolution: "ajv@npm:6.12.6"
dependencies:
@ -4781,14 +4857,7 @@ __metadata:
languageName: node
linkType: hard
"ansi-colors@npm:^3.0.0":
version: 3.2.4
resolution: "ansi-colors@npm:3.2.4"
checksum: 026c51880e9f8eb59b112669a87dbea4469939ff94b131606303bbd697438a6691b16b9db3027aa9bf132a244214e83ab1508b998496a34d2aea5b437ac9e62d
languageName: node
linkType: hard
"ansi-escapes@npm:^4.3.0":
"ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.1, ansi-escapes@npm:^4.3.2":
version: 4.3.2
resolution: "ansi-escapes@npm:4.3.2"
dependencies:
@ -4806,12 +4875,12 @@ __metadata:
languageName: node
linkType: hard
"ansi-html@npm:0.0.7":
version: 0.0.7
resolution: "ansi-html@npm:0.0.7"
"ansi-html-community@npm:^0.0.8":
version: 0.0.8
resolution: "ansi-html-community@npm:0.0.8"
bin:
ansi-html: ./bin/ansi-html
checksum: 9b839ce99650b4c2d83621d67d68622d27e7948b54f7a4386f2218a3997ee4e684e5a6e8d290880c3f3260e8d90c2613c59c7028f04992ad5c8d99d3a0fcc02c
ansi-html: bin/ansi-html
checksum: 04c568e8348a636963f915e48eaa3e01218322e1169acafdd79c384f22e5558c003f79bbc480c1563865497482817c7eed025f0653ebc17642fededa5cb42089
languageName: node
linkType: hard
@ -4850,6 +4919,13 @@ __metadata:
languageName: node
linkType: hard
"ansi-regex@npm:^6.0.1":
version: 6.0.1
resolution: "ansi-regex@npm:6.0.1"
checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169
languageName: node
linkType: hard
"ansi-styles@npm:^1.1.0":
version: 1.1.0
resolution: "ansi-styles@npm:1.1.0"
@ -4913,13 +4989,13 @@ __metadata:
languageName: node
linkType: hard
"anymatch@npm:~3.1.1":
version: 3.1.1
resolution: "anymatch@npm:3.1.1"
"anymatch@npm:~3.1.1, anymatch@npm:~3.1.2":
version: 3.1.2
resolution: "anymatch@npm:3.1.2"
dependencies:
normalize-path: ^3.0.0
picomatch: ^2.0.4
checksum: c951385862bf114807d594bdffccb769bd7219ddc14f24fc135cde075ad2477a97991567b8bb5032d4f279f96897f0c2af6468a350a6c674ac0a5ee3b62a26d6
checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9
languageName: node
linkType: hard
@ -5165,13 +5241,6 @@ __metadata:
languageName: node
linkType: hard
"arrify@npm:^1.0.0":
version: 1.0.1
resolution: "arrify@npm:1.0.1"
checksum: 745075dd4a4624ff0225c331dacb99be501a515d39bcb7c84d24660314a6ec28e68131b137e6f7e16318170842ce97538cd298fc4cd6b2cc798e0b957f2747e7
languageName: node
linkType: hard
"asap@npm:~2.0.6":
version: 2.0.6
resolution: "asap@npm:2.0.6"
@ -5219,13 +5288,6 @@ __metadata:
languageName: node
linkType: hard
"async-limiter@npm:~1.0.0":
version: 1.0.1
resolution: "async-limiter@npm:1.0.1"
checksum: 2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b
languageName: node
linkType: hard
"async-settle@npm:^1.0.0":
version: 1.0.0
resolution: "async-settle@npm:1.0.0"
@ -5562,7 +5624,7 @@ __metadata:
languageName: node
linkType: hard
"buffer-from@npm:^1.0.0, buffer-from@npm:^1.1.0, buffer-from@npm:^1.1.1":
"buffer-from@npm:^1.0.0, buffer-from@npm:^1.1.1":
version: 1.1.1
resolution: "buffer-from@npm:1.1.1"
checksum: ccc53b69736008bff764497367c4d24879ba7122bc619ee499ff47eef3a5b885ca496e87272e7ebffa0bec3804c83f84041c616f6e3318f40624e27c1d80f045
@ -5856,7 +5918,7 @@ __metadata:
languageName: node
linkType: hard
"chokidar@npm:3.5.1, chokidar@npm:^3.4.3":
"chokidar@npm:3.5.1":
version: 3.5.1
resolution: "chokidar@npm:3.5.1"
dependencies:
@ -5875,7 +5937,7 @@ __metadata:
languageName: node
linkType: hard
"chokidar@npm:^2.0.0, chokidar@npm:^2.1.8":
"chokidar@npm:^2.0.0":
version: 2.1.8
resolution: "chokidar@npm:2.1.8"
dependencies:
@ -5898,6 +5960,25 @@ __metadata:
languageName: node
linkType: hard
"chokidar@npm:^3.4.3, chokidar@npm:^3.5.1":
version: 3.5.2
resolution: "chokidar@npm:3.5.2"
dependencies:
anymatch: ~3.1.2
braces: ~3.0.2
fsevents: ~2.3.2
glob-parent: ~5.1.2
is-binary-path: ~2.1.0
is-glob: ~4.0.1
normalize-path: ~3.0.0
readdirp: ~3.6.0
dependenciesMeta:
fsevents:
optional: true
checksum: d1fda32fcd67d9f6170a8468ad2630a3c6194949c9db3f6a91b16478c328b2800f433fb5d2592511b6cb145a47c013ea1cce60b432b1a001ae3ee978a8bffc2d
languageName: node
linkType: hard
"chownr@npm:^1.1.1":
version: 1.1.1
resolution: "chownr@npm:1.1.1"
@ -5928,6 +6009,13 @@ __metadata:
languageName: node
linkType: hard
"ci-info@npm:^3.1.1":
version: 3.2.0
resolution: "ci-info@npm:3.2.0"
checksum: c68995a94e95ce3f233ff845e62dfc56f2e8ff1e3f5c1361bcdd520cbbc9726d8a54cbc1a685cb9ee19c3c5e71a1dade6dda23eb364b59b8e6c32508a9b761bc
languageName: node
linkType: hard
"class-utils@npm:^0.3.5":
version: 0.3.6
resolution: "class-utils@npm:0.3.6"
@ -6176,6 +6264,13 @@ __metadata:
languageName: node
linkType: hard
"colorette@npm:^2.0.10":
version: 2.0.12
resolution: "colorette@npm:2.0.12"
checksum: 1df990c6749826694756ecd05a771fb70fd426cf2b264cf496fb93a621fb4554fabfa8adde0923421f3e38b7265d546f6a46caf833f2d7facf45a40042b510b3
languageName: node
linkType: hard
"comlink@npm:^4.3.1":
version: 4.3.1
resolution: "comlink@npm:4.3.1"
@ -6314,6 +6409,13 @@ __metadata:
languageName: node
linkType: hard
"consola@npm:^2.15.0":
version: 2.15.3
resolution: "consola@npm:2.15.3"
checksum: 8ef7a09b703ec67ac5c389a372a33b6dc97eda6c9876443a60d76a3076eea0259e7f67a4e54fd5a52f97df73690822d090cf8b7e102b5761348afef7c6d03e28
languageName: node
linkType: hard
"console-control-strings@npm:^1.0.0, console-control-strings@npm:~1.1.0":
version: 1.1.0
resolution: "console-control-strings@npm:1.1.0"
@ -6583,7 +6685,7 @@ __metadata:
languageName: node
linkType: hard
"debug@npm:^3.1.0, debug@npm:^3.1.1, debug@npm:^3.2.6, debug@npm:^3.2.7":
"debug@npm:^3.1.0, debug@npm:^3.1.1, debug@npm:^3.2.7":
version: 3.2.7
resolution: "debug@npm:3.2.7"
dependencies:
@ -6689,13 +6791,12 @@ __metadata:
languageName: node
linkType: hard
"default-gateway@npm:^4.2.0":
version: 4.2.0
resolution: "default-gateway@npm:4.2.0"
"default-gateway@npm:^6.0.0":
version: 6.0.3
resolution: "default-gateway@npm:6.0.3"
dependencies:
execa: ^1.0.0
ip-regex: ^2.1.0
checksum: 1f5be765471689c6bab33e0c8b87363c3e2485cc1ab78904d383a8a8293a79f684da2a3303744b112503f986af4ea87d917c63a468ed913e9b0c31588c02d6a4
execa: ^5.0.0
checksum: 126f8273ecac8ee9ff91ea778e8784f6cd732d77c3157e8c5bdd6ed03651b5291f71446d05bc02d04073b1e67583604db5394ea3cf992ede0088c70ea15b7378
languageName: node
linkType: hard
@ -6715,6 +6816,13 @@ __metadata:
languageName: node
linkType: hard
"define-lazy-prop@npm:^2.0.0":
version: 2.0.0
resolution: "define-lazy-prop@npm:2.0.0"
checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2
languageName: node
linkType: hard
"define-properties@npm:^1.1.3":
version: 1.1.3
resolution: "define-properties@npm:1.1.3"
@ -6752,7 +6860,7 @@ __metadata:
languageName: node
linkType: hard
"del@npm:^4.0.0, del@npm:^4.1.1":
"del@npm:^4.0.0":
version: 4.1.1
resolution: "del@npm:4.1.1"
dependencies:
@ -6767,6 +6875,22 @@ __metadata:
languageName: node
linkType: hard
"del@npm:^6.0.0":
version: 6.0.0
resolution: "del@npm:6.0.0"
dependencies:
globby: ^11.0.1
graceful-fs: ^4.2.4
is-glob: ^4.0.1
is-path-cwd: ^2.2.0
is-path-inside: ^3.0.2
p-map: ^4.0.0
rimraf: ^3.0.2
slash: ^3.0.0
checksum: 5742891627e91aaf62385714025233f4664da28bc55b6ab825649dcdea4691fed3cf329a2b1913fd2d2612e693e99e08a03c84cac7f36ef54bacac9390520192
languageName: node
linkType: hard
"delegates@npm:^1.0.0":
version: 1.0.0
resolution: "delegates@npm:1.0.0"
@ -6843,13 +6967,6 @@ __metadata:
languageName: node
linkType: hard
"diff@npm:^3.1.0":
version: 3.5.0
resolution: "diff@npm:3.5.0"
checksum: 00842950a6551e26ce495bdbce11047e31667deea546527902661f25cc2e73358967ebc78cf86b1a9736ec3e14286433225f9970678155753a6291c3bca5227b
languageName: node
linkType: hard
"dijkstrajs@npm:^1.0.1":
version: 1.0.1
resolution: "dijkstrajs@npm:1.0.1"
@ -7026,13 +7143,13 @@ __metadata:
languageName: node
linkType: hard
"enhanced-resolve@npm:^5.8.0":
version: 5.8.2
resolution: "enhanced-resolve@npm:5.8.2"
"enhanced-resolve@npm:^5.8.3":
version: 5.8.3
resolution: "enhanced-resolve@npm:5.8.3"
dependencies:
graceful-fs: ^4.2.4
tapable: ^2.2.0
checksum: 6e871ec5b183220dbcdaff8580cbdacee5425e321790e5846abd1b573d20d2bcb37f73ee983fd10c6d6878d31a2d08e234e72fc91a81236d64623ee6ba7d6611
checksum: d79fbe531106448b768bb0673fb623ec0202d7ee70373ab7d4f4745d5dfe0806f38c9db7e7da8c941288fe475ab3d538db3791fce522056eeea40ca398c9e287
languageName: node
linkType: hard
@ -7068,17 +7185,6 @@ __metadata:
languageName: node
linkType: hard
"errno@npm:^0.1.3":
version: 0.1.7
resolution: "errno@npm:0.1.7"
dependencies:
prr: ~1.0.1
bin:
errno: ./cli.js
checksum: a9e414c24aa9d16c74cee74e46e1b4ff5e5b005552b5b50ca242b14fea448720a21fe515b4e4587172744b1dab9ecf919ba5a950f528d7c8ddb4b660f290db79
languageName: node
linkType: hard
"error-ex@npm:^1.2.0, error-ex@npm:^1.3.1":
version: 1.3.2
resolution: "error-ex@npm:1.3.2"
@ -7119,10 +7225,10 @@ __metadata:
languageName: node
linkType: hard
"es-module-lexer@npm:^0.7.1":
version: 0.7.1
resolution: "es-module-lexer@npm:0.7.1"
checksum: c66fb633cc521529862818caf603897d58d30442c885a1a1ed16823ddbbb8a437e3952454a4b2650242df1c1b4d0efa42fedbe49594e3ef2ceb3c891cf1211dd
"es-module-lexer@npm:^0.9.0":
version: 0.9.1
resolution: "es-module-lexer@npm:0.9.1"
checksum: 2a8ba5b85c1e6f64a31482e7999e2898d2b2d3fb41d10b5237f58e98ad50a5a9600857fce4ca95077eae8fcb7d058a9282986f0df2643870c3d33d270844e625
languageName: node
linkType: hard
@ -7600,15 +7706,6 @@ __metadata:
languageName: node
linkType: hard
"eventsource@npm:^1.0.7":
version: 1.0.7
resolution: "eventsource@npm:1.0.7"
dependencies:
original: ^1.0.0
checksum: 26d6d9103ed11c4ed9cd2b69fb204176649c9686ee2440dcd08d82f741b9d38cc6e0e13e0974591ee1b7c0fc3b78f5d99f399630e46c776e797c8696469f53ac
languageName: node
linkType: hard
"execa@npm:^0.7.0":
version: 0.7.0
resolution: "execa@npm:0.7.0"
@ -7898,10 +7995,12 @@ __metadata:
languageName: node
linkType: hard
"fecha@npm:^4.2.0":
version: 4.2.0
resolution: "fecha@npm:4.2.0"
checksum: 4eb4235959161446f6ec1a24e34eba7362187d2c96d9dd86ea4290e345d1efd2175ccb01bbef9ee852c6790aa7af2539d08361b0499ebc9bf23b4791f5666cd0
"figures@npm:^3.2.0":
version: 3.2.0
resolution: "figures@npm:3.2.0"
dependencies:
escape-string-regexp: ^1.0.5
checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b
languageName: node
linkType: hard
@ -8219,6 +8318,20 @@ __metadata:
languageName: node
linkType: hard
"fs-monkey@npm:1.0.3":
version: 1.0.3
resolution: "fs-monkey@npm:1.0.3"
checksum: cf50804833f9b88a476911ae911fe50f61a98d986df52f890bd97e7262796d023698cb2309fa9b74fdd8974f04315b648748a0a8ee059e7d5257b293bfc409c0
languageName: node
linkType: hard
"fs-require@npm:^1.1.0":
version: 1.1.0
resolution: "fs-require@npm:1.1.0"
checksum: c0fc2468a21f6264b29a5287920d63b4db8a21fd32b26774d6da95798c3a54a7542fbb2889173b5d8ac07c25468a04e45a8d76c816c9c37e568a77c3695f4822
languageName: node
linkType: hard
"fs.realpath@npm:^1.0.0":
version: 1.0.0
resolution: "fs.realpath@npm:1.0.0"
@ -8246,7 +8359,7 @@ fsevents@^1.2.7:
languageName: node
linkType: hard
"fsevents@patch:fsevents@~2.3.1#~builtin<compat/fsevents>":
"fsevents@patch:fsevents@~2.3.1#~builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>":
version: 2.3.2
resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=1cc4b2"
dependencies:
@ -8255,7 +8368,7 @@ fsevents@^1.2.7:
languageName: node
linkType: hard
fsevents@~2.3.1:
"fsevents@~2.3.1, fsevents@~2.3.2":
version: 2.3.2
resolution: "fsevents@npm:2.3.2"
dependencies:
@ -8411,7 +8524,7 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"glob-parent@npm:^5.1.0, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.0":
"glob-parent@npm:^5.1.0, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.0, glob-parent@npm:~5.1.2":
version: 5.1.2
resolution: "glob-parent@npm:5.1.2"
dependencies:
@ -8545,7 +8658,7 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"globby@npm:^11.0.3":
"globby@npm:^11.0.1, globby@npm:^11.0.3":
version: 11.0.4
resolution: "globby@npm:11.0.4"
dependencies:
@ -8869,6 +8982,7 @@ fsevents@~2.3.1:
"@babel/plugin-proposal-optional-chaining": ^7.14.5
"@babel/plugin-syntax-dynamic-import": ^7.8.3
"@babel/plugin-syntax-import-meta": ^7.10.4
"@babel/plugin-syntax-top-level-await": ^7.14.5
"@babel/preset-env": ^7.14.7
"@babel/preset-typescript": ^7.14.5
"@braintree/sanitize-url": ^5.0.2
@ -8883,9 +8997,13 @@ fsevents@~2.3.1:
"@codemirror/stream-parser": ^0.19.1
"@codemirror/text": ^0.19.2
"@codemirror/view": ^0.19.4
"@formatjs/intl-datetimeformat": ^4.2.4
"@formatjs/intl-getcanonicallocales": ^1.7.3
"@formatjs/intl-locale": ^2.4.37
"@formatjs/intl-pluralrules": ^4.1.3
"@formatjs/intl-locale": ^2.4.38
"@formatjs/intl-numberformat": ^7.2.4
"@formatjs/intl-pluralrules": ^4.1.4
"@formatjs/intl-relativetimeformat": ^9.3.1
"@formatjs/intl-utils": ^3.8.4
"@fullcalendar/common": 5.9.0
"@fullcalendar/core": 5.9.0
"@fullcalendar/daygrid": 5.9.0
@ -8986,7 +9104,6 @@ fsevents@~2.3.1:
eslint-plugin-unused-imports: ^1.1.2
eslint-plugin-wc: ^1.3.0
fancy-log: ^1.3.3
fecha: ^4.2.0
fs-extra: ^7.0.1
fuse.js: ^6.0.0
google-timezones-json: ^1.0.2
@ -9001,6 +9118,7 @@ fsevents@~2.3.1:
html-minifier: ^4.0.0
husky: ^1.3.1
idb-keyval: ^5.1.3
instant-mocha: ^1.3.1
intl-messageformat: ^9.9.1
js-yaml: ^4.1.0
leaflet: ^1.7.1
@ -9037,10 +9155,9 @@ fsevents@~2.3.1:
source-map-url: ^0.4.0
superstruct: ^0.15.2
systemjs: ^6.3.2
terser-webpack-plugin: ^5.1.4
terser-webpack-plugin: ^5.2.4
tinykeys: ^1.1.3
ts-lit-plugin: ^1.2.1
ts-mocha: ^8.0.0
tsparticles: ^1.34.0
typescript: ^4.3.5
unfetch: ^4.1.0
@ -9051,10 +9168,11 @@ fsevents@~2.3.1:
vue: ^2.6.12
vue2-daterange-picker: ^0.5.1
web-animations-js: ^2.3.2
webpack: ^5.43.0
webpack-cli: ^4.7.2
webpack-dev-server: ^3.11.2
webpack-manifest-plugin: ^3.1.1
webpack: ^5.55.1
webpack-cli: ^4.8.0
webpack-dev-server: ^4.3.0
webpack-manifest-plugin: ^4.0.2
webpackbar: ^5.0.0-3
workbox-build: ^6.1.5
workbox-cacheable-response: ^6.1.5
workbox-core: ^6.1.5
@ -9101,10 +9219,10 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"html-entities@npm:^1.3.1":
version: 1.3.1
resolution: "html-entities@npm:1.3.1"
checksum: 423e3138822a298df37aa40503c6010a4d0cfa452f01b5730cf144c41c31fb0026ee76dd5ff0d78b987a16d145f0c50f4c112a5095740718af169786b8cbdd0a
"html-entities@npm:^2.3.2":
version: 2.3.2
resolution: "html-entities@npm:2.3.2"
checksum: 522d8d202df301ff51b517a379e642023ed5c81ea9fb5674ffad88cff386165733d00b6089d5c2fcc644e44777d6072017b6216d8fa40f271d3610420d00a886
languageName: node
linkType: hard
@ -9218,19 +9336,20 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"http-proxy-middleware@npm:0.19.1":
version: 0.19.1
resolution: "http-proxy-middleware@npm:0.19.1"
"http-proxy-middleware@npm:^2.0.0":
version: 2.0.1
resolution: "http-proxy-middleware@npm:2.0.1"
dependencies:
http-proxy: ^1.17.0
is-glob: ^4.0.0
lodash: ^4.17.11
micromatch: ^3.1.10
checksum: 64df0438417a613bb22b3689d9652a1b7a56f10b145a463f95f4e8a9b9a351f2c63bc5fd3a9cd710baec224897733b6f299cb7f974ea82769b2a4f1e074764ac
"@types/http-proxy": ^1.17.5
http-proxy: ^1.18.1
is-glob: ^4.0.1
is-plain-obj: ^3.0.0
micromatch: ^4.0.2
checksum: 0de65bc6644b6efae5d26cd3bec071ceaeb92f26856ffee5ecdde9c702ea1435936e7dfb09da2ac0883eada80fdc993e9925902fc10bf6625565d6365f8cb30f
languageName: node
linkType: hard
"http-proxy@npm:^1.17.0":
"http-proxy@npm:^1.18.1":
version: 1.18.1
resolution: "http-proxy@npm:1.18.1"
dependencies:
@ -9371,18 +9490,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"import-local@npm:^2.0.0":
version: 2.0.0
resolution: "import-local@npm:2.0.0"
dependencies:
pkg-dir: ^3.0.0
resolve-cwd: ^2.0.0
bin:
import-local-fixture: fixtures/cli.js
checksum: b8469252483624379fd65d53c82f3658b32a1136f7168bfeea961a4ea7ca10a45786ea2b02e0006408f9cd22d2f33305a6f17a64e4d5a03274a50942c5e7c949
languageName: node
linkType: hard
"import-local@npm:^3.0.2":
version: 3.0.2
resolution: "import-local@npm:3.0.2"
@ -9435,7 +9542,7 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3":
"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.1, inherits@npm:~2.0.3":
version: 2.0.4
resolution: "inherits@npm:2.0.4"
checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1
@ -9456,13 +9563,35 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"internal-ip@npm:^4.3.0":
version: 4.3.0
resolution: "internal-ip@npm:4.3.0"
"instant-mocha@npm:^1.3.1":
version: 1.3.1
resolution: "instant-mocha@npm:1.3.1"
dependencies:
default-gateway: ^4.2.0
ipaddr.js: ^1.9.0
checksum: c970433c84d9a6b46e2c9f5ab7785d3105b856d0a566891bf919241b5a884c5c1c9bf8e915aebb822a86c14b1b6867e58c1eaf5cd49eb023368083069d1a4a9a
aggregate-error: ^3.1.0
ansi-escapes: ^4.3.2
fs-require: ^1.1.0
memfs: ^3.2.2
minimist: ^1.2.5
source-map-support: ^0.5.19
yargs: ^16.2.0
peerDependencies:
mocha: ^6.1.4 || ^8.3.2
webpack: ^4.40.0 || ^5.0.0
bin:
instant-mocha: bin/instant-mocha.js
checksum: f4313d75249b63ef58cf62bb92a44bc284c556d6ce8430483e564718fea75797a0f587640af7efe69252690df1c3f10fd9ebda4d445f4da3fac35f41249c2e8d
languageName: node
linkType: hard
"internal-ip@npm:^6.2.0":
version: 6.2.0
resolution: "internal-ip@npm:6.2.0"
dependencies:
default-gateway: ^6.0.0
ipaddr.js: ^1.9.1
is-ip: ^3.1.0
p-event: ^4.2.0
checksum: 6d08299c052c4ec926fa4e3643049d81daacbc33d3ab90fc30cd59cd7f12902152107bc75778e1202a269eb82cab0c412ff04a78f0361e056de0c5c2628881fa
languageName: node
linkType: hard
@ -9508,10 +9637,10 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"ip-regex@npm:^2.1.0":
version: 2.1.0
resolution: "ip-regex@npm:2.1.0"
checksum: 331d95052aa53ce245745ea0fc3a6a1e2e3c8d6da65fa8ea52bf73768c1b22a9ac50629d1d2b08c04e7b3ac4c21b536693c149ce2c2615ee4796030e5b3e3cba
"ip-regex@npm:^4.0.0":
version: 4.3.0
resolution: "ip-regex@npm:4.3.0"
checksum: 7ff904b891221b1847f3fdf3dbb3e6a8660dc39bc283f79eb7ed88f5338e1a3d1104b779bc83759159be266249c59c2160e779ee39446d79d4ed0890dfd06f08
languageName: node
linkType: hard
@ -9522,17 +9651,24 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"ipaddr.js@npm:1.9.0, ipaddr.js@npm:^1.9.0":
"ipaddr.js@npm:1.9.0":
version: 1.9.0
resolution: "ipaddr.js@npm:1.9.0"
checksum: 56254f753959132884d74355fc45fda74f120283695c831a07bfac3368965bc9452cbdb80d5e38a6211de4e98a32ddbcd2e640137eb3f79a251c5c725a9efbd6
languageName: node
linkType: hard
"is-absolute-url@npm:^3.0.3":
version: 3.0.3
resolution: "is-absolute-url@npm:3.0.3"
checksum: 5159b51d065d9ad29e16a2f78d6c0e41c43227caf90a45e659c54ea6fd50ef0595b1871ce392e84b1df7cfdcad9a8e66eec0813a029112188435abf115accb16
"ipaddr.js@npm:^1.9.1":
version: 1.9.1
resolution: "ipaddr.js@npm:1.9.1"
checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77
languageName: node
linkType: hard
"ipaddr.js@npm:^2.0.1":
version: 2.0.1
resolution: "ipaddr.js@npm:2.0.1"
checksum: dd194a394a843d470f88d17191b0948f383ed1c8e320813f850c336a0fcb5e9215d97ec26ca35ab4fbbd31392c8b3467f3e8344628029ed3710b2ff6b5d1034e
languageName: node
linkType: hard
@ -9693,10 +9829,12 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"is-docker@npm:^2.0.0":
version: 2.0.0
resolution: "is-docker@npm:2.0.0"
checksum: 9b0733c2b3933b0ff77204759d40d2b8226bf8aa2ceaf61be27dc1412bb48dc45b33e2ec613f2072d4c3f766fd521f64b3f1a5c1da1d688fde71e16610712f91
"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1":
version: 2.2.1
resolution: "is-docker@npm:2.2.1"
bin:
is-docker: cli.js
checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56
languageName: node
linkType: hard
@ -9787,6 +9925,15 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"is-ip@npm:^3.1.0":
version: 3.1.0
resolution: "is-ip@npm:3.1.0"
dependencies:
ip-regex: ^4.0.0
checksum: da2c2b282407194adf2320bade0bad94be9c9d0bdab85ff45b1b62d8185f31c65dff3884519d57bf270277e5ea2046c7916a6e5a6db22fe4b7ddcdd3760f23eb
languageName: node
linkType: hard
"is-lambda@npm:^1.0.1":
version: 1.0.1
resolution: "is-lambda@npm:1.0.1"
@ -9852,10 +9999,10 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"is-path-cwd@npm:^2.0.0":
version: 2.0.0
resolution: "is-path-cwd@npm:2.0.0"
checksum: f86a7453931158acf8b4f3c6234e1e535fa88deb865457584dd01112ded3c6296fcae460e277ffffb549db5ebf78b2c75f57870c813576db12ea3d8fb79aff4e
"is-path-cwd@npm:^2.0.0, is-path-cwd@npm:^2.2.0":
version: 2.2.0
resolution: "is-path-cwd@npm:2.2.0"
checksum: 46a840921bb8cc0dc7b5b423a14220e7db338072a4495743a8230533ce78812dc152548c86f4b828411fe98c5451959f07cf841c6a19f611e46600bd699e8048
languageName: node
linkType: hard
@ -9877,6 +10024,13 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"is-path-inside@npm:^3.0.2":
version: 3.0.3
resolution: "is-path-inside@npm:3.0.3"
checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9
languageName: node
linkType: hard
"is-plain-obj@npm:^2.1.0":
version: 2.1.0
resolution: "is-plain-obj@npm:2.1.0"
@ -9884,6 +10038,13 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"is-plain-obj@npm:^3.0.0":
version: 3.0.0
resolution: "is-plain-obj@npm:3.0.0"
checksum: a6ebdf8e12ab73f33530641972a72a4b8aed6df04f762070d823808303e4f76d87d5ea5bd76f96a7bbe83d93f04ac7764429c29413bd9049853a69cb630fb21c
languageName: node
linkType: hard
"is-plain-object@npm:^2.0.1, is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4":
version: 2.0.4
resolution: "is-plain-object@npm:2.0.4"
@ -10002,14 +10163,7 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"is-wsl@npm:^1.1.0":
version: 1.1.0
resolution: "is-wsl@npm:1.1.0"
checksum: ea157d232351e68c92bd62fc541771096942fe72f69dff452dd26dcc31466258c570a3b04b8cda2e01cd2968255b02951b8670d08ea4ed76d6b1a646061ac4fe
languageName: node
linkType: hard
"is-wsl@npm:^2.1.1":
"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0":
version: 2.2.0
resolution: "is-wsl@npm:2.2.0"
dependencies:
@ -10090,14 +10244,14 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"jest-worker@npm:^27.0.2":
version: 27.0.6
resolution: "jest-worker@npm:27.0.6"
"jest-worker@npm:^27.0.6":
version: 27.2.4
resolution: "jest-worker@npm:27.2.4"
dependencies:
"@types/node": "*"
merge-stream: ^2.0.0
supports-color: ^8.0.0
checksum: cef42e551033839940ed26c121b7d19ff85316fb5e4b815e1fca28744c884173bb3a6be64729bc95c281902db5142685700fc0922628b646151b0f5dcabbeb37
checksum: 0caae100e97e247a1c0140928fff075aade1a41317f18316e63db32b626858dff3552bf4e09c9c3bd9af5e8dbe92123fdaed3c9cc8f5439ec64cd970c612bd5d
languageName: node
linkType: hard
@ -10209,13 +10363,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"json3@npm:^3.3.3":
version: 3.3.3
resolution: "json3@npm:3.3.3"
checksum: 55eda204a4c70d11b7d5caa5cb64c76a3aa54d5df72d07bdf446b922fd7cb8657b0732f68e0c36790f55e195e0a429c299144ff05430bbe93bc2a7c81ad3472b
languageName: node
linkType: hard
"json5@npm:^1.0.1":
version: 1.0.1
resolution: "json5@npm:1.0.1"
@ -10286,13 +10433,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"killable@npm:^1.0.1":
version: 1.0.1
resolution: "killable@npm:1.0.1"
checksum: 911a85c6e390c19d72c4e3149347cf44042cbd7d18c3c6c5e4f706fdde6e0ed532473392e282c7ef27f518407e6cb7d2a0e71a2ae8d8d8f8ffdb68891a29a68a
languageName: node
linkType: hard
"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0":
version: 3.2.2
resolution: "kind-of@npm:3.2.2"
@ -10974,13 +11114,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"loglevel@npm:^1.6.8":
version: 1.7.0
resolution: "loglevel@npm:1.7.0"
checksum: f6bb16fa525e22c053f054f6c9d957b9cdf98acb26a075138c2a5982a9f86a7b20c0e97fa9811fd2f3c2bb13481deadb2e56e245f5f20b194caa381553a8f898
languageName: node
linkType: hard
"loud-rejection@npm:^1.0.0":
version: 1.6.0
resolution: "loud-rejection@npm:1.6.0"
@ -11044,13 +11177,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"make-error@npm:^1.1.1":
version: 1.3.5
resolution: "make-error@npm:1.3.5"
checksum: bb9578cb5f36df27509b2a269fc5fda483130096e2989fff8788c2608ed01be780d1e85ba3653e27c0863a114c560410b410be89e19271cb5ff987c37a17c1fd
languageName: node
linkType: hard
"make-fetch-happen@npm:^8.0.14":
version: 8.0.14
resolution: "make-fetch-happen@npm:8.0.14"
@ -11141,6 +11267,15 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"memfs@npm:^3.2.2":
version: 3.3.0
resolution: "memfs@npm:3.3.0"
dependencies:
fs-monkey: 1.0.3
checksum: 9e9eb71cfc077fd5e14ad2f497f5a8791689b64f307cf379ed6737c5781652a7af0509395c0dfba43c4e413dbc7cd7010e9ca002168ec329e6df178414b96268
languageName: node
linkType: hard
"memoize-one@npm:^5.2.1":
version: 5.2.1
resolution: "memoize-one@npm:5.2.1"
@ -11155,16 +11290,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"memory-fs@npm:^0.4.1":
version: 0.4.1
resolution: "memory-fs@npm:0.4.1"
dependencies:
errno: ^0.1.3
readable-stream: ^2.0.1
checksum: 6db6c8682eff836664ca9b5b6052ae38d21713dda9d0ef4700fa5c0599a8bc16b2093bee75ac3dedbe59fb2222d368f25bafaa62ba143c41051359cbcb005044
languageName: node
linkType: hard
"meow@npm:^3.3.0, meow@npm:^3.7.0":
version: 3.7.0
resolution: "meow@npm:3.7.0"
@ -11251,10 +11376,10 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"mime-db@npm:1.44.0, mime-db@npm:>= 1.43.0 < 2":
version: 1.44.0
resolution: "mime-db@npm:1.44.0"
checksum: b2613996804d690adc4ca6744479b8ef08b04db7e99f84ab7e1274e0c2503a446d22296016ae0ea1a1d159858866445601c1f43d46c8d71d52f72842b1780c15
"mime-db@npm:1.49.0, mime-db@npm:>= 1.43.0 < 2":
version: 1.49.0
resolution: "mime-db@npm:1.49.0"
checksum: 3744efc45b17896ff8a5934a761c434d5ffe3c7816662002d799ca9934347e00f99ae4d9b4ddf1c48d391cc9e522cc4523a6e77e7701f8e27c426e3e1d6e215a
languageName: node
linkType: hard
@ -11274,12 +11399,12 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24":
version: 2.1.27
resolution: "mime-types@npm:2.1.27"
"mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24":
version: 2.1.32
resolution: "mime-types@npm:2.1.32"
dependencies:
mime-db: 1.44.0
checksum: 4c1f596c6ddfc1a9c37356e91f471ae6e72401288197de31ef3604cf02ef14c6ac661adce55cece1f1c626a96d780ffd47435619606c103cb967fb007729eefb
mime-db: 1.49.0
checksum: 4487dfd2f872126d2c219ec731ad47a6169a438d5a4cce6ecef7594ce08eaefaf0d85429485a76ec005f095016c7ec488a24cf8bfcc0ea06de0355e23395746f
languageName: node
linkType: hard
@ -11292,15 +11417,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"mime@npm:^2.4.4":
version: 2.4.4
resolution: "mime@npm:2.4.4"
bin:
mime: cli.js
checksum: a8dad06df1a55f56241789ed0bd0b8b42042bf9575b35ba4bbe3051352569511d191a882168f990b2d845ce41a77b0f48347f085344494874e86ed7969f3973b
languageName: node
linkType: hard
"mimic-fn@npm:^2.1.0":
version: 2.1.0
resolution: "mimic-fn@npm:2.1.0"
@ -12055,12 +12171,14 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"opn@npm:^5.5.0":
version: 5.5.0
resolution: "opn@npm:5.5.0"
"open@npm:^8.0.9":
version: 8.2.1
resolution: "open@npm:8.2.1"
dependencies:
is-wsl: ^1.1.0
checksum: 35b677b5a1fd6c8cb1996b0607671ba79f7ce9fa029217d54eafaf6bee13eb7e700691c6a415009140fd02a435fffdfd143875f3b233b60f3f9d631c6f6b81a0
define-lazy-prop: ^2.0.0
is-docker: ^2.1.1
is-wsl: ^2.2.0
checksum: fcde0059188dd497e080436f81c5240dad0bebd331d1c856a532d4b870808bdc5770ef7c5c4b83143fd0c0577fe2b580e54c03357d695771259aa59f64cf0f40
languageName: node
linkType: hard
@ -12087,15 +12205,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"original@npm:^1.0.0":
version: 1.0.2
resolution: "original@npm:1.0.2"
dependencies:
url-parse: ^1.4.3
checksum: 8dca9311dab50c8953366127cb86b7c07bf547d6aa6dc6873a75964b7563825351440557e5724d9c652c5e99043b8295624f106af077f84bccf19592e421beb9
languageName: node
linkType: hard
"os-homedir@npm:^1.0.0":
version: 1.0.2
resolution: "os-homedir@npm:1.0.2"
@ -12129,6 +12238,15 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"p-event@npm:^4.2.0":
version: 4.2.0
resolution: "p-event@npm:4.2.0"
dependencies:
p-timeout: ^3.1.0
checksum: 8a3588f7a816a20726a3262dfeee70a631e3997e4773d23219176333eda55cce9a76219e3d2b441b331eb746e14fdb381eb2694ab9ff2fcf87c846462696fe89
languageName: node
linkType: hard
"p-finally@npm:^1.0.0":
version: 1.0.0
resolution: "p-finally@npm:1.0.0"
@ -12222,12 +12340,22 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"p-retry@npm:^3.0.1":
version: 3.0.1
resolution: "p-retry@npm:3.0.1"
"p-retry@npm:^4.5.0":
version: 4.6.1
resolution: "p-retry@npm:4.6.1"
dependencies:
retry: ^0.12.0
checksum: 702efc63fc13ef7fc0bab9a1b08432ab38a0236efcbce64af0cf692030ba6ed8009f29ba66e3301cb98dc69ef33e7ccab29ba1ac2bea897f802f81f4f7e468dd
"@types/retry": ^0.12.0
retry: ^0.13.1
checksum: e6d540413bb3d0b96e0db44f74a7af1dce41f5005e6e84d617960110b148348c86a3987be07797749e3ddd55817dd3a8ffd6eae3428758bc2994d987e48c3a70
languageName: node
linkType: hard
"p-timeout@npm:^3.1.0":
version: 3.2.0
resolution: "p-timeout@npm:3.2.0"
dependencies:
p-finally: ^1.0.0
checksum: 3dd0eaa048780a6f23e5855df3dd45c7beacff1f820476c1d0d1bcd6648e3298752ba2c877aa1c92f6453c7dd23faaf13d9f5149fc14c0598a142e2c5e8d649c
languageName: node
linkType: hard
@ -12665,7 +12793,7 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"portfinder@npm:^1.0.26, portfinder@npm:^1.0.28":
"portfinder@npm:^1.0.28":
version: 1.0.28
resolution: "portfinder@npm:1.0.28"
dependencies:
@ -12729,6 +12857,13 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"pretty-time@npm:^1.1.0":
version: 1.1.0
resolution: "pretty-time@npm:1.1.0"
checksum: a319e7009aadbc6cfedbd8b66861327d3a0c68bd3e8794bf5b86f62b40b01b9479c5a70c76bb368ad454acce52a1216daee460cc825766e2442c04f3a84a02c9
languageName: node
linkType: hard
"process-nextick-args@npm:^1.0.7":
version: 1.0.7
resolution: "process-nextick-args@npm:1.0.7"
@ -12800,13 +12935,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"prr@npm:~1.0.1":
version: 1.0.1
resolution: "prr@npm:1.0.1"
checksum: 3bca2db0479fd38f8c4c9439139b0c42dcaadcc2fbb7bb8e0e6afaa1383457f1d19aea9e5f961d5b080f1cfc05bfa1fe9e45c97a1d3fd6d421950a73d3108381
languageName: node
linkType: hard
"pseudomap@npm:^1.0.2":
version: 1.0.2
resolution: "pseudomap@npm:1.0.2"
@ -12906,13 +13034,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"querystringify@npm:^2.1.1":
version: 2.2.0
resolution: "querystringify@npm:2.2.0"
checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15
languageName: node
linkType: hard
"randombytes@npm:^2.1.0":
version: 2.1.0
resolution: "randombytes@npm:2.1.0"
@ -13085,6 +13206,15 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"readdirp@npm:~3.6.0":
version: 3.6.0
resolution: "readdirp@npm:3.6.0"
dependencies:
picomatch: ^2.2.1
checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320
languageName: node
linkType: hard
"rechoir@npm:^0.6.2":
version: 0.6.2
resolution: "rechoir@npm:0.6.2"
@ -13352,15 +13482,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"resolve-cwd@npm:^2.0.0":
version: 2.0.0
resolution: "resolve-cwd@npm:2.0.0"
dependencies:
resolve-from: ^3.0.0
checksum: e7c16880c460656e77f102d537a6dc82b3657d9173697cd6ea82ffce37df96f6c1fc79d0bb35fd73fff8871ac13f21b4396958b5f0a13e5b99c97d69f5e319fa
languageName: node
linkType: hard
"resolve-cwd@npm:^3.0.0":
version: 3.0.0
resolution: "resolve-cwd@npm:3.0.0"
@ -13471,6 +13592,13 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"retry@npm:^0.13.1":
version: 0.13.1
resolution: "retry@npm:0.13.1"
checksum: 47c4d5be674f7c13eee4cfe927345023972197dbbdfba5d3af7e461d13b44de1bfd663bfc80d2f601f8ef3fc8164c16dd99655a221921954a65d044a2fc1233b
languageName: node
linkType: hard
"reusify@npm:^1.0.4":
version: 1.0.4
resolution: "reusify@npm:1.0.4"
@ -13654,17 +13782,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"schema-utils@npm:^1.0.0":
version: 1.0.0
resolution: "schema-utils@npm:1.0.0"
dependencies:
ajv: ^6.1.0
ajv-errors: ^1.0.0
ajv-keywords: ^3.1.0
checksum: e8273b4f6eff9ddf4a4f4c11daf7b96b900237bf8859c86fa1e9b4fab416b72d7ea92468f8db89c18a3499a1070206e1c8a750c83b42d5325fc659cbb55eee88
languageName: node
linkType: hard
"schema-utils@npm:^2.6.5":
version: 2.6.5
resolution: "schema-utils@npm:2.6.5"
@ -13675,14 +13792,14 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"schema-utils@npm:^3.0.0":
version: 3.0.0
resolution: "schema-utils@npm:3.0.0"
"schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1":
version: 3.1.1
resolution: "schema-utils@npm:3.1.1"
dependencies:
"@types/json-schema": ^7.0.6
"@types/json-schema": ^7.0.8
ajv: ^6.12.5
ajv-keywords: ^3.5.2
checksum: 56dc93b4f6abe91aa2b76b2c656610cc6d491297f4e6866340bc7b6b226b521a2969ab2498cd9e6c59eda670b730a9c8695404ca56c08643c3b95c5e174588c8
checksum: fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce
languageName: node
linkType: hard
@ -13693,12 +13810,12 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"selfsigned@npm:^1.10.8":
version: 1.10.8
resolution: "selfsigned@npm:1.10.8"
"selfsigned@npm:^1.10.11":
version: 1.10.11
resolution: "selfsigned@npm:1.10.11"
dependencies:
node-forge: ^0.10.0
checksum: c7028385cb3c011c6d7a4fe56d0f94ac1511ad175a87b49e7192f8ea43d1363d5f24283b2831071c0ad2d26ad19b9a6e81dba7f052490c245001ee61a2541e7d
checksum: 1fd8fd317dc0b7d713d12d828131ac03c53abf41c4538b263fecd37bbc15688526c631654049ff00806b757ccb85492de6a13d6fefcad5cb54926631e48a76e1
languageName: node
linkType: hard
@ -14054,20 +14171,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"sockjs-client@npm:^1.5.0":
version: 1.5.0
resolution: "sockjs-client@npm:1.5.0"
dependencies:
debug: ^3.2.6
eventsource: ^1.0.7
faye-websocket: ^0.11.3
inherits: ^2.0.4
json3: ^3.3.3
url-parse: ^1.4.7
checksum: b09203361c3fee6fafac1a78fedf3a73879c278fbf56a96b4deac3a2eea8973804b04a8ea1ff4fe00856ff01a9ca73a574a31718ed477e61774830eb24844541
languageName: node
linkType: hard
"sockjs@npm:^0.3.21":
version: 0.3.21
resolution: "sockjs@npm:0.3.21"
@ -14127,13 +14230,13 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.19":
version: 0.5.19
resolution: "source-map-support@npm:0.5.19"
"source-map-support@npm:^0.5.19, source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.20":
version: 0.5.20
resolution: "source-map-support@npm:0.5.20"
dependencies:
buffer-from: ^1.0.0
source-map: ^0.6.0
checksum: c72802fdba9cb62b92baef18cc14cc4047608b77f0353e6c36dd993444149a466a2845332c5540d4a6630957254f0f68f4ef5a0120c33d2e83974c51a05afbac
checksum: 43946aff452011960d16154304b11011e0185549493e65dd90da045959409fb2d266ba1c854fff3d5949f8e59382e3fcc7f7c5fa66136007a6750ad06c6c0baa
languageName: node
linkType: hard
@ -14298,6 +14401,15 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"std-env@npm:^2.2.1":
version: 2.3.1
resolution: "std-env@npm:2.3.1"
dependencies:
ci-info: ^3.1.1
checksum: 049be0d6fb7ff544b3061a53ccaddd3ab2f6930f50b432f54dc82b22cb813c6e408ed69807c7c6bc592fccfc92d5c431dcc1aacd7c9ca99d304948f3149a08da
languageName: node
linkType: hard
"stream-exhaust@npm:^1.0.1":
version: 1.0.2
resolution: "stream-exhaust@npm:1.0.2"
@ -14474,6 +14586,15 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"strip-ansi@npm:^7.0.0":
version: 7.0.1
resolution: "strip-ansi@npm:7.0.1"
dependencies:
ansi-regex: ^6.0.1
checksum: 257f78fa433520e7f9897722731d78599cb3fce29ff26a20a5e12ba4957463b50a01136f37c43707f4951817a75e90820174853d6ccc240997adc5df8f966039
languageName: node
linkType: hard
"strip-bom@npm:^2.0.0":
version: 2.0.0
resolution: "strip-bom@npm:2.0.0"
@ -14716,19 +14837,26 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.1.4":
version: 5.1.4
resolution: "terser-webpack-plugin@npm:5.1.4"
"terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.2.4":
version: 5.2.4
resolution: "terser-webpack-plugin@npm:5.2.4"
dependencies:
jest-worker: ^27.0.2
jest-worker: ^27.0.6
p-limit: ^3.1.0
schema-utils: ^3.0.0
schema-utils: ^3.1.1
serialize-javascript: ^6.0.0
source-map: ^0.6.1
terser: ^5.7.0
terser: ^5.7.2
peerDependencies:
webpack: ^5.1.0
checksum: 7e5f97ac1944aaff12460201496314ab75d842f4f088e0344ca5143caf85a340d7b0294ed6b4e32b52bbd1bea71648d6417034e889872c582c1be4840e9bd0e7
peerDependenciesMeta:
"@swc/core":
optional: true
esbuild:
optional: true
uglify-js:
optional: true
checksum: ddbcdd28f9620ecacc9b50ff31776485ad012c7f1cbef53825e4fc334a78d82e2344346e5595751916494951bc64717004c07b03ad88deeb3df4a5f76c559cc9
languageName: node
linkType: hard
@ -14745,16 +14873,16 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"terser@npm:^5.0.0, terser@npm:^5.7.0":
version: 5.7.0
resolution: "terser@npm:5.7.0"
"terser@npm:^5.0.0, terser@npm:^5.7.2":
version: 5.9.0
resolution: "terser@npm:5.9.0"
dependencies:
commander: ^2.20.0
source-map: ~0.7.2
source-map-support: ~0.5.19
source-map-support: ~0.5.20
bin:
terser: bin/terser
checksum: 3abeb551865079b27e2890dbec866054967d1963fc80a81e5e14e414c43db88ff53a5e88844c145df11bed01b28040aa96afd82113c6d1a6ad28409b6cae4fde
checksum: 11c1246b1991015a8881742878af779e3863fad42f626ffda957dbf28c94bf51e7994cffb9ffbec86ff3c23ab45ffa6d79d453c15e664306e35fc7b2c4eee5f4
languageName: node
linkType: hard
@ -14981,41 +15109,6 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"ts-mocha@npm:^8.0.0":
version: 8.0.0
resolution: "ts-mocha@npm:8.0.0"
dependencies:
ts-node: 7.0.1
tsconfig-paths: ^3.5.0
peerDependencies:
mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X
dependenciesMeta:
tsconfig-paths:
optional: true
bin:
ts-mocha: bin/ts-mocha
checksum: 66062e82f9be469cdcf51b120ff83e4a69c664fafb3ee020708cb5d65e87ee6bd8c98703a1012f2fb583d540dcbe14e0be77a36ea69a6c08ba3c89345859d8d9
languageName: node
linkType: hard
"ts-node@npm:7.0.1":
version: 7.0.1
resolution: "ts-node@npm:7.0.1"
dependencies:
arrify: ^1.0.0
buffer-from: ^1.1.0
diff: ^3.1.0
make-error: ^1.1.1
minimist: ^1.2.0
mkdirp: ^0.5.1
source-map-support: ^0.5.6
yn: ^2.0.0
bin:
ts-node: dist/bin.js
checksum: 07ed6ea1805361828737a767cfd6c57ea6e267ee8679282afb933610af02405e1a87c1f2aea1d38ed8e66b34fcbf6272b6021ab95d78849105d2e57fc283870b
languageName: node
linkType: hard
"ts-simple-type@npm:~1.0.5":
version: 1.0.7
resolution: "ts-simple-type@npm:1.0.7"
@ -15023,7 +15116,7 @@ fsevents@~2.3.1:
languageName: node
linkType: hard
"tsconfig-paths@npm:^3.5.0, tsconfig-paths@npm:^3.9.0":
"tsconfig-paths@npm:^3.9.0":
version: 3.9.0
resolution: "tsconfig-paths@npm:3.9.0"
dependencies:
@ -15400,16 +15493,6 @@ typescript@^4.3.5:
languageName: node
linkType: hard
"url-parse@npm:^1.4.3, url-parse@npm:^1.4.7":
version: 1.5.1
resolution: "url-parse@npm:1.5.1"
dependencies:
querystringify: ^2.1.1
requires-port: ^1.0.0
checksum: ce5c400db52d83b941944502000081e2338e46834cf16f2888961dc034ea5d49dbeb85ac8fdbe28c3fe738c09320a71a2f6d9286b748895cd464b1e208b6b991
languageName: node
linkType: hard
"url@npm:^0.11.0":
version: 0.11.0
resolution: "url@npm:0.11.0"
@ -15450,7 +15533,7 @@ typescript@^4.3.5:
languageName: node
linkType: hard
"uuid@npm:^3.3.2, uuid@npm:^3.4.0":
"uuid@npm:^3.4.0":
version: 3.4.0
resolution: "uuid@npm:3.4.0"
bin:
@ -15750,14 +15833,14 @@ typescript@^4.3.5:
languageName: node
linkType: hard
"webpack-cli@npm:^4.7.2":
version: 4.7.2
resolution: "webpack-cli@npm:4.7.2"
"webpack-cli@npm:^4.8.0":
version: 4.8.0
resolution: "webpack-cli@npm:4.8.0"
dependencies:
"@discoveryjs/json-ext": ^0.5.0
"@webpack-cli/configtest": ^1.0.4
"@webpack-cli/info": ^1.3.0
"@webpack-cli/serve": ^1.5.1
"@webpack-cli/serve": ^1.5.2
colorette: ^1.2.1
commander: ^7.0.0
execa: ^5.0.0
@ -15780,92 +15863,74 @@ typescript@^4.3.5:
optional: true
bin:
webpack-cli: bin/cli.js
checksum: 4a7ed6099d2da6d0c6e2d4914d45b53a5200cfc811c38eb622b792a364a2bec8104517bf5c33a616a4f21d17d7041e5ed1075c9a81e1593f09a7971bb3107f1a
checksum: 3ab4b5af09b56bb14d2ef2dd5613a14d01d9b4319bffb854edc379ef0f44e49ec31f96fb8cdd9dc8df54f6c94e9240d647a82d3cd0871fc5c313ab89fc2cd935
languageName: node
linkType: hard
"webpack-dev-middleware@npm:^3.7.2":
version: 3.7.2
resolution: "webpack-dev-middleware@npm:3.7.2"
"webpack-dev-middleware@npm:^5.2.1":
version: 5.2.1
resolution: "webpack-dev-middleware@npm:5.2.1"
dependencies:
memory-fs: ^0.4.1
mime: ^2.4.4
mkdirp: ^0.5.1
colorette: ^2.0.10
memfs: ^3.2.2
mime-types: ^2.1.31
range-parser: ^1.2.1
webpack-log: ^2.0.0
peerDependencies:
webpack: ^4.0.0
checksum: d7320d7a8c65fa1af702c5b723ffb4e55219f340025ced17871e3d2e8f3a7cde3ad505cfd1572d31955d7d972bf3d29e7007577e28bad8d469dc3d5c64d30b74
languageName: node
linkType: hard
"webpack-dev-server@npm:^3.11.2":
version: 3.11.2
resolution: "webpack-dev-server@npm:3.11.2"
dependencies:
ansi-html: 0.0.7
bonjour: ^3.5.0
chokidar: ^2.1.8
compression: ^1.7.4
connect-history-api-fallback: ^1.6.0
debug: ^4.1.1
del: ^4.1.1
express: ^4.17.1
html-entities: ^1.3.1
http-proxy-middleware: 0.19.1
import-local: ^2.0.0
internal-ip: ^4.3.0
ip: ^1.1.5
is-absolute-url: ^3.0.3
killable: ^1.0.1
loglevel: ^1.6.8
opn: ^5.5.0
p-retry: ^3.0.1
portfinder: ^1.0.26
schema-utils: ^1.0.0
selfsigned: ^1.10.8
semver: ^6.3.0
serve-index: ^1.9.1
sockjs: ^0.3.21
sockjs-client: ^1.5.0
spdy: ^4.0.2
strip-ansi: ^3.0.1
supports-color: ^6.1.0
url: ^0.11.0
webpack-dev-middleware: ^3.7.2
webpack-log: ^2.0.0
ws: ^6.2.1
yargs: ^13.3.2
schema-utils: ^3.1.0
peerDependencies:
webpack: ^4.0.0 || ^5.0.0
checksum: 06f3ef14ec983d115d7109f37312fc691c867c95fe7579784c7b80db0a2be77392fa27de444d0a937546da68c7e99640c13df73dc1351bbed7ebab4cc5569f14
languageName: node
linkType: hard
"webpack-dev-server@npm:^4.3.0":
version: 4.3.0
resolution: "webpack-dev-server@npm:4.3.0"
dependencies:
ansi-html-community: ^0.0.8
bonjour: ^3.5.0
chokidar: ^3.5.1
colorette: ^2.0.10
compression: ^1.7.4
connect-history-api-fallback: ^1.6.0
del: ^6.0.0
express: ^4.17.1
graceful-fs: ^4.2.6
html-entities: ^2.3.2
http-proxy-middleware: ^2.0.0
internal-ip: ^6.2.0
ipaddr.js: ^2.0.1
open: ^8.0.9
p-retry: ^4.5.0
portfinder: ^1.0.28
schema-utils: ^3.1.0
selfsigned: ^1.10.11
serve-index: ^1.9.1
sockjs: ^0.3.21
spdy: ^4.0.2
strip-ansi: ^7.0.0
url: ^0.11.0
webpack-dev-middleware: ^5.2.1
ws: ^8.1.0
peerDependencies:
webpack: ^4.37.0 || ^5.0.0
peerDependenciesMeta:
webpack-cli:
optional: true
bin:
webpack-dev-server: bin/webpack-dev-server.js
checksum: d2bfa2e9a33f96dc5af8f771e9978956e59c3efcad3deaca246ea7ff219c5587ebcf20ea0f0b6af251dec5e8111c0e473aa43a57bc9a88fb3ad8573f4a321805
checksum: 7ee8ae969a1eff65caedc7dd935a3bf62f0ca21fdd5d169884cba525d9c970e551fa250f230bda0c57a76cd61411fae5bfcbc104bafff14c9cad7f4a6f9b0022
languageName: node
linkType: hard
"webpack-log@npm:^2.0.0":
version: 2.0.0
resolution: "webpack-log@npm:2.0.0"
dependencies:
ansi-colors: ^3.0.0
uuid: ^3.3.2
checksum: 4757179310995e20633ec2d77a8c1ac11e4135c84745f57148692f8195f1c0f8ec122c77d0dc16fc484b7d301df6674f36c9fc6b1ff06b5cf142abaaf5d24f4f
languageName: node
linkType: hard
"webpack-manifest-plugin@npm:^3.1.1":
version: 3.1.1
resolution: "webpack-manifest-plugin@npm:3.1.1"
"webpack-manifest-plugin@npm:^4.0.2":
version: 4.0.2
resolution: "webpack-manifest-plugin@npm:4.0.2"
dependencies:
tapable: ^2.0.0
webpack-sources: ^2.2.0
peerDependencies:
webpack: ">=4.44.2"
checksum: 739b58d077dd82f78c3c79b4e4be6affb61abe59876533f739362c0ef6608c2983c9477ed2c7692a77599a0068b63f41785ce5dfb0f5819ad537ff66fafed4fb
webpack: ^4.44.2 || ^5.47.0
checksum: 7f8a338b977bb9a8be10196d17e033f965b97735d36258513e5104b148c8ad1da8441bb8f9c8580b9455f40201ac2ac2a2edcce6ef60e46f072519c0cc0d1f70
languageName: node
linkType: hard
@ -15879,7 +15944,7 @@ typescript@^4.3.5:
languageName: node
linkType: hard
"webpack-sources@npm:^2.2.0, webpack-sources@npm:^2.3.0":
"webpack-sources@npm:^2.2.0":
version: 2.3.0
resolution: "webpack-sources@npm:2.3.0"
dependencies:
@ -15889,20 +15954,28 @@ typescript@^4.3.5:
languageName: node
linkType: hard
"webpack@npm:^5.43.0":
version: 5.43.0
resolution: "webpack@npm:5.43.0"
"webpack-sources@npm:^3.2.0":
version: 3.2.1
resolution: "webpack-sources@npm:3.2.1"
checksum: 438ee4759f70ee2d5ae17a2fc5e66a1f71f0ba8ad9de77edfaf4180c82925f6504790c5a1ddfa2a6d409212cd9e7332a6822d6acabb0f39303bc3b14354872e6
languageName: node
linkType: hard
"webpack@npm:^5.55.1":
version: 5.55.1
resolution: "webpack@npm:5.55.1"
dependencies:
"@types/eslint-scope": ^3.7.0
"@types/estree": ^0.0.49
"@types/estree": ^0.0.50
"@webassemblyjs/ast": 1.11.1
"@webassemblyjs/wasm-edit": 1.11.1
"@webassemblyjs/wasm-parser": 1.11.1
acorn: ^8.4.1
acorn-import-assertions: ^1.7.6
browserslist: ^4.14.5
chrome-trace-event: ^1.0.2
enhanced-resolve: ^5.8.0
es-module-lexer: ^0.7.1
enhanced-resolve: ^5.8.3
es-module-lexer: ^0.9.0
eslint-scope: 5.1.1
events: ^3.2.0
glob-to-regexp: ^0.4.1
@ -15911,17 +15984,35 @@ typescript@^4.3.5:
loader-runner: ^4.2.0
mime-types: ^2.1.27
neo-async: ^2.6.2
schema-utils: ^3.0.0
schema-utils: ^3.1.0
tapable: ^2.1.1
terser-webpack-plugin: ^5.1.3
watchpack: ^2.2.0
webpack-sources: ^2.3.0
webpack-sources: ^3.2.0
peerDependenciesMeta:
webpack-cli:
optional: true
bin:
webpack: bin/webpack.js
checksum: 24f3a34758c8836db22d8f107a11ca63ad76a23c6a60759ee27386e77df5674ba71f15af9dc5077e2d049c4e6cf278f9e047725ad65ffbe6cb1f797aa51ebcca
checksum: 70b447f76d4320bd82229cf7b787c6067c40d35142295408dd662eaa3bdf0d97f587d7913b981e4cc25cff08bb14307b85c18ed4a7b270b22e6586c5770d3f1e
languageName: node
linkType: hard
"webpackbar@npm:^5.0.0-3":
version: 5.0.0-3
resolution: "webpackbar@npm:5.0.0-3"
dependencies:
ansi-escapes: ^4.3.1
chalk: ^4.1.0
consola: ^2.15.0
figures: ^3.2.0
pretty-time: ^1.1.0
std-env: ^2.2.1
text-table: ^0.2.0
wrap-ansi: ^7.0.0
peerDependencies:
webpack: 3 || 4 || 5
checksum: 21cd1a084107538b1803396e004a48f981f9a727be58a670a1154d61f5650ec8cdae6f987f0630519ff566259b56c7dbc81d1eb0d3e1c43d3d287ae7ec973b48
languageName: node
linkType: hard
@ -16307,15 +16398,6 @@ typescript@^4.3.5:
languageName: node
linkType: hard
"ws@npm:^6.2.1":
version: 6.2.2
resolution: "ws@npm:6.2.2"
dependencies:
async-limiter: ~1.0.0
checksum: aec3154ec51477c094ac2cb5946a156e17561a581fa27005cbf22c53ac57f8d4e5f791dd4bbba6a488602cb28778c8ab7df06251d590507c3c550fd8ebeee949
languageName: node
linkType: hard
"ws@npm:^7.3.1":
version: 7.4.0
resolution: "ws@npm:7.4.0"
@ -16331,6 +16413,21 @@ typescript@^4.3.5:
languageName: node
linkType: hard
"ws@npm:^8.1.0":
version: 8.2.2
resolution: "ws@npm:8.2.2"
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: ^5.0.2
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
checksum: 25e764c631141bdca45badc86e69437b8791e57e461f9a16c0f7cd779baf70c3fbba07ecdd9e0d34fea1155ddcf62ef165cd7f81b68ed545bc7d455c15a85fb0
languageName: node
linkType: hard
"xhr@npm:^2.0.1":
version: 2.5.0
resolution: "xhr@npm:2.5.0"
@ -16497,7 +16594,7 @@ typescript@^4.3.5:
languageName: node
linkType: hard
"yargs@npm:16.2.0":
"yargs@npm:16.2.0, yargs@npm:^16.2.0":
version: 16.2.0
resolution: "yargs@npm:16.2.0"
dependencies:
@ -16512,7 +16609,7 @@ typescript@^4.3.5:
languageName: node
linkType: hard
"yargs@npm:^13.2.4, yargs@npm:^13.3.2":
"yargs@npm:^13.2.4":
version: 13.3.2
resolution: "yargs@npm:13.3.2"
dependencies:
@ -16577,13 +16674,6 @@ typescript@^4.3.5:
languageName: node
linkType: hard
"yn@npm:^2.0.0":
version: 2.0.0
resolution: "yn@npm:2.0.0"
checksum: 9d49527cb3e9a0948cc057223810bf30607bf04b9ff7666cc1681a6501d660b60d90000c16f9e29311b0f28d8a06222ada565ccdca5f1049cdfefb1908217572
languageName: node
linkType: hard
"yocto-queue@npm:^0.1.0":
version: 0.1.0
resolution: "yocto-queue@npm:0.1.0"