diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..2a89c9e --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "trailingComma": "all", + "printWidth": 120, + "bracketSameLine": true +} diff --git a/clients/react/index.ts b/clients/react/index.ts index 9c90960..36dfc66 100644 --- a/clients/react/index.ts +++ b/clients/react/index.ts @@ -1,16 +1,21 @@ -import { useState, useEffect } from "react"; -import Gorgon, {GorgonPolicyInput} from '@gorgonjs/gorgon'; +import { useState, useEffect } from 'react'; +import Gorgon, { GorgonPolicyInput } from '@gorgonjs/gorgon'; export type UseGorgonOptions = { debug?: boolean; }; const defaultOptions = { - debug: false + debug: false, } as UseGorgonOptions; // Wraps the Gorgon get method with a React hook -export const useGorgon = (key: string, asyncFunc: () => Promise, policy?: GorgonPolicyInput, options?:UseGorgonOptions) => { +export const useGorgon = ( + key: string, + asyncFunc: () => Promise, + policy?: GorgonPolicyInput, + options?: UseGorgonOptions, +) => { const [data, setData] = useState(null); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); @@ -24,39 +29,38 @@ export const useGorgon = (key: string, asyncFunc: () => Promise, policy?: Gorgon.get(key, asyncFunc, policy) .then(async (returnedData) => { - if(isStillMounted){ - if(opts.debug) console.info('Gorgon returned the data from the function', returnedData); + if (isStillMounted) { + if (opts.debug) console.info('Gorgon returned the data from the function', returnedData); setData(await returnedData); setError(null); setLoading(false); } - }).catch( - (err) => { - if(opts.debug) console.error('Gorgon error', err); - if(isStillMounted){ - setError(err); - setData(null); - setLoading(false); - } + }) + .catch((err) => { + if (opts.debug) console.error('Gorgon error', err); + if (isStillMounted) { + setError(err); + setData(null); + setLoading(false); } - ); + }); return () => { isStillMounted = false; - } + }; }, [key, refetchCount]); - const refetch = ({clearKey}:{clearKey?: string} = {}) => { + const refetch = ({ clearKey }: { clearKey?: string } = {}) => { Gorgon.clear(clearKey || key); setRefetchCount(refetchCount + 1); - } + }; - return {data, error, loading, refetch}; -} + return { data, error, loading, refetch }; +}; // helper function to clear the cache export const clearGorgon = (key?: string) => { Gorgon.clear(key); -} +}; export { Gorgon }; diff --git a/clients/react/package.json b/clients/react/package.json index 444dd9f..b1e269d 100644 --- a/clients/react/package.json +++ b/clients/react/package.json @@ -1,6 +1,6 @@ { "name": "@gorgonjs/react", - "version": "1.4.0", + "version": "1.5.0", "description": "A simple React caching library for async functions", "homepage": "https://gorgonjs.dev", "main": "dist/index.umd.js", @@ -52,6 +52,6 @@ "react": "^18.2.0" }, "dependencies": { - "@gorgonjs/gorgon": "^1.4.0" + "@gorgonjs/gorgon": "^1.5.0" } } diff --git a/gorgonjs.dev/package.json b/gorgonjs.dev/package.json index d80681a..42d02ba 100644 --- a/gorgonjs.dev/package.json +++ b/gorgonjs.dev/package.json @@ -7,17 +7,17 @@ "dev": "astro dev", "start": "astro dev", "build": "astro build; npx -y pagefind --source dist", - "build:preview" : "astro build; npx -y pagefind --source dist --serve", + "build:preview": "astro build; npx -y pagefind --source dist --serve", "preview": "astro preview", "astro": "astro" }, "dependencies": { - "@astrojs/prism": "1.0.2", - "astro": "^1.6.7", + "@astrojs/prism": "3.0.0", + "astro": "^3.0.7", "prismjs": "^1.29.0" }, "devDependencies": { - "@astrojs/sitemap": "^1.0.0", + "@astrojs/sitemap": "^3.0.0", "@typescript-eslint/parser": "^5.42.1", "eslint": "^8.27.0", "eslint-plugin-astro": "^0.21.0", diff --git a/gorgonjs.dev/src/components/DocsNav.astro b/gorgonjs.dev/src/components/DocsNav.astro index b901f3c..95348b4 100644 --- a/gorgonjs.dev/src/components/DocsNav.astro +++ b/gorgonjs.dev/src/components/DocsNav.astro @@ -71,6 +71,7 @@ const { selected } = Astro.props; diff --git a/gorgonjs.dev/src/pages/docs/hooks.md b/gorgonjs.dev/src/pages/docs/hooks.md new file mode 100644 index 0000000..a6928fd --- /dev/null +++ b/gorgonjs.dev/src/pages/docs/hooks.md @@ -0,0 +1,30 @@ +--- +layout: ../../layouts/Docs.astro +title: Hooks +selectedNav: hooks +--- + +# Hooks + +If you would like to hook into the caching process you can do so by adding hooks to tge Gorgon instance. + +```javascript +Gorgon.addHook('clear', (input, output) => { + console.log('Clearing cache', input); +}); +``` + +You can use the following hooks: + +- `settings` +- `addProvider` +- `put` +- `clear` +- `clearAll` +- `overwrite` +- `get` +- `valueError` + +## Notes + +You can add multiple hooks to a single event. They will be executed in the order they were added. diff --git a/gorgonjs.dev/src/pages/index.astro b/gorgonjs.dev/src/pages/index.astro index e807b6d..306e3fe 100644 --- a/gorgonjs.dev/src/pages/index.astro +++ b/gorgonjs.dev/src/pages/index.astro @@ -29,7 +29,7 @@ console.log(todo3);`,
-

Gorgon.js Version 1.4.0

+

Gorgon.js Version 1.5.0

Faster Frontends, Faster servers, Less database calls. Simple.

A 3.83kb (1.3kb gzipped) caching library for your application.

