diff --git a/ReadMe.md b/ReadMe.md index eba521d..d981a1b 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -160,48 +160,7 @@ serviceWorker?.addEventListener('controllerchange', () => ### Internationalization -`source/i18n/en-US.ts` - -```typescript -export enum en_US { - title = 'Title', - name = 'Name' -} -``` - -`source/i18n/zh-CN.ts` - -```typescript -export enum zh_CN { - title = '标题', - name = '名称' -} -``` - -`source/index.tsx` - -```javascript -import { render, createCell } from 'web-cell'; -import { documentReady, bootI18n, textJoin } from 'web-utility'; - -import { en_US } from './i18n/en-US'; -import { zh_CN } from './i18n/zh-CN'; - -console.log( - navigator.languages.includes('zh-CN'), // true - document.documentElement.lang // '' -); -const { language, words } = bootI18n({ - 'en-US': en_US, - 'zh-CN': zh_CN -}); -documentReady.then(() => - render( -

{textJoin(words.title, words.name, 'test', 'example')}

- //

标题名称 test example

- ); -); -``` +Migrate to [MobX i18n][9] since v4. ### Test scripts @@ -247,3 +206,4 @@ describe('My module', async () => { [6]: https://mochajs.org/ [7]: https://jestjs.io/ [8]: https://typestrong.org/ts-node/ +[9]: https://github.com/idea2app/MobX-i18n diff --git a/package.json b/package.json index 43c4baf..f5be015 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "web-utility", - "version": "3.9.9", + "version": "4.0.0", "license": "LGPL-3.0", "author": "shiy2008@gmail.com", "description": "Web front-end toolkit based on TypeScript", @@ -24,9 +24,9 @@ "main": "dist/index.js", "module": "dist/index.esm.js", "dependencies": { - "@swc/helpers": "^0.4.12", - "element-internals-polyfill": "^1.1.14", - "regenerator-runtime": "^0.13.10" + "@swc/helpers": "^0.4.14", + "element-internals-polyfill": "^1.1.17", + "regenerator-runtime": "^0.13.11" }, "peerDependencies": { "typescript": "^4.1.0" @@ -34,20 +34,20 @@ "devDependencies": { "@parcel/packager-ts": "~2.6.2", "@parcel/transformer-typescript-types": "~2.6.2", - "@peculiar/webcrypto": "^1.4.0", - "@types/jest": "^29.1.2", - "@types/node": "^16.11.66", - "@webcomponents/webcomponentsjs": "^2.6.0", - "husky": "^8.0.1", + "@peculiar/webcrypto": "^1.4.1", + "@types/jest": "^29.2.4", + "@types/node": "^16.18.10", + "@webcomponents/webcomponentsjs": "^2.7.0", + "husky": "^8.0.2", "intersection-observer": "^0.12.2", - "jest": "^29.2.0", - "jest-environment-jsdom": "^29.2.0", - "lint-staged": "^13.0.3", + "jest": "^29.3.1", + "jest-environment-jsdom": "^29.3.1", + "lint-staged": "^13.1.0", "open-cli": "^7.1.0", "parcel": "~2.6.2", - "prettier": "^2.7.1", + "prettier": "^2.8.1", "ts-jest": "^29.0.3", - "typedoc": "^0.23.16", + "typedoc": "^0.23.22", "typedoc-plugin-mdn-links": "^2.0.0", "typescript": "~4.7.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cf65001..44c79a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,49 +3,49 @@ lockfileVersion: 5.4 specifiers: '@parcel/packager-ts': ~2.6.2 '@parcel/transformer-typescript-types': ~2.6.2 - '@peculiar/webcrypto': ^1.4.0 - '@swc/helpers': ^0.4.12 - '@types/jest': ^29.1.2 - '@types/node': ^16.11.66 - '@webcomponents/webcomponentsjs': ^2.6.0 - element-internals-polyfill: ^1.1.14 - husky: ^8.0.1 + '@peculiar/webcrypto': ^1.4.1 + '@swc/helpers': ^0.4.14 + '@types/jest': ^29.2.4 + '@types/node': ^16.18.10 + '@webcomponents/webcomponentsjs': ^2.7.0 + element-internals-polyfill: ^1.1.17 + husky: ^8.0.2 intersection-observer: ^0.12.2 - jest: ^29.2.0 - jest-environment-jsdom: ^29.2.0 - lint-staged: ^13.0.3 + jest: ^29.3.1 + jest-environment-jsdom: ^29.3.1 + lint-staged: ^13.1.0 open-cli: ^7.1.0 parcel: ~2.6.2 - prettier: ^2.7.1 - regenerator-runtime: ^0.13.10 + prettier: ^2.8.1 + regenerator-runtime: ^0.13.11 ts-jest: ^29.0.3 - typedoc: ^0.23.16 + typedoc: ^0.23.22 typedoc-plugin-mdn-links: ^2.0.0 typescript: ~4.7.4 dependencies: - '@swc/helpers': 0.4.12 - element-internals-polyfill: 1.1.14 - regenerator-runtime: 0.13.10 + '@swc/helpers': 0.4.14 + element-internals-polyfill: 1.1.17 + regenerator-runtime: 0.13.11 devDependencies: '@parcel/packager-ts': 2.6.2 '@parcel/transformer-typescript-types': 2.6.2_typescript@4.7.4 - '@peculiar/webcrypto': 1.4.0 - '@types/jest': 29.1.2 - '@types/node': 16.11.66 - '@webcomponents/webcomponentsjs': 2.6.0 - husky: 8.0.1 + '@peculiar/webcrypto': 1.4.1 + '@types/jest': 29.2.4 + '@types/node': 16.18.10 + '@webcomponents/webcomponentsjs': 2.7.0 + husky: 8.0.2 intersection-observer: 0.12.2 - jest: 29.2.0_@types+node@16.11.66 - jest-environment-jsdom: 29.2.0 - lint-staged: 13.0.3 + jest: 29.3.1_@types+node@16.18.10 + jest-environment-jsdom: 29.3.1 + lint-staged: 13.1.0 open-cli: 7.1.0 parcel: 2.6.2 - prettier: 2.7.1 - ts-jest: 29.0.3_ihhzkrnprqx3xisyi6en647bvi - typedoc: 0.23.16_typescript@4.7.4 - typedoc-plugin-mdn-links: 2.0.0_typedoc@0.23.16 + prettier: 2.8.1 + ts-jest: 29.0.3_wkdujqsgbnfnnp5xidismkcn6e + typedoc: 0.23.22_typescript@4.7.4 + typedoc-plugin-mdn-links: 2.0.0_typedoc@0.23.22 typescript: 4.7.4 packages: @@ -399,20 +399,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/29.2.0: - resolution: {integrity: sha512-Xz1Wu+ZZxcB3RS8U3HdkFxlRJ7kLXI/by9X7d2/gvseIWPwYu/c1EsYy77cB5iyyHGOy3whS2HycjcuzIF4Jow==} + /@jest/console/29.3.1: + resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.2.0 - '@types/node': 16.11.66 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 chalk: 4.1.2 - jest-message-util: 29.2.0 - jest-util: 29.2.0 + jest-message-util: 29.3.1 + jest-util: 29.3.1 slash: 3.0.0 dev: true - /@jest/core/29.2.0: - resolution: {integrity: sha512-+gyJ3bX+kGEW/eqt/0kI7fLjqiFr3AN8O+rlEl1fYRf7D8h4Sj4tBGo9YOSirvWgvemoH2EPRya35bgvcPFzHQ==} + /@jest/core/29.3.1: + resolution: {integrity: sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -420,32 +420,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.2.0 - '@jest/reporters': 29.2.0 - '@jest/test-result': 29.2.0 - '@jest/transform': 29.2.0 - '@jest/types': 29.2.0 - '@types/node': 16.11.66 + '@jest/console': 29.3.1 + '@jest/reporters': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.2.0 - jest-config: 29.2.0_@types+node@16.11.66 - jest-haste-map: 29.2.0 - jest-message-util: 29.2.0 + jest-config: 29.3.1_@types+node@16.18.10 + jest-haste-map: 29.3.1 + jest-message-util: 29.3.1 jest-regex-util: 29.2.0 - jest-resolve: 29.2.0 - jest-resolve-dependencies: 29.2.0 - jest-runner: 29.2.0 - jest-runtime: 29.2.0 - jest-snapshot: 29.2.0 - jest-util: 29.2.0 - jest-validate: 29.2.0 - jest-watcher: 29.2.0 + jest-resolve: 29.3.1 + jest-resolve-dependencies: 29.3.1 + jest-runner: 29.3.1 + jest-runtime: 29.3.1 + jest-snapshot: 29.3.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 + jest-watcher: 29.3.1 micromatch: 4.0.5 - pretty-format: 29.2.0 + pretty-format: 29.3.1 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -453,66 +453,59 @@ packages: - ts-node dev: true - /@jest/environment/29.2.0: - resolution: {integrity: sha512-foaVv1QVPB31Mno3LlL58PxEQQOLZd9zQfCpyQQCQIpUAtdFP1INBjkphxrCfKT13VxpA0z5jFGIkmZk0DAg2Q==} + /@jest/environment/29.3.1: + resolution: {integrity: sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.2.0 - '@jest/types': 29.2.0 - '@types/node': 16.11.66 - jest-mock: 29.2.0 + '@jest/fake-timers': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 + jest-mock: 29.3.1 dev: true - /@jest/expect-utils/29.0.2: - resolution: {integrity: sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.0.0 - dev: true - - /@jest/expect-utils/29.2.0: - resolution: {integrity: sha512-nz2IDF7nb1qmj9hx8Ja3MFab2q9Ml8QbOaaeJNyX5JQJHU8QUvEDiMctmhGEkk3Kzr8w8vAqz4hPk/ogJSrUhg==} + /@jest/expect-utils/29.3.1: + resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.2.0 dev: true - /@jest/expect/29.2.0: - resolution: {integrity: sha512-+3lxcYL9e0xPJGOR33utxxejn+Mulz40kY0oy0FVsmIESW87NZDJ7B1ovaIqeX0xIgPX4laS5SGlqD2uSoBMcw==} + /@jest/expect/29.3.1: + resolution: {integrity: sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.2.0 - jest-snapshot: 29.2.0 + expect: 29.3.1 + jest-snapshot: 29.3.1 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers/29.2.0: - resolution: {integrity: sha512-mX0V0uQsgeSLTt0yTqanAhhpeUKMGd2uq+PSLAfO40h72bvfNNQ7pIEl9vIwNMFxRih1ENveEjSBsLjxGGDPSw==} + /@jest/fake-timers/29.3.1: + resolution: {integrity: sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.2.0 + '@jest/types': 29.3.1 '@sinonjs/fake-timers': 9.1.2 - '@types/node': 16.11.66 - jest-message-util: 29.2.0 - jest-mock: 29.2.0 - jest-util: 29.2.0 + '@types/node': 16.18.10 + jest-message-util: 29.3.1 + jest-mock: 29.3.1 + jest-util: 29.3.1 dev: true - /@jest/globals/29.2.0: - resolution: {integrity: sha512-JQxtEVNWiai1p3PIzAJZSyEqQdAJGvNKvinZDPfu0mhiYEVx6E+PiBuDWj1sVUW8hzu+R3DVqaWC9K2xcLRIAA==} + /@jest/globals/29.3.1: + resolution: {integrity: sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.2.0 - '@jest/expect': 29.2.0 - '@jest/types': 29.2.0 - jest-mock: 29.2.0 + '@jest/environment': 29.3.1 + '@jest/expect': 29.3.1 + '@jest/types': 29.3.1 + jest-mock: 29.3.1 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters/29.2.0: - resolution: {integrity: sha512-BXoAJatxTZ18U0cwD7C8qBo8V6vef8AXYRBZdhqE5DF9CmpqmhMfw9c7OUvYqMTnBBK9A0NgXGO4Lc9EJzdHvw==} + /@jest/reporters/29.3.1: + resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -521,12 +514,12 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.2.0 - '@jest/test-result': 29.2.0 - '@jest/transform': 29.2.0 - '@jest/types': 29.2.0 + '@jest/console': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 16.11.66 + '@types/node': 16.18.10 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -537,9 +530,9 @@ packages: istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.4 - jest-message-util: 29.2.0 - jest-util: 29.2.0 - jest-worker: 29.2.0 + jest-message-util: 29.3.1 + jest-util: 29.3.1 + jest-worker: 29.3.1 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -564,41 +557,41 @@ packages: graceful-fs: 4.2.10 dev: true - /@jest/test-result/29.2.0: - resolution: {integrity: sha512-l76EPJ6QqtzsCLS4aimJqWO53pxZ82o3aE+Brcmo1HJ/phb9+MR7gPhyDdN6VSGaLJCRVJBZgWEhAEz+qON0Fw==} + /@jest/test-result/29.3.1: + resolution: {integrity: sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.2.0 - '@jest/types': 29.2.0 + '@jest/console': 29.3.1 + '@jest/types': 29.3.1 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.2.0: - resolution: {integrity: sha512-NCnjZcGnVdva6IDqF7TCuFsXs2F1tohiNF9sasSJNzD7VfN5ic9XgcS/oPDalGiPLxCmGKj4kewqqrKAqBACcQ==} + /@jest/test-sequencer/29.3.1: + resolution: {integrity: sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.2.0 + '@jest/test-result': 29.3.1 graceful-fs: 4.2.10 - jest-haste-map: 29.2.0 + jest-haste-map: 29.3.1 slash: 3.0.0 dev: true - /@jest/transform/29.2.0: - resolution: {integrity: sha512-NXMujGHy+B4DAj4dGnVPD0SIXlR2Z/N8Gp9h3mF66kcIRult1WWqY3/CEIrJcKviNWaFPYhZjCG2L3fteWzcUw==} + /@jest/transform/29.3.1: + resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.18.6 - '@jest/types': 29.2.0 + '@jest/types': 29.3.1 '@jridgewell/trace-mapping': 0.3.15 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 - convert-source-map: 1.8.0 + convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.10 - jest-haste-map: 29.2.0 + jest-haste-map: 29.3.1 jest-regex-util: 29.2.0 - jest-util: 29.2.0 + jest-util: 29.3.1 micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 @@ -614,19 +607,19 @@ packages: '@jest/schemas': 29.0.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 16.11.66 + '@types/node': 16.18.10 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true - /@jest/types/29.2.0: - resolution: {integrity: sha512-mfgpQz4Z2xGo37m6KD8xEpKelaVzvYVRijmLPePn9pxgaPEtX+SqIyPNzzoeCPXKYbB4L/wYSgXDL8o3Gop78Q==} + /@jest/types/29.3.1: + resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.0.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 16.11.66 + '@types/node': 16.18.10 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -1404,11 +1397,11 @@ packages: '@parcel/source-map': 2.0.5 '@parcel/utils': 2.6.2 '@parcel/workers': 2.6.2_@parcel+core@2.6.2 - '@swc/helpers': 0.4.12 + '@swc/helpers': 0.4.14 browserslist: 4.21.1 detect-libc: 1.0.3 nullthrows: 1.1.1 - regenerator-runtime: 0.13.10 + regenerator-runtime: 0.13.11 semver: 5.7.1 dev: true @@ -1569,29 +1562,29 @@ packages: nullthrows: 1.1.1 dev: true - /@peculiar/asn1-schema/2.2.0: - resolution: {integrity: sha512-1ENEJNY7Lwlua/1wvzpYP194WtjQBfFxvde2FlzfBFh/ln6wvChrtxlORhbKEnYswzn6fOC4c7HdC5izLPMTJg==} + /@peculiar/asn1-schema/2.3.3: + resolution: {integrity: sha512-6GptMYDMyWBHTUKndHaDsRZUO/XMSgIns2krxcm2L7SEExRHwawFvSwNBhqNPR9HJwv3MruAiF1bhN0we6j6GQ==} dependencies: asn1js: 3.0.5 pvtsutils: 1.3.2 - tslib: 2.4.0 + tslib: 2.4.1 dev: true /@peculiar/json-schema/1.1.12: resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} engines: {node: '>=8.0.0'} dependencies: - tslib: 2.4.0 + tslib: 2.4.1 dev: true - /@peculiar/webcrypto/1.4.0: - resolution: {integrity: sha512-U58N44b2m3OuTgpmKgf0LPDOmP3bhwNz01vAnj1mBwxBASRhptWYK+M3zG+HBkDqGQM+bFsoIihTW8MdmPXEqg==} + /@peculiar/webcrypto/1.4.1: + resolution: {integrity: sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==} engines: {node: '>=10.12.0'} dependencies: - '@peculiar/asn1-schema': 2.2.0 + '@peculiar/asn1-schema': 2.3.3 '@peculiar/json-schema': 1.1.12 pvtsutils: 1.3.2 - tslib: 2.4.0 + tslib: 2.4.1 webcrypto-core: 1.7.5 dev: true @@ -1611,8 +1604,8 @@ packages: '@sinonjs/commons': 1.8.3 dev: true - /@swc/helpers/0.4.12: - resolution: {integrity: sha512-R6RmwS9Dld5lNvwKlPn62+piU+WDG1sMfsnfJioXCciyko/gZ0DQ4Mqglhq1iGU1nQ/RcGkAwfMH+elMSkJH3Q==} + /@swc/helpers/0.4.14: + resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: tslib: 2.4.0 @@ -1662,7 +1655,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 16.11.66 + '@types/node': 16.18.10 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -1681,17 +1674,17 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.1.2: - resolution: {integrity: sha512-y+nlX0h87U0R+wsGn6EBuoRWYyv3KFtwRNP3QWp9+k2tJ2/bqcGS3UxD7jgT+tiwJWWq3UsyV4Y+T6rsMT4XMg==} + /@types/jest/29.2.4: + resolution: {integrity: sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A==} dependencies: - expect: 29.0.2 - pretty-format: 29.0.2 + expect: 29.3.1 + pretty-format: 29.3.1 dev: true /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 16.11.66 + '@types/node': 16.18.10 '@types/tough-cookie': 4.0.2 parse5: 7.1.1 dev: true @@ -1700,8 +1693,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/16.11.66: - resolution: {integrity: sha512-+xvMrGl3eAygKcf5jm+4zA4tbfEgmKM9o6/glTmN0RFVdu2VuFXMYYtRmuv3zTGCgAYMnEZLde3B7BTp+Yxcig==} + /@types/node/16.18.10: + resolution: {integrity: sha512-XU1+v7h81p7145ddPfjv7jtWvkSilpcnON3mQ+bDi9Yuf7OI56efOglXRyXWgQ57xH3fEQgh7WOJMncRHVew5w==} dev: true /@types/normalize-package-data/2.4.1: @@ -1734,8 +1727,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@webcomponents/webcomponentsjs/2.6.0: - resolution: {integrity: sha512-Moog+Smx3ORTbWwuPqoclr+uvfLnciVd6wdCaVscHPrxbmQ/IJKm3wbB7hpzJtXWjAq2l/6QMlO85aZiOdtv5Q==} + /@webcomponents/webcomponentsjs/2.7.0: + resolution: {integrity: sha512-j161Z9oiy8k74vchdrQGihfSp7QulrTclCUiPo0D7JF6/RjpXAmB0ThlTAFlSElkgqg0vdFgNAXaX9ZHZy25wQ==} dev: true /abab/2.0.6: @@ -1853,7 +1846,7 @@ packages: dependencies: pvtsutils: 1.3.2 pvutils: 1.1.3 - tslib: 2.4.0 + tslib: 2.4.1 dev: true /astral-regex/2.0.0: @@ -1865,14 +1858,14 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /babel-jest/29.2.0_@babel+core@7.18.6: - resolution: {integrity: sha512-c8FkrW1chgcbyBqOo7jFGpQYfVnb43JqjQGV+C2r94k2rZJOukYOZ6+csAqKE4ms+PHc+yevnONxs27jQIxylw==} + /babel-jest/29.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: '@babel/core': 7.18.6 - '@jest/transform': 29.2.0 + '@jest/transform': 29.3.1 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 babel-preset-jest: 29.2.0_@babel+core@7.18.6 @@ -2158,8 +2151,8 @@ packages: engines: {node: '>= 10'} dev: true - /commander/9.3.0: - resolution: {integrity: sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==} + /commander/9.4.1: + resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} engines: {node: ^12.20.0 || >=14} dev: true @@ -2173,6 +2166,10 @@ packages: safe-buffer: 5.1.2 dev: true + /convert-source-map/2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + /cosmiconfig/7.0.1: resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} engines: {node: '>=10'} @@ -2322,13 +2319,8 @@ packages: engines: {node: '>=8'} dev: true - /diff-sequences/29.0.0: - resolution: {integrity: sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /diff-sequences/29.2.0: - resolution: {integrity: sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw==} + /diff-sequences/29.3.1: + resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -2383,12 +2375,12 @@ packages: resolution: {integrity: sha512-Qo3LnVW6JRNhD32viSdPebxKI7K+3WeBDjU1+Q2yZS83zAh8C2LyPpzTimlciv6U74KpY9n/0ESAhUByRke0jw==} dev: true - /element-internals-polyfill/1.1.14: - resolution: {integrity: sha512-G4q3K8M80U5MPIaD+FX2gdAJNQLWGwJ00449p3bGPpkmNESMvemRu+hM69jt2ikwnRBsi51ys5CVNiT6ukT40w==} + /element-internals-polyfill/1.1.17: + resolution: {integrity: sha512-sMDJyJiwvcHB6wLnyG+y/9FRxi/9OyI8bmjyw18K6b5iVlBjmA5CJVTFz4K2I7R53yqevK8WkTrfBmSHJXH9Rw==} dev: false - /emittery/0.10.2: - resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} + /emittery/0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: true @@ -2499,26 +2491,15 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expect/29.0.2: - resolution: {integrity: sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw==} + /expect/29.3.1: + resolution: {integrity: sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.0.2 - jest-get-type: 29.0.0 - jest-matcher-utils: 29.0.2 - jest-message-util: 29.0.2 - jest-util: 29.0.2 - dev: true - - /expect/29.2.0: - resolution: {integrity: sha512-03ClF3GWwUqd9Grgkr9ZSdaCJGMRA69PQ8jT7o+Bx100VlGiAFf9/8oIm9Qve7ZVJhuJxFftqFhviZJRxxNfvg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.2.0 + '@jest/expect-utils': 29.3.1 jest-get-type: 29.2.0 - jest-matcher-utils: 29.2.0 - jest-message-util: 29.2.0 - jest-util: 29.2.0 + jest-matcher-utils: 29.3.1 + jest-message-util: 29.3.1 + jest-util: 29.3.1 dev: true /fast-json-stable-stringify/2.1.0: @@ -2764,8 +2745,8 @@ packages: engines: {node: '>=12.20.0'} dev: true - /husky/8.0.1: - resolution: {integrity: sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==} + /husky/8.0.2: + resolution: {integrity: sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==} engines: {node: '>=14'} hasBin: true dev: true @@ -2952,35 +2933,35 @@ packages: p-limit: 3.1.0 dev: true - /jest-circus/29.2.0: - resolution: {integrity: sha512-bpJRMe+VtvYlF3q8JNx+/cAo4FYvNCiR5s7Z0Scf8aC+KJ2ineSjZKtw1cIZbythlplkiro0My8nc65pfCqJ3A==} + /jest-circus/29.3.1: + resolution: {integrity: sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.2.0 - '@jest/expect': 29.2.0 - '@jest/test-result': 29.2.0 - '@jest/types': 29.2.0 - '@types/node': 16.11.66 + '@jest/environment': 29.3.1 + '@jest/expect': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.2.0 - jest-matcher-utils: 29.2.0 - jest-message-util: 29.2.0 - jest-runtime: 29.2.0 - jest-snapshot: 29.2.0 - jest-util: 29.2.0 + jest-each: 29.3.1 + jest-matcher-utils: 29.3.1 + jest-message-util: 29.3.1 + jest-runtime: 29.3.1 + jest-snapshot: 29.3.1 + jest-util: 29.3.1 p-limit: 3.1.0 - pretty-format: 29.2.0 + pretty-format: 29.3.1 slash: 3.0.0 stack-utils: 2.0.5 transitivePeerDependencies: - supports-color dev: true - /jest-cli/29.2.0_@types+node@16.11.66: - resolution: {integrity: sha512-/581TzbXeO+5kbtSlhXEthGiVJCC8AP0jgT0iZINAAMW+tTFj2uWU7z+HNUH5yIYdHV7AvRr0fWLrmHJGIruHg==} + /jest-cli/29.3.1_@types+node@16.18.10: + resolution: {integrity: sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -2989,16 +2970,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.2.0 - '@jest/test-result': 29.2.0 - '@jest/types': 29.2.0 + '@jest/core': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/types': 29.3.1 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.2.0_@types+node@16.11.66 - jest-util: 29.2.0 - jest-validate: 29.2.0 + jest-config: 29.3.1_@types+node@16.18.10 + jest-util: 29.3.1 + jest-validate: 29.3.1 prompts: 2.4.2 yargs: 17.5.1 transitivePeerDependencies: @@ -3007,8 +2988,8 @@ packages: - ts-node dev: true - /jest-config/29.2.0_@types+node@16.11.66: - resolution: {integrity: sha512-IkdCsrHIoxDPZAyFcdtQrCQ3uftLqns6Joj0tlbxiAQW4k/zTXmIygqWBmPNxO9FbFkDrhtYZiLHXjaJh9rS+Q==} + /jest-config/29.3.1_@types+node@16.18.10: + resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -3020,50 +3001,40 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - '@jest/test-sequencer': 29.2.0 - '@jest/types': 29.2.0 - '@types/node': 16.11.66 - babel-jest: 29.2.0_@babel+core@7.18.6 + '@jest/test-sequencer': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 + babel-jest: 29.3.1_@babel+core@7.18.6 chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 - jest-circus: 29.2.0 - jest-environment-node: 29.2.0 + jest-circus: 29.3.1 + jest-environment-node: 29.3.1 jest-get-type: 29.2.0 jest-regex-util: 29.2.0 - jest-resolve: 29.2.0 - jest-runner: 29.2.0 - jest-util: 29.2.0 - jest-validate: 29.2.0 + jest-resolve: 29.3.1 + jest-runner: 29.3.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.2.0 + pretty-format: 29.3.1 slash: 3.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.0.2: - resolution: {integrity: sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.0.0 - jest-get-type: 29.0.0 - pretty-format: 29.1.2 - dev: true - - /jest-diff/29.2.0: - resolution: {integrity: sha512-GsH07qQL+/D/GxlnU+sSg9GL3fBOcuTlmtr3qr2pnkiODCwubNN2/7slW4m3CvxDsEus/VEOfQKRFLyXsUlnZw==} + /jest-diff/29.3.1: + resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.2.0 + diff-sequences: 29.3.1 jest-get-type: 29.2.0 - pretty-format: 29.2.0 + pretty-format: 29.3.1 dev: true /jest-docblock/29.2.0: @@ -3073,19 +3044,19 @@ packages: detect-newline: 3.1.0 dev: true - /jest-each/29.2.0: - resolution: {integrity: sha512-h4LeC3L/R7jIMfTdYowevPIssvcPYQ7Qzs+pCSYsJgPztIizXwKmnfhZXBA4WVqdmvMcpmseYEXb67JT7IJ2eg==} + /jest-each/29.3.1: + resolution: {integrity: sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.2.0 + '@jest/types': 29.3.1 chalk: 4.1.2 jest-get-type: 29.2.0 - jest-util: 29.2.0 - pretty-format: 29.2.0 + jest-util: 29.3.1 + pretty-format: 29.3.1 dev: true - /jest-environment-jsdom/29.2.0: - resolution: {integrity: sha512-DgHbBxC4RmHpDLFLMt00NjXXimGvtNALRyxQYOo3e6vwq1qsIDqXsEZiuEpjTg0BueENE1mx8BKFKHXArEdRQQ==} + /jest-environment-jsdom/29.3.1: + resolution: {integrity: sha512-G46nKgiez2Gy4zvYNhayfMEAFlVHhWfncqvqS6yCd0i+a4NsSUD2WtrKSaYQrYiLQaupHXxCRi8xxVL2M9PbhA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 @@ -3093,13 +3064,13 @@ packages: canvas: optional: true dependencies: - '@jest/environment': 29.2.0 - '@jest/fake-timers': 29.2.0 - '@jest/types': 29.2.0 + '@jest/environment': 29.3.1 + '@jest/fake-timers': 29.3.1 + '@jest/types': 29.3.1 '@types/jsdom': 20.0.0 - '@types/node': 16.11.66 - jest-mock: 29.2.0 - jest-util: 29.2.0 + '@types/node': 16.18.10 + jest-mock: 29.3.1 + jest-util: 29.3.1 jsdom: 20.0.0 transitivePeerDependencies: - bufferutil @@ -3107,21 +3078,16 @@ packages: - utf-8-validate dev: true - /jest-environment-node/29.2.0: - resolution: {integrity: sha512-b4qQGVStPMvtZG97Ac0rvnmSIjCZturFU7MQRMp4JDFl7zoaDLTtXmFjFP1tNmi9te6kR8d+Htbv3nYeoaIz6g==} + /jest-environment-node/29.3.1: + resolution: {integrity: sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.2.0 - '@jest/fake-timers': 29.2.0 - '@jest/types': 29.2.0 - '@types/node': 16.11.66 - jest-mock: 29.2.0 - jest-util: 29.2.0 - dev: true - - /jest-get-type/29.0.0: - resolution: {integrity: sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment': 29.3.1 + '@jest/fake-timers': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 + jest-mock: 29.3.1 + jest-util: 29.3.1 dev: true /jest-get-type/29.2.0: @@ -3129,93 +3095,68 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/29.2.0: - resolution: {integrity: sha512-qu9lGFi7qJ8v37egS1phZZUJYiMyWnKwu83NlNT1qs50TbedIX2hFl+9ztsJ7U/ENaHwk1/Bs8fqOIQsScIRwg==} + /jest-haste-map/29.3.1: + resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.2.0 + '@jest/types': 29.3.1 '@types/graceful-fs': 4.1.5 - '@types/node': 16.11.66 + '@types/node': 16.18.10 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 jest-regex-util: 29.2.0 - jest-util: 29.2.0 - jest-worker: 29.2.0 + jest-util: 29.3.1 + jest-worker: 29.3.1 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.2.0: - resolution: {integrity: sha512-FXT9sCFdct42+oOqGIr/9kmUw3RbhvpkwidCBT5ySHHoWNGd3c9n7HXpFKjEz9UnUITRCGdn0q2s6Sxrq36kwg==} + /jest-leak-detector/29.3.1: + resolution: {integrity: sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.2.0 - pretty-format: 29.2.0 - dev: true - - /jest-matcher-utils/29.0.2: - resolution: {integrity: sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.0.2 - jest-get-type: 29.0.0 - pretty-format: 29.1.2 + pretty-format: 29.3.1 dev: true - /jest-matcher-utils/29.2.0: - resolution: {integrity: sha512-FcEfKZ4vm28yCdBsvC69EkrEhcfex+IYlRctNJXsRG9+WC3WxgBNORnECIgqUtj7o/h1d8o7xB/dFUiLi4bqtw==} + /jest-matcher-utils/29.3.1: + resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.2.0 + jest-diff: 29.3.1 jest-get-type: 29.2.0 - pretty-format: 29.2.0 + pretty-format: 29.3.1 dev: true - /jest-message-util/29.0.2: - resolution: {integrity: sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA==} + /jest-message-util/29.3.1: + resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.18.6 - '@jest/types': 29.1.2 + '@jest/types': 29.3.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 micromatch: 4.0.5 - pretty-format: 29.1.2 + pretty-format: 29.3.1 slash: 3.0.0 stack-utils: 2.0.5 dev: true - /jest-message-util/29.2.0: - resolution: {integrity: sha512-arBfk5yMFMTnMB22GyG601xGSGthA02vWSewPaxoFo0F9wBqDOyxccPbCcYu8uibw3kduSHXdCOd1PsLSgdomg==} + /jest-mock/29.3.1: + resolution: {integrity: sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 29.2.0 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - pretty-format: 29.2.0 - slash: 3.0.0 - stack-utils: 2.0.5 - dev: true - - /jest-mock/29.2.0: - resolution: {integrity: sha512-aiWGR0P8ivssIO17xkehLGFtCcef2ZwQFNPwEer1jQLHxPctDlIg3Hs6QMq1KpPz5dkCcgM7mwGif4a9IPznlg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.2.0 - '@types/node': 16.11.66 - jest-util: 29.2.0 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 + jest-util: 29.3.1 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@29.2.0: + /jest-pnp-resolver/1.2.2_jest-resolve@29.3.1: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -3224,7 +3165,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.2.0 + jest-resolve: 29.3.1 dev: true /jest-regex-util/29.2.0: @@ -3232,92 +3173,92 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.2.0: - resolution: {integrity: sha512-Cd0Z39sDntEnfR9PoUdFHUAGDvtKI0/7Wt73l3lt03A3yQ+A6Qi3XmBuqGjdFl2QbXaPa937oLhilG612P8HGQ==} + /jest-resolve-dependencies/29.3.1: + resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-regex-util: 29.2.0 - jest-snapshot: 29.2.0 + jest-snapshot: 29.3.1 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/29.2.0: - resolution: {integrity: sha512-f5c0ljNg2guDBCC7wi92vAhNuA0BtAG5vkY7Fob0c7sUMU1g87mTXqRmjrVFe2XvdwP5m5T/e5KJsCKu9hRvBA==} + /jest-resolve/29.3.1: + resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 - jest-haste-map: 29.2.0 - jest-pnp-resolver: 1.2.2_jest-resolve@29.2.0 - jest-util: 29.2.0 - jest-validate: 29.2.0 + jest-haste-map: 29.3.1 + jest-pnp-resolver: 1.2.2_jest-resolve@29.3.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 resolve: 1.22.1 resolve.exports: 1.1.0 slash: 3.0.0 dev: true - /jest-runner/29.2.0: - resolution: {integrity: sha512-VPBrCwl9fM2mc5yk6yZhNrgXzRJMD5jfLmntkMLlrVq4hQPWbRK998iJlR+DOGCO04TC9PPYLntOJ001Vnf28g==} + /jest-runner/29.3.1: + resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.2.0 - '@jest/environment': 29.2.0 - '@jest/test-result': 29.2.0 - '@jest/transform': 29.2.0 - '@jest/types': 29.2.0 - '@types/node': 16.11.66 + '@jest/console': 29.3.1 + '@jest/environment': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 chalk: 4.1.2 - emittery: 0.10.2 + emittery: 0.13.1 graceful-fs: 4.2.10 jest-docblock: 29.2.0 - jest-environment-node: 29.2.0 - jest-haste-map: 29.2.0 - jest-leak-detector: 29.2.0 - jest-message-util: 29.2.0 - jest-resolve: 29.2.0 - jest-runtime: 29.2.0 - jest-util: 29.2.0 - jest-watcher: 29.2.0 - jest-worker: 29.2.0 + jest-environment-node: 29.3.1 + jest-haste-map: 29.3.1 + jest-leak-detector: 29.3.1 + jest-message-util: 29.3.1 + jest-resolve: 29.3.1 + jest-runtime: 29.3.1 + jest-util: 29.3.1 + jest-watcher: 29.3.1 + jest-worker: 29.3.1 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime/29.2.0: - resolution: {integrity: sha512-+GDmzCrswQF+mvI0upTYMe/OPYnlRRNLLDHM9AFLp2y7zxWoDoYgb8DL3WwJ8d9m743AzrnvBV9JQHi/0ed7dg==} + /jest-runtime/29.3.1: + resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.2.0 - '@jest/fake-timers': 29.2.0 - '@jest/globals': 29.2.0 + '@jest/environment': 29.3.1 + '@jest/fake-timers': 29.3.1 + '@jest/globals': 29.3.1 '@jest/source-map': 29.2.0 - '@jest/test-result': 29.2.0 - '@jest/transform': 29.2.0 - '@jest/types': 29.2.0 - '@types/node': 16.11.66 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 glob: 7.2.3 graceful-fs: 4.2.10 - jest-haste-map: 29.2.0 - jest-message-util: 29.2.0 - jest-mock: 29.2.0 + jest-haste-map: 29.3.1 + jest-message-util: 29.3.1 + jest-mock: 29.3.1 jest-regex-util: 29.2.0 - jest-resolve: 29.2.0 - jest-snapshot: 29.2.0 - jest-util: 29.2.0 + jest-resolve: 29.3.1 + jest-snapshot: 29.3.1 + jest-util: 29.3.1 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot/29.2.0: - resolution: {integrity: sha512-YCKrOR0PLRXROmww73fHO9oeY4tL+LPQXWR3yml1+hKbQDR8j1VUrVzB65hKSJJgxBOr1vWx+hmz2by8JjAU5w==} + /jest-snapshot/29.3.1: + resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.18.6 @@ -3326,23 +3267,23 @@ packages: '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.6 '@babel/traverse': 7.18.6 '@babel/types': 7.18.7 - '@jest/expect-utils': 29.2.0 - '@jest/transform': 29.2.0 - '@jest/types': 29.2.0 + '@jest/expect-utils': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 '@types/babel__traverse': 7.17.1 '@types/prettier': 2.6.3 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.6 chalk: 4.1.2 - expect: 29.2.0 + expect: 29.3.1 graceful-fs: 4.2.10 - jest-diff: 29.2.0 + jest-diff: 29.3.1 jest-get-type: 29.2.0 - jest-haste-map: 29.2.0 - jest-matcher-utils: 29.2.0 - jest-message-util: 29.2.0 - jest-util: 29.2.0 + jest-haste-map: 29.3.1 + jest-matcher-utils: 29.3.1 + jest-message-util: 29.3.1 + jest-util: 29.3.1 natural-compare: 1.4.0 - pretty-format: 29.2.0 + pretty-format: 29.3.1 semver: 7.3.7 transitivePeerDependencies: - supports-color @@ -3353,63 +3294,63 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.1.2 - '@types/node': 16.11.66 + '@types/node': 16.18.10 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true - /jest-util/29.2.0: - resolution: {integrity: sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==} + /jest-util/29.3.1: + resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.2.0 - '@types/node': 16.11.66 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true - /jest-validate/29.2.0: - resolution: {integrity: sha512-4Vl51bPNeFeDok9aJiOnrC6tqJbOp4iMCYlewoC2ZzYJZ5+6pfr3KObAdx5wP8auHcg2MRaguiqj5OdScZa72g==} + /jest-validate/29.3.1: + resolution: {integrity: sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.2.0 + '@jest/types': 29.3.1 camelcase: 6.3.0 chalk: 4.1.2 jest-get-type: 29.2.0 leven: 3.1.0 - pretty-format: 29.2.0 + pretty-format: 29.3.1 dev: true - /jest-watcher/29.2.0: - resolution: {integrity: sha512-bRh0JdUeN+cl9XfK7tMnXLm4Mv70hG2SZlqbkFe5CTs7oeCkbwlGBk/mEfEJ63mrxZ8LPbnfaMpfSmkhEQBEGA==} + /jest-watcher/29.3.1: + resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.2.0 - '@jest/types': 29.2.0 - '@types/node': 16.11.66 + '@jest/test-result': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 16.18.10 ansi-escapes: 4.3.2 chalk: 4.1.2 - emittery: 0.10.2 - jest-util: 29.2.0 + emittery: 0.13.1 + jest-util: 29.3.1 string-length: 4.0.2 dev: true - /jest-worker/29.2.0: - resolution: {integrity: sha512-mluOlMbRX1H59vGVzPcVg2ALfCausbBpxC8a2KWOzInhYHZibbHH8CB0C1JkmkpfurrkOYgF7FPmypuom1OM9A==} + /jest-worker/29.3.1: + resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 16.11.66 - jest-util: 29.2.0 + '@types/node': 16.18.10 + jest-util: 29.3.1 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.2.0_@types+node@16.11.66: - resolution: {integrity: sha512-6krPemKUXCEu5Fh3j6ZVoLMjpTQVm0OCU+7f3K/9gllX8wNIE6NSCQ6s0q2RDoiKLRaQlVRHyscjSPRPqCI0Fg==} + /jest/29.3.1_@types+node@16.18.10: + resolution: {integrity: sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -3418,10 +3359,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.2.0 - '@jest/types': 29.2.0 + '@jest/core': 29.3.1 + '@jest/types': 29.3.1 import-local: 3.1.0 - jest-cli: 29.2.0_@types+node@16.11.66 + jest-cli: 29.3.1_@types+node@16.18.10 transitivePeerDependencies: - '@types/node' - supports-color @@ -3525,8 +3466,8 @@ packages: type-check: 0.3.2 dev: true - /lilconfig/2.0.5: - resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} engines: {node: '>=10'} dev: true @@ -3534,32 +3475,32 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /lint-staged/13.0.3: - resolution: {integrity: sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==} + /lint-staged/13.1.0: + resolution: {integrity: sha512-pn/sR8IrcF/T0vpWLilih8jmVouMlxqXxKuAojmbiGX5n/gDnz+abdPptlj0vYnbfE0SQNl3CY/HwtM0+yfOVQ==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true dependencies: cli-truncate: 3.1.0 colorette: 2.0.19 - commander: 9.3.0 + commander: 9.4.1 debug: 4.3.4 execa: 6.1.0 - lilconfig: 2.0.5 - listr2: 4.0.5 + lilconfig: 2.0.6 + listr2: 5.0.6 micromatch: 4.0.5 normalize-path: 3.0.0 object-inspect: 1.12.2 pidtree: 0.6.0 string-argv: 0.3.1 - yaml: 2.1.1 + yaml: 2.1.3 transitivePeerDependencies: - enquirer - supports-color dev: true - /listr2/4.0.5: - resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} - engines: {node: '>=12'} + /listr2/5.0.6: + resolution: {integrity: sha512-u60KxKBy1BR2uLJNTWNptzWQ1ob/gjMzIJPZffAENzpZqbMZ/5PrXXOomDcevIS/+IB7s1mmCEtSlT2qHWMqag==} + engines: {node: ^14.13.1 || >=16.0.0} peerDependencies: enquirer: '>= 2.3.0 < 3' peerDependenciesMeta: @@ -3571,7 +3512,7 @@ packages: log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 - rxjs: 7.5.5 + rxjs: 7.6.0 through: 2.3.8 wrap-ansi: 7.0.0 dev: true @@ -4108,32 +4049,14 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier/2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + /prettier/2.8.1: + resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /pretty-format/29.0.2: - resolution: {integrity: sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.0.0 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - - /pretty-format/29.1.2: - resolution: {integrity: sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.0.0 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - - /pretty-format/29.2.0: - resolution: {integrity: sha512-QCSUFdwOi924g24czhOH5eTkXxUCqlLGZBRCySlwDYHIXRJkdGyjJc9nZaqhlFBZws8dq5Dvk0lCilsmlfsPxw==} + /pretty-format/29.3.1: + resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.0.0 @@ -4161,7 +4084,7 @@ packages: /pvtsutils/1.3.2: resolution: {integrity: sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ==} dependencies: - tslib: 2.4.0 + tslib: 2.4.1 dev: true /pvutils/1.1.3: @@ -4230,8 +4153,8 @@ packages: strip-indent: 4.0.0 dev: true - /regenerator-runtime/0.13.10: - resolution: {integrity: sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==} + /regenerator-runtime/0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} /require-directory/2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -4281,10 +4204,10 @@ packages: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: true - /rxjs/7.5.5: - resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} + /rxjs/7.6.0: + resolution: {integrity: sha512-DDa7d8TFNUalGC9VqXvQ1euWNN7sc63TrUCuM9J998+ViviahMIjKSOU7rfcgFOF+FCD71BhDRv4hrFz+ImDLQ==} dependencies: - tslib: 2.4.0 + tslib: 2.4.1 dev: true /safe-buffer/5.1.2: @@ -4663,7 +4586,7 @@ packages: engines: {node: '>=12'} dev: true - /ts-jest/29.0.3_ihhzkrnprqx3xisyi6en647bvi: + /ts-jest/29.0.3_wkdujqsgbnfnnp5xidismkcn6e: resolution: {integrity: sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -4686,7 +4609,7 @@ packages: dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.2.0_@types+node@16.11.66 + jest: 29.3.1_@types+node@16.18.10 jest-util: 29.0.2 json5: 2.2.1 lodash.memoize: 4.1.2 @@ -4699,6 +4622,10 @@ packages: /tslib/2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + /tslib/2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + dev: true + /type-check/0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} @@ -4731,20 +4658,20 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc-plugin-mdn-links/2.0.0_typedoc@0.23.16: + /typedoc-plugin-mdn-links/2.0.0_typedoc@0.23.22: resolution: {integrity: sha512-IGLuelXPOenGdmklr5DHgPPf/MfZj7aEYCxCMtPN8C1D0lA7w0YLahd0jhDDcOMU7zL1EPcM5pPnhZHltDhqGQ==} peerDependencies: typedoc: 0.22.x || 0.23.x dependencies: - typedoc: 0.23.16_typescript@4.7.4 + typedoc: 0.23.22_typescript@4.7.4 dev: true - /typedoc/0.23.16_typescript@4.7.4: - resolution: {integrity: sha512-rumYsCeNRXlyuZVzefD7050n7ptL2uudsCJg50dY0v/stKniqIlRpvx/F/6expC0/Q6Dbab+g/JpZuB7Sw90FA==} + /typedoc/0.23.22_typescript@4.7.4: + resolution: {integrity: sha512-5sJkjK60xp8A7YpcYniu3+Wf0QcgojEnhzHuCN+CkdpQkKRhOspon/9+sGTkGI8kjVkZs3KHrhltpQyVhRMVfw==} engines: {node: '>= 14.14'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x dependencies: lunr: 2.3.9 marked: 4.1.0 @@ -4846,11 +4773,11 @@ packages: /webcrypto-core/1.7.5: resolution: {integrity: sha512-gaExY2/3EHQlRNNNVSrbG2Cg94Rutl7fAaKILS1w8ZDhGxdFOaw6EbCfHIxPy9vt/xwp5o0VQAx9aySPF6hU1A==} dependencies: - '@peculiar/asn1-schema': 2.2.0 + '@peculiar/asn1-schema': 2.3.3 '@peculiar/json-schema': 1.1.12 asn1js: 3.0.5 pvtsutils: 1.3.2 - tslib: 2.4.0 + tslib: 2.4.1 dev: true /webidl-conversions/7.0.0: @@ -4961,8 +4888,8 @@ packages: engines: {node: '>= 6'} dev: true - /yaml/2.1.1: - resolution: {integrity: sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==} + /yaml/2.1.3: + resolution: {integrity: sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==} engines: {node: '>= 14'} dev: true diff --git a/source/data.ts b/source/data.ts index aa1fcde..992b245 100644 --- a/source/data.ts +++ b/source/data.ts @@ -5,7 +5,7 @@ export type AbstractClass = abstract new (...args: any[]) => T; export type Values = Required[keyof T]; export type TypeKeys = { - [K in keyof T]: T[K] extends D ? K : never; + [K in keyof T]: Required[K] extends D ? K : never; }[keyof T]; export type PickData = Omit>; @@ -27,6 +27,15 @@ export function assertInheritance(Sub: Function, Super: Function) { return Sub.prototype instanceof Super; } +export function isUnsafeNumeric(raw: string) { + return ( + /^[\d.]+$/.test(raw) && + raw.localeCompare(Number.MAX_SAFE_INTEGER + '', undefined, { + numeric: true + }) > 0 + ); +} + export function byteLength(raw: string) { return raw.replace(/[^\u0021-\u007e\uff61-\uffef]/g, 'xx').length; } diff --git a/source/i18n.ts b/source/i18n.ts deleted file mode 100644 index c6eef92..0000000 --- a/source/i18n.ts +++ /dev/null @@ -1,35 +0,0 @@ -export function bootI18n>( - data: Record, - fallback = document.documentElement.lang || 'en-US' -) { - const languages = [...navigator.languages, fallback]; - const language = languages.find(language => language in data); - const words: T = Object.assign( - {}, - ...languages.reverse().map(name => data[name]) - ); - document.documentElement.lang = language; - - return { language, words }; -} - -export function isNumberLetter(raw = '') { - return ( - new RegExp('\\p{N}', 'u').test(raw) || - new RegExp('\\p{Ll}', 'u').test(raw.toLowerCase()) - ); -} - -export function textJoin(...parts: string[]) { - return parts - .map((raw, index) => { - const isNL = isNumberLetter(raw.slice(-1)); - - if (index + 1 === parts.length) return raw; - - const diff = isNL !== isNumberLetter(parts[index + 1]?.trim()[0]); - - return raw + (diff || isNL ? ' ' : ''); - }) - .join(''); -} diff --git a/source/index.ts b/source/index.ts index 92ccf1e..493c259 100644 --- a/source/index.ts +++ b/source/index.ts @@ -1,7 +1,6 @@ export * from './data'; export * from './math'; export * from './date'; -export * from './i18n'; export * from './parser'; export * from './URL'; export * from './crypto'; diff --git a/source/parser.ts b/source/parser.ts index 5e800ea..ef0caad 100644 --- a/source/parser.ts +++ b/source/parser.ts @@ -1,3 +1,5 @@ +import { isUnsafeNumeric } from './data'; + export function parseJSON(raw: string) { function parseItem(value: any) { if (typeof value === 'string' && /^\d+(-\d{1,2}){1,2}/.test(value)) { @@ -10,15 +12,10 @@ export function parseJSON(raw: string) { const value = parseItem(raw); - if (typeof value !== 'string') return value; + if (typeof value !== 'string' || isUnsafeNumeric(value)) return value; try { - return /^[\d.]+$/.test(value) && - value.localeCompare(Number.MAX_SAFE_INTEGER + '', undefined, { - numeric: true - }) > 0 - ? value - : JSON.parse(raw, (key, value) => parseItem(value)); + return JSON.parse(raw, (key, value) => parseItem(value)); } catch { return raw; } diff --git a/test/i18n.spec.ts b/test/i18n.spec.ts deleted file mode 100644 index 8aaeff7..0000000 --- a/test/i18n.spec.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { bootI18n, textJoin } from '../source/i18n'; - -describe('Internationalization', () => { - enum en_US { - title = 'Title', - name = 'Name' - } - enum zh_CN { - title = '标题', - name = '名称' - } - enum zh_TW { - title = '標題', - name = '名稱' - } - - it('should match the User-agent Language', () => { - expect(navigator.language).toBe('en-US'); - - const { language, words } = bootI18n({ - 'en-US': en_US, - 'zh-CN': zh_CN - }); - expect(language).toBe('en-US'); - expect(words.title).toBe(en_US.title); - }); - - it('should use the Default Language while mismatch the User-agent Language', () => { - const { language, words } = bootI18n( - { 'zh-TW': zh_TW, 'zh-CN': zh_CN }, - 'zh-CN' - ); - expect(language).toBe('zh-CN'); - expect(words.title).toBe(zh_CN.title); - expect(document.documentElement.lang).toBe('zh-CN'); - - const locale = bootI18n({ 'zh-TW': zh_TW, 'zh-CN': zh_CN }); - - expect(locale.language).toBe('zh-CN'); - expect(locale.words.title).toBe(zh_CN.title); - expect(document.documentElement.lang).toBe('zh-CN'); - }); - - it('should join strings into text based on the rule of Matched language', () => { - const { words } = bootI18n({ 'zh-TW': zh_TW, 'zh-CN': zh_CN }); - - expect( - textJoin(words.title, words.name, 'test', 'example', '8964') - ).toBe(`${words.title}${words.name} test example 8964`); - - expect( - textJoin(words.title, 'test', words.name, '8964', 'example') - ).toBe(`${words.title} test ${words.name} 8964 example`); - }); -});