diff --git a/.yarn/cache/@esbuild-darwin-arm64-npm-0.19.12-09699ac6cb-8.zip b/.yarn/cache/@esbuild-darwin-arm64-npm-0.19.12-09699ac6cb-8.zip new file mode 100644 index 0000000000..ba39e7b7b8 Binary files /dev/null and b/.yarn/cache/@esbuild-darwin-arm64-npm-0.19.12-09699ac6cb-8.zip differ diff --git a/.yarn/cache/@rauschma-stringio-npm-1.4.0-d593e66bfb-0c6fae0519.zip b/.yarn/cache/@rauschma-stringio-npm-1.4.0-d593e66bfb-0c6fae0519.zip deleted file mode 100644 index d3f54fb373..0000000000 Binary files a/.yarn/cache/@rauschma-stringio-npm-1.4.0-d593e66bfb-0c6fae0519.zip and /dev/null differ diff --git a/.yarn/cache/@types-node-npm-10.17.60-63ac1f669f-2cdb3a77d0.zip b/.yarn/cache/@types-node-npm-10.17.60-63ac1f669f-2cdb3a77d0.zip deleted file mode 100644 index 3f120443e1..0000000000 Binary files a/.yarn/cache/@types-node-npm-10.17.60-63ac1f669f-2cdb3a77d0.zip and /dev/null differ diff --git a/.yarn/cache/@types-node-npm-20.4.2-0b33863e43-99e544ea75.zip b/.yarn/cache/@types-node-npm-20.4.2-0b33863e43-99e544ea75.zip deleted file mode 100644 index dfad22ab4e..0000000000 Binary files a/.yarn/cache/@types-node-npm-20.4.2-0b33863e43-99e544ea75.zip and /dev/null differ diff --git a/.yarn/cache/esbuild-npm-0.19.12-fb5a3a4313-2936e29107.zip b/.yarn/cache/esbuild-npm-0.19.12-fb5a3a4313-2936e29107.zip new file mode 100644 index 0000000000..b479b5f67f Binary files /dev/null and b/.yarn/cache/esbuild-npm-0.19.12-fb5a3a4313-2936e29107.zip differ diff --git a/.yarn/cache/fsevents-npm-2.3.3-ce9fb0ffae-11e6ea6fea.zip b/.yarn/cache/fsevents-npm-2.3.3-ce9fb0ffae-11e6ea6fea.zip new file mode 100644 index 0000000000..044eb1ba3b Binary files /dev/null and b/.yarn/cache/fsevents-npm-2.3.3-ce9fb0ffae-11e6ea6fea.zip differ diff --git a/.yarn/cache/fsevents-patch-21ad2b1333-8.zip b/.yarn/cache/fsevents-patch-21ad2b1333-8.zip new file mode 100644 index 0000000000..c6a96dfcdf Binary files /dev/null and b/.yarn/cache/fsevents-patch-21ad2b1333-8.zip differ diff --git a/.yarn/cache/get-tsconfig-npm-4.7.2-8fbccd9fcf-1723589032.zip b/.yarn/cache/get-tsconfig-npm-4.7.2-8fbccd9fcf-1723589032.zip new file mode 100644 index 0000000000..6580ce4351 Binary files /dev/null and b/.yarn/cache/get-tsconfig-npm-4.7.2-8fbccd9fcf-1723589032.zip differ diff --git a/.yarn/cache/node-ts-npm-6.0.1-24ddc79c7b-15f799ca5d.zip b/.yarn/cache/node-ts-npm-6.0.1-24ddc79c7b-15f799ca5d.zip deleted file mode 100644 index 24a57b7e68..0000000000 Binary files a/.yarn/cache/node-ts-npm-6.0.1-24ddc79c7b-15f799ca5d.zip and /dev/null differ diff --git a/.yarn/cache/recursive-readdir-npm-2.2.3-3f177ebd90-88ec96e276.zip b/.yarn/cache/recursive-readdir-npm-2.2.3-3f177ebd90-88ec96e276.zip deleted file mode 100644 index 20c8047e9a..0000000000 Binary files a/.yarn/cache/recursive-readdir-npm-2.2.3-3f177ebd90-88ec96e276.zip and /dev/null differ diff --git a/.yarn/cache/resolve-pkg-maps-npm-1.0.0-135b70c854-1012afc566.zip b/.yarn/cache/resolve-pkg-maps-npm-1.0.0-135b70c854-1012afc566.zip new file mode 100644 index 0000000000..53ff3fc69e Binary files /dev/null and b/.yarn/cache/resolve-pkg-maps-npm-1.0.0-135b70c854-1012afc566.zip differ diff --git a/.yarn/cache/tsx-npm-4.7.0-86d7b66640-a3a17fa8a4.zip b/.yarn/cache/tsx-npm-4.7.0-86d7b66640-a3a17fa8a4.zip new file mode 100644 index 0000000000..1603da5b8c Binary files /dev/null and b/.yarn/cache/tsx-npm-4.7.0-86d7b66640-a3a17fa8a4.zip differ diff --git a/packages/odyssey-react-mui/package.json b/packages/odyssey-react-mui/package.json index 9274556526..f344ae1f0e 100644 --- a/packages/odyssey-react-mui/package.json +++ b/packages/odyssey-react-mui/package.json @@ -46,10 +46,10 @@ "dev:source": "yarn build:source --watch", "dev:types": "yarn build:types --watch", "dev": "npm-run-all --parallel dev:source dev:types", - "generate:i18n": "node scripts/properties-to-ts.js bundle", + "generate:i18n": "tsx scripts/properties-to-ts.ts bundle", "generate:iconComponents": "svgr ../odyssey-icons/dist/icons --out-dir ./src/icons.generated", "generate:icons": "npm-run-all --sequential build:cleanIconComponents generate:iconComponents build:cleanIconsIndex generate:iconsIndex", - "generate:iconsIndex": "ts-node --esm scripts/generateIconsIndex.ts", + "generate:iconsIndex": "tsx scripts/generateIconsIndex.ts", "lint": "eslint .", "prepack": "yarn exec prepack", "test": "jest", @@ -75,7 +75,7 @@ "i18next": "^23.5.1", "material-react-table": "^2.0.2", "react-i18next": "^12.2.2", - "ts-node": "^10.9.1", + "tsx": "^4.7.0", "word-wrap": "~1.2.5" }, "devDependencies": { @@ -96,18 +96,15 @@ "@types/jest-axe": "^3.5.1", "@types/react": "^17.0.30", "@types/react-dom": "^17.0.5", - "@types/yargs": "^17", "babel-plugin-import": "^1.13.5", "eslint": "^8.44.0", "jest": "^29.6.1", "jest-axe": "^5.0.1", "jest-environment-jsdom": "^29.6.1", - "node-ts": "^6.0.1", "npm-run-all": "^4.1.5", "properties": "1.2.1", "react": "^17.0.2", "react-dom": "^17.0.2", - "recursive-readdir": "^2.2.2", "regenerator-runtime": "^0.13.7", "rimraf": "^5.0.1", "stylelint": "^14.13.0", diff --git a/packages/odyssey-react-mui/scripts/properties-to-ts.js b/packages/odyssey-react-mui/scripts/properties-to-ts.ts similarity index 50% rename from packages/odyssey-react-mui/scripts/properties-to-ts.js rename to packages/odyssey-react-mui/scripts/properties-to-ts.ts index 0ae3724818..e8a9dc0927 100644 --- a/packages/odyssey-react-mui/scripts/properties-to-ts.js +++ b/packages/odyssey-react-mui/scripts/properties-to-ts.ts @@ -1,3 +1,4 @@ +#!/usr/bin/env node /*! * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved. * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.") @@ -10,86 +11,99 @@ * See the License for the specific language governing permissions and limitations under the License. */ -// Part of this has been copied over from @okta/ui-build-tools' own internal node script +// This was originally copied over from @okta/ui-build-tools' own internal node script: // https://github.com/okta/ui-build-tools/blob/main/packages/clis/i18n/properties-to-json.js -const { resolve, join, basename, extname } = require("node:path"); -const { - readFileSync, - writeFileSync, - rmSync, +import { basename, extname, join, resolve } from "node:path"; +import { existsSync, mkdirSync, -} = require("node:fs"); -const properties = require("properties"); -const readdir = require("recursive-readdir"); -const yargs = require("yargs"); -const { hideBin } = require("yargs/helpers"); + readFileSync, + rmSync, + writeFileSync, +} from "node:fs"; +import { readdir } from "node:fs/promises"; +import properties from "properties"; +import { hideBin } from "yargs/helpers"; +import yargs from "yargs/yargs"; -const convert = (baseFiles, propertiesTargetDir) => { - for (const src of baseFiles) { - const filename = basename(src); +const convert = (baseFiles: string[], propertiesTargetDir: string) => { + baseFiles.forEach((src) => { const extension = extname(src); + const filename = basename(src, extension); const source = `${readFileSync(src)}`; - properties.parse(source, function (error, obj) { + properties.parse(source, (error, propertiesJson) => { if (error) { return console.error(error); } - const targetFile = join( - propertiesTargetDir, - filename.replace(extension, ".ts") - ); + const targetFile = join(propertiesTargetDir, filename.concat(".ts")); + writeFileSync( targetFile, - `export const translation = ${JSON.stringify(obj)};` + `export const translation = ${JSON.stringify(propertiesJson)};` ); }); - } + }); }; -async function convertPropertiesToJson({ resourcePath, targetJsonPath }) { - const sourceDirectory = resolve(resourcePath); - const propertiesTargetDirectory = resolve(targetJsonPath); +async function convertPropertiesToJson({ + jsonOutputPath, + propertiesFilesPath, +}: { + jsonOutputPath: string; + propertiesFilesPath: string; +}) { + const sourceDirectory = resolve(propertiesFilesPath); + const propertiesTargetDirectory = resolve(jsonOutputPath); if (!existsSync(sourceDirectory)) { mkdirSync(sourceDirectory); } + if (existsSync(propertiesTargetDirectory)) { rmSync(propertiesTargetDirectory, { recursive: true, force: true }); } + mkdirSync(propertiesTargetDirectory); - let baseFiles = await readdir(sourceDirectory); - convert(baseFiles, propertiesTargetDirectory); + const propertiesFilePaths = await readdir(sourceDirectory, { + recursive: true, + }); + + convert( + propertiesFilePaths + .filter((propertiesFilePath) => + propertiesFilePath.endsWith(".properties") + ) + .map((propertiesFilePath) => join(sourceDirectory, propertiesFilePath)), + propertiesTargetDirectory + ); } yargs(hideBin(process.argv)) .scriptName("properties-to-ts") .usage("$0 [args]") .command( - "bundle", - "Converts properties file to ts", - (yargs) => { + "bundle [propertiesFilesPath] [jsonOutputPath]", + "Converts `properties` files to TypeScript types.", + (yargs) => yargs - .positional("resourcePath", { - type: "string", + .positional("propertiesFilesPath", { default: "src/properties", describe: "A relative path to resources based on cwd.", - }) - .positional("targetJsonPath", { type: "string", + }) + .positional("jsonOutputPath", { default: "src/properties/ts", describe: "A relative path to directory for ts file output", - }); - }, - function (argv) { - const { resourcePath, targetJsonPath } = argv; - + type: "string", + }), + (argv) => { convertPropertiesToJson({ - resourcePath, - targetJsonPath, + jsonOutputPath: argv.jsonOutputPath, + propertiesFilesPath: argv.propertiesFilesPath, }); } ) diff --git a/packages/odyssey-react-mui/src/@types/properties.d.ts b/packages/odyssey-react-mui/src/@types/properties.d.ts new file mode 100644 index 0000000000..af246b3ce6 --- /dev/null +++ b/packages/odyssey-react-mui/src/@types/properties.d.ts @@ -0,0 +1,292 @@ +/*! + * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved. + * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.") + * + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * + * See the License for the specific language governing permissions and limitations under the License. + */ + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +/** + * Copied this in from a PR that will hopefully get merged: + * @see https://github.com/gagle/node-properties/pull/35 + */ +declare module "properties" { + export interface ParseOptions { + /** + * By default `parse()` reads a String. + * If you want to read a file, set this option to true. + * If this option is used, the callback is mandatory. + * It gets 2 parameters, a possible error and the object with all the properties. + */ + path?: boolean; + + /** + * Allows you to add additional comment tokens. + * The token must be a single printable non-whitespae ascii character. + * If the `strict` option is not set, the tokens `#` and `!` are parsed as comment tokens. + * + * @example + * comments: ";" + * @example + * comments: [";", "@"] + */ + comments?: string | string[]; + + /** + * Allows you to add additional separator tokens. + * The token must be a single printable non-whitespae ascii character. + * If the `strict` option is not set, the tokens `=` and `:` are parsed as comment tokens. + * + * @example + * separators: "-" + * @example + * separators: ["-", ">"] + */ + separators?: string | string[]; + + /** + * This option can be used with the `comments` and `separators` options. + * If true, **only** the tokens specified in these options are used to parse comments and separators. + */ + strict?: boolean; + + /** + * Parses INI sections. + * Read the INI section for further details. + * + * @link https://www.npmjs.com/package/properties#ini + */ + sections?: boolean; + + /** + * Parses dot separated keys as JavaScript objects. + * + * Look at the namespaces section for further details. + * @link https://www.npmjs.com/package/properties#namespaces + */ + namespaces?: boolean; + + /** + * Allows you to read the value of a key while the file is being parsed. + * + * Look at the variables section for further details. + * @link https://www.npmjs.com/package/properties#variables + */ + variables?: boolean; + + /** + * External variables can be passed to the file if the variables option is enabled. + * + * Look at the variables section for further details. + * @link https://www.npmjs.com/package/properties#variables + */ + vars?: boolean; + + /** + * Files can be linked and imported with the include key. + * If this option is used, the callback is mandatory. + * + * Look at the include section for further details. + * @link https://www.npmjs.com/package/properties#include + */ + include?: boolean; + + /** + * Each property or section can be removed or modified from the final object. + * It's similar to the reviver of the `JSON.parse()` function. + * + * The reviver it's exactly the same as the replacer from `stringify()`. + * The same function can be reused. + * + * The callback gets 3 parameters: key, value and section. + * + * A property has a key and a value and can belong to a section. + * If it's a global property, the section is set to null. + * If **undefined** is returned, the property will be removed from the final object, otherwise the returned value will be used as the property value. + * + * If the key and the value are set to null, then it's a section line. + * If it returns a falsy value, it won't be added to the final object, the entire section _including all the properties_ will be discarded. + * If it returns a truthy value, the section is parsed. + * + * For your convenience, to know whether the line is a property or section you can access to `this.isProperty` and `this.isSection` from inside the replacer function. + * Also, `this.assert()` can be used to return the default value, the unmodified value that will be used to parse the line. + * + * Look at the reviver example for further details. + * @link https://github.com/gagle/node-properties/blob/master/examples/reviver/reviver.js + */ + reviver?: (this: Context, key: any, value: any) => any; + } + + export interface Context { + assert(): any; + } + + /** + * Parses a .properties string. + * + * @param data + * @param options + */ + export function parse(data: string, options?: ParseOptions): object; + + /** + * Parses a .properties string. + * + * If a callback is given, the result is returned as the second parameter. Some options will require a callback. + * + * @param data + * @param cb + */ + export function parse( + data: string, + cb: (err: Error, result: { [key: string]: unknown } | undefined) => void + ): void; + + /** + * Parses a .properties string. + * + * If a callback is given, the result is returned as the second parameter. Some options will require a callback. + * + * @param data + * @param options + * @param cb + */ + export function parse( + data: string, + options: ParseOptions | undefined, + cb: (err: Error, result: { [key: string]: unknown } | undefined) => void + ): void; + + export interface StringifyOptions { + /** + * By default `stringify()` returns a string. + * If you want to write it to a file, use this option and pass the path of a file. + * If this option is used, the callback is mandatory. + * It gets two parameters, a possible error and the string. + */ + path?: string; + + /** + * The token to use to write comments. + * It must be a single printable non-whitespace ascii character. + * @default `#` + */ + comment?: string; + + /** + * The token to use to separate keys from values. + * It must be a single printable non-whitespace ascii character. + * @default `=` + */ + separator?: string; + + /** + * The .properties specification uses iso 8859-1 (latin-1) as a default encoding. + * In the other hand, Node.js has a utf8 default encoding. + * This means that if you want a full compatibility with Java, that is, you are generating a .properties file that is going to be read by a Java program, then set this option to true. + * This will encode all ascii extended and multibyte characters to their unicode string representation (`\uXXXX`). + * + * Non-printable control codes (control sets 0 and 1) are always encoded as unicode strings except `\t`, `\n`, `\f` and `\r`. + * + * If you are in a platform that can handle utf8 strings, e.g. Node.js, you don't need to use this option. + */ + unicode?: boolean; + + /** + * Each property or section can be removed or modified from the final string. + * It's similar to the replacer of the `JSON.stringify()` function. + * + * The replacer it's exatcly the same as the reviver from `parse()`. + * The same function can be reused. + * + * The callback gets three parameters: key, value and section. + * + * A property has a key and a value and can belong to a section. + * If it's a global property, the section is set to null. + * If **undefined** is returned, the property won't be stringified, otherwise the returned value will be used as the property value. + * + * If the key and the value are set to null, then it's a section line. + * If it returns a falsy value, it won't be added to the final string, the entire section _including all the properties_ will be discarded. + * If it returns a truthy value, the section is stringified. + * + * For your convenience, to know whether the line is a property or section you can access to `this.isProperty` and `this.isSection` from inside the replacer function. + * Also, `this.assert()` can be used to return the default value, the unmodified value that will be used to stringify the line. + * + * Look at the replacer example for further details. + * @link https://github.com/gagle/node-properties/blob/master/examples/replacer.js + */ + replacer?: (this: Context, key: string, value: any) => any; + } + + /** + * Stringifies an `object` or a `Stringifier`. + * + * If you don't need to add sections or comments simply pass an object, otherwise use a `Stringifier`. + * + * @param obj + * @param options + */ + export function stringify(obj: object, options?: StringifyOptions): string; + + /** + * Stringifies an `object` or a `Stringifier`. + * + * If you don't need to add sections or comments simply pass an object, otherwise use a `Stringifier`. + * + * The callback is only necessary when the `path` option is used. + * + * @param obj + * @param options + * @param cb + */ + export function stringify( + obj: object, + options: StringifyOptions | undefined, + cb: (err: Error, result: string) => void + ): void; + + /** + * This class is used when you want to add sections or comments to the final string. + * + * To create a Stringifier use the `createStringifier()` function. + * + * Look at the stringify-ini example for further details. + * @link https://github.com/gagle/node-properties/blob/master/examples/ini/stringify-ini.js + */ + export interface Stringifier { + /** + * Writes a header comment. + * It will be written to the top of the final string. + * Returns the Stringifier being used. + */ + header(comment: string): this; + + /** + * Writes a property line. + * It takes an object with three options: `key`, `value` and comment. + * Both the key and the value are converted into a string automatically. + * Returns the Stringifier being used. + */ + property(obj: { key?: string; value?: string; comment?: string }): this; + + /** + * Writes a section line. + * It gets an object with two options: `name` and `comment`. + * The name is converted into a string. + * If you don't need to write a comment, you can pass the name instead of an object. + * Returns the stringifier being used. + */ + section(obj: string | { name: string; comment?: string }): this; + } + + /** + * Returns a new `Stringifier` instance. + */ + export function createStringifier(): Stringifier; +} diff --git a/packages/odyssey-react-mui/src/icons.generated/index.ts b/packages/odyssey-react-mui/src/icons.generated/index.ts index fd4705cfa2..b98e8e945d 100644 --- a/packages/odyssey-react-mui/src/icons.generated/index.ts +++ b/packages/odyssey-react-mui/src/icons.generated/index.ts @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved. + * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved. * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.") * * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. diff --git a/packages/odyssey-react-mui/src/index.ts b/packages/odyssey-react-mui/src/index.ts index 37d6ce9feb..97b36a84fa 100644 --- a/packages/odyssey-react-mui/src/index.ts +++ b/packages/odyssey-react-mui/src/index.ts @@ -53,7 +53,6 @@ export type { } from "@mui/material"; export type { FocusHandle } from "./inputUtils"; - export { useOdysseyDesignTokens } from "./OdysseyDesignTokensContext"; export * from "./Accordion"; diff --git a/packages/odyssey-react-mui/tsconfig.json b/packages/odyssey-react-mui/tsconfig.json index c086d4a89e..65286dd1ef 100644 --- a/packages/odyssey-react-mui/tsconfig.json +++ b/packages/odyssey-react-mui/tsconfig.json @@ -3,8 +3,5 @@ "compilerOptions": { "jsx": "react-jsx", "jsxImportSource": "@emotion/react" - }, - "ts-node": { - "files": true } } diff --git a/yarn.lock b/yarn.lock index 8ca0ab17db..97da9c1d5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3102,6 +3102,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/aix-ppc64@npm:0.19.12" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/android-arm64@npm:0.18.17" @@ -3116,6 +3123,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-arm64@npm:0.19.12" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/android-arm@npm:0.18.17" @@ -3130,6 +3144,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-arm@npm:0.19.12" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/android-x64@npm:0.18.17" @@ -3144,6 +3165,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-x64@npm:0.19.12" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/darwin-arm64@npm:0.18.17" @@ -3158,6 +3186,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/darwin-arm64@npm:0.19.12" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/darwin-x64@npm:0.18.17" @@ -3172,6 +3207,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/darwin-x64@npm:0.19.12" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/freebsd-arm64@npm:0.18.17" @@ -3186,6 +3228,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/freebsd-arm64@npm:0.19.12" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/freebsd-x64@npm:0.18.17" @@ -3200,6 +3249,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/freebsd-x64@npm:0.19.12" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/linux-arm64@npm:0.18.17" @@ -3214,6 +3270,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-arm64@npm:0.19.12" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/linux-arm@npm:0.18.17" @@ -3228,6 +3291,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-arm@npm:0.19.12" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/linux-ia32@npm:0.18.17" @@ -3242,6 +3312,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-ia32@npm:0.19.12" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/linux-loong64@npm:0.18.17" @@ -3256,6 +3333,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-loong64@npm:0.19.12" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/linux-mips64el@npm:0.18.17" @@ -3270,6 +3354,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-mips64el@npm:0.19.12" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/linux-ppc64@npm:0.18.17" @@ -3284,6 +3375,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-ppc64@npm:0.19.12" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/linux-riscv64@npm:0.18.17" @@ -3298,6 +3396,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-riscv64@npm:0.19.12" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/linux-s390x@npm:0.18.17" @@ -3312,6 +3417,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-s390x@npm:0.19.12" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/linux-x64@npm:0.18.17" @@ -3326,6 +3438,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-x64@npm:0.19.12" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/netbsd-x64@npm:0.18.17" @@ -3340,6 +3459,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/netbsd-x64@npm:0.19.12" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/openbsd-x64@npm:0.18.17" @@ -3354,6 +3480,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/openbsd-x64@npm:0.19.12" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/sunos-x64@npm:0.18.17" @@ -3368,6 +3501,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/sunos-x64@npm:0.19.12" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/win32-arm64@npm:0.18.17" @@ -3382,6 +3522,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-arm64@npm:0.19.12" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/win32-ia32@npm:0.18.17" @@ -3396,6 +3543,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-ia32@npm:0.19.12" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.18.17": version: 0.18.17 resolution: "@esbuild/win32-x64@npm:0.18.17" @@ -3410,6 +3564,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-x64@npm:0.19.12" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.3.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -5587,7 +5748,6 @@ __metadata: "@types/jest-axe": ^3.5.1 "@types/react": ^17.0.30 "@types/react-dom": ^17.0.5 - "@types/yargs": ^17 babel-plugin-import: ^1.13.5 date-fns: ^2.30.0 eslint: ^8.44.0 @@ -5596,17 +5756,15 @@ __metadata: jest-axe: ^5.0.1 jest-environment-jsdom: ^29.6.1 material-react-table: ^2.0.2 - node-ts: ^6.0.1 npm-run-all: ^4.1.5 properties: 1.2.1 react: ^17.0.2 react-dom: ^17.0.2 react-i18next: ^12.2.2 - recursive-readdir: ^2.2.2 regenerator-runtime: ^0.13.7 rimraf: ^5.0.1 stylelint: ^14.13.0 - ts-node: ^10.9.1 + tsx: ^4.7.0 typescript: ^5.1.6 word-wrap: ~1.2.5 yargs: ^17.7.2 @@ -6356,15 +6514,6 @@ __metadata: languageName: node linkType: hard -"@rauschma/stringio@npm:^1.4.0": - version: 1.4.0 - resolution: "@rauschma/stringio@npm:1.4.0" - dependencies: - "@types/node": ^10.0.3 - checksum: 0c6fae0519dc9db378966924894c37cfc854a19fc10b6867c5a2f362025c7d9e4f7cf65c120453036bb7503cdee3d7cc43ae9485f47dac3aad315bc83d93a24c - languageName: node - linkType: hard - "@rollup/pluginutils@npm:^5.0.2": version: 5.0.2 resolution: "@rollup/pluginutils@npm:5.0.2" @@ -8668,13 +8817,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^10.0.3": - version: 10.17.60 - resolution: "@types/node@npm:10.17.60" - checksum: 2cdb3a77d071ba8513e5e8306fa64bf50e3c3302390feeaeff1fd325dd25c8441369715dfc8e3701011a72fed5958c7dfa94eb9239a81b3c286caa4d97db6eef - languageName: node - linkType: hard - "@types/node@npm:^18.0.0": version: 18.16.14 resolution: "@types/node@npm:18.16.14" @@ -8691,13 +8833,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.2.4": - version: 20.4.2 - resolution: "@types/node@npm:20.4.2" - checksum: 99e544ea7560d51f01f95627fc40394c24a13da8f041121a0da13e4ef0a2aa332932eaf9a5e8d0e30d1c07106e96a183be392cbba62e8cf0bf6a085d5c0f4149 - languageName: node - linkType: hard - "@types/normalize-package-data@npm:^2.4.0": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" @@ -8965,7 +9100,7 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17, @types/yargs@npm:^17.0.8": +"@types/yargs@npm:^17.0.8": version: 17.0.24 resolution: "@types/yargs@npm:17.0.24" dependencies: @@ -13756,6 +13891,86 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:~0.19.10": + version: 0.19.12 + resolution: "esbuild@npm:0.19.12" + dependencies: + "@esbuild/aix-ppc64": 0.19.12 + "@esbuild/android-arm": 0.19.12 + "@esbuild/android-arm64": 0.19.12 + "@esbuild/android-x64": 0.19.12 + "@esbuild/darwin-arm64": 0.19.12 + "@esbuild/darwin-x64": 0.19.12 + "@esbuild/freebsd-arm64": 0.19.12 + "@esbuild/freebsd-x64": 0.19.12 + "@esbuild/linux-arm": 0.19.12 + "@esbuild/linux-arm64": 0.19.12 + "@esbuild/linux-ia32": 0.19.12 + "@esbuild/linux-loong64": 0.19.12 + "@esbuild/linux-mips64el": 0.19.12 + "@esbuild/linux-ppc64": 0.19.12 + "@esbuild/linux-riscv64": 0.19.12 + "@esbuild/linux-s390x": 0.19.12 + "@esbuild/linux-x64": 0.19.12 + "@esbuild/netbsd-x64": 0.19.12 + "@esbuild/openbsd-x64": 0.19.12 + "@esbuild/sunos-x64": 0.19.12 + "@esbuild/win32-arm64": 0.19.12 + "@esbuild/win32-ia32": 0.19.12 + "@esbuild/win32-x64": 0.19.12 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 2936e29107b43e65a775b78b7bc66ddd7d76febd73840ac7e825fb22b65029422ff51038a08d19b05154f543584bd3afe7d1ef1c63900429475b17fbe61cb61f + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" @@ -15071,6 +15286,16 @@ __metadata: languageName: node linkType: hard +"fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: latest + checksum: 11e6ea6fea15e42461fc55b4b0e4a0a3c654faa567f1877dbd353f39156f69def97a69936d1746619d656c4b93de2238bf731f6085a03a50cabf287c9d024317 + conditions: os=darwin + languageName: node + linkType: hard + "fsevents@patch:fsevents@^1.2.7#~builtin": version: 1.2.13 resolution: "fsevents@patch:fsevents@npm%3A1.2.13#~builtin::version=1.2.13&hash=d11327" @@ -15090,6 +15315,15 @@ __metadata: languageName: node linkType: hard +"fsevents@patch:fsevents@~2.3.3#~builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + "fstream@npm:^1.0.12": version: 1.0.12 resolution: "fstream@npm:1.0.12" @@ -15300,6 +15534,15 @@ __metadata: languageName: node linkType: hard +"get-tsconfig@npm:^4.7.2": + version: 4.7.2 + resolution: "get-tsconfig@npm:4.7.2" + dependencies: + resolve-pkg-maps: ^1.0.0 + checksum: 172358903250eff0103943f816e8a4e51d29b8e5449058bdf7266714a908a48239f6884308bd3a6ff28b09f692b9533dbebfd183ab63e4e14f073cda91f1bca9 + languageName: node + linkType: hard + "get-uri@npm:^6.0.1": version: 6.0.2 resolution: "get-uri@npm:6.0.2" @@ -21214,16 +21457,6 @@ __metadata: languageName: node linkType: hard -"node-ts@npm:^6.0.1": - version: 6.0.1 - resolution: "node-ts@npm:6.0.1" - dependencies: - "@rauschma/stringio": ^1.4.0 - "@types/node": ^20.2.4 - checksum: 15f799ca5de904a71932795c734aeecf490b22e89dac4a9c85bb8a195439bef6ae8f3a8eb23e3bad4274527d64927f1edbc56de843a8ce44c2a0f23b9c1ccc16 - languageName: node - linkType: hard - "nopt@npm:^7.0.0": version: 7.2.0 resolution: "nopt@npm:7.2.0" @@ -23688,15 +23921,6 @@ __metadata: languageName: node linkType: hard -"recursive-readdir@npm:^2.2.2": - version: 2.2.3 - resolution: "recursive-readdir@npm:2.2.3" - dependencies: - minimatch: ^3.0.5 - checksum: 88ec96e276237290607edc0872b4f9842837b95cfde0cdbb1e00ba9623dfdf3514d44cdd14496ab60a0c2dd180a6ef8a3f1c34599e6cf2273afac9b72a6fb2b5 - languageName: node - linkType: hard - "redent@npm:^3.0.0": version: 3.0.0 resolution: "redent@npm:3.0.0" @@ -23952,6 +24176,13 @@ __metadata: languageName: node linkType: hard +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 1012afc566b3fdb190a6309cc37ef3b2dcc35dff5fa6683a9d00cd25c3247edfbc4691b91078c97adc82a29b77a2660c30d791d65dab4fc78bfc473f60289977 + languageName: node + linkType: hard + "resolve-url@npm:^0.2.1": version: 0.2.1 resolution: "resolve-url@npm:0.2.1" @@ -26145,7 +26376,7 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.8.1, ts-node@npm:^10.9.1": +"ts-node@npm:^10.8.1": version: 10.9.1 resolution: "ts-node@npm:10.9.1" dependencies: @@ -26227,6 +26458,22 @@ __metadata: languageName: node linkType: hard +"tsx@npm:^4.7.0": + version: 4.7.0 + resolution: "tsx@npm:4.7.0" + dependencies: + esbuild: ~0.19.10 + fsevents: ~2.3.3 + get-tsconfig: ^4.7.2 + dependenciesMeta: + fsevents: + optional: true + bin: + tsx: dist/cli.mjs + checksum: a3a17fa8a40dbe0aff26fb2bc71a069e568152e0685b0bd9a31ea1091806274ba14882551433ed01efa7eae16f1aa965e2e47f3075ec1e914c42cf5dfce1f924 + languageName: node + linkType: hard + "tty-browserify@npm:0.0.0": version: 0.0.0 resolution: "tty-browserify@npm:0.0.0"