diff --git a/library/.eslintrc b/library/.eslintrc index 9b0679c..06f839f 100644 --- a/library/.eslintrc +++ b/library/.eslintrc @@ -1,71 +1,29 @@ { "rules": { "accessor-pairs": 0, - "array-bracket-spacing": 0, - "arrow-body-style": 0, - "arrow-parens": ["error", "as-needed"], - "arrow-spacing": 0, "block-scoped-var": 0, - "block-spacing": 0, - "brace-style": [ - 2, - "1tbs", - { - "allowSingleLine": true - } - ], "callback-return": 0, "camelcase": 2, - "comma-dangle": [ - 1, - "always-multiline" - ], - "comma-spacing": 0, - "comma-style": 0, "complexity": 0, - "computed-property-spacing": 0, "consistent-return": 0, "consistent-this": 0, "constructor-super": 0, - "curly": [ - 2, - "all" - ], + "curly": [2, "all"], "default-case": 2, - "dot-location": [ - 2, - "property" - ], + "dot-location": [2, "property"], "dot-notation": 0, "eol-last": 0, "eqeqeq": 2, "func-names": 0, "func-style": 0, - "generator-star-spacing": 0, "global-require": 0, "guard-for-in": 2, "handle-callback-err": 0, "id-length": 0, "id-match": 0, "indent": 0, - "indent-legacy": [ - 2, - 2, - {"SwitchCase": 1} - ], + "indent-legacy": [2, 2, { "SwitchCase": 1 }], "init-declarations": 0, - "key-spacing": [ - 2, - { - "beforeColon": false, - "afterColon": true - } - ], - "linebreak-style": [ - 2, - "unix" - ], - "lines-around-comment": 0, "max-depth": 0, "max-len": [ 2, @@ -87,7 +45,6 @@ } ], "new-parens": 0, - "newline-after-var": 2, "no-alert": 0, "no-array-constructor": 2, "no-arrow-condition": 0, @@ -127,13 +84,9 @@ "no-implicit-coercion": 0, "no-implied-eval": 0, "no-inline-comments": 0, - "no-inner-declarations": [ - 2, - "functions" - ], + "no-inner-declarations": [2, "functions"], "no-invalid-regexp": 0, "no-invalid-this": 0, - "no-irregular-whitespace": 0, "no-iterator": 0, "no-label-var": 0, "no-labels": 0, @@ -142,7 +95,6 @@ "no-loop-func": 2, "no-magic-numbers": 0, "no-mixed-requires": 0, - "no-mixed-spaces-and-tabs": 2, "no-multi-spaces": 0, "no-multi-str": 2, "no-multiple-empty-lines": 0, @@ -174,13 +126,11 @@ "no-sequences": 0, "no-shadow": 0, "no-shadow-restricted-names": 0, - "no-spaced-func": 2, "no-sparse-arrays": 0, "no-sync": 0, "no-ternary": 0, "no-this-before-super": 0, "no-throw-literal": 0, - "no-trailing-spaces": 2, "no-undef": 2, "no-undef-init": 0, "no-undefined": 0, @@ -197,17 +147,9 @@ "no-void": 0, "no-warning-comments": 0, "no-with": 2, - "object-curly-spacing": [ - 2, - "never" - ], "object-shorthand": 0, "one-var": 0, "operator-assignment": 0, - "operator-linebreak": [ - 2, - "after" - ], "padded-blocks": 0, "prefer-arrow-callback": 0, "prefer-const": 1, @@ -225,30 +167,8 @@ "radix": 0, "require-jsdoc": 0, "require-yield": 0, - "semi-spacing": 0, "sort-vars": 0, - "space-after-keywords": 0, - "space-before-blocks": [ - 2, - "always" - ], - "space-before-function-paren": [ - 2, - "never" - ], - "space-before-keywords": 0, - "space-in-parens": [ - 2, - "never" - ], - "space-infix-ops": 2, - "space-return-throw-case": 0, - "space-unary-ops": 0, - "spaced-comment": 0, - "strict": [ - 2, - "global" - ], + "strict": [2, "global"], "use-isnan": 0, "valid-jsdoc": 2, "valid-typeof": 0, diff --git a/library/README.md b/library/README.md index d011cc2..3e0c198 100644 --- a/library/README.md +++ b/library/README.md @@ -1,7 +1,7 @@ # Gorgon ![coverage](https://img.shields.io/badge/coverage-97%25-brightgreen) -![size](https://img.shields.io/badge/size-4.03KB-brightgreen) -![version](https://img.shields.io/badge/version-1.4.0-blue) +![size](https://img.shields.io/badge/size-5.67KB-brightgreen) +![version](https://img.shields.io/badge/version-1.5.0-blue) ![license](https://img.shields.io/badge/license-MIT-blue) A typescript async based caching library for node or the browser. diff --git a/library/__tests__/basic.test.ts b/library/__tests__/basic.test.ts index 6822d2c..04a3be2 100644 --- a/library/__tests__/basic.test.ts +++ b/library/__tests__/basic.test.ts @@ -2,143 +2,162 @@ import { describe, it, expect, afterAll } from 'vitest'; import Gorgon from '../index'; describe('settings', () => { - afterAll(() => { - Gorgon.settings({debug: false}); + Gorgon.settings({ debug: false }); }); it('returns default settings', () => { - const retSettigns = Gorgon.settings(); expect(retSettigns.debug).toEqual(false); - }); it('can set debug mode', () => { - const retSettigns = Gorgon.settings({ debug: true, }); expect(retSettigns.debug).toEqual(true); - }); - }); describe('basic storage', () => { - - it('gets the results of a promise', async() => { - - const res = await Gorgon.get('sample1', async() => { - return 'success'; - }, 1000); + it('gets the results of a promise', async () => { + const res = await Gorgon.get( + 'sample1', + async () => { + return 'success'; + }, + 1000, + ); return expect(res).toEqual('success'); - }); - - it('returns old value, not new value for promise', async() => { - - const res = await Gorgon.get('sample2', async() => { - return 'success'; - }, 1000); + it('returns old value, not new value for promise', async () => { + const res = await Gorgon.get( + 'sample2', + async () => { + return 'success'; + }, + 1000, + ); expect(res).toEqual('success'); - const res2 = await Gorgon.get('sample2', async() => { - return 'failure'; - }, 1000); + const res2 = await Gorgon.get( + 'sample2', + async () => { + return 'failure'; + }, + 1000, + ); return expect(res2).toEqual('success'); - }); - it('overwtires the current cache item', async() => { - - const res = await Gorgon.get('sample6', async() => { - return 'success'; - }, 1000); + it('overwtires the current cache item', async () => { + const res = await Gorgon.get( + 'sample6', + async () => { + return 'success'; + }, + 1000, + ); expect(res).toEqual('success'); - const res2 = await Gorgon.overwrite('sample6', async() => { - return 'success2'; - }, 1000); - + const res2 = await Gorgon.overwrite( + 'sample6', + async () => { + return 'success2'; + }, + 1000, + ); expect(res).toEqual('success'); expect(res2).toEqual('success2'); - }); - it('cache expires', async() => { - - const res = await Gorgon.get('sample3', async() => { - return 'failure'; - }, 1000); + it('cache expires', async () => { + const res = await Gorgon.get( + 'sample3', + async () => { + return 'failure'; + }, + 1000, + ); expect(res).toEqual('failure'); // await a time of 1.5 seconds - await new Promise(resolve => setTimeout(resolve, 1500)); + await new Promise((resolve) => setTimeout(resolve, 1500)); - const res2 = await Gorgon.get('sample3', async() => { - return 'success'; - }, 1000); + const res2 = await Gorgon.get( + 'sample3', + async () => { + return 'success'; + }, + 1000, + ); expect(res2).toEqual('success'); - }); - - it('throws and does not cache', async() => { - + it('throws and does not cache', async () => { try { - const res = await Gorgon.get('sample4', async() => { - throw 'failure'; - }, 1000); - }catch(e) { + const res = await Gorgon.get( + 'sample4', + async () => { + throw 'failure'; + }, + 1000, + ); + } catch (e) { expect(e).toEqual('failure'); } - const res2 = await Gorgon.get('sample4', async() => { - return 'success'; - }, 1000); + const res2 = await Gorgon.get( + 'sample4', + async () => { + return 'success'; + }, + 1000, + ); expect(res2).toEqual('success'); - }); - - it('clears all cache items', async() => { - - const res = await Gorgon.get('sample5', async() => { - return 'failure'; - }, 1000); + it('clears all cache items', async () => { + const res = await Gorgon.get( + 'sample5', + async () => { + return 'failure'; + }, + 1000, + ); await Gorgon.clear(); - const res2 = await Gorgon.get('sample5', async() => { - return 'success'; - }, 1000); + const res2 = await Gorgon.get( + 'sample5', + async () => { + return 'success'; + }, + 1000, + ); expect(res2).toEqual('success'); - }); - - it('clears a single item that has a permenant cache', async() => { - - const res = await Gorgon.get('sample9', async() => { + it('clears a single item that has a permenant cache', async () => { + const res = await Gorgon.get('sample9', async () => { return 'success'; }); expect(res).toEqual('success'); - const res2 = await Gorgon.get('sample10', async() => { + const res2 = await Gorgon.get('sample10', async () => { return 'failure'; }); @@ -146,18 +165,16 @@ describe('basic storage', () => { await Gorgon.clear('sample10'); - const res3 = await Gorgon.get('sample9', async() => { + const res3 = await Gorgon.get('sample9', async () => { return 'failure'; }); expect(res3).toEqual('success'); - const res4 = await Gorgon.get('sample10', async() => { + const res4 = await Gorgon.get('sample10', async () => { return 'success2'; }); expect(res4).toEqual('success2'); - }); - }); diff --git a/library/__tests__/clearmany.test.ts b/library/__tests__/clearmany.test.ts index 05dcaef..1130aa4 100644 --- a/library/__tests__/clearmany.test.ts +++ b/library/__tests__/clearmany.test.ts @@ -2,63 +2,90 @@ import { describe, it, expect } from 'vitest'; import Gorgon from '../index'; describe('Clear many from storage', () => { - - it('clears many based on wildcard', async() => { - - const res = await Gorgon.get('clearmany1', async() => { - return 'success'; - }, 1000); + it('clears many based on wildcard', async () => { + const res = await Gorgon.get( + 'clearmany1', + async () => { + return 'success'; + }, + 1000, + ); expect(res).toEqual('success'); - const res2 = await Gorgon.get('clearmany2', async() => { - return 'success'; - }, 1000); + const res2 = await Gorgon.get( + 'clearmany2', + async () => { + return 'success'; + }, + 1000, + ); expect(res2).toEqual('success'); await Gorgon.clear('clearmany*'); - const res3 = await Gorgon.get('clearmany1', async() => { - return 'success2'; - }, 1000); + const res3 = await Gorgon.get( + 'clearmany1', + async () => { + return 'success2'; + }, + 1000, + ); expect(res3).toEqual('success2'); - const res4 = await Gorgon.get('clearmany2', async() => { - return 'success2'; - }, 1000); + const res4 = await Gorgon.get( + 'clearmany2', + async () => { + return 'success2'; + }, + 1000, + ); expect(res4).toEqual('success2'); - - }); - it('clears every item in the cache', async() => { - - const res = await Gorgon.get('clearall1', async() => { - return 'success'; - }, 1000); + it('clears every item in the cache', async () => { + const res = await Gorgon.get( + 'clearall1', + async () => { + return 'success'; + }, + 1000, + ); expect(res).toEqual('success'); - const res2 = await Gorgon.get('clearall2', async() => { - return 'success'; - }, 1000); + const res2 = await Gorgon.get( + 'clearall2', + async () => { + return 'success'; + }, + 1000, + ); expect(res2).toEqual('success'); await Gorgon.clearAll(); - const res3 = await Gorgon.get('clearall1', async() => { - return 'success2'; - }, 1000); + const res3 = await Gorgon.get( + 'clearall1', + async () => { + return 'success2'; + }, + 1000, + ); expect(res3).toEqual('success2'); - const res4 = await Gorgon.get('clearall2', async() => { - return 'success2'; - }, 1000); + const res4 = await Gorgon.get( + 'clearall2', + async () => { + return 'success2'; + }, + 1000, + ); expect(res4).toEqual('success2'); @@ -66,7 +93,5 @@ describe('Clear many from storage', () => { const keys = await Gorgon.providers['memory'].keys(); expect(keys.length).toEqual(0); - }); - }); diff --git a/library/__tests__/concurrency.test.ts b/library/__tests__/concurrency.test.ts index 5320dc2..adc3ba9 100644 --- a/library/__tests__/concurrency.test.ts +++ b/library/__tests__/concurrency.test.ts @@ -1,19 +1,17 @@ import { describe, it, expect, vi } from 'vitest'; import Gorgon from '../index'; -Gorgon.settings({retry: 10}); +Gorgon.settings({ retry: 10 }); vi.useRealTimers(); describe('concurrency', () => { - - it('Only calls the function once, when the call is slow', async() => { - + it('Only calls the function once, when the call is slow', async () => { let calledCount = 0; - const incrementor = async() => { + const incrementor = async () => { return new Promise((resolve: (value: boolean) => void) => { - setTimeout(()=> { + setTimeout(() => { calledCount += 1; resolve(true); }, 200); @@ -24,33 +22,29 @@ describe('concurrency', () => { const res2 = await Gorgon.get('concur1', incrementor, 50); return expect(calledCount).toEqual(1); - }); - it('Only calls the function once, but rejects both', async() => { - + it('Only calls the function once, but rejects both', async () => { let calledCount = 0; - const incrementor = async() => { + const incrementor = async () => { return new Promise((resolve, rej) => { - setTimeout(()=> { + setTimeout(() => { calledCount += 1; rej(true); }, 200); }); }; - try{ - const res = Gorgon.get('concur2', incrementor, 50).catch(e => { + try { + const res = Gorgon.get('concur2', incrementor, 50).catch((e) => { // error }); const res2 = await Gorgon.get('concur2', incrementor, 50); - }catch(e) { + } catch (e) { // error? } return expect(calledCount).toEqual(1); - }); - }); diff --git a/library/__tests__/datePolicy.test.ts b/library/__tests__/datePolicy.test.ts index 4d28555..edaaff1 100644 --- a/library/__tests__/datePolicy.test.ts +++ b/library/__tests__/datePolicy.test.ts @@ -2,19 +2,19 @@ import { describe, it, expect } from 'vitest'; import Gorgon from '../index'; describe('basic storage - date policy', () => { - - it('gets the results of a promise, Date Policy', async() => { - + it('gets the results of a promise, Date Policy', async () => { var x = new Date(); x = new Date(x.getTime() + 1000 * 1000); - const res = await Gorgon.get('datepolicy1', async() => { - return 'success'; - }, x); + const res = await Gorgon.get( + 'datepolicy1', + async () => { + return 'success'; + }, + x, + ); return expect(res).toEqual('success'); - }); - }); diff --git a/library/__tests__/debug.test.ts b/library/__tests__/debug.test.ts index 638838e..f40141c 100644 --- a/library/__tests__/debug.test.ts +++ b/library/__tests__/debug.test.ts @@ -2,42 +2,49 @@ import { describe, it, expect, beforeAll, afterAll, vi } from 'vitest'; import Gorgon from '../index'; describe('basic storage - date policy', () => { - beforeAll(() => { - Gorgon.settings({debug: true}); + Gorgon.settings({ debug: true }); }); afterAll(() => { - Gorgon.settings({debug: false}); + Gorgon.settings({ debug: false }); }); - it('gets the results of a promise, console.info happens twice', async() => { - + it('gets the results of a promise, console.info happens twice', async () => { const consoleSpy = vi.spyOn(console, 'info'); - const res = await Gorgon.get('debug1', async() => { - return 'success'; - }, 1); - - expect(consoleSpy).toHaveBeenCalledTimes(2) - return expect(consoleSpy).toHaveBeenLastCalledWith('[Gorgon] Cache resolved, resolved item for: debug1', "success"); + const res = await Gorgon.get( + 'debug1', + async () => { + return 'success'; + }, + 1, + ); + expect(consoleSpy).toHaveBeenCalledTimes(2); + return expect(consoleSpy).toHaveBeenLastCalledWith('[Gorgon] Cache resolved, resolved item for: debug1', 'success'); }); - it('gets the results of a promise, then places a resolver in the queue, console.info happens 4 times', async() => { - + it('gets the results of a promise, then places a resolver in the queue, console.info happens 4 times', async () => { const consoleSpy = vi.spyOn(console, 'info'); - const res = Gorgon.get('debug2', async() => { - return 'success'; - }, 1000); - - const res2 = await Gorgon.get('debug2', async() => { - return 'success'; - }, 1000); - - expect(consoleSpy).toHaveBeenCalledTimes(4); - return expect(consoleSpy).toHaveBeenLastCalledWith('[Gorgon] Cache queue resolved for: debug2', "success"); + const res = Gorgon.get( + 'debug2', + async () => { + return 'success'; + }, + 1000, + ); + + const res2 = await Gorgon.get( + 'debug2', + async () => { + return 'success'; + }, + 1000, + ); + + expect(consoleSpy).toHaveBeenCalledTimes(4); + return expect(consoleSpy).toHaveBeenLastCalledWith('[Gorgon] Cache queue resolved for: debug2', 'success'); }); - }); diff --git a/library/__tests__/hooks.test.ts b/library/__tests__/hooks.test.ts new file mode 100644 index 0000000..35c49e7 --- /dev/null +++ b/library/__tests__/hooks.test.ts @@ -0,0 +1,181 @@ +import { describe, it, expect, afterAll, beforeAll, vi } from 'vitest'; +import Gorgon from '../index'; + +/* +| 'settings' +| 'addProvider' +| 'put' +| 'clear' +| 'clearAll' +| 'overwrite' +| 'get' +| 'valueError'*/ + +describe('hooks', () => { + it('sets the settings hook and updates when called', () => { + const hook = { test: (key, input, oputput) => {} }; + const hookSpy = vi.spyOn(hook, 'test'); + + Gorgon.addHook('settings', hook.test); + Gorgon.settings({ debug: true }); + expect(hookSpy).toHaveBeenCalledWith( + 'settings', + { debug: true }, + { + debug: true, + defaultProvider: 'memory', + retry: 5000, + }, + ); + }); + + it('sets the addProvider hook and updates when called', () => { + const hook = { test: (key, input, oputput) => {} }; + const hookSpy = vi.spyOn(hook, 'test'); + const provider = { + init: () => Promise.resolve(), + get: (key: string) => Promise.resolve(), + set: (key: string, value: any, policy: any) => Promise.resolve(value), + clear: (key?: string) => Promise.resolve(true), + keys: () => Promise.resolve([]), + }; + + Gorgon.addHook('addProvider', hook.test); + Gorgon.addProvider('test', provider); + expect(hookSpy).toHaveBeenCalledWith('addProvider', { name: 'test', provider: provider }, undefined); + }); + + it('sets the put hook and updates when called', async () => { + const hook = { test: (key, input, oputput) => {} }; + const hookSpy = vi.spyOn(hook, 'test'); + + Gorgon.addHook('put', hook.test); + await Gorgon.put('test', { a: 1 }, { expiry: false, provider: 'memory' }); + expect(hookSpy).toHaveBeenCalledWith( + 'put', + { key: 'test', value: { a: 1 }, policy: { expiry: false, provider: 'memory' } }, + { a: 1 }, + ); + }); + + it('sets the clear hook and updates when called', async () => { + const hook = { test: (key, input, oputput) => {} }; + const hookSpy = vi.spyOn(hook, 'test'); + + Gorgon.addHook('clear', hook.test); + await Gorgon.clear('test'); + expect(hookSpy).toHaveBeenCalledWith('clear', { key: 'test', provider: undefined }, undefined); + }); + + it('sets the clearAll hook and updates when called', async () => { + const hook = { test: (key, input, oputput) => {} }; + const hookSpy = vi.spyOn(hook, 'test'); + + Gorgon.addHook('clearAll', hook.test); + await Gorgon.clearAll(); + expect(hookSpy).toHaveBeenCalledWith('clearAll', { provider: undefined }, undefined); + }); + + it('sets the overwrite hook and updates when called', async () => { + const hook = { test: (key, input, oputput) => {} }; + const hookSpy = vi.spyOn(hook, 'test'); + const funcy = async () => { + return 'overwritten'; + }; + + Gorgon.addHook('overwrite', hook.test); + await Gorgon.overwrite('testO', funcy, { expiry: false, provider: 'memory' }); + expect(hookSpy).toHaveBeenCalledWith( + 'overwrite', + { key: 'testO', asyncFunc: funcy, policy: { expiry: false, provider: 'memory' } }, + 'overwritten', + ); + }); + + it('sets the get hook and updates when called', async () => { + const hook = { test: (key, input, oputput) => {} }; + const hookSpy = vi.spyOn(hook, 'test'); + const funcy = async () => { + return 'gotten'; + }; + + Gorgon.addHook('get', hook.test); + await Gorgon.get('testG', funcy, { expiry: false, provider: 'memory' }); + expect(hookSpy).toHaveBeenCalledWith( + 'get', + { key: 'testG', asyncFunc: funcy, policy: { expiry: false, provider: 'memory' }, cacheHit: false, queued: false }, + Promise.resolve('gotten'), + ); + }); + + it('sets the valueError hook and updates when called', async () => { + const hook = { test: (key, input, oputput) => {} }; + const hookSpy = vi.spyOn(hook, 'test'); + const funcy = async () => { + throw new Error('test'); + }; + + Gorgon.addHook('valueError', hook.test); + try { + await Gorgon.get('testVE', funcy); + } catch (e) { + // error expected + } + expect(hookSpy).toHaveBeenCalledWith( + 'valueError', + { + key: 'testVE', + cacheHit: false, + queued: false, + asyncFunc: funcy, + policy: { expiry: false, provider: 'memory' }, + }, + new Error('test'), + ); + }); + + describe('hooks advanced functions', () => { + it('adds multiple hooks at once', async () => { + const hook = { test: (key, input, oputput) => {} }; + const hookSpy = vi.spyOn(hook, 'test'); + + Gorgon.addHook('settings', [hook.test]); + Gorgon.settings({ debug: true }); + + expect(hookSpy).toHaveBeenCalledWith( + 'settings', + { debug: true }, + { + debug: true, + defaultProvider: 'memory', + retry: 5000, + }, + ); + }); + + it('console errors when a hook has an error', async () => { + const hook = { + test: (key, input, oputput) => { + throw new Error('this is a bad hook'); + }, + }; + const hookSpy = vi.spyOn(hook, 'test'); + const hookSpy2 = vi.spyOn(console, 'error'); + + Gorgon.addHook('settings', hook.test); + Gorgon.settings({ debug: true }); + + expect(hookSpy).toHaveBeenCalledWith( + 'settings', + { debug: true }, + { + debug: true, + defaultProvider: 'memory', + retry: 5000, + }, + ); + + expect(hookSpy2).toHaveBeenCalledWith('[Gorgon] Hook error for hook: settings', new Error('this is a bad hook')); + }); + }); +}); diff --git a/library/index.ts b/library/index.ts index b50806a..c6be214 100644 --- a/library/index.ts +++ b/library/index.ts @@ -1,16 +1,26 @@ import MemoryCache from './provider/memory'; export type asyncFunction = () => Promise | (() => any); +export type GorgonHookKey = + | 'settings' + | 'addProvider' + | 'put' + | 'clear' + | 'clearAll' + | 'overwrite' + | 'get' + | 'valueError'; +export type GorgonHook = (key: GorgonHookKey, input?: any, output?: any) => void; export type GorgonSettings = { debug: boolean; defaultProvider: string; retry: number; -} +}; export type GorgonSettingsInput = { debug?: boolean; defaultProvider?: string; retry?: number; -} +}; export type GorgonPolicy = { expiry: number | Date | false; provider: string; @@ -34,8 +44,7 @@ export interface IGorgonCacheProvider { } const Gorgon = (() => { - - const currentTasks = {} as {[key: string]: GorgonCurrentTaskItem}; + const currentTasks = {} as { [key: string]: GorgonCurrentTaskItem }; const hOP = currentTasks.hasOwnProperty; const settings = { @@ -44,7 +53,7 @@ const Gorgon = (() => { retry: 5000, } as GorgonSettings; - const policyMaker = function(incPolicy?: GorgonPolicyInput) { + const policyMaker = function (incPolicy?: GorgonPolicyInput) { const outPolicy = { expiry: false, provider: settings.defaultProvider, @@ -56,20 +65,20 @@ const Gorgon = (() => { } // Type is a full policy object - if(incPolicy instanceof Date) { + if (incPolicy instanceof Date) { var d = new Date(); outPolicy.expiry = Math.ceil((incPolicy.getTime() - d.getTime()) / 1000); - }else if (typeof incPolicy === 'object' && incPolicy.expiry) { - if(incPolicy.expiry instanceof Date) { + } else if (typeof incPolicy === 'object' && incPolicy.expiry) { + if (incPolicy.expiry instanceof Date) { outPolicy.expiry = Math.ceil((incPolicy.expiry.getTime() - d.getTime()) / 1000); - }else{ + } else { outPolicy.expiry = incPolicy.expiry; } outPolicy.provider = incPolicy.provider || outPolicy.provider; - } else if(typeof incPolicy === 'object') { + } else if (typeof incPolicy === 'object') { outPolicy.provider = incPolicy.provider || outPolicy.provider; - } else if(typeof incPolicy === 'number') { + } else if (typeof incPolicy === 'number') { outPolicy.expiry = incPolicy; } @@ -80,9 +89,25 @@ const Gorgon = (() => { }; const gorgonCore = { - // Providers available for use - providers: {} as {[key: string]: IGorgonCacheProvider}, + providers: {} as { [key: string]: IGorgonCacheProvider }, + + // Hooks + hooks: {} as { [key: string]: Array }, + + _callHooks: (key: GorgonHookKey, input?: any, output?: any) => { + if (hOP.call(gorgonCore.hooks, key)) { + for (var i in gorgonCore.hooks[key]) { + if (typeof gorgonCore.hooks[key][i] === 'function') { + try { + gorgonCore.hooks[key][i](key, input, output); + } catch (e) { + console.error('[Gorgon] Hook error for hook: ' + key, e); + } + } + } + } + }, // Allows for settings on the gorgon cache settings: (newSettings?: GorgonSettingsInput) => { @@ -92,32 +117,52 @@ const Gorgon = (() => { Object.assign(settings, newSettings); // only overwrite ones sent in; keep others at existing + gorgonCore._callHooks('settings', newSettings, settings); + return settings; }, + // add a hook or array of hooks + addHook: (key: GorgonHookKey, hook: GorgonHook | Array) => { + if (!hOP.call(gorgonCore.hooks, key)) { + gorgonCore.hooks[key] = []; + } + + if (Array.isArray(hook)) { + gorgonCore.hooks[key] = gorgonCore.hooks[key].concat(hook); + } else { + gorgonCore.hooks[key].push(hook); + } + }, + // Add a provider - addProvider: (name: string, provider:IGorgonCacheProvider) => { + addProvider: (name: string, provider: IGorgonCacheProvider) => { provider.init(); // Trigger for provider to clear any old cache items or any other cleanup gorgonCore.providers[name] = provider; + + gorgonCore._callHooks('addProvider', { name, provider }); }, // Place an item into the cache - put: async(key:string, value:R, policy?: GorgonPolicyInput):Promise => { + put: async (key: string, value: R, policy?: GorgonPolicyInput): Promise => { policy = policyMaker(policy); var prov = gorgonCore.providers[policy.provider]; + gorgonCore._callHooks('put', { key, value, policy }, value); + return prov.set(key, value, policyMaker(policy)); }, - // Clear one or all items in the cache - clear: async(key: string, provider?: string) => { - + // Clear one or all items in the cache + clear: async (key: string, provider?: string) => { var prov = gorgonCore.providers[provider || settings.defaultProvider]; + gorgonCore._callHooks('clear', { key, provider }); + // Clear a wildcard search of objects if (key && key.indexOf('*') > -1) { - return prov.keys().then(function(keys) { - var cacheMatchKeys = keys.filter(function(str) { + return prov.keys().then(function (keys) { + var cacheMatchKeys = keys.filter(function (str) { return new RegExp('^' + key.split('*').join('.*') + '$').test(str); }); @@ -131,42 +176,47 @@ const Gorgon = (() => { // Not a special clear return prov.clear(key); - }, // Clear all keys/values in the cache - clearAll: async(provider?: string) => { + clearAll: async (provider?: string) => { var prov = gorgonCore.providers[provider || settings.defaultProvider]; + gorgonCore._callHooks('clearAll', { provider }); + return prov.clear(); }, // Allows you to instantly overwite a cache object - overwrite: async(key:string, asyncFunc: asyncFunction, policy?: GorgonPolicyInput) => { - - try{ + overwrite: async (key: string, asyncFunc: asyncFunction, policy?: GorgonPolicyInput) => { + try { const resolvedData = await asyncFunc(); const val = await gorgonCore.put(key, resolvedData, policyMaker(policy)); + gorgonCore._callHooks('overwrite', { key, asyncFunc, policy }, val); + return val; - }catch (e) { + } catch (e) { throw e; } - }, // Allows you to get from the cache or pull from the promise - get: async(key:string, asyncFunc:() => R, policy?: GorgonPolicyInput):Promise => { - + get: async (key: string, asyncFunc: () => R, policy?: GorgonPolicyInput): Promise => { policy = policyMaker(policy); const prov = gorgonCore.providers[policy.provider]; const currentVal = await prov.get(key); // Most providers will only lookup by key and return false on not found // If we have a current value sent it out; cache hit! - if(currentVal !== undefined) { - if(settings.debug) {console.info('[Gorgon] Cache hit for key: ' + key, currentVal);} + if (currentVal !== undefined) { + if (settings.debug) { + console.info('[Gorgon] Cache hit for key: ' + key, currentVal); + } + + gorgonCore._callHooks('get', { key, asyncFunc, policy, cacheHit: true, queued: false }, currentVal); + return currentVal; } @@ -176,16 +226,18 @@ const Gorgon = (() => { var oldQueue = false; for (var i in currentTasks[key]) { - if(currentTasks[key][i].queued < new Date(Date.now() - settings.retry)) { + if (currentTasks[key][i].queued < new Date(Date.now() - settings.retry)) { oldQueue = true; } } // Add to the current queue - if(!oldQueue) { - if(settings.debug) {console.info('[Gorgon] Cache miss, in progress, adding to current queue for key: ' + key);} + if (!oldQueue) { + if (settings.debug) { + console.info('[Gorgon] Cache miss, in progress, adding to current queue for key: ' + key); + } - var concurent = new Promise(function(resolve: (value: R) => void, reject) { + var concurent = new Promise(function (resolve: (value: R) => void, reject) { currentTasks[key].push({ res: resolve, rej: reject, @@ -193,27 +245,40 @@ const Gorgon = (() => { }); }); + gorgonCore._callHooks('get', { key, asyncFunc, policy, cacheHit: false, queued: true }, concurent); + return concurent; } - }else{ + } else { // Add current task to list, this is the first one so the primary - currentTasks[key] = [{queued: new Date()}]; + currentTasks[key] = [{ queued: new Date() }]; } - try{ - if(settings.debug) {console.info('[Gorgon] Cache miss, resolving item for: ' + key);} + try { + if (settings.debug) { + console.info('[Gorgon] Cache miss, resolving item for: ' + key); + } - // This is the primary item, lets resolve and push it out - const resolvedData = await asyncFunc(); + // This is the primary item + const resolver = asyncFunc(); + + gorgonCore._callHooks('get', { key, asyncFunc, policy, cacheHit: false, queued: false }, resolver); - if(settings.debug) {console.info('[Gorgon] Cache resolved, resolved item for: ' + key, resolvedData);} + // wait for it to finish then push it out + const resolvedData = await resolver; + + if (settings.debug) { + console.info('[Gorgon] Cache resolved, resolved item for: ' + key, resolvedData); + } const val = await gorgonCore.put(key, resolvedData, policyMaker(policy)); if (hOP.call(currentTasks, key)) { for (var i in currentTasks[key]) { - if(currentTasks[key][i].res) { - if(settings.debug) {console.info('[Gorgon] Cache queue resolved for: ' + key, resolvedData);} + if (currentTasks[key][i].res) { + if (settings.debug) { + console.info('[Gorgon] Cache queue resolved for: ' + key, resolvedData); + } currentTasks[key][i].res(val); } @@ -224,32 +289,29 @@ const Gorgon = (() => { } return val; - - }catch (e) { + } catch (e) { if (hOP.call(currentTasks, key)) { for (var i in currentTasks[key]) { - if(currentTasks[key][i].rej) { + if (currentTasks[key][i].rej) { currentTasks[key][i].rej(e); } } + gorgonCore._callHooks('valueError', { key, asyncFunc, policy, cacheHit: false, queued: false }, e); + currentTasks[key] = []; delete currentTasks[key]; } throw e; } - }, - - }; gorgonCore.addProvider('memory', MemoryCache()); // Default provider, light weight and simple return gorgonCore; - })(); -export {MemoryCache}; +export { MemoryCache }; export default Gorgon; diff --git a/library/package.json b/library/package.json index 5e63dd7..03582f7 100644 --- a/library/package.json +++ b/library/package.json @@ -1,6 +1,6 @@ { "name": "@gorgonjs/gorgon", - "version": "1.4.1", + "version": "1.5.0", "description": "A simple caching library for async functions", "homepage": "https://gorgonjs.dev", "main": "./dist/index.umd.js", @@ -38,6 +38,7 @@ "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", "@vitest/coverage-c8": "^0.25.0", + "@vitest/coverage-v8": "^0.34.3", "eslint": "^8.45.0", "jest": "^27.5.1", "typescript": "^5.1.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f3d623..7a75fbb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,7 +32,7 @@ importers: version: 4.8.4 vite: specifier: ^3.2.3 - version: 3.2.3(sass@1.56.1) + version: 3.2.3(@types/node@18.11.9) vite-plugin-dts: specifier: ^1.7.0 version: 1.7.0(vite@3.2.3) @@ -75,23 +75,23 @@ importers: version: 4.8.4 vite: specifier: ^3.2.3 - version: 3.2.3(sass@1.56.1) + version: 3.2.3(@types/node@18.11.9) gorgonjs.dev: dependencies: '@astrojs/prism': - specifier: 1.0.2 - version: 1.0.2 + specifier: 3.0.0 + version: 3.0.0 astro: - specifier: ^1.6.7 - version: 1.6.7(sass@1.56.1) + specifier: ^3.0.7 + version: 3.0.7(sass@1.56.1) prismjs: specifier: ^1.29.0 version: 1.29.0 devDependencies: '@astrojs/sitemap': - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^3.0.0 + version: 3.0.0 '@typescript-eslint/parser': specifier: ^5.42.1 version: 5.42.1(eslint@8.27.0)(typescript@4.8.4) @@ -143,6 +143,9 @@ importers: '@vitest/coverage-c8': specifier: ^0.25.0 version: 0.25.0 + '@vitest/coverage-v8': + specifier: ^0.34.3 + version: 0.34.3(vitest@0.33.0) eslint: specifier: ^8.45.0 version: 8.45.0 @@ -210,116 +213,77 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 - /@astrojs/compiler@0.29.19: - resolution: {integrity: sha512-lvPpoOA6Fc1NpJrPT65ZOhhFieYkiBds9wzOhWX55lXMUpNPu5CUxqzgDAkNSTIoXHZxkxHfi+6EpFNnRZBBYQ==} - dev: false - - /@astrojs/compiler@0.31.4: - resolution: {integrity: sha512-6bBFeDTtPOn4jZaiD3p0f05MEGQL9pw2Zbfj546oFETNmjJFWO3nzHz6/m+P53calknCvyVzZ5YhoBLIvzn5iw==} - dev: false - /@astrojs/compiler@0.32.0: resolution: {integrity: sha512-QL5qMGkfsC1/kDjJF4RRagz8/hACBUb19cHWrQ8AROphS42qXM6JhoO1Og5FohV3p2VfT5CdEJspn4uNsgZvmw==} dev: true - /@astrojs/language-server@0.28.3: - resolution: {integrity: sha512-fPovAX/X46eE2w03jNRMpQ7W9m2mAvNt4Ay65lD9wl1Z5vIQYxlg7Enp9qP225muTr4jSVB5QiLumFJmZMAaVA==} - hasBin: true - dependencies: - '@vscode/emmet-helper': 2.9.2 - events: 3.3.0 - prettier: 2.8.8 - prettier-plugin-astro: 0.7.2 - source-map: 0.7.4 - vscode-css-languageservice: 6.2.6 - vscode-html-languageservice: 5.0.6 - vscode-languageserver: 8.1.0 - vscode-languageserver-protocol: 3.17.3 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.3 - vscode-uri: 3.0.7 + /@astrojs/compiler@2.0.1: + resolution: {integrity: sha512-DfBR7Cf+tOgQ4n7TIgTtU5x5SEA/08DNshpEPcT+91A0KbBlmUOYMBM/O6qAaHkmVo1KIoXQYhAmfdTT1zx9PQ==} + dev: false + + /@astrojs/internal-helpers@0.2.0: + resolution: {integrity: sha512-NQ4ppp1CM0HNkKbJNM4saVSfmUYzGlRalF6wx7F6T/MYHYSWGuojY89/oFTy4t8VlOGUCUijlsVNNeziWaUo5g==} dev: false - /@astrojs/markdown-remark@1.2.0: - resolution: {integrity: sha512-Cb+uhSuukyfERknfJ8K4iJLeKJaiZWi1BTwPS4fzw0bc9kGKe5VeTRzd2E25+vaMnRTk0tN/y6QfYEMMN3Q97g==} + /@astrojs/markdown-remark@3.0.0(astro@3.0.7): + resolution: {integrity: sha512-s8I49Je4++ImgYAgwL32HgN8m6we2qz3RtBpN4AjObMODPwDylmzUHZksD8Toy31q/P59ED3MuwphqOGm9l03w==} + peerDependencies: + astro: ^3.0.0 dependencies: - '@astrojs/micromark-extension-mdx-jsx': 1.0.3 - '@astrojs/prism': 1.0.2 - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) - github-slugger: 1.5.0 - hast-util-to-html: 8.0.4 - import-meta-resolve: 2.2.2 - mdast-util-from-markdown: 1.3.1 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdx-jsx: 1.2.0 - micromark-extension-mdx-expression: 1.0.8 - micromark-extension-mdx-md: 1.0.1 - micromark-util-combine-extensions: 1.1.0 + '@astrojs/prism': 3.0.0 + astro: 3.0.7(sass@1.56.1) + github-slugger: 2.0.0 + import-meta-resolve: 3.0.0 rehype-raw: 6.1.1 - rehype-stringify: 9.0.3 + rehype-stringify: 9.0.4 remark-gfm: 3.0.1 remark-parse: 10.0.2 remark-rehype: 10.1.0 remark-smartypants: 2.0.0 - shiki: 0.11.1 + shiki: 0.14.4 unified: 10.1.2 - unist-util-map: 3.1.3 unist-util-visit: 4.1.2 vfile: 5.3.7 transitivePeerDependencies: - supports-color dev: false - /@astrojs/micromark-extension-mdx-jsx@1.0.3: - resolution: {integrity: sha512-O15+i2DGG0qb1R/1SYbFXgOKDGbYdV8iJMtuboVb1S9YFQfMOJxaCMco0bhXQI7PmZcQ4pZWIjT5oZ64dXUtRA==} - dependencies: - '@types/acorn': 4.0.6 - estree-util-is-identifier-name: 2.1.0 - micromark-factory-mdx-expression: 1.0.9 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - vfile-message: 3.1.4 - dev: false - - /@astrojs/prism@1.0.2: - resolution: {integrity: sha512-o3cUVoAuALDqdN5puNlsN2eO4Yi1kDh68YO8V7o6U4Ts+J/mMayzlJ7JsgYAmob0xrf/XnADVgu8khfMv/w3uA==} - engines: {node: ^14.18.0 || >=16.12.0} + /@astrojs/prism@3.0.0: + resolution: {integrity: sha512-g61lZupWq1bYbcBnYZqdjndShr/J3l/oFobBKPA3+qMat146zce3nz2kdO4giGbhYDt4gYdhmoBz0vZJ4sIurQ==} + engines: {node: '>=18.14.1'} dependencies: prismjs: 1.29.0 dev: false - /@astrojs/sitemap@1.0.0: - resolution: {integrity: sha512-42GxuF5FP7RaKXZrwGLBLOX3hPv+Wl7ExJC43O0J5e34ojJkLeKf7QfwN1UwrJlqH0Ywi0Fm4/xGe482G09+wg==} + /@astrojs/sitemap@3.0.0: + resolution: {integrity: sha512-qm7npHuUW4q3OOmulqhJ1g69jEQu0Sdc6P8NbOzqIoosj/L+3v4i8dtKBnp6n1UQ4Sx8H8Vdi3Z/On7i9/ZJhw==} dependencies: sitemap: 7.1.1 - zod: 3.21.4 + zod: 3.21.1 dev: true - /@astrojs/telemetry@1.0.1: - resolution: {integrity: sha512-SJVfZHp00f8VZsT1fsx1+6acJGUNt/84xZytV5znPzzNE8RXjlE0rv03llgTsEeUHYZc6uJah91jNojS7RldFg==} - engines: {node: ^14.18.0 || >=16.12.0} + /@astrojs/telemetry@3.0.1: + resolution: {integrity: sha512-7zJMuikRDQ0LLLivteu0+y4pqdgznrChFiRrY3qmKlOEkLWD1T3u1a5M970lvpErP7Vgh4P298JBPjv8LTj+sw==} + engines: {node: '>=18.14.1'} dependencies: ci-info: 3.8.0 debug: 4.3.4 dlv: 1.1.3 dset: 3.1.2 is-docker: 3.0.0 - is-wsl: 2.2.0 - node-fetch: 3.3.1 + is-wsl: 3.0.0 + undici: 5.23.0 which-pm-runs: 1.1.0 transitivePeerDependencies: - supports-color dev: false - /@astrojs/webapi@1.1.1: - resolution: {integrity: sha512-yeUvP27PoiBK/WCxyQzC4HLYZo4Hg6dzRd/dTsL50WGlAQVCwWcqzVJrIZKvzNDNaW/fIXutZTmdj6nec0PIGg==} + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} dependencies: - global-agent: 3.0.0 - node-fetch: 3.3.1 + '@babel/highlight': 7.22.13 + chalk: 2.4.2 dev: false /@babel/code-frame@7.22.5: @@ -332,6 +296,29 @@ packages: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} + /@babel/core@7.22.11: + resolution: {integrity: sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.10 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) + '@babel/helpers': 7.22.11 + '@babel/parser': 7.22.14 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.11 + '@babel/types': 7.22.11 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/core@7.22.9: resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} engines: {node: '>=6.9.0'} @@ -353,6 +340,17 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true + + /@babel/generator@7.22.10: + resolution: {integrity: sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.11 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + dev: false /@babel/generator@7.22.9: resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} @@ -362,6 +360,7 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 + dev: true /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} @@ -369,6 +368,17 @@ packages: dependencies: '@babel/types': 7.22.5 + /@babel/helper-compilation-targets@7.22.10: + resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: false + /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} engines: {node: '>=6.9.0'} @@ -381,6 +391,7 @@ packages: browserslist: 4.21.9 lru-cache: 5.1.1 semver: 6.3.1 + dev: true /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} @@ -405,6 +416,20 @@ packages: dependencies: '@babel/types': 7.22.5 + /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.11): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.5 + dev: false + /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} engines: {node: '>=6.9.0'} @@ -417,6 +442,7 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.5 + dev: true /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} @@ -446,6 +472,17 @@ packages: resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} + /@babel/helpers@7.22.11: + resolution: {integrity: sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.11 + '@babel/types': 7.22.11 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helpers@7.22.6: resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} engines: {node: '>=6.9.0'} @@ -455,6 +492,16 @@ packages: '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color + dev: true + + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: false /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} @@ -464,6 +511,13 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/parser@7.22.14: + resolution: {integrity: sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.11 + /@babel/parser@7.22.7: resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} engines: {node: '>=6.0.0'} @@ -516,6 +570,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.11): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.9): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} @@ -524,6 +588,7 @@ packages: dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.9): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -629,6 +694,20 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.11): + resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.11) + '@babel/types': 7.22.11 + dev: false + /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.9): resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} engines: {node: '>=6.9.0'} @@ -640,7 +719,8 @@ packages: '@babel/helper-module-imports': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) - '@babel/types': 7.22.5 + '@babel/types': 7.22.11 + dev: true /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} @@ -650,6 +730,24 @@ packages: '@babel/parser': 7.22.7 '@babel/types': 7.22.5 + /@babel/traverse@7.22.11: + resolution: {integrity: sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.10 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.14 + '@babel/types': 7.22.11 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/traverse@7.22.8: resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} engines: {node: '>=6.9.0'} @@ -666,6 +764,15 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true + + /@babel/types@7.22.11: + resolution: {integrity: sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + to-fast-properties: 2.0.0 /@babel/types@7.22.5: resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} @@ -688,29 +795,21 @@ packages: postcss-selector-parser: 6.0.13 dev: true - /@emmetio/abbreviation@2.3.3: - resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} - dependencies: - '@emmetio/scanner': 1.0.4 - dev: false - - /@emmetio/css-abbreviation@2.1.8: - resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} - dependencies: - '@emmetio/scanner': 1.0.4 - dev: false - - /@emmetio/scanner@1.0.4: - resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} - dev: false - /@esbuild/android-arm64@0.18.13: resolution: {integrity: sha512-j7NhycJUoUAG5kAzGf4fPWfd17N6SM3o1X6MlXVqfHvs2buFraCJzos9vbeWjLxOyBKHyPOnuCuipbhvbYtTAg==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true - dev: true + optional: true + + /@esbuild/android-arm64@0.19.2: + resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false optional: true /@esbuild/android-arm@0.15.18: @@ -719,6 +818,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-arm@0.18.13: @@ -727,7 +827,15 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: true + optional: true + + /@esbuild/android-arm@0.19.2: + resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false optional: true /@esbuild/android-x64@0.18.13: @@ -736,7 +844,15 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true + optional: true + + /@esbuild/android-x64@0.19.2: + resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false optional: true /@esbuild/darwin-arm64@0.18.13: @@ -745,7 +861,15 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.2: + resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true /@esbuild/darwin-x64@0.18.13: @@ -754,7 +878,15 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true + optional: true + + /@esbuild/darwin-x64@0.19.2: + resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true /@esbuild/freebsd-arm64@0.18.13: @@ -763,7 +895,15 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.2: + resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false optional: true /@esbuild/freebsd-x64@0.18.13: @@ -772,7 +912,15 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.2: + resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false optional: true /@esbuild/linux-arm64@0.18.13: @@ -781,7 +929,15 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-arm64@0.19.2: + resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-arm@0.18.13: @@ -790,7 +946,15 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-arm@0.19.2: + resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-ia32@0.18.13: @@ -799,13 +963,12 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-loong64@0.14.54: - resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + /@esbuild/linux-ia32@0.19.2: + resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==} engines: {node: '>=12'} - cpu: [loong64] + cpu: [ia32] os: [linux] requiresBuild: true dev: false @@ -817,6 +980,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-loong64@0.18.13: @@ -825,7 +989,15 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-loong64@0.19.2: + resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-mips64el@0.18.13: @@ -834,7 +1006,15 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.2: + resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-ppc64@0.18.13: @@ -843,7 +1023,15 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.2: + resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-riscv64@0.18.13: @@ -852,7 +1040,15 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.2: + resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-s390x@0.18.13: @@ -861,7 +1057,15 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-s390x@0.19.2: + resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/linux-x64@0.18.13: @@ -870,7 +1074,15 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true + optional: true + + /@esbuild/linux-x64@0.19.2: + resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true /@esbuild/netbsd-x64@0.18.13: @@ -879,7 +1091,15 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.2: + resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false optional: true /@esbuild/openbsd-x64@0.18.13: @@ -888,7 +1108,15 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.2: + resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false optional: true /@esbuild/sunos-x64@0.18.13: @@ -897,7 +1125,15 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true + optional: true + + /@esbuild/sunos-x64@0.19.2: + resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false optional: true /@esbuild/win32-arm64@0.18.13: @@ -906,25 +1142,49 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true + optional: true + + /@esbuild/win32-arm64@0.19.2: + resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true /@esbuild/win32-ia32@0.18.13: resolution: {integrity: sha512-D+wKZaRhQI+MUGMH+DbEr4owC2D7XnF+uyGiZk38QbgzLcofFqIOwFs7ELmIeU45CQgfHNy9Q+LKW3cE8g37Kg==} engines: {node: '>=12'} - cpu: [ia32] + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-ia32@0.19.2: + resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64@0.18.13: + resolution: {integrity: sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA==} + engines: {node: '>=12'} + cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true - /@esbuild/win32-x64@0.18.13: - resolution: {integrity: sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA==} + /@esbuild/win32-x64@0.19.2: + resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true - dev: true + dev: false optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): @@ -1243,10 +1503,6 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - /@ljharb/has-package-exports-patterns@0.0.2: - resolution: {integrity: sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==} - dev: false - /@microsoft/api-extractor-model@7.27.4(@types/node@18.11.9): resolution: {integrity: sha512-HjqQFmuGPOS20rtnu+9Jj0QrqZyR59E+piUWXPMZTTn4jaZI+4UmsHSf3Id8vyueAhOBH2cgwBuRTE5R+MfSMw==} dependencies: @@ -1318,26 +1574,7 @@ packages: open: 9.1.0 picocolors: 1.0.0 tslib: 2.6.0 - - /@polka/url@1.0.0-next.21: - resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} - dev: false - - /@proload/core@0.3.3: - resolution: {integrity: sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==} - dependencies: - deepmerge: 4.3.1 - escalade: 3.1.1 - dev: false - - /@proload/plugin-tsm@0.2.1(@proload/core@0.3.3): - resolution: {integrity: sha512-Ex1sL2BxU+g8MHdAdq9SZKz+pU34o8Zcl9PHWo2WaG9hrnlZme607PU6gnpoAYsDBpHX327+eu60wWUk+d/b+A==} - peerDependencies: - '@proload/core': ^0.3.2 - dependencies: - '@proload/core': 0.3.3 - tsm: 2.3.0 - dev: false + dev: true /@rollup/pluginutils@5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} @@ -1417,12 +1654,6 @@ packages: path-browserify: 1.0.1 dev: true - /@types/acorn@4.0.6: - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - dependencies: - '@types/estree': 1.0.1 - dev: false - /@types/argparse@1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} dev: true @@ -1430,8 +1661,8 @@ packages: /@types/babel__core@7.20.1: resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/parser': 7.22.14 + '@babel/types': 7.22.11 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.20.1 @@ -1468,18 +1699,6 @@ packages: '@types/ms': 0.7.31 dev: false - /@types/estree-jsx@0.0.1: - resolution: {integrity: sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==} - dependencies: - '@types/estree': 1.0.1 - dev: false - - /@types/estree-jsx@1.0.0: - resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} - dependencies: - '@types/estree': 1.0.1 - dev: false - /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} @@ -1495,10 +1714,6 @@ packages: '@types/unist': 2.0.7 dev: false - /@types/html-escaper@3.0.0: - resolution: {integrity: sha512-OcJcvP3Yk8mjYwf/IdXZtTE1tb/u0WF0qa29ER07ZHCYUBZXSN29Z1mBS+/96+kNMGTFUAbSz9X+pHmHpZrTCw==} - dev: false - /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true @@ -1613,6 +1828,7 @@ packages: /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true /@types/yargs@16.0.5: resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} @@ -1834,7 +2050,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9) magic-string: 0.26.7 react-refresh: 0.14.0 - vite: 3.2.3(sass@1.56.1) + vite: 3.2.3(@types/node@18.11.9) transitivePeerDependencies: - supports-color dev: true @@ -1858,6 +2074,27 @@ packages: - terser dev: true + /@vitest/coverage-v8@0.34.3(vitest@0.33.0): + resolution: {integrity: sha512-bNjP0RHe8UxdklCigZlk6FVCNbOiqVjWnpZJ1zKixpvb7YHSaZiN/w+mzpvXIoqyxyePzKC+L+G1oj7SB20PJw==} + peerDependencies: + vitest: '>=0.32.0 <1' + dependencies: + '@ampproject/remapping': 2.2.1 + '@bcoe/v8-coverage': 0.2.3 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + magic-string: 0.30.1 + picocolors: 1.0.0 + std-env: 3.3.3 + test-exclude: 6.0.0 + v8-to-istanbul: 9.1.0 + vitest: 0.33.0 + transitivePeerDependencies: + - supports-color + dev: true + /@vitest/expect@0.33.0: resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==} dependencies: @@ -1914,20 +2151,6 @@ packages: '@volar/language-core': 1.9.0 dev: true - /@vscode/emmet-helper@2.9.2: - resolution: {integrity: sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==} - dependencies: - emmet: 2.4.5 - jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.3 - vscode-uri: 2.1.2 - dev: false - - /@vscode/l10n@0.0.14: - resolution: {integrity: sha512-/yrv59IEnmh655z1oeDnGcvMYwnEzNzHLgeYcQCkhYX0xBvYWrAuefoiLcPBUkMpJsb46bqQ6Yv4pwTTQ4d3Qg==} - dev: false - /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: @@ -1999,6 +2222,7 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.10.0 + dev: true /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} @@ -2070,6 +2294,10 @@ packages: engines: {node: '>=12'} dev: false + /ansi-sequence-parser@1.1.1: + resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} + dev: false + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -2081,6 +2309,7 @@ packages: engines: {node: '>=8'} dependencies: color-convert: 2.0.1 + dev: true /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} @@ -2110,7 +2339,6 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -2168,13 +2396,6 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-types@0.14.2: - resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} - engines: {node: '>=4'} - dependencies: - tslib: 2.6.0 - dev: false - /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -2195,81 +2416,76 @@ packages: - supports-color dev: true - /astro@1.6.7(sass@1.56.1): - resolution: {integrity: sha512-xx910blM5qfSMyesmVmuhXqKMIOa2WL/WTSfYv84pB9JocgtAfGKlmS1HZNqWd0h9YLreYbGRzXhbtv2Qfd8vw==} - engines: {node: ^14.18.0 || >=16.12.0, npm: '>=6.14.0'} + /astro@3.0.7(sass@1.56.1): + resolution: {integrity: sha512-slUnDBXfxMzq5abE4svcKbaeYC/tHZsJYOrzwDNU9lLye3/4cqYP7OuHMTXiRlx7LSpHQlUhwbMe2HqCv2GKag==} + engines: {node: '>=18.14.1', npm: '>=6.14.0'} hasBin: true dependencies: - '@astrojs/compiler': 0.29.19 - '@astrojs/language-server': 0.28.3 - '@astrojs/markdown-remark': 1.2.0 - '@astrojs/telemetry': 1.0.1 - '@astrojs/webapi': 1.1.1 - '@babel/core': 7.22.9 - '@babel/generator': 7.22.9 - '@babel/parser': 7.22.7 - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.9) - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - '@proload/core': 0.3.3 - '@proload/plugin-tsm': 0.2.1(@proload/core@0.3.3) + '@astrojs/compiler': 2.0.1 + '@astrojs/internal-helpers': 0.2.0 + '@astrojs/markdown-remark': 3.0.0(astro@3.0.7) + '@astrojs/telemetry': 3.0.1 + '@babel/core': 7.22.11 + '@babel/generator': 7.22.10 + '@babel/parser': 7.22.14 + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.11) + '@babel/traverse': 7.22.11 + '@babel/types': 7.22.11 '@types/babel__core': 7.20.1 - '@types/html-escaper': 3.0.0 - '@types/yargs-parser': 21.0.0 - boxen: 6.2.1 + acorn: 8.10.0 + boxen: 7.1.1 + chokidar: 3.5.3 ci-info: 3.8.0 + clsx: 2.0.0 common-ancestor-path: 1.0.1 cookie: 0.5.0 debug: 4.3.4 - deepmerge-ts: 4.3.0 + devalue: 4.3.2 diff: 5.1.0 - es-module-lexer: 0.10.5 - esbuild: 0.14.54 - execa: 6.1.0 - fast-glob: 3.2.12 - github-slugger: 1.5.0 + es-module-lexer: 1.3.0 + esbuild: 0.19.2 + estree-walker: 3.0.3 + execa: 8.0.1 + fast-glob: 3.3.1 + github-slugger: 2.0.0 gray-matter: 4.0.3 - html-entities: 2.4.0 html-escaper: 3.0.3 - import-meta-resolve: 2.2.2 + http-cache-semantics: 4.1.1 + js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.25.9 + magic-string: 0.30.3 mime: 3.0.0 - ora: 6.3.1 - path-browserify: 1.0.1 + ora: 7.0.1 + p-limit: 4.0.0 path-to-regexp: 6.2.1 - postcss: 8.4.19 - postcss-load-config: 3.1.4(postcss@8.4.19) preferred-pm: 3.0.3 prompts: 2.4.2 - recast: 0.20.5 rehype: 12.0.1 - resolve: 1.22.2 - rollup: 2.79.1 + resolve: 1.22.4 semver: 7.5.4 - shiki: 0.11.1 - sirv: 2.0.3 - slash: 4.0.0 - string-width: 5.1.2 + server-destroy: 1.0.1 + sharp: 0.32.5 + shiki: 0.14.4 + string-width: 6.1.0 strip-ansi: 7.1.0 - supports-esm: 1.0.0 tsconfig-resolver: 3.0.1 - typescript: 4.8.4 + undici: 5.23.0 unist-util-visit: 4.1.2 vfile: 5.3.7 - vite: 3.2.3(sass@1.56.1) - vitefu: 0.1.1(vite@3.2.3) + vite: 4.4.9(sass@1.56.1) + vitefu: 0.2.4(vite@4.4.9) + which-pm: 2.0.0 yargs-parser: 21.1.1 - zod: 3.21.4 + zod: 3.21.1 transitivePeerDependencies: - '@types/node' - less + - lightningcss - sass - stylus - sugarss - supports-color - terser - - ts-node dev: false /astrojs-compiler-sync@0.3.3(@astrojs/compiler@0.32.0): @@ -2291,6 +2507,10 @@ packages: engines: {node: '>= 0.4'} dev: true + /b4a@1.6.4: + resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + dev: false + /babel-jest@27.5.1(@babel/core@7.22.9): resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2382,6 +2602,7 @@ packages: /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} + dev: true /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} @@ -2393,7 +2614,6 @@ packages: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - dev: true /bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} @@ -2403,17 +2623,13 @@ packages: readable-stream: 3.6.2 dev: false - /boolean@3.2.0: - resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} - dev: false - - /boxen@6.2.1: - resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} dependencies: ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 + camelcase: 7.0.1 + chalk: 5.3.0 cli-boxes: 3.0.0 string-width: 5.1.2 type-fest: 2.19.0 @@ -2426,6 +2642,7 @@ packages: engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.51 + dev: true /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -2475,7 +2692,6 @@ packages: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: true /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -2489,6 +2705,14 @@ packages: engines: {node: '>=12'} dependencies: run-applescript: 5.0.0 + dev: true + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false /c8@7.14.0: resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==} @@ -2543,6 +2767,12 @@ packages: /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + dev: true + + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: false /caniuse-lite@1.0.30001516: resolution: {integrity: sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==} @@ -2578,6 +2808,7 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} @@ -2601,10 +2832,6 @@ packages: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} dev: false - /character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: false - /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true @@ -2625,7 +2852,6 @@ packages: /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: true /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} @@ -2660,9 +2886,9 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} dev: false /co@4.6.0: @@ -2700,7 +2926,6 @@ packages: dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 - dev: true /color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} @@ -2708,7 +2933,6 @@ packages: dependencies: color-convert: 2.0.1 color-string: 1.9.1 - dev: true /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} @@ -2806,11 +3030,6 @@ packages: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true - /data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - dev: false - /data-urls@2.0.0: resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} engines: {node: '>=10'} @@ -2863,7 +3082,6 @@ packages: engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 - dev: true /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} @@ -2879,20 +3097,15 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge-ts@4.3.0: - resolution: {integrity: sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==} - engines: {node: '>=12.4.0'} - dev: false - /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + dev: true /default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} @@ -2900,6 +3113,7 @@ packages: dependencies: bplist-parser: 0.2.0 untildify: 4.0.0 + dev: true /default-browser@4.0.0: resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} @@ -2909,16 +3123,12 @@ packages: default-browser-id: 3.0.0 execa: 7.1.1 titleize: 3.0.0 - - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: false + dev: true /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} + dev: true /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -2926,6 +3136,7 @@ packages: dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 + dev: true /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -2940,15 +3151,19 @@ packages: /detect-libc@2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} - dev: true + + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: false /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} dev: true - /detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + /devalue@4.3.2: + resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} dev: false /diff-sequences@27.5.1: @@ -3015,11 +3230,8 @@ packages: engines: {node: '>=10'} dev: true - /emmet@2.4.5: - resolution: {integrity: sha512-xOiVNINJFh0dMik+KzXSEYbAnFLTnadEzanxj7+F15uIf6avQwu3uPa1wI/8AFtOWKZ8lHg7TjC83wXcPhgOPw==} - dependencies: - '@emmetio/abbreviation': 2.3.3 - '@emmetio/css-abbreviation': 2.1.8 + /emoji-regex@10.2.1: + resolution: {integrity: sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==} dev: false /emoji-regex@8.0.0: @@ -3033,7 +3245,6 @@ packages: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -3082,8 +3293,8 @@ packages: which-typed-array: 1.1.10 dev: true - /es-module-lexer@0.10.5: - resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==} + /es-module-lexer@1.3.0: + resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} dev: false /es-set-tostringtag@2.0.1: @@ -3110,34 +3321,13 @@ packages: is-symbol: 1.0.4 dev: true - /es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - dev: false - - /esbuild-android-64@0.14.54: - resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false - optional: true - /esbuild-android-64@0.15.18: resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true - optional: true - - /esbuild-android-arm64@0.14.54: - resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-android-arm64@0.15.18: @@ -3146,15 +3336,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - optional: true - - /esbuild-darwin-64@0.14.54: - resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-darwin-64@0.15.18: @@ -3163,15 +3345,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - optional: true - - /esbuild-darwin-arm64@0.14.54: - resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-darwin-arm64@0.15.18: @@ -3180,15 +3354,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - optional: true - - /esbuild-freebsd-64@0.14.54: - resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-freebsd-64@0.15.18: @@ -3197,15 +3363,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - optional: true - - /esbuild-freebsd-arm64@0.14.54: - resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-freebsd-arm64@0.15.18: @@ -3214,15 +3372,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - optional: true - - /esbuild-linux-32@0.14.54: - resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-32@0.15.18: @@ -3231,15 +3381,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - optional: true - - /esbuild-linux-64@0.14.54: - resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-64@0.15.18: @@ -3248,15 +3390,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - optional: true - - /esbuild-linux-arm64@0.14.54: - resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-arm64@0.15.18: @@ -3265,15 +3399,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - optional: true - - /esbuild-linux-arm@0.14.54: - resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-arm@0.15.18: @@ -3282,15 +3408,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - optional: true - - /esbuild-linux-mips64le@0.14.54: - resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-mips64le@0.15.18: @@ -3299,15 +3417,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - optional: true - - /esbuild-linux-ppc64le@0.14.54: - resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-ppc64le@0.15.18: @@ -3316,32 +3426,16 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true - /esbuild-linux-riscv64@0.14.54: - resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /esbuild-linux-riscv64@0.15.18: - resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optional: true - - /esbuild-linux-s390x@0.14.54: - resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + /esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} engines: {node: '>=12'} - cpu: [s390x] + cpu: [riscv64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-s390x@0.15.18: @@ -3350,15 +3444,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - optional: true - - /esbuild-netbsd-64@0.14.54: - resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-netbsd-64@0.15.18: @@ -3367,15 +3453,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - optional: true - - /esbuild-openbsd-64@0.14.54: - resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-openbsd-64@0.15.18: @@ -3384,15 +3462,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - optional: true - - /esbuild-sunos-64@0.14.54: - resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-sunos-64@0.15.18: @@ -3401,15 +3471,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - optional: true - - /esbuild-windows-32@0.14.54: - resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-windows-32@0.15.18: @@ -3418,15 +3480,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - optional: true - - /esbuild-windows-64@0.14.54: - resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-windows-64@0.15.18: @@ -3435,15 +3489,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - optional: true - - /esbuild-windows-arm64@0.14.54: - resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false + dev: true optional: true /esbuild-windows-arm64@0.15.18: @@ -3452,37 +3498,9 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true - /esbuild@0.14.54: - resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/linux-loong64': 0.14.54 - esbuild-android-64: 0.14.54 - esbuild-android-arm64: 0.14.54 - esbuild-darwin-64: 0.14.54 - esbuild-darwin-arm64: 0.14.54 - esbuild-freebsd-64: 0.14.54 - esbuild-freebsd-arm64: 0.14.54 - esbuild-linux-32: 0.14.54 - esbuild-linux-64: 0.14.54 - esbuild-linux-arm: 0.14.54 - esbuild-linux-arm64: 0.14.54 - esbuild-linux-mips64le: 0.14.54 - esbuild-linux-ppc64le: 0.14.54 - esbuild-linux-riscv64: 0.14.54 - esbuild-linux-s390x: 0.14.54 - esbuild-netbsd-64: 0.14.54 - esbuild-openbsd-64: 0.14.54 - esbuild-sunos-64: 0.14.54 - esbuild-windows-32: 0.14.54 - esbuild-windows-64: 0.14.54 - esbuild-windows-arm64: 0.14.54 - dev: false - /esbuild@0.15.18: resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} engines: {node: '>=12'} @@ -3511,6 +3529,7 @@ packages: esbuild-windows-32: 0.15.18 esbuild-windows-64: 0.15.18 esbuild-windows-arm64: 0.15.18 + dev: true /esbuild@0.18.13: resolution: {integrity: sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw==} @@ -3540,7 +3559,36 @@ packages: '@esbuild/win32-arm64': 0.18.13 '@esbuild/win32-ia32': 0.18.13 '@esbuild/win32-x64': 0.18.13 - dev: true + + /esbuild@0.19.2: + resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.19.2 + '@esbuild/android-arm64': 0.19.2 + '@esbuild/android-x64': 0.19.2 + '@esbuild/darwin-arm64': 0.19.2 + '@esbuild/darwin-x64': 0.19.2 + '@esbuild/freebsd-arm64': 0.19.2 + '@esbuild/freebsd-x64': 0.19.2 + '@esbuild/linux-arm': 0.19.2 + '@esbuild/linux-arm64': 0.19.2 + '@esbuild/linux-ia32': 0.19.2 + '@esbuild/linux-loong64': 0.19.2 + '@esbuild/linux-mips64el': 0.19.2 + '@esbuild/linux-ppc64': 0.19.2 + '@esbuild/linux-riscv64': 0.19.2 + '@esbuild/linux-s390x': 0.19.2 + '@esbuild/linux-x64': 0.19.2 + '@esbuild/netbsd-x64': 0.19.2 + '@esbuild/openbsd-x64': 0.19.2 + '@esbuild/sunos-x64': 0.19.2 + '@esbuild/win32-arm64': 0.19.2 + '@esbuild/win32-ia32': 0.19.2 + '@esbuild/win32-x64': 0.19.2 + dev: false /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -3558,6 +3606,7 @@ packages: /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + dev: true /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} @@ -3784,31 +3833,21 @@ packages: engines: {node: '>=4.0'} dev: true - /estree-util-is-identifier-name@2.1.0: - resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} - dev: false - - /estree-util-visit@1.2.1: - resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/unist': 2.0.7 - dev: false - /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.1 + dev: false + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -3822,35 +3861,37 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: true - /execa@6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /execa@7.1.1: + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 - human-signals: 3.0.1 + human-signals: 4.3.1 is-stream: 3.0.0 merge-stream: 2.0.0 npm-run-path: 5.1.0 onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 - dev: false + dev: true - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 + get-stream: 8.0.1 + human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 npm-run-path: 5.1.0 onetime: 6.0.0 - signal-exit: 3.0.7 + signal-exit: 4.1.0 strip-final-newline: 3.0.0 + dev: false /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} @@ -3860,7 +3901,6 @@ packages: /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - dev: true /expect@27.5.1: resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} @@ -3887,6 +3927,10 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: false + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -3896,6 +3940,7 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 + dev: true /fast-glob@3.3.0: resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} @@ -3907,6 +3952,17 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + 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 + dev: false + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true @@ -3931,14 +3987,6 @@ packages: bser: 2.1.1 dev: true - /fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 - dev: false - /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -4008,16 +4056,8 @@ packages: mime-types: 2.1.35 dev: true - /formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: false - /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: true /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} @@ -4085,6 +4125,7 @@ packages: has: 1.0.3 has-proto: 1.0.1 has-symbols: 1.0.3 + dev: true /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} @@ -4094,6 +4135,12 @@ packages: /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + dev: true + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: false /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -4105,10 +4152,9 @@ packages: /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: true - /github-slugger@1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + /github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} dev: false /glob-parent@5.1.2: @@ -4135,18 +4181,6 @@ packages: path-is-absolute: 1.0.1 dev: true - /global-agent@3.0.0: - resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} - engines: {node: '>=10.0'} - dependencies: - boolean: 3.2.0 - es6-error: 4.1.1 - matcher: 3.0.0 - roarr: 2.15.4 - semver: 7.5.4 - serialize-error: 7.0.1 - dev: false - /global-modules@2.0.0: resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} engines: {node: '>=6'} @@ -4179,6 +4213,7 @@ packages: engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.0 + dev: true /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -4239,25 +4274,23 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - - /has-package-exports@1.3.0: - resolution: {integrity: sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==} - dependencies: - '@ljharb/has-package-exports-patterns': 0.0.2 - dev: false + dev: true /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.2.1 + dev: true /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} + dev: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + dev: true /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} @@ -4370,10 +4403,6 @@ packages: whatwg-encoding: 1.0.5 dev: true - /html-entities@2.4.0: - resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} - dev: false - /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true @@ -4391,6 +4420,10 @@ packages: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} dev: false + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false + /http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} @@ -4415,15 +4448,17 @@ packages: /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - - /human-signals@3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} - dev: false + dev: true /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: false /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -4465,8 +4500,8 @@ packages: resolve-cwd: 3.0.0 dev: true - /import-meta-resolve@2.2.2: - resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} + /import-meta-resolve@3.0.0: + resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} dev: false /imurmurhash@0.1.4: @@ -4491,7 +4526,6 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} @@ -4502,17 +4536,6 @@ packages: side-channel: 1.0.4 dev: true - /is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: false - - /is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - dev: false - /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: @@ -4527,7 +4550,6 @@ packages: /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: true /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -4563,6 +4585,13 @@ packages: resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 + dev: true + + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + dependencies: + has: 1.0.3 + dev: false /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -4571,14 +4600,11 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: false - /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true + dev: true /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} @@ -4609,16 +4635,13 @@ packages: dependencies: is-extglob: 2.1.1 - /is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: false - /is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true dependencies: is-docker: 3.0.0 + dev: true /is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} @@ -4682,6 +4705,7 @@ packages: /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + dev: true /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -4732,6 +4756,14 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 + dev: true + + /is-wsl@3.0.0: + resolution: {integrity: sha512-TQ7xXW/fTBaz/HhGSV779AC99ocpvb9qJPuPwyIea+F+Z+htcQ1wouAA0xEQaa4saVqyP8mwkoYp5efeM/4Gbg==} + engines: {node: '>=16'} + dependencies: + is-docker: 3.0.0 + dev: false /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -4763,6 +4795,15 @@ packages: supports-color: 7.2.0 dev: true + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} @@ -5271,7 +5312,6 @@ packages: hasBin: true dependencies: argparse: 2.0.1 - dev: true /jsdom@16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} @@ -5336,19 +5376,11 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - dev: false - /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - /jsonc-parser@2.3.1: - resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} - dev: false - /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} @@ -5410,11 +5442,6 @@ packages: type-check: 0.4.0 dev: true - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: false - /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true @@ -5501,12 +5528,6 @@ packages: dependencies: yallist: 4.0.0 - /magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - dependencies: - sourcemap-codec: 1.4.8 - dev: false - /magic-string@0.26.7: resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} engines: {node: '>=12'} @@ -5521,6 +5542,13 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /magic-string@0.30.3: + resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -5528,6 +5556,13 @@ packages: semver: 6.3.1 dev: true + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: true + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: @@ -5548,13 +5583,6 @@ packages: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: false - /matcher@3.0.0: - resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 4.0.0 - dev: false - /mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} dev: true @@ -5651,31 +5679,6 @@ packages: - supports-color dev: false - /mdast-util-mdx-expression@1.3.2: - resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.5 - '@types/mdast': 3.0.12 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-mdx-jsx@1.2.0: - resolution: {integrity: sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==} - dependencies: - '@types/estree-jsx': 0.0.1 - '@types/mdast': 3.0.12 - mdast-util-to-markdown: 1.5.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.3 - unist-util-remove-position: 4.0.2 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - dev: false - /mdast-util-phrasing@3.0.1: resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} dependencies: @@ -5833,25 +5836,6 @@ packages: micromark-util-types: 1.1.0 dev: false - /micromark-extension-mdx-expression@1.0.8: - resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} - dependencies: - '@types/estree': 1.0.1 - micromark-factory-mdx-expression: 1.0.9 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-events-to-acorn: 1.2.3 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: false - - /micromark-extension-mdx-md@1.0.1: - resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==} - dependencies: - micromark-util-types: 1.1.0 - dev: false - /micromark-factory-destination@1.1.0: resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} dependencies: @@ -5869,19 +5853,6 @@ packages: uvu: 0.5.6 dev: false - /micromark-factory-mdx-expression@1.0.9: - resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} - dependencies: - '@types/estree': 1.0.1 - micromark-util-character: 1.2.0 - micromark-util-events-to-acorn: 1.2.3 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-position-from-estree: 1.1.2 - uvu: 0.5.6 - vfile-message: 3.1.4 - dev: false - /micromark-factory-space@1.1.0: resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} dependencies: @@ -5954,19 +5925,6 @@ packages: resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} dev: false - /micromark-util-events-to-acorn@1.2.3: - resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.1 - '@types/unist': 2.0.7 - estree-util-visit: 1.2.1 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - vfile-message: 3.1.4 - dev: false - /micromark-util-html-tag-name@1.2.0: resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} dev: false @@ -6068,7 +6026,6 @@ packages: /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - dev: true /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} @@ -6106,11 +6063,9 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: true /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} @@ -6129,12 +6084,7 @@ packages: /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - dev: false - - /mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} - engines: {node: '>=10'} + engines: {node: '>=4'} dev: false /ms@2.1.2: @@ -6151,7 +6101,6 @@ packages: /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: true /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -6172,24 +6121,13 @@ packages: engines: {node: '>=10'} dependencies: semver: 7.5.4 - dev: true /node-addon-api@5.1.0: resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} dev: true - /node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: false - - /node-fetch@3.3.1: - resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 + /node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} dev: false /node-int64@0.4.0: @@ -6227,6 +6165,7 @@ packages: engines: {node: '>=8'} dependencies: path-key: 3.1.1 + dev: true /npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} @@ -6250,6 +6189,7 @@ packages: /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + dev: true /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} @@ -6299,7 +6239,6 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -6321,6 +6260,7 @@ packages: define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 is-wsl: 2.2.0 + dev: true /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} @@ -6334,9 +6274,9 @@ packages: type-check: 0.4.0 dev: true - /ora@6.3.1: - resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /ora@7.0.1: + resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} + engines: {node: '>=16'} dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 @@ -6345,8 +6285,8 @@ packages: is-unicode-supported: 1.3.0 log-symbols: 5.1.0 stdin-discarder: 0.1.0 + string-width: 6.1.0 strip-ansi: 7.1.0 - wcwidth: 1.0.1 dev: false /p-limit@2.3.0: @@ -6366,7 +6306,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 - dev: true /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} @@ -6391,19 +6330,6 @@ packages: callsites: 3.1.0 dev: true - /parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - dependencies: - '@types/unist': 2.0.7 - character-entities: 2.0.2 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - dev: false - /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -6427,6 +6353,7 @@ packages: /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -6496,23 +6423,6 @@ packages: pathe: 1.1.1 dev: true - /postcss-load-config@3.1.4(postcss@8.4.19): - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - postcss: 8.4.19 - yaml: 1.10.2 - dev: false - /postcss-media-query-parser@0.2.3: resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} dev: true @@ -6566,6 +6476,7 @@ packages: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true /postcss@8.4.26: resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} @@ -6576,6 +6487,15 @@ packages: source-map-js: 1.0.2 dev: true + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} @@ -6593,7 +6513,6 @@ packages: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - dev: true /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} @@ -6610,22 +6529,6 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-astro@0.7.2: - resolution: {integrity: sha512-mmifnkG160BtC727gqoimoxnZT/dwr8ASxpoGGl6EHevhfblSOeu+pwH1LAm5Qu1MynizktztFujHHaijLCkww==} - engines: {node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0'} - dependencies: - '@astrojs/compiler': 0.31.4 - prettier: 2.8.8 - sass-formatter: 0.7.6 - synckit: 0.8.5 - dev: false - - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: false - /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -6677,7 +6580,6 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: true /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} @@ -6691,6 +6593,10 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: false + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} @@ -6704,7 +6610,6 @@ packages: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: true /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} @@ -6773,16 +6678,6 @@ packages: dependencies: picomatch: 2.3.1 - /recast@0.20.5: - resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==} - engines: {node: '>= 4'} - dependencies: - ast-types: 0.14.2 - esprima: 4.0.1 - source-map: 0.6.1 - tslib: 2.6.0 - dev: false - /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -6830,6 +6725,14 @@ packages: unified: 10.1.2 dev: false + /rehype-stringify@9.0.4: + resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} + dependencies: + '@types/hast': 2.3.5 + hast-util-to-html: 8.0.4 + unified: 10.1.2 + dev: false + /rehype@12.0.1: resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==} dependencies: @@ -6928,6 +6831,16 @@ packages: is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false /resolve@2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} @@ -6992,24 +6905,13 @@ packages: glob: 7.2.3 dev: true - /roarr@2.15.4: - resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} - engines: {node: '>=8.0'} - dependencies: - boolean: 3.2.0 - detect-node: 2.1.0 - globalthis: 1.0.3 - json-stringify-safe: 5.0.1 - semver-compare: 1.0.0 - sprintf-js: 1.1.2 - dev: false - /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 + dev: true /rollup@3.26.2: resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} @@ -7019,21 +6921,26 @@ packages: fsevents: 2.3.2 dev: true + /rollup@3.28.1: + resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: false + /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} dependencies: execa: 5.1.1 + dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /s.color@0.0.15: - resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} - dev: false - /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -7056,12 +6963,6 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass-formatter@0.7.6: - resolution: {integrity: sha512-hXdxU6PCkiV3XAiSnX+XLqz2ohHoEnVUlrd8LEVMAI80uB1+OTScIkH9n6qQwImZpTye1r1WG1rbGUteHNhoHg==} - dependencies: - suf-log: 2.5.3 - dev: false - /sass@1.56.1: resolution: {integrity: sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==} engines: {node: '>=12.0.0'} @@ -7096,10 +6997,6 @@ packages: kind-of: 6.0.3 dev: false - /semver-compare@1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - dev: false - /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -7124,11 +7021,8 @@ packages: dependencies: lru-cache: 6.0.0 - /serialize-error@7.0.1: - resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} - engines: {node: '>=10'} - dependencies: - type-fest: 0.13.1 + /server-destroy@1.0.1: + resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} dev: false /sharp@0.31.2: @@ -7146,6 +7040,21 @@ packages: tunnel-agent: 0.6.0 dev: true + /sharp@0.32.5: + resolution: {integrity: sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ==} + engines: {node: '>=14.15.0'} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + node-addon-api: 6.1.0 + prebuild-install: 7.1.1 + semver: 7.5.4 + simple-get: 4.0.1 + tar-fs: 3.0.4 + tunnel-agent: 0.6.0 + dev: false + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -7156,12 +7065,13 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shiki@0.11.1: - resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} + /shiki@0.14.4: + resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==} dependencies: + ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 - vscode-textmate: 6.0.0 + vscode-textmate: 8.0.0 dev: false /side-channel@1.0.4: @@ -7179,9 +7089,13 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: true /simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} @@ -7189,22 +7103,11 @@ packages: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 - dev: true /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: is-arrayish: 0.3.2 - dev: true - - /sirv@2.0.3: - resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} - engines: {node: '>= 10'} - dependencies: - '@polka/url': 1.0.0-next.21 - mrmime: 1.0.1 - totalist: 3.0.1 - dev: false /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -7225,11 +7128,6 @@ packages: engines: {node: '>=8'} dev: true - /slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - dev: false - /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -7253,14 +7151,17 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + dev: true /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} + dev: true /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead + dev: true /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -7291,10 +7192,6 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - /sprintf-js@1.1.2: - resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} - dev: false - /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -7317,6 +7214,18 @@ packages: bl: 5.1.0 dev: false + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + + /streamx@2.15.1: + resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + dev: false + /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -7347,6 +7256,15 @@ packages: strip-ansi: 7.1.0 dev: false + /string-width@6.1.0: + resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} + engines: {node: '>=16'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 10.2.1 + strip-ansi: 7.1.0 + dev: false + /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: @@ -7427,6 +7345,7 @@ packages: /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + dev: true /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} @@ -7442,7 +7361,6 @@ packages: /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - dev: true /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -7592,12 +7510,6 @@ packages: - supports-color dev: true - /suf-log@2.5.3: - resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} - dependencies: - s.color: 0.0.15 - dev: false - /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -7609,6 +7521,7 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 + dev: true /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} @@ -7617,12 +7530,6 @@ packages: has-flag: 4.0.0 dev: true - /supports-esm@1.0.0: - resolution: {integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==} - dependencies: - has-package-exports: 1.3.0 - dev: false - /supports-hyperlinks@2.3.0: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} engines: {node: '>=8'} @@ -7649,6 +7556,7 @@ packages: dependencies: '@pkgr/utils': 2.4.2 tslib: 2.6.0 + dev: true /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} @@ -7668,7 +7576,14 @@ packages: mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 - dev: true + + /tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.6 + dev: false /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -7679,7 +7594,14 @@ packages: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 - dev: true + + /tar-stream@3.1.6: + resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + dependencies: + b4a: 1.6.4 + fast-fifo: 1.3.2 + streamx: 2.15.1 + dev: false /terminal-link@2.1.1: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} @@ -7733,6 +7655,7 @@ packages: /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} engines: {node: '>=12'} + dev: true /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -7748,11 +7671,6 @@ packages: dependencies: is-number: 7.0.0 - /totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - dev: false - /tough-cookie@4.1.3: resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} engines: {node: '>=6'} @@ -7805,7 +7723,7 @@ packages: '@types/json5': 0.0.30 '@types/resolve': 1.20.2 json5: 2.2.3 - resolve: 1.22.2 + resolve: 1.22.4 strip-bom: 4.0.0 type-fest: 0.13.1 dev: false @@ -7816,14 +7734,7 @@ packages: /tslib@2.6.0: resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} - - /tsm@2.3.0: - resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==} - engines: {node: '>=12'} - hasBin: true - dependencies: - esbuild: 0.15.18 - dev: false + dev: true /tsutils@3.21.0(typescript@4.8.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -7839,7 +7750,6 @@ packages: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 - dev: true /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -7917,6 +7827,7 @@ packages: resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} engines: {node: '>=4.2.0'} hasBin: true + dev: true /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} @@ -7943,6 +7854,13 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /undici@5.23.0: + resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} + engines: {node: '>=14.0'} + dependencies: + busboy: 1.6.0 + dev: false + /unherit@3.0.1: resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} dev: false @@ -7969,12 +7887,6 @@ packages: '@types/unist': 2.0.7 dev: false - /unist-util-map@3.1.3: - resolution: {integrity: sha512-4/mDauoxqZ6geK97lJ6n2kDk6JK88Vh+hWMSJqyaaP/7eqN1dDhjcjnNxKNm3YU6Sw7PVJtcFMUbnmHvYzb6Vg==} - dependencies: - '@types/unist': 2.0.7 - dev: false - /unist-util-modify-children@3.1.1: resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} dependencies: @@ -7982,25 +7894,12 @@ packages: array-iterate: 2.0.1 dev: false - /unist-util-position-from-estree@1.1.2: - resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} - dependencies: - '@types/unist': 2.0.7 - dev: false - /unist-util-position@4.0.4: resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} dependencies: '@types/unist': 2.0.7 dev: false - /unist-util-remove-position@4.0.2: - resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} - dependencies: - '@types/unist': 2.0.7 - unist-util-visit: 4.1.2 - dev: false - /unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: @@ -8046,6 +7945,7 @@ packages: /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} + dev: true /update-browserslist-db@1.0.11(browserslist@4.21.9): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} @@ -8189,7 +8089,7 @@ packages: fs-extra: 10.1.0 kolorist: 1.8.0 ts-morph: 16.0.0 - vite: 3.2.3(sass@1.56.1) + vite: 3.2.3(@types/node@18.11.9) transitivePeerDependencies: - '@types/node' - supports-color @@ -8285,6 +8185,7 @@ packages: sass: 1.56.1 optionalDependencies: fsevents: 2.3.2 + dev: true /vite@4.4.4(@types/node@18.11.9): resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==} @@ -8322,15 +8223,51 @@ packages: fsevents: 2.3.2 dev: true - /vitefu@0.1.1(vite@3.2.3): - resolution: {integrity: sha512-HClD14fjMJ+NQgXBqT3dC3RdO/+Chayil+cCPYZKY3kT+KcJomKzrdgzfCHJkIL2L0OAY+VPvrSW615iPtc7ag==} + /vite@4.4.9(sass@1.56.1): + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true peerDependencies: - vite: ^3.0.0 + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.13 + postcss: 8.4.29 + rollup: 3.28.1 + sass: 1.56.1 + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /vitefu@0.2.4(vite@4.4.9): + resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 peerDependenciesMeta: vite: optional: true dependencies: - vite: 3.2.3(sass@1.56.1) + vite: 4.4.9(sass@1.56.1) dev: false /vitest@0.25.0: @@ -8443,65 +8380,12 @@ packages: - terser dev: true - /vscode-css-languageservice@6.2.6: - resolution: {integrity: sha512-SA2WkeOecIpUiEbZnjOsP/fI5CRITZEiQGSHXKiDQDwLApfKcnLhZwMtOBbIifSzESVcQa7b/shX/nbnF4NoCg==} - dependencies: - '@vscode/l10n': 0.0.14 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.3 - vscode-uri: 3.0.7 - dev: false - - /vscode-html-languageservice@5.0.6: - resolution: {integrity: sha512-gCixNg6fjPO7+kwSMBAVXcwDRHdjz1WOyNfI0n5Wx0J7dfHG8ggb3zD1FI8E2daTZrwS1cooOiSoc1Xxph4qRQ==} - dependencies: - '@vscode/l10n': 0.0.14 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.3 - vscode-uri: 3.0.7 - dev: false - - /vscode-jsonrpc@8.1.0: - resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} - engines: {node: '>=14.0.0'} - dev: false - - /vscode-languageserver-protocol@3.17.3: - resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==} - dependencies: - vscode-jsonrpc: 8.1.0 - vscode-languageserver-types: 3.17.3 - dev: false - - /vscode-languageserver-textdocument@1.0.8: - resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} - dev: false - - /vscode-languageserver-types@3.17.3: - resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} - dev: false - - /vscode-languageserver@8.1.0: - resolution: {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==} - hasBin: true - dependencies: - vscode-languageserver-protocol: 3.17.3 - dev: false - /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: false - /vscode-textmate@6.0.0: - resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} - dev: false - - /vscode-uri@2.1.2: - resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} - dev: false - - /vscode-uri@3.0.7: - resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} + /vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: false /vue-template-compiler@2.7.14: @@ -8543,21 +8427,10 @@ packages: makeerror: 1.0.12 dev: true - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: false - /web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} dev: false - /web-streams-polyfill@3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} - engines: {node: '>= 8'} - dev: false - /webidl-conversions@5.0.0: resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} engines: {node: '>=8'} @@ -8672,7 +8545,6 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -8726,6 +8598,7 @@ packages: /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + dev: true /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} @@ -8757,7 +8630,6 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - dev: true /z-schema@5.0.5: resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} @@ -8771,8 +8643,8 @@ packages: commander: 9.5.0 dev: true - /zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + /zod@3.21.1: + resolution: {integrity: sha512-+dTu2m6gmCbO9Ahm4ZBDapx2O6ZY9QSPXst2WXjcznPMwf2YNpn3RevLx4KkZp1OPW/ouFcoBtBzFz/LeY69oA==} /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} diff --git a/providers/file/index.ts b/providers/file/index.ts index aa302d5..2822b15 100644 --- a/providers/file/index.ts +++ b/providers/file/index.ts @@ -1,14 +1,14 @@ import fs from 'fs'; import path from 'path'; import fg from 'fast-glob'; -import Gorgon, {IGorgonCacheProvider, GorgonPolicySanitized} from '@gorgonjs/gorgon'; +import Gorgon, { IGorgonCacheProvider, GorgonPolicySanitized } from '@gorgonjs/gorgon'; interface IGorgonFileCacheProvider extends IGorgonCacheProvider { - _clear: (key:string) => Promise; + _clear: (key: string) => Promise; } // checks if a string is a valid path and does not go up directories -export const createValidPath = (path:string, ext?:string) => { +export const createValidPath = (path: string, ext?: string) => { // regesx for all not alphanumeric characters const reg = /[^a-zA-Z0-9\_\-\/]/g; const alphaonly = path.replaceAll(reg, '_'); @@ -17,62 +17,62 @@ export const createValidPath = (path:string, ext?:string) => { // end the string with "empty" if it ends in a / const endSlash = singleSlash.replace(/\/$/, '/empty'); - if(endSlash !== path) { - console.warn(`Path ${path} was changed to ${endSlash} this may indicate a bad cache key or someone attempting to access files outside of the cache directory`); + if (endSlash !== path) { + console.warn( + `Path ${path} was changed to ${endSlash} this may indicate a bad cache key or someone attempting to access files outside of the cache directory`, + ); } - return endSlash + (ext || '');; + return endSlash + (ext || ''); }; export const fileExists = (filepath: string) => { return new Promise((resolve) => { - fs.access(filepath, fs.constants.F_OK, error => { + fs.access(filepath, fs.constants.F_OK, (error) => { resolve(!error); }); }); -} +}; export type GorgonFileCacheProviderOptions = { createSubfolder?: boolean; clearFolder?: boolean; -} +}; -const defaultOptions:GorgonFileCacheProviderOptions = { +const defaultOptions: GorgonFileCacheProviderOptions = { createSubfolder: false, clearFolder: false, -} +}; // Wraps the Gorgon get method with a React hook export const FileProvider = (folder: string, options: GorgonFileCacheProviderOptions): IGorgonFileCacheProvider => { - - const opts = {...defaultOptions, ...options}; + const opts = { ...defaultOptions, ...options }; let _folder = path.resolve(folder); const cacheTimers = {}; - if(opts.createSubfolder) { + if (opts.createSubfolder) { const date = new Date(); const randomNum = Math.floor(Math.random() * 1000000); const dateStr = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; _folder = path.join(_folder, `${dateStr}-${randomNum}`); - fs.promises.mkdir(_folder, {recursive: true}); + fs.promises.mkdir(_folder, { recursive: true }); } const fileCache = { - poop: true, - init: async() => { - if(opts.clearFolder) { + init: async () => { + if (opts.clearFolder) { try { // delete all files and folders in the cache folder - const files = await fg(path.join(_folder,'**/*'), {cwd: '/', onlyFiles: true}); + const files = await fg(path.join(_folder, '**/*'), { cwd: '/', onlyFiles: true }); for (const file of files) { await fs.promises.unlink(file); } - const folders = await fg(path.join(_folder,'**/*'), {onlyDirectories: true}); + const folders = await fg(path.join(_folder, '**/*'), { onlyDirectories: true }); for (const folder of folders.reverse()) { await fs.promises.rmdir(folder); } @@ -85,10 +85,10 @@ export const FileProvider = (folder: string, options: GorgonFileCacheProviderOpt return; }, - get: async (key:string) => { + get: async (key: string) => { const pathFile = createValidPath(key, '.json'); - try{ + try { // check if the file exists const exists = await fileExists(path.join(_folder, pathFile)); if (!exists) { @@ -105,13 +105,13 @@ export const FileProvider = (folder: string, options: GorgonFileCacheProviderOpt } }, - set: async(key:string, value:any, policy: GorgonPolicySanitized) => { + set: async (key: string, value: any, policy: GorgonPolicySanitized) => { try { // checks that the value is serializable let json = null as string | null; - if(value.toJSON){ + if (value.toJSON) { json = value.toJSON(); - }else{ + } else { json = JSON.stringify(value); } @@ -119,8 +119,8 @@ export const FileProvider = (folder: string, options: GorgonFileCacheProviderOpt const pathFile = createValidPath(key, '.json'); // write the file creating the folder if needed - await fs.promises.mkdir(path.join(_folder, path.dirname(pathFile)), {recursive: true}); - await fs.promises.writeFile(path.join(_folder, pathFile), json, {encoding: 'utf8'}); + await fs.promises.mkdir(path.join(_folder, path.dirname(pathFile)), { recursive: true }); + await fs.promises.writeFile(path.join(_folder, pathFile), json, { encoding: 'utf8' }); if (policy && policy.expiry && policy.expiry > 0) { // clear any existing timer @@ -128,7 +128,7 @@ export const FileProvider = (folder: string, options: GorgonFileCacheProviderOpt clearTimeout(cacheTimers[pathTimer]); } - const to = setTimeout(function() { + const to = setTimeout(function () { fileCache.clear(pathTimer); }, policy.expiry); @@ -142,14 +142,13 @@ export const FileProvider = (folder: string, options: GorgonFileCacheProviderOpt } }, - keys: async() => { + keys: async () => { const files = await fg(path.join('**/*'), { cwd: _folder, onlyFiles: true }); return files.map((file) => file.replace(/\.json$/, '')); }, - clear: async(key?:string) => { - - if(!key){ + clear: async (key?: string) => { + if (!key) { const keys = await fileCache.keys(); const proms = keys.map((key) => fileCache._clear(key)); const results = await Promise.all(proms); @@ -159,7 +158,7 @@ export const FileProvider = (folder: string, options: GorgonFileCacheProviderOpt return fileCache._clear(key); }, - _clear: async (key:string) => { + _clear: async (key: string) => { const pathTimer = createValidPath(key, ''); const pathFile = createValidPath(key, '.json'); @@ -178,9 +177,7 @@ export const FileProvider = (folder: string, options: GorgonFileCacheProviderOpt return true; }, - }; return fileCache; - -} +}; diff --git a/providers/file/package.json b/providers/file/package.json index 5a2fdb9..d1c0048 100644 --- a/providers/file/package.json +++ b/providers/file/package.json @@ -1,6 +1,6 @@ { "name": "@gorgonjs/file-provider", - "version": "1.4.1", + "version": "1.5.0", "description": "A simple file caching provider for Gorgon JS", "homepage": "https://gorgonjs.dev", "main": "dist/index.umd.js", @@ -36,7 +36,7 @@ "url": "https://github.com/mikevalstar/gorgon/issues" }, "devDependencies": { - "@gorgonjs/gorgon": "^1.4.0", + "@gorgonjs/gorgon": "^1.5.0", "@types/node": "^18.11.9", "@vitest/coverage-c8": "^0.25.0", "eslint": "^8.11.0", @@ -51,7 +51,7 @@ "timers": "fake" }, "peerDependencies": { - "@gorgonjs/gorgon": "^1.4.0" + "@gorgonjs/gorgon": "^1.5.0" }, "dependencies": { "fast-glob": "^3.3.0"