From b934a1b5cd6f53423e9193e4aa9caae6fb41f969 Mon Sep 17 00:00:00 2001 From: Zeyu Zhang <39144422+zeyu2001@users.noreply.github.com> Date: Tue, 17 Sep 2024 13:39:32 +0800 Subject: [PATCH] feat: standardise eslint and prettier configs --- .github/workflows/linting.yml | 3 + apps/docs/.vitepress/config.mts | 28 +- apps/docs/.vitepress/utils.ts | 42 +- apps/docs/package.json | 8 +- package.json | 3 +- packages/eslint-config/index.js | 29 + packages/eslint-config/package.json | 20 + packages/prettier-config/index.js | 7 + packages/prettier-config/package.json | 12 + packages/safe-fs/.eslintrc | 22 +- packages/safe-fs/.prettierrc | 6 - packages/safe-fs/package.json | 17 +- packages/safe-fs/src/__tests__/fs.test.ts | 10 +- packages/safe-fs/src/getter.ts | 14 +- packages/safe-fs/src/sanitizers.ts | 12 +- packages/validators/.eslintrc | 22 +- packages/validators/.prettierrc | 6 - packages/validators/package.json | 17 +- .../validators/src/__tests__/email.test.ts | 70 +- .../validators/src/__tests__/path.test.ts | 12 +- packages/validators/src/__tests__/url.test.ts | 68 +- packages/validators/src/email/index.ts | 4 +- packages/validators/src/email/schema.ts | 10 +- packages/validators/src/email/utils.ts | 17 +- packages/validators/src/path/index.ts | 4 +- packages/validators/src/path/options.ts | 2 +- packages/validators/src/path/schema.ts | 4 +- packages/validators/src/url/index.ts | 6 +- packages/validators/src/url/options.ts | 4 +- packages/validators/src/url/schema.ts | 4 +- packages/validators/src/url/utils.ts | 23 +- pnpm-lock.yaml | 1103 ++++++++++------- turbo.json | 6 + 33 files changed, 839 insertions(+), 776 deletions(-) create mode 100644 packages/eslint-config/index.js create mode 100644 packages/eslint-config/package.json create mode 100644 packages/prettier-config/index.js create mode 100644 packages/prettier-config/package.json delete mode 100644 packages/safe-fs/.prettierrc delete mode 100644 packages/validators/.prettierrc diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 650b079..fa70406 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -28,3 +28,6 @@ jobs: - name: Lint ๐Ÿ›€ run: pnpm lint + + - name: Check for formatting ๐Ÿงน + run: pnpm format:check diff --git a/apps/docs/.vitepress/config.mts b/apps/docs/.vitepress/config.mts index 631fd64..6586585 100644 --- a/apps/docs/.vitepress/config.mts +++ b/apps/docs/.vitepress/config.mts @@ -1,26 +1,24 @@ -import { defineConfig } from "vitepress"; -import { scanDir } from "./utils"; +import { defineConfig } from 'vitepress' +import { scanDir } from './utils' export default defineConfig({ - lang: "en-US", - title: "Starter Kitty", - description: "Common app components that are safe-by-default.", + lang: 'en-US', + title: 'Starter Kitty', + description: 'Common app components that are safe-by-default.', markdown: { attrs: { disable: true } }, themeConfig: { search: { - provider: "local", + provider: 'local', }, // https://vitepress.dev/reference/default-theme-config nav: [ - { text: "Home", link: "/" }, - { text: "Examples", link: "/examples" }, - { text: "API", link: "/api" }, + { text: 'Home', link: '/' }, + { text: 'Examples', link: '/examples' }, + { text: 'API', link: '/api' }, ], - socialLinks: [ - { icon: "github", link: "https://github.com/opengovsg/starter-kitty" }, - ], + socialLinks: [{ icon: 'github', link: 'https://github.com/opengovsg/starter-kitty' }], docFooter: { prev: false, @@ -28,12 +26,12 @@ export default defineConfig({ }, sidebar: { - "/examples/": scanDir("examples"), - "/api/": scanDir("api"), + '/examples/': scanDir('examples'), + '/api/': scanDir('api'), }, }, ignoreDeadLinks: [ // ignore all localhost links /^https?:\/\/localhost/, ], -}); +}) diff --git a/apps/docs/.vitepress/utils.ts b/apps/docs/.vitepress/utils.ts index 865ff5d..565a82a 100644 --- a/apps/docs/.vitepress/utils.ts +++ b/apps/docs/.vitepress/utils.ts @@ -1,44 +1,42 @@ -import fs from "node:fs"; -import path from "node:path"; +import fs from 'node:fs' +import path from 'node:path' export const scanDir = (dir: string) => { - let res = fs - .readdirSync(path.resolve(__dirname, `../${dir}`)) - .filter((item) => !item.startsWith(".")) as string[]; + let res = fs.readdirSync(path.resolve(__dirname, `../${dir}`)).filter(item => !item.startsWith('.')) as string[] if (res) { - const arr = []; + const arr = [] for (let item of res) { - const parts = item.split("."); + const parts = item.split('.') - let currItem = arr; - let currentPath = ""; + let currItem = arr + let currentPath = '' while (parts.length > 2) { - const part = parts.shift(); - currentPath += (currentPath === "" ? "" : ".") + part; - const found = currItem.find((item) => item.text === part); + const part = parts.shift() + currentPath += (currentPath === '' ? '' : '.') + part + const found = currItem.find(item => item.text === part) if (found) { - currItem = found.items; + currItem = found.items } else { const newItem = { text: part, items: [], link: path.join(dir, currentPath), - }; - currItem.push(newItem); - currItem = newItem.items; + } + currItem.push(newItem) + currItem = newItem.items } } - const found = currItem.find((item) => item.text === parts[0]); + const found = currItem.find(item => item.text === parts[0]) if (!found) currItem.push({ text: parts[0], items: [], link: path.join(dir, item), - }); + }) } - return arr; + return arr } else { - console.warn("No files found in the directory"); - return []; + console.warn('No files found in the directory') + return [] } -}; +} diff --git a/apps/docs/package.json b/apps/docs/package.json index 31e27f9..19c8243 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -5,6 +5,8 @@ "scripts": { "dev": "vitepress dev", "build:docs": "vitepress build", + "format": "prettier --write .", + "format:check": "prettier --check .", "preview": "vitepress preview" }, "keywords": [], @@ -12,7 +14,7 @@ "license": "ISC", "devDependencies": { "vitepress": "^1.3.1", - "vue": "~3.4.31", - "@opengovsg/starter-kitty-validators": "workspace:*" - } + "vue": "~3.4.31" + }, + "prettier": "@opengovsg/prettier-config-starter-kitty" } diff --git a/package.json b/package.json index 44528d8..4accf5f 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "lint": "turbo lint", "test": "turbo test", "ci:report": "turbo ci:report", - "format": "prettier --write \"**/*.{ts,tsx,md}\"" + "format": "turbo format", + "format:check": "turbo format:check" }, "devDependencies": { "prettier": "^3.2.5", diff --git a/packages/eslint-config/index.js b/packages/eslint-config/index.js new file mode 100644 index 0000000..cfe18a2 --- /dev/null +++ b/packages/eslint-config/index.js @@ -0,0 +1,29 @@ +const { resolve } = require("node:path"); + +const project = resolve(process.cwd(), "tsconfig.json"); + +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ["opengovsg"], + ignorePatterns: ["dist/**/*", "vitest.config.ts", "vitest.setup.ts"], + plugins: ["import", "eslint-plugin-tsdoc"], + rules: { + "import/no-unresolved": "error", + "tsdoc/syntax": "error", + }, + parser: "@typescript-eslint/parser", + parserOptions: { + project: "**/tsconfig.json", + }, + settings: { + "import/parsers": { + "@typescript-eslint/parser": [".ts", ".tsx"], + }, + "import/resolver": { + typescript: { + alwaysTryTypes: true, + project: project, + }, + }, + }, +}; diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json new file mode 100644 index 0000000..119559c --- /dev/null +++ b/packages/eslint-config/package.json @@ -0,0 +1,20 @@ +{ + "name": "@opengovsg/eslint-config-starter-kitty", + "private": true, + "files": [ + "index.js" + ], + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.0.0", + "eslint": "^8.56.0", + "eslint-config-opengovsg": "^3.0.0", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-simple-import-sort": "^10.0.0", + "eslint-plugin-tsdoc": "^0.3.0", + "prettier": "^2.8.4" + } +} diff --git a/packages/prettier-config/index.js b/packages/prettier-config/index.js new file mode 100644 index 0000000..710b4ff --- /dev/null +++ b/packages/prettier-config/index.js @@ -0,0 +1,7 @@ +module.exports = { + printWidth: 120, + semi: false, + singleQuote: true, + trailingComma: "all", + arrowParens: "avoid", +}; diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json new file mode 100644 index 0000000..128b3a5 --- /dev/null +++ b/packages/prettier-config/package.json @@ -0,0 +1,12 @@ +{ + "name": "@opengovsg/prettier-config-starter-kitty", + "private": true, + "files": [ + "index.js" + ], + "devDependencies": { + "eslint": "^8", + "prettier": "^2.8.4", + "typescript": "^5.3.3" + } +} diff --git a/packages/safe-fs/.eslintrc b/packages/safe-fs/.eslintrc index 7d495d3..dbfbfea 100644 --- a/packages/safe-fs/.eslintrc +++ b/packages/safe-fs/.eslintrc @@ -1,24 +1,8 @@ { - "extends": ["opengovsg"], - "ignorePatterns": ["dist/**/*", "vitest.config.ts", "vitest.setup.ts"], - "plugins": ["import", "eslint-plugin-tsdoc"], - "rules": { - "import/no-unresolved": "error", - "tsdoc/syntax": "error" - }, + "root": true, + "extends": ["@opengovsg/eslint-config-starter-kitty/index.js"], "parser": "@typescript-eslint/parser", "parserOptions": { - "project": "**/tsconfig.json" + "project": true, }, - "settings": { - "import/parsers": { - "@typescript-eslint/parser": [".ts", ".tsx"] - }, - "import/resolver": { - "typescript": { - "alwaysTryTypes": true, - "project": "**/tsconfig.json" - } - } - } } diff --git a/packages/safe-fs/.prettierrc b/packages/safe-fs/.prettierrc deleted file mode 100644 index d50a919..0000000 --- a/packages/safe-fs/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "trailingComma": "all", - "tabWidth": 2, - "semi": false, - "singleQuote": true -} diff --git a/packages/safe-fs/package.json b/packages/safe-fs/package.json index c2fc509..94b077a 100644 --- a/packages/safe-fs/package.json +++ b/packages/safe-fs/package.json @@ -11,26 +11,21 @@ "build:report": "api-extractor run --local --verbose", "build:docs": "api-documenter markdown --input-folder ../../temp/ --output-folder ../../apps/docs/api/", "lint": "eslint \"**/*.{js,jsx,ts,tsx}\" --cache", + "format": "prettier --write .", + "format:check": "prettier --check .", "test": "vitest", "ci:report": "api-extractor run --verbose" }, "devDependencies": { + "@opengovsg/eslint-config-starter-kitty": "workspace:*", + "@opengovsg/prettier-config-starter-kitty": "workspace:*", "@swc/core": "^1.6.13", "@types/node": "^18.19.47", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.0.0", - "eslint": "^8.56.0", - "eslint-config-opengovsg": "^3.0.0", - "eslint-config-prettier": "^8.6.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-simple-import-sort": "^10.0.0", - "eslint-plugin-tsdoc": "^0.3.0", "memfs": "^4.11.1", - "prettier": "^2.8.4", "tsc-alias": "^1.8.10", "tsup": "^8.1.0", "typescript": "^5.4.5", "vitest": "^2.0.2" - } + }, + "prettier": "@opengovsg/prettier-config-starter-kitty" } diff --git a/packages/safe-fs/src/__tests__/fs.test.ts b/packages/safe-fs/src/__tests__/fs.test.ts index 47fee24..f17b73d 100644 --- a/packages/safe-fs/src/__tests__/fs.test.ts +++ b/packages/safe-fs/src/__tests__/fs.test.ts @@ -83,7 +83,7 @@ describe('getter', () => { const content = 'Async Hello, World!' await new Promise((resolve, reject) => { - sfs.writeFile(filePath, content, (err) => { + sfs.writeFile(filePath, content, err => { if (err) reject(err) else resolve() }) @@ -105,14 +105,14 @@ describe('getter', () => { const appendedContent = 'Appended async content' await new Promise((resolve, reject) => { - sfs.writeFile(filePath, initialContent, (err) => { + sfs.writeFile(filePath, initialContent, err => { if (err) reject(err) else resolve() }) }) await new Promise((resolve, reject) => { - sfs.appendFile(filePath, appendedContent, (err) => { + sfs.appendFile(filePath, appendedContent, err => { if (err) reject(err) else resolve() }) @@ -179,9 +179,7 @@ describe('getter', () => { const validPath = 'valid/nested/path.txt' const newPath = 'valid/new.txt' - expect(() => - sfs.mkdirSync('valid/nested', { recursive: true }), - ).not.toThrow() + expect(() => sfs.mkdirSync('valid/nested', { recursive: true })).not.toThrow() expect(() => sfs.writeFileSync(validPath, content)).not.toThrow() expect(() => sfs.readFileSync(validPath)).not.toThrow() expect(() => sfs.renameSync(validPath, newPath)).not.toThrow() diff --git a/packages/safe-fs/src/getter.ts b/packages/safe-fs/src/getter.ts index a55fa34..be4071e 100644 --- a/packages/safe-fs/src/getter.ts +++ b/packages/safe-fs/src/getter.ts @@ -3,17 +3,11 @@ import fs from 'node:fs' import PARAMS_TO_SANITIZE from '@/params' import { sanitizePath } from '@/sanitizers' -type ReturnType = F extends ( - ...args: infer A -) => infer R - ? R - : never +type ReturnType = F extends (...args: infer A) => infer R ? R : never type FsFunction = Extract<(typeof fs)[keyof typeof fs], CallableFunction> -export const createGetter: ( - basePath: string, -) => ProxyHandler['get'] = +export const createGetter: (basePath: string) => ProxyHandler['get'] = (basePath: string) => (target: typeof fs, p: keyof typeof fs, receiver) => { if (typeof target[p] === 'function') { const func = Reflect.get(target, p, receiver) as FsFunction @@ -28,9 +22,7 @@ export const createGetter: ( } return arg }) - return (func as CallableFunction)(...sanitizedArgs) as ReturnType< - typeof func - > + return (func as CallableFunction)(...sanitizedArgs) as ReturnType } } return func diff --git a/packages/safe-fs/src/sanitizers.ts b/packages/safe-fs/src/sanitizers.ts index 58ba779..3dcd009 100644 --- a/packages/safe-fs/src/sanitizers.ts +++ b/packages/safe-fs/src/sanitizers.ts @@ -3,14 +3,6 @@ import path from 'node:path' const LEADING_DOT_SLASH_REGEX = /^(\.\.(\/|\\|$))+/ -export const sanitizePath = ( - dangerousPath: PathLike, - rootPath: string, -): string => { - return path.join( - rootPath, - path - .normalize(dangerousPath.toString()) - .replace(LEADING_DOT_SLASH_REGEX, ''), - ) +export const sanitizePath = (dangerousPath: PathLike, rootPath: string): string => { + return path.join(rootPath, path.normalize(dangerousPath.toString()).replace(LEADING_DOT_SLASH_REGEX, '')) } diff --git a/packages/validators/.eslintrc b/packages/validators/.eslintrc index 51fda23..ebacd3f 100644 --- a/packages/validators/.eslintrc +++ b/packages/validators/.eslintrc @@ -1,24 +1,8 @@ { - "extends": ["opengovsg"], - "ignorePatterns": ["dist/**/*", "vitest.config.ts"], - "plugins": ["import", "eslint-plugin-tsdoc"], - "rules": { - "import/no-unresolved": "error", - "tsdoc/syntax": "error" - }, + "root": true, + "extends": ["@opengovsg/eslint-config-starter-kitty/index.js"], "parser": "@typescript-eslint/parser", "parserOptions": { - "project": "**/tsconfig.json" - }, - "settings": { - "import/parsers": { - "@typescript-eslint/parser": [".ts", ".tsx"] - }, - "import/resolver": { - "typescript": { - "alwaysTryTypes": true, - "project": "**/tsconfig.json" - } - } + "project": true } } diff --git a/packages/validators/.prettierrc b/packages/validators/.prettierrc deleted file mode 100644 index d50a919..0000000 --- a/packages/validators/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "trailingComma": "all", - "tabWidth": 2, - "semi": false, - "singleQuote": true -} diff --git a/packages/validators/package.json b/packages/validators/package.json index ad97f3d..d576700 100644 --- a/packages/validators/package.json +++ b/packages/validators/package.json @@ -11,6 +11,8 @@ "build:report": "api-extractor run --local --verbose", "build:docs": "api-documenter markdown --input-folder ../../temp/ --output-folder ../../apps/docs/api/", "lint": "eslint \"**/*.{js,jsx,ts,tsx}\" --cache", + "format": "prettier --write .", + "format:check": "prettier --check .", "test": "vitest", "ci:report": "api-extractor run --verbose" }, @@ -20,21 +22,14 @@ "zod-validation-error": "^3.3.0" }, "devDependencies": { + "@opengovsg/eslint-config-starter-kitty": "workspace:*", + "@opengovsg/prettier-config-starter-kitty": "workspace:*", "@swc/core": "^1.6.13", "@types/node": "^18", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.0.0", - "eslint": "^8.56.0", - "eslint-config-opengovsg": "^3.0.0", - "eslint-config-prettier": "^8.6.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-simple-import-sort": "^10.0.0", - "eslint-plugin-tsdoc": "^0.3.0", - "prettier": "^2.8.4", "tsc-alias": "^1.8.10", "tsup": "^8.1.0", "typescript": "^5.4.5", "vitest": "^2.0.2" - } + }, + "prettier": "@opengovsg/prettier-config-starter-kitty" } diff --git a/packages/validators/src/__tests__/email.test.ts b/packages/validators/src/__tests__/email.test.ts index 07d1ed6..4dedbaf 100644 --- a/packages/validators/src/__tests__/email.test.ts +++ b/packages/validators/src/__tests__/email.test.ts @@ -12,18 +12,12 @@ describe('EmailValidator with default options', () => { // https://en.wikipedia.org/wiki/Email_address expect(schema.parse('simple@example.com')).toBe('simple@example.com') - expect(schema.parse('FirstName.LastName@EasierReading.org')).toBe( - 'FirstName.LastName@EasierReading.org', - ) + expect(schema.parse('FirstName.LastName@EasierReading.org')).toBe('FirstName.LastName@EasierReading.org') expect(schema.parse('x@example.com')).toBe('x@example.com') - expect( - schema.parse( - 'long.email-address-with-hyphens@and.subdomains.example.com', - ), - ).toBe('long.email-address-with-hyphens@and.subdomains.example.com') - expect(schema.parse('user.name+tag+sorting@example.com')).toBe( - 'user.name+tag+sorting@example.com', + expect(schema.parse('long.email-address-with-hyphens@and.subdomains.example.com')).toBe( + 'long.email-address-with-hyphens@and.subdomains.example.com', ) + expect(schema.parse('user.name+tag+sorting@example.com')).toBe('user.name+tag+sorting@example.com') expect(schema.parse('user-@example.org')).toBe('user-@example.org') }) @@ -32,64 +26,38 @@ describe('EmailValidator with default options', () => { // https://en.wikipedia.org/wiki/Email_address expect(() => schema.parse('a@b@c@example.com')).toThrowError(ZodError) + expect(() => schema.parse('a"b(c)d,e:f;gi[jk]l@example.com')).toThrowError(ZodError) + expect(() => schema.parse('just"not"right@example.com')).toThrowError(ZodError) + expect(() => schema.parse('this is"notallowed@example.com')).toThrowError(ZodError) + expect(() => schema.parse('this\\ still\\"not\\\\allowed@example.com')).toThrowError(ZodError) expect(() => - schema.parse('a"b(c)d,e:f;gi[jk]l@example.com'), + schema.parse('1234567890123456789012345678901234567890123456789012345678901234+x@example.com'), ).toThrowError(ZodError) - expect(() => schema.parse('just"not"right@example.com')).toThrowError( - ZodError, - ) - expect(() => schema.parse('this is"notallowed@example.com')).toThrowError( + expect(() => schema.parse('i.like.underscores@but_they_are_not_allowed_in_this_part.example.com')).toThrowError( ZodError, ) - expect(() => - schema.parse('this\\ still\\"not\\\\allowed@example.com'), - ).toThrowError(ZodError) - expect(() => - schema.parse( - '1234567890123456789012345678901234567890123456789012345678901234+x@example.com', - ), - ).toThrowError(ZodError) - expect(() => - schema.parse( - 'i.like.underscores@but_they_are_not_allowed_in_this_part.example.com', - ), - ).toThrowError(ZodError) // We are stricter than RFC 5322, and disallow some edge cases: // Quoted strings expect(() => schema.parse('" "@example.org')).toThrowError(ZodError) expect(() => schema.parse('"john..doe"@example.org')).toThrowError(ZodError) // Bangified host route - expect(() => schema.parse('mailhost!username@example.org')).toThrowError( - ZodError, - ) + expect(() => schema.parse('mailhost!username@example.org')).toThrowError(ZodError) expect(() => - schema.parse( - '"very.(),:;<>[]\\".VERY.\\"very@\\\\ \\"very\\".unusual"@strange.example.com', - ), + schema.parse('"very.(),:;<>[]\\".VERY.\\"very@\\\\ \\"very\\".unusual"@strange.example.com'), ).toThrowError(ZodError) // %-escaped mail route - expect(() => schema.parse('user%example.com@example.org')).toThrowError( - ZodError, - ) + expect(() => schema.parse('user%example.com@example.org')).toThrowError(ZodError) // IP address instead of domain - expect(() => schema.parse('postmaster@[123.123.123.123]')).toThrowError( - ZodError, - ) + expect(() => schema.parse('postmaster@[123.123.123.123]')).toThrowError(ZodError) // Encoded-word // https://portswigger.net/research/splitting-the-email-atom - expect(() => - schema.parse('=?iso-8859-1?q?=61=62=63?=collab@psres.net'), - ).toThrowError(ZodError) + expect(() => schema.parse('=?iso-8859-1?q?=61=62=63?=collab@psres.net')).toThrowError(ZodError) - expect(() => - schema.parse('=?utf-7?b?JkFHWUFid0J2QUdJQVlRQnkt?=@psres.net'), - ).toThrowError(ZodError) + expect(() => schema.parse('=?utf-7?b?JkFHWUFid0J2QUdJQVlRQnkt?=@psres.net')).toThrowError(ZodError) - expect(() => - schema.parse('=?x?q?collab=40invalid.com=3e=00?=open.gov.sg'), - ).toThrowError(ZodError) + expect(() => schema.parse('=?x?q?collab=40invalid.com=3e=00?=open.gov.sg')).toThrowError(ZodError) }) it('should clean up unnecessary whitespace', () => { @@ -147,9 +115,7 @@ describe('EmailValidator that disallows subdomains (by default)', () => { describe('EmailValidator with invalid options', () => { it('should throw an error for invalid options', () => { // @ts-expect-error Testing invalid options - expect(() => createEmailSchema({ domains: ['gov.sg'] })).toThrowError( - OptionsError, - ) + expect(() => createEmailSchema({ domains: ['gov.sg'] })).toThrowError(OptionsError) }) it('should not throw an error when missing options', () => { diff --git a/packages/validators/src/__tests__/path.test.ts b/packages/validators/src/__tests__/path.test.ts index ec81b91..dd4c6ba 100644 --- a/packages/validators/src/__tests__/path.test.ts +++ b/packages/validators/src/__tests__/path.test.ts @@ -16,9 +16,7 @@ describe('Path validator with current working directory', () => { }) it('should trim the path', () => { - expect(schema.parse(' valid/path ')).toBe( - path.join(process.cwd(), 'valid/path'), - ) + expect(schema.parse(' valid/path ')).toBe(path.join(process.cwd(), 'valid/path')) }) it('should not allow directory traversal', () => { @@ -56,9 +54,7 @@ describe('Path validator with different directory', () => { const schema = createPathSchema({ basePath: '/var/www' }) it('should allow a valid path within the base path', () => { - expect(() => - schema.parse('../'.repeat(process.cwd().split('/').length) + 'var/www'), - ).not.toThrow() + expect(() => schema.parse('../'.repeat(process.cwd().split('/').length) + 'var/www')).not.toThrow() expect(() => schema.parse('/var/www')).not.toThrow() expect(() => schema.parse('/var/www/valid/path')).not.toThrow() expect(() => schema.parse('/var/www/valid/nested/path')).not.toThrow() @@ -77,9 +73,7 @@ describe('Path validator with invalid options', () => { expect(() => createPathSchema()).toThrow(OptionsError) }) it('should throw an error for an invalid base path', () => { - expect(() => createPathSchema({ basePath: 'relative/path' })).toThrow( - OptionsError, - ) + expect(() => createPathSchema({ basePath: 'relative/path' })).toThrow(OptionsError) expect(() => createPathSchema({ basePath: '' })).toThrow(OptionsError) expect(() => createPathSchema({ basePath: '.' })).toThrow(OptionsError) }) diff --git a/packages/validators/src/__tests__/url.test.ts b/packages/validators/src/__tests__/url.test.ts index 76308a9..a6edd23 100644 --- a/packages/validators/src/__tests__/url.test.ts +++ b/packages/validators/src/__tests__/url.test.ts @@ -13,9 +13,7 @@ describe('UrlValidator with default options', () => { }) it('should throw an error when the protocol is not http or https', () => { - expect(() => validator.parse('ftp://example.com')).toThrow( - UrlValidationError, - ) + expect(() => validator.parse('ftp://example.com')).toThrow(UrlValidationError) }) it('should allow any host when no host whitelist is provided', () => { @@ -29,24 +27,14 @@ describe('UrlValidator with default options', () => { }) it('should not allow Next.js dynamic routes', () => { - expect(() => validator.parse('https://example.com/[[...slug]]')).toThrow( - UrlValidationError, - ) - expect(() => validator.parse('https://example.com/[[slug]]')).toThrow( - UrlValidationError, - ) - expect(() => validator.parse('https://example.com/[x]?x=1')).toThrow( - UrlValidationError, - ) + expect(() => validator.parse('https://example.com/[[...slug]]')).toThrow(UrlValidationError) + expect(() => validator.parse('https://example.com/[[slug]]')).toThrow(UrlValidationError) + expect(() => validator.parse('https://example.com/[x]?x=1')).toThrow(UrlValidationError) }) it('should prevent XSS attacks', () => { - expect( - () => validator.parse('javascript&colonalert(/xss/)').protocol, - ).toThrow(UrlValidationError) - expect(() => validator.parse('javascript:alert(/xss/)')).toThrow( - UrlValidationError, - ) + expect(() => validator.parse('javascript&colonalert(/xss/)').protocol).toThrow(UrlValidationError) + expect(() => validator.parse('javascript:alert(/xss/)')).toThrow(UrlValidationError) }) }) @@ -64,12 +52,8 @@ describe('UrlValidator with custom protocol whitelist', () => { }) it('should throw an error when the protocol is not on the whitelist', () => { - expect(() => validator.parse('ftp://example.com')).toThrow( - UrlValidationError, - ) - expect(() => validator.parse('javascript:alert()')).toThrow( - UrlValidationError, - ) + expect(() => validator.parse('ftp://example.com')).toThrow(UrlValidationError) + expect(() => validator.parse('javascript:alert()')).toThrow(UrlValidationError) }) }) @@ -86,9 +70,7 @@ describe('UrlValidator with custom host whitelist', () => { }) it('should throw an error when the host is not on the whitelist', () => { - expect(() => validator.parse('https://open.gov.sg')).toThrow( - UrlValidationError, - ) + expect(() => validator.parse('https://open.gov.sg')).toThrow(UrlValidationError) }) }) @@ -104,49 +86,33 @@ describe('UrlValidator with base URL', () => { }) it('should throw an error when the URL is not on the same origin as the base URL', () => { - expect(() => validator.parse('https://open.gov.sg')).toThrow( - UrlValidationError, - ) + expect(() => validator.parse('https://open.gov.sg')).toThrow(UrlValidationError) }) it('should prevent XSS attacks', () => { - expect(validator.parse('javascript&colonalert(/xss/)').protocol).toBe( - 'https:', - ) - expect(() => validator.parse('javascript:alert(/xss/)')).toThrow( - UrlValidationError, - ) + expect(validator.parse('javascript&colonalert(/xss/)').protocol).toBe('https:') + expect(() => validator.parse('javascript:alert(/xss/)')).toThrow(UrlValidationError) }) it('should not allow Next.js dynamic routes', () => { - expect(() => - validator.parse('/[[x]]https:/[y]/example.com/[[x]]/?x&y'), - ).toThrow(UrlValidationError) + expect(() => validator.parse('/[[x]]https:/[y]/example.com/[[x]]/?x&y')).toThrow(UrlValidationError) }) it('should not allow Next.js dynamic routes', () => { - expect(() => - validator.parse('/[[x]]javascript:alert(1337)/[y]/[z]?x&y&z'), - ).toThrow(UrlValidationError) + expect(() => validator.parse('/[[x]]javascript:alert(1337)/[y]/[z]?x&y&z')).toThrow(UrlValidationError) }) }) describe('UrlValidator with invalid options', () => { it('should throw an error when the base URL is not a valid URL', () => { - expect(() => new UrlValidator({ baseOrigin: 'invalid' })).toThrow( - OptionsError, - ) + expect(() => new UrlValidator({ baseOrigin: 'invalid' })).toThrow(OptionsError) }) it('should throw an error when the base URL protocol is not http or https', () => { - expect(() => new UrlValidator({ baseOrigin: 'ftp://example.com' })).toThrow( - OptionsError, - ) + expect(() => new UrlValidator({ baseOrigin: 'ftp://example.com' })).toThrow(OptionsError) }) it('should throw an error when the base URL has a path', () => { - expect( - () => new UrlValidator({ baseOrigin: 'https://example.com/path' }), - ).toThrow(OptionsError) + expect(() => new UrlValidator({ baseOrigin: 'https://example.com/path' })).toThrow(OptionsError) }) }) diff --git a/packages/validators/src/email/index.ts b/packages/validators/src/email/index.ts index 4c4cbd1..b6af051 100644 --- a/packages/validators/src/email/index.ts +++ b/packages/validators/src/email/index.ts @@ -14,9 +14,7 @@ import { toSchema } from '@/email/schema' * * @public */ -export const createEmailSchema = ( - options: EmailValidatorOptions = {}, -): ZodSchema => { +export const createEmailSchema = (options: EmailValidatorOptions = {}): ZodSchema => { const result = optionsSchema.safeParse(options) if (result.success) { return toSchema(result.data) diff --git a/packages/validators/src/email/schema.ts b/packages/validators/src/email/schema.ts index 3f6d42e..5759e77 100644 --- a/packages/validators/src/email/schema.ts +++ b/packages/validators/src/email/schema.ts @@ -18,15 +18,11 @@ const createValidationSchema = (options: ParsedEmailValidatorOptions) => } return parsed }) - .refine((parsed) => isValidEmail(parsed, options.domains), { + .refine(parsed => isValidEmail(parsed, options.domains), { message: 'Domain not allowed', }) - .transform((parsed) => parsed.address) + .transform(parsed => parsed.address) export const toSchema = (options: ParsedEmailValidatorOptions) => { - return z - .string() - .trim() - .email({ message: 'Invalid email address' }) - .pipe(createValidationSchema(options)) + return z.string().trim().email({ message: 'Invalid email address' }).pipe(createValidationSchema(options)) } diff --git a/packages/validators/src/email/utils.ts b/packages/validators/src/email/utils.ts index 5faab50..3911a06 100644 --- a/packages/validators/src/email/utils.ts +++ b/packages/validators/src/email/utils.ts @@ -1,16 +1,9 @@ import { ParsedMailbox } from 'email-addresses' -import { - ENCODED_WORD_REGEX, - MAX_DOMAIN_LENGTH, - MAX_LOCAL_LENGTH, -} from './consts' +import { ENCODED_WORD_REGEX, MAX_DOMAIN_LENGTH, MAX_LOCAL_LENGTH } from './consts' import { ParsedEmailValidatorOptions } from './options' -export const isValidEmail = ( - email: ParsedMailbox, - whitelisted: ParsedEmailValidatorOptions['domains'], -) => { +export const isValidEmail = (email: ParsedMailbox, whitelisted: ParsedEmailValidatorOptions['domains']) => { const domain = email.domain const local = email.local @@ -37,9 +30,7 @@ export const isWhitelistedDomain = ( // Case 1: The domain is an exact match of a whitelisted domain // Case 2: The domain is a subdomain of a whitelisted domain, AND includeSubdomains is true return whitelistedDomains.some( - (whitelisted) => - domain === whitelisted.domain || - (whitelisted.includeSubdomains && - domain.endsWith(`.${whitelisted.domain}`)), + whitelisted => + domain === whitelisted.domain || (whitelisted.includeSubdomains && domain.endsWith(`.${whitelisted.domain}`)), ) } diff --git a/packages/validators/src/path/index.ts b/packages/validators/src/path/index.ts index 6f2699f..6e323c8 100644 --- a/packages/validators/src/path/index.ts +++ b/packages/validators/src/path/index.ts @@ -14,9 +14,7 @@ import { toSchema } from '@/path/schema' * * @public */ -export const createPathSchema = ( - options: PathValidatorOptions, -): ZodSchema => { +export const createPathSchema = (options: PathValidatorOptions): ZodSchema => { const result = optionsSchema.safeParse(options) if (result.success) { return toSchema(result.data) diff --git a/packages/validators/src/path/options.ts b/packages/validators/src/path/options.ts index 37c6e59..2712c66 100644 --- a/packages/validators/src/path/options.ts +++ b/packages/validators/src/path/options.ts @@ -21,7 +21,7 @@ export interface PathValidatorOptions { } export const optionsSchema = z.object({ - basePath: z.string().refine((basePath) => { + basePath: z.string().refine(basePath => { return basePath === path.resolve(basePath) && path.isAbsolute(basePath) }, 'The base path must be an absolute path'), }) diff --git a/packages/validators/src/path/schema.ts b/packages/validators/src/path/schema.ts index ce6cec5..a177074 100644 --- a/packages/validators/src/path/schema.ts +++ b/packages/validators/src/path/schema.ts @@ -10,9 +10,9 @@ const createValidationSchema = (options: ParsedPathValidatorOptions) => .string() // resolve the path relative to the Node process's current working directory // since that's what fs operations will be relative to - .transform((untrustedPath) => path.resolve(untrustedPath)) + .transform(untrustedPath => path.resolve(untrustedPath)) // resolvedPath is now an absolute path - .refine((resolvedPath) => isSafePath(resolvedPath, options.basePath), { + .refine(resolvedPath => isSafePath(resolvedPath, options.basePath), { message: 'The provided path is unsafe.', }) diff --git a/packages/validators/src/url/index.ts b/packages/validators/src/url/index.ts index fbc4a22..1c912b3 100644 --- a/packages/validators/src/url/index.ts +++ b/packages/validators/src/url/index.ts @@ -3,11 +3,7 @@ import { fromError } from 'zod-validation-error' import { OptionsError } from '@/common/errors' import { UrlValidationError } from '@/url/errors' -import { - defaultOptions, - optionsSchema, - UrlValidatorOptions, -} from '@/url/options' +import { defaultOptions, optionsSchema, UrlValidatorOptions } from '@/url/options' import { createUrlSchema } from '@/url/schema' /** diff --git a/packages/validators/src/url/options.ts b/packages/validators/src/url/options.ts index 88f3fa2..63d0e89 100644 --- a/packages/validators/src/url/options.ts +++ b/packages/validators/src/url/options.ts @@ -68,10 +68,10 @@ export const optionsSchema = z.object({ return z.NEVER } }) - .refine((url) => url.protocol === 'http:' || url.protocol === 'https:', { + .refine(url => url.protocol === 'http:' || url.protocol === 'https:', { message: 'Base URL must use HTTP or HTTPS', }) - .refine((url) => url.pathname === '/', { + .refine(url => url.pathname === '/', { message: 'Base URL must not have a path', }) .optional(), diff --git a/packages/validators/src/url/schema.ts b/packages/validators/src/url/schema.ts index 579fd31..06976c2 100644 --- a/packages/validators/src/url/schema.ts +++ b/packages/validators/src/url/schema.ts @@ -6,8 +6,8 @@ import { isSafeUrl, resolveRelativeUrl } from '@/url/utils' export const createUrlSchema = (options: ParsedUrlValidatorOptions) => { return z .string() - .transform((url) => resolveRelativeUrl(url, options.baseOrigin)) - .refine((url) => isSafeUrl(url, options.whitelist), { + .transform(url => resolveRelativeUrl(url, options.baseOrigin)) + .refine(url => isSafeUrl(url, options.whitelist), { message: 'Unsafe URL', }) } diff --git a/packages/validators/src/url/utils.ts b/packages/validators/src/url/utils.ts index 1a02574..95b3268 100644 --- a/packages/validators/src/url/utils.ts +++ b/packages/validators/src/url/utils.ts @@ -20,9 +20,7 @@ export const resolveRelativeUrl = (url: string, baseOrigin?: URL): URL => { } if (new URL(baseOrigin).origin !== normalizedUrl.origin) { - throw new UrlValidationError( - `Invalid URL: ${url} is not on the same origin as base URL ${baseOrigin.href}`, - ) + throw new UrlValidationError(`Invalid URL: ${url} is not on the same origin as base URL ${baseOrigin.href}`) } return normalizedUrl } @@ -31,14 +29,11 @@ export const resolveRelativeUrl = (url: string, baseOrigin?: URL): URL => { const resolveNextDynamicRoute = (url: URL): URL => { const pathname = url.pathname const query = new URLSearchParams(url.search) - const resolvedPathname = pathname.replace( - DYNAMIC_ROUTE_SEGMENT_REGEX, - (_, name: string) => { - const value = query.get(name) || '' - query.delete(name) - return value - }, - ) + const resolvedPathname = pathname.replace(DYNAMIC_ROUTE_SEGMENT_REGEX, (_, name: string) => { + const value = query.get(name) || '' + query.delete(name) + return value + }) const result = new URL(url.href) result.pathname = resolvedPathname @@ -47,13 +42,11 @@ const resolveNextDynamicRoute = (url: URL): URL => { export const isSafeUrl = (url: URL, whitelist: UrlValidatorWhitelist) => { // only allow whitelisted protocols - if ( - !whitelist.protocols.some((protocol) => url.protocol === `${protocol}:`) - ) { + if (!whitelist.protocols.some(protocol => url.protocol === `${protocol}:`)) { return false } // only allow whitelisted hosts - if (whitelist.hosts && !whitelist.hosts.some((host) => url.host === host)) { + if (whitelist.hosts && !whitelist.hosts.some(host => url.host === host)) { return false } // don't allow dynamic routes diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e179f8d..cf2f9da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,9 +20,6 @@ importers: apps/docs: devDependencies: - '@opengovsg/starter-kitty-validators': - specifier: workspace:* - version: link:../../packages/validators vitepress: specifier: ^1.3.1 version: 1.3.1(@algolia/client-search@4.24.0)(@types/node@18.19.47)(postcss@8.4.39)(search-insights@2.15.0)(typescript@5.4.5) @@ -30,14 +27,8 @@ importers: specifier: ~3.4.31 version: 3.4.33(typescript@5.4.5) - packages/safe-fs: + packages/eslint-config: devDependencies: - '@swc/core': - specifier: ^1.6.13 - version: 1.6.13 - '@types/node': - specifier: ^18.19.47 - version: 18.19.47 '@typescript-eslint/eslint-plugin': specifier: ^6.21.0 version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) @@ -49,28 +40,58 @@ importers: version: 8.57.0 eslint-config-opengovsg: specifier: ^3.0.0 - version: 3.0.0(@pulumi/eslint-plugin@0.2.0(eslint@8.57.0))(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8))(eslint-plugin-react-hooks@4.6.0(eslint@8.57.0))(eslint-plugin-react@7.33.2(eslint@8.57.0))(eslint-plugin-simple-import-sort@10.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) + version: 3.0.0(@pulumi/eslint-plugin@0.2.0(eslint@8.57.0))(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0))(eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.36.1(eslint@8.57.0))(eslint-plugin-simple-import-sort@10.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) eslint-config-prettier: specifier: ^8.6.0 version: 8.10.0(eslint@8.57.0) eslint-import-resolver-typescript: specifier: ^3.6.1 - version: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + version: 3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + version: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^4.2.1 + version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) eslint-plugin-simple-import-sort: specifier: ^10.0.0 version: 10.0.0(eslint@8.57.0) eslint-plugin-tsdoc: specifier: ^0.3.0 version: 0.3.0 - memfs: - specifier: ^4.11.1 - version: 4.11.1 prettier: specifier: ^2.8.4 version: 2.8.8 + + packages/prettier-config: + devDependencies: + eslint: + specifier: ^8 + version: 8.57.0 + prettier: + specifier: ^2.8.4 + version: 2.8.8 + typescript: + specifier: ^5.3.3 + version: 5.4.5 + + packages/safe-fs: + devDependencies: + '@opengovsg/eslint-config-starter-kitty': + specifier: workspace:* + version: link:../eslint-config + '@opengovsg/prettier-config-starter-kitty': + specifier: workspace:* + version: link:../prettier-config + '@swc/core': + specifier: ^1.6.13 + version: 1.6.13 + '@types/node': + specifier: ^18.19.47 + version: 18.19.47 + memfs: + specifier: ^4.11.1 + version: 4.11.1 tsc-alias: specifier: ^1.8.10 version: 1.8.10 @@ -96,42 +117,18 @@ importers: specifier: ^3.3.0 version: 3.3.0(zod@3.23.8) devDependencies: + '@opengovsg/eslint-config-starter-kitty': + specifier: workspace:* + version: link:../eslint-config + '@opengovsg/prettier-config-starter-kitty': + specifier: workspace:* + version: link:../prettier-config '@swc/core': specifier: ^1.6.13 version: 1.6.13 '@types/node': specifier: ^18 version: 18.19.39 - '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/parser': - specifier: ^6.0.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) - eslint: - specifier: ^8.56.0 - version: 8.57.0 - eslint-config-opengovsg: - specifier: ^3.0.0 - version: 3.0.0(@pulumi/eslint-plugin@0.2.0(eslint@8.57.0))(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8))(eslint-plugin-react-hooks@4.6.0(eslint@8.57.0))(eslint-plugin-react@7.33.2(eslint@8.57.0))(eslint-plugin-simple-import-sort@10.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) - eslint-config-prettier: - specifier: ^8.6.0 - version: 8.10.0(eslint@8.57.0) - eslint-import-resolver-typescript: - specifier: ^3.6.1 - version: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-simple-import-sort: - specifier: ^10.0.0 - version: 10.0.0(eslint@8.57.0) - eslint-plugin-tsdoc: - specifier: ^0.3.0 - version: 0.3.0 - prettier: - specifier: ^2.8.4 - version: 2.8.8 tsc-alias: specifier: ^1.8.10 version: 1.8.10 @@ -505,6 +502,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -592,6 +593,9 @@ packages: cpu: [x64] os: [win32] + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@shikijs/core@1.11.0': resolution: {integrity: sha512-VbEhDAhT/2ozO0TPr5/ZQBO/NWLqtk4ZiBf6NplYpF38mKjNfMMied5fNEfIfYfN+cdKvhDB4VMcKvG/g9c3zg==} @@ -691,8 +695,8 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/json-schema@7.0.12': - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -712,8 +716,8 @@ packages: '@types/node@18.19.47': resolution: {integrity: sha512-1f7dB3BL/bpd9tnDJrrHb66Y+cVrhxSOTGorRNdHwYTUlTay3HuTDPKo9a/4vX9pMQkhYBcAbL4jQdNlhCFP9A==} - '@types/semver@7.5.0': - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} @@ -984,19 +988,24 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} - array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} array.prototype.flat@1.3.2: @@ -1007,22 +1016,20 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} - array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - - available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} balanced-match@1.0.2: @@ -1055,8 +1062,9 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -1110,6 +1118,18 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -1143,8 +1163,8 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} define-properties@1.2.1: @@ -1179,23 +1199,36 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} - es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} es-shim-unscopables@1.0.2: @@ -1239,15 +1272,21 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.6.1: - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true - eslint-module-utils@2.8.0: - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + eslint-module-utils@2.11.0: + resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -1267,8 +1306,8 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import@2.29.1: - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + eslint-plugin-import@2.30.0: + resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -1288,17 +1327,17 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-react-hooks@4.6.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.33.2: - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + eslint-plugin-react@7.36.1: + resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==} engines: {node: '>=4'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 eslint-plugin-simple-import-sort@10.0.0: resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} @@ -1373,6 +1412,10 @@ packages: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -1432,8 +1475,9 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} @@ -1443,12 +1487,12 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -1471,8 +1515,8 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globby@11.1.0: @@ -1495,23 +1539,23 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} hookable@5.5.3: @@ -1548,12 +1592,13 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} - is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} @@ -1570,12 +1615,20 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} + is-bun-module@1.2.1: + resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -1600,11 +1653,12 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} - is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} is-number-object@1.0.7: @@ -1623,11 +1677,13 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} - is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -1645,18 +1701,20 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} - is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} - is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} is-what@4.1.16: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} @@ -1834,33 +1892,32 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} - object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} - object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} - object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - - object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} - object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} once@1.4.0: @@ -1942,6 +1999,10 @@ packages: resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} engines: {node: '>=12'} + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + postcss-load-config@4.0.2: resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} @@ -2000,12 +2061,12 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} - regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} require-from-string@2.0.2: @@ -2051,12 +2112,13 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} - safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} search-insights@2.15.0: resolution: {integrity: sha512-ch2sPCUDD4sbPQdknVl9ALSi9H7VyoeVbsxznYz6QV55jJ8CI3EtwpO1i84keN4+hF5IeHWIeGvc08530JkVXQ==} @@ -2065,17 +2127,17 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} shebang-command@2.0.0: @@ -2089,8 +2151,9 @@ packages: shiki@1.11.0: resolution: {integrity: sha512-NqH/O1zRHvnuk/WfSL6b7+DtI7/kkMMSQGlZhm9DyzSU+SoIHhaw/fBZMr+zp9R8KjdIzkk3JKSC6hORuGDyng==} - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -2132,18 +2195,23 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -2245,9 +2313,9 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - ts-api-utils@1.0.2: - resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} - engines: {node: '>=16.13.0'} + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -2348,20 +2416,21 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} - typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} @@ -2483,15 +2552,16 @@ packages: which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + which-builtin-type@1.1.4: + resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} engines: {node: '>= 0.4'} - which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} - which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} which@2.0.2: @@ -2879,6 +2949,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + '@nolyfill/is-core-module@1.0.39': {} + '@pkgjs/parseargs@0.11.0': optional: true @@ -2941,6 +3013,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.18.1': optional: true + '@rtsao/scc@1.1.0': {} + '@shikijs/core@1.11.0': dependencies: '@types/hast': 3.0.4 @@ -3019,7 +3093,7 @@ snapshots: dependencies: '@types/unist': 3.0.2 - '@types/json-schema@7.0.12': {} + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -3040,7 +3114,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/semver@7.5.0': {} + '@types/semver@7.5.8': {} '@types/unist@3.0.2': {} @@ -3054,13 +3128,13 @@ snapshots: '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.2 - ts-api-utils: 1.0.2(typescript@5.4.5) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -3072,7 +3146,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 optionalDependencies: typescript: 5.4.5 @@ -3105,9 +3179,9 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 - ts-api-utils: 1.0.2(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -3124,7 +3198,7 @@ snapshots: debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.2 + semver: 7.6.3 tsutils: 3.21.0(typescript@4.9.5) optionalDependencies: typescript: 4.9.5 @@ -3135,12 +3209,12 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.2 - ts-api-utils: 1.0.2(typescript@5.4.5) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -3149,14 +3223,14 @@ snapshots: '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) eslint: 8.57.0 eslint-scope: 5.1.1 - semver: 7.6.2 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript @@ -3164,13 +3238,13 @@ snapshots: '@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) eslint: 8.57.0 - semver: 7.6.2 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript @@ -3390,68 +3464,78 @@ snapshots: argparse@2.0.1: {} - array-buffer-byte-length@1.0.0: + array-buffer-byte-length@1.0.1: dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 + call-bind: 1.0.7 + is-array-buffer: 3.0.4 - array-includes@3.1.7: + array-includes@3.1.8: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 is-string: 1.0.7 array-union@2.1.0: {} - array.prototype.findlastindex@1.2.3: + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.findlastindex@1.2.5: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 array.prototype.flat@1.3.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 array.prototype.flatmap@1.3.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - array.prototype.tosorted@1.1.2: + array.prototype.tosorted@1.1.4: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 - arraybuffer.prototype.slice@1.0.2: + arraybuffer.prototype.slice@1.0.3: dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 assertion-error@2.0.1: {} - asynciterator.prototype@1.0.0: + available-typed-arrays@1.0.7: dependencies: - has-symbols: 1.0.3 - - available-typed-arrays@1.0.5: {} + possible-typed-array-names: 1.0.0 balanced-match@1.0.2: {} @@ -3479,11 +3563,13 @@ snapshots: cac@6.7.14: {} - call-bind@1.0.5: + call-bind@1.0.7: dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.1.1 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 callsites@3.1.0: {} @@ -3541,6 +3627,24 @@ snapshots: csstype@3.1.3: {} + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + debug@3.2.7: dependencies: ms: 2.1.2 @@ -3557,16 +3661,16 @@ snapshots: deep-is@0.1.4: {} - define-data-property@1.1.1: + define-data-property@1.1.4: dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 + es-errors: 1.3.0 gopd: 1.0.1 - has-property-descriptors: 1.0.1 define-properties@1.2.1: dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 diff@4.0.2: @@ -3592,81 +3696,98 @@ snapshots: emoji-regex@9.2.2: {} - enhanced-resolve@5.15.0: + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 entities@4.5.0: {} - es-abstract@1.22.3: - dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-negative-zero: 2.0.2 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.1 + object-inspect: 1.13.2 object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 - es-iterator-helpers@1.0.15: + es-define-property@1.0.0: dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-iterator-helpers@1.0.19: + dependencies: + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - es-set-tostringtag: 2.0.2 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 function-bind: 1.1.2 - get-intrinsic: 1.2.2 - globalthis: 1.0.3 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - internal-slot: 1.0.6 + internal-slot: 1.0.7 iterator.prototype: 1.1.2 - safe-array-concat: 1.0.1 + safe-array-concat: 1.1.2 + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 - es-set-tostringtag@2.0.2: + es-set-tostringtag@2.0.3: dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 es-shim-unscopables@1.0.2: dependencies: - hasown: 2.0.0 + hasown: 2.0.2 es-to-primitive@1.2.1: dependencies: @@ -3702,17 +3823,17 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-opengovsg@3.0.0(@pulumi/eslint-plugin@0.2.0(eslint@8.57.0))(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8))(eslint-plugin-react-hooks@4.6.0(eslint@8.57.0))(eslint-plugin-react@7.33.2(eslint@8.57.0))(eslint-plugin-simple-import-sort@10.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8): + eslint-config-opengovsg@3.0.0(@pulumi/eslint-plugin@0.2.0(eslint@8.57.0))(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0))(eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.36.1(eslint@8.57.0))(eslint-plugin-simple-import-sort@10.0.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8): dependencies: '@pulumi/eslint-plugin': 0.2.0(eslint@8.57.0) '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-config-prettier: 8.10.0(eslint@8.57.0) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) - eslint-plugin-react: 7.33.2(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + eslint-plugin-react: 7.36.1(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) eslint-plugin-simple-import-sort: 10.0.0(eslint@8.57.0) prettier: 2.8.8 @@ -3723,57 +3844,60 @@ snapshots: eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.13.1 + is-core-module: 2.15.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0): dependencies: - debug: 4.3.4 - enhanced-resolve: 5.15.0 + '@nolyfill/is-core-module': 1.0.39 + debug: 4.3.5 + enhanced-resolve: 5.17.1 eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - fast-glob: 3.3.1 - get-tsconfig: 4.7.2 - is-core-module: 2.13.1 + eslint-module-utils: 2.11.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0) + fast-glob: 3.3.2 + get-tsconfig: 4.8.1 + is-bun-module: 1.2.1 is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.11.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0): dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - hasown: 2.0.0 - is-core-module: 2.13.1 + eslint-module-utils: 2.11.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0) + hasown: 2.0.2 + is-core-module: 2.15.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: @@ -3791,29 +3915,31 @@ snapshots: optionalDependencies: eslint-config-prettier: 8.10.0(eslint@8.57.0) - eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-react@7.33.2(eslint@8.57.0): + eslint-plugin-react@7.36.1(eslint@8.57.0): dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 + array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 + es-iterator-helpers: 1.0.19 eslint: 8.57.0 estraverse: 5.3.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 eslint-plugin-simple-import-sort@10.0.0(eslint@8.57.0): dependencies: @@ -3941,6 +4067,14 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.5 + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} @@ -3992,32 +4126,34 @@ snapshots: function.prototype.name@1.1.6: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 functions-have-names: 1.2.3 functions-have-names@1.2.3: {} get-func-name@2.0.2: {} - get-intrinsic@1.2.2: + get-intrinsic@1.2.4: dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 get-stream@6.0.1: {} get-stream@8.0.1: {} - get-symbol-description@1.0.0: + get-symbol-description@1.0.2: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 - get-tsconfig@4.7.2: + get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -4050,9 +4186,10 @@ snapshots: dependencies: type-fest: 0.20.2 - globalthis@1.0.3: + globalthis@1.0.4: dependencies: define-properties: 1.2.1 + gopd: 1.0.1 globby@11.1.0: dependencies: @@ -4065,7 +4202,7 @@ snapshots: gopd@1.0.1: dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 graceful-fs@4.2.11: {} @@ -4075,19 +4212,19 @@ snapshots: has-flag@4.0.0: {} - has-property-descriptors@1.0.1: + has-property-descriptors@1.0.2: dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 - has-proto@1.0.1: {} + has-proto@1.0.3: {} has-symbols@1.0.3: {} - has-tostringtag@1.0.0: + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 - hasown@2.0.0: + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -4115,21 +4252,20 @@ snapshots: inherits@2.0.4: {} - internal-slot@1.0.6: + internal-slot@1.0.7: dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 - side-channel: 1.0.4 + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 - is-array-buffer@3.0.2: + is-array-buffer@3.0.4: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-async-function@2.0.0: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-bigint@1.0.4: dependencies: @@ -4141,42 +4277,50 @@ snapshots: is-boolean-object@1.1.2: dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-bun-module@1.2.1: + dependencies: + semver: 7.6.3 is-callable@1.2.7: {} - is-core-module@2.13.1: + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: dependencies: - hasown: 2.0.0 + is-typed-array: 1.1.13 is-date-object@1.0.5: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-extglob@2.1.1: {} is-finalizationregistry@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-fullwidth-code-point@3.0.0: {} is-generator-function@1.0.10: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-map@2.0.2: {} + is-map@2.0.3: {} - is-negative-zero@2.0.2: {} + is-negative-zero@2.0.3: {} is-number-object@1.0.7: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-number@7.0.0: {} @@ -4184,14 +4328,14 @@ snapshots: is-regex@1.1.4: dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 - is-set@2.0.2: {} + is-set@2.0.3: {} - is-shared-array-buffer@1.0.2: + is-shared-array-buffer@1.0.3: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-stream@2.0.1: {} @@ -4199,26 +4343,26 @@ snapshots: is-string@1.0.7: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - is-typed-array@1.1.12: + is-typed-array@1.1.13: dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 - is-weakmap@2.0.1: {} + is-weakmap@2.0.2: {} is-weakref@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 - is-weakset@2.0.2: + is-weakset@2.0.3: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-what@4.1.16: {} @@ -4229,10 +4373,10 @@ snapshots: iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 - set-function-name: 2.0.1 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 jackspeak@2.3.6: dependencies: @@ -4264,10 +4408,10 @@ snapshots: jsx-ast-utils@3.3.5: dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 - object.assign: 4.1.4 - object.values: 1.1.7 + object.assign: 4.1.5 + object.values: 1.2.0 keyv@4.5.4: dependencies: @@ -4373,46 +4517,41 @@ snapshots: object-assign@4.1.1: {} - object-inspect@1.13.1: {} + object-inspect@1.13.2: {} object-keys@1.1.1: {} - object.assign@4.1.4: + object.assign@4.1.5: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - object.entries@1.1.7: + object.entries@1.1.8: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 - object.fromentries@2.0.7: + object.fromentries@2.0.8: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - object.groupby@1.0.1: + object.groupby@1.0.3: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 - object.hasown@1.1.3: + object.values@1.2.0: dependencies: + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - - object.values@1.1.7: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 once@1.4.0: dependencies: @@ -4480,6 +4619,8 @@ snapshots: dependencies: queue-lit: 1.5.2 + possible-typed-array-names@1.0.0: {} + postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.1(@swc/core@1.6.13)(@types/node@18.19.39)(typescript@5.4.5)): dependencies: lilconfig: 3.1.2 @@ -4532,20 +4673,22 @@ snapshots: dependencies: picomatch: 2.3.1 - reflect.getprototypeof@1.0.4: + reflect.getprototypeof@1.0.6: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + which-builtin-type: 1.1.4 - regexp.prototype.flags@1.5.1: + regexp.prototype.flags@1.5.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - set-function-name: 2.0.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 require-from-string@2.0.2: {} @@ -4557,13 +4700,13 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 resolve@2.0.0-next.5: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -4601,37 +4744,40 @@ snapshots: dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.0.1: + safe-array-concat@1.1.2: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - safe-regex-test@1.0.0: + safe-regex-test@1.0.3: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 is-regex: 1.1.4 search-insights@2.15.0: {} semver@6.3.1: {} - semver@7.6.2: {} + semver@7.6.3: {} - set-function-length@1.1.1: + set-function-length@1.2.2: dependencies: - define-data-property: 1.1.1 - get-intrinsic: 1.2.2 + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 - set-function-name@2.0.1: + set-function-name@2.0.2: dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 shebang-command@2.0.0: dependencies: @@ -4644,11 +4790,12 @@ snapshots: '@shikijs/core': 1.11.0 '@types/hast': 3.0.4 - side-channel@1.0.4: + side-channel@1.0.6: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - object-inspect: 1.13.1 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 siginfo@2.0.0: {} @@ -4682,35 +4829,44 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string.prototype.matchall@4.0.10: + string.prototype.matchall@4.0.11: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.6 - regexp.prototype.flags: 1.5.1 - set-function-name: 2.0.1 - side-channel: 1.0.4 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 - string.prototype.trim@1.2.8: + string.prototype.trim@1.2.9: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - string.prototype.trimend@1.0.7: + string.prototype.trimend@1.0.8: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 - string.prototype.trimstart@1.0.7: + string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 strip-ansi@6.0.1: dependencies: @@ -4790,7 +4946,7 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@1.0.2(typescript@5.4.5): + ts-api-utils@1.3.0(typescript@5.4.5): dependencies: typescript: 5.4.5 @@ -4944,32 +5100,37 @@ snapshots: type-fest@0.20.2: {} - typed-array-buffer@1.0.0: + typed-array-buffer@1.0.2: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 - typed-array-byte-length@1.0.0: + typed-array-byte-length@1.0.1: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 - typed-array-byte-offset@1.0.0: + typed-array-byte-offset@1.0.2: dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 - typed-array-length@1.0.4: + typed-array-length@1.0.6: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 typescript@4.9.5: {} @@ -4977,7 +5138,7 @@ snapshots: unbox-primitive@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -5184,10 +5345,10 @@ snapshots: is-string: 1.0.7 is-symbol: 1.0.4 - which-builtin-type@1.1.3: + which-builtin-type@1.1.4: dependencies: function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 is-finalizationregistry: 1.0.2 @@ -5196,23 +5357,23 @@ snapshots: is-weakref: 1.0.2 isarray: 2.0.5 which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-collection: 1.0.2 + which-typed-array: 1.1.15 - which-collection@1.0.1: + which-collection@1.0.2: dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 - which-typed-array@1.1.13: + which-typed-array@1.1.15: dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 which@2.0.2: dependencies: diff --git a/turbo.json b/turbo.json index 40a20b5..df23f7e 100644 --- a/turbo.json +++ b/turbo.json @@ -13,6 +13,12 @@ "lint": { "dependsOn": ["^lint"] }, + "format": { + "dependsOn": ["^format"] + }, + "format:check": { + "dependsOn": ["^format:check"] + }, "test": { "dependsOn": ["^test"] },