mirror of
https://github.com/logto-io/logto.git
synced 2024-12-16 20:26:19 -05:00
feat(core): apply standard security headers 1/2 (#3590)
* feat(core): add some basic security headers add some basic security headers * chore(core): add some comments add some comments * chore(core): update the refererPolicy configs update the refererPolicy configs * chore(core): update helmet middleware update helmet middleware * feat(core): add csp headers to the mainflow and ac http requests 2/2 (#3613) * feat(core): add csp headers to the mainflow requests add csp headers to the mainflow requests * chore(core): add ui and console security headers add ui and console security headers * fix(core): remove unused middleware remove unused middleware * fix(ui): set terms iframe sandbox set terms iframe sandbox allow same origin * fix(core): update security headers middleware update security headers middleware * chore(core): add changesets * chore(core): address rebase conflict address rebase conflict
This commit is contained in:
parent
fc08fb5575
commit
1c431e7a59
15 changed files with 330 additions and 99 deletions
21
.changeset-staged/shiny-crabs-wink.md
Normal file
21
.changeset-staged/shiny-crabs-wink.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
"@logto/console": patch
|
||||
"@logto/core": patch
|
||||
"@logto/shared": patch
|
||||
"@logto/ui": patch
|
||||
---
|
||||
|
||||
Apply security headers
|
||||
|
||||
Apply security headers to logto http request response using (helmetjs)[https://helmetjs.github.io/].
|
||||
|
||||
[x] crossOriginOpenerPolicy
|
||||
[x] crossOriginEmbedderPolicy
|
||||
[x] crossOriginResourcePolicy
|
||||
[x] hidePoweredBy
|
||||
[x] hsts
|
||||
[x] ieNoOpen
|
||||
[x] noSniff
|
||||
[x] referrerPolicy
|
||||
[x] xssFilter
|
||||
[x] Content-Security-Policy
|
|
@ -39,7 +39,14 @@ function ImageWithErrorFallback({
|
|||
|
||||
return (
|
||||
<div className={containerClassName}>
|
||||
<img className={className} src={src} alt={alt} onError={errorHandler} {...props} />
|
||||
<img
|
||||
className={className}
|
||||
src={src}
|
||||
alt={alt}
|
||||
onError={errorHandler}
|
||||
{...props}
|
||||
crossOrigin="anonymous"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ function GithubRawImage({ src, alt }: HTMLProps<HTMLImageElement>) {
|
|||
src={`${githubRawUrlPrefix}${src}`}
|
||||
alt={alt}
|
||||
width={`${width}px`}
|
||||
crossOrigin="anonymous"
|
||||
onLoad={onLoad}
|
||||
/>
|
||||
);
|
||||
|
|
|
@ -26,7 +26,7 @@ export type Props = Omit<FileUploaderProps, 'maxSize' | 'allowedMimeTypes'> & {
|
|||
function ImageUploader({ name, value, onDelete, ...rest }: Props) {
|
||||
return value ? (
|
||||
<div className={styles.imageUploader}>
|
||||
<img alt={name} src={value} />
|
||||
<img alt={name} src={value} crossOrigin="anonymous" />
|
||||
<IconButton
|
||||
className={styles.delete}
|
||||
onClick={() => {
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
"koa-body": "^5.0.0",
|
||||
"koa-compose": "^4.1.0",
|
||||
"koa-compress": "^5.1.0",
|
||||
"koa-helmet": "^7.0.2",
|
||||
"koa-logger": "^3.2.1",
|
||||
"koa-mount": "^4.0.0",
|
||||
"koa-proxies": "^0.12.1",
|
||||
|
|
124
packages/core/src/middleware/koa-security-headers.ts
Normal file
124
packages/core/src/middleware/koa-security-headers.ts
Normal file
|
@ -0,0 +1,124 @@
|
|||
import { defaultTenantId } from '@logto/schemas';
|
||||
import type { MiddlewareType } from 'koa';
|
||||
import helmet from 'koa-helmet';
|
||||
|
||||
import { EnvSet, AdminApps, getTenantEndpoint } from '#src/env-set/index.js';
|
||||
|
||||
/**
|
||||
* Apply security headers to the response using koa-helmet
|
||||
* @see https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html for recommended headers
|
||||
* @see https://helmetjs.github.io/ for more details
|
||||
* @returns koa middleware
|
||||
*/
|
||||
|
||||
export default function koaSecurityHeaders<StateT, ContextT, ResponseBodyT>(
|
||||
mountedApps: string[],
|
||||
tenantId: string
|
||||
): MiddlewareType<StateT, ContextT, ResponseBodyT> {
|
||||
type Middleware = MiddlewareType<StateT, ContextT, ResponseBodyT>;
|
||||
|
||||
type HelmetOptions = Parameters<typeof helmet>[0];
|
||||
|
||||
const { isProduction, isCloud, isMultiTenancy, adminUrlSet, cloudUrlSet } = EnvSet.values;
|
||||
|
||||
const adminOrigins = adminUrlSet.origins;
|
||||
const cloudOrigins = isCloud ? cloudUrlSet.origins : [];
|
||||
const tenantEndpointOrigin = getTenantEndpoint(
|
||||
isMultiTenancy ? tenantId : defaultTenantId,
|
||||
EnvSet.values
|
||||
).origin;
|
||||
const developmentOrigins = isProduction ? [] : ['ws:'];
|
||||
|
||||
/**
|
||||
* Default Applied rules:
|
||||
* - crossOriginOpenerPolicy: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html#cross-origin-opener-policy-coop
|
||||
* - crossOriginResourcePolicy: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html#cross-origin-resource-policy-corp
|
||||
* - crossOriginEmbedderPolicy: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html#cross-origin-embedder-policy-coep
|
||||
* - hidePoweredBy: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html#x-powered-by
|
||||
* - hsts: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html#strict-transport-security-hsts
|
||||
* - ieNoOpen: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html#x-download-options
|
||||
* - noSniff: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html#x-content-type-options
|
||||
* - permittedCrossDomainPolicies: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html#x-permitted-cross-domain-policies
|
||||
* - referrerPolicy: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html#referrer-policy
|
||||
* - xssFilter: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html#x-xss-protection
|
||||
* - originAgentCluster: https://whatpr.org/html/6214/origin.html#origin-keyed-agent-clusters
|
||||
*/
|
||||
|
||||
const basicSecurityHeaderSettings: HelmetOptions = {
|
||||
contentSecurityPolicy: false, // Exclusively set per app
|
||||
expectCt: false, // Not recommended, will be deprecated by modern browsers
|
||||
dnsPrefetchControl: false,
|
||||
referrerPolicy: {
|
||||
policy: 'strict-origin-when-cross-origin',
|
||||
},
|
||||
};
|
||||
|
||||
const mainFlowUiSecurityHeaderSettings: HelmetOptions = {
|
||||
...basicSecurityHeaderSettings,
|
||||
// WARNING: high risk Need to allow self hosted terms of use page loaded in an iframe
|
||||
frameguard: false,
|
||||
// Alow loaded by console preview iframe
|
||||
crossOriginResourcePolicy: {
|
||||
policy: 'cross-origin',
|
||||
},
|
||||
contentSecurityPolicy: {
|
||||
useDefaults: true,
|
||||
// Temporary set to report only to avoid breaking the app
|
||||
reportOnly: true,
|
||||
directives: {
|
||||
imgSrc: ["'self'", 'data:', 'https:'],
|
||||
connectSrc: ["'self'", ...adminOrigins, ...cloudOrigins, ...developmentOrigins],
|
||||
// WARNING: high risk Need to allow self hosted terms of use page loaded in an iframe
|
||||
frameSrc: ["'self'", 'https:'],
|
||||
// Alow loaded by console preview iframe
|
||||
frameAncestors: ["'self'", ...adminOrigins, ...cloudOrigins],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const consoleSecurityHeaderSettings: HelmetOptions = {
|
||||
...basicSecurityHeaderSettings,
|
||||
// Guarded by CSP header bellow
|
||||
frameguard: false,
|
||||
contentSecurityPolicy: {
|
||||
useDefaults: true,
|
||||
// Temporary set to report only to avoid breaking the app
|
||||
reportOnly: true,
|
||||
directives: {
|
||||
imgSrc: ["'self'", 'data:', 'https:'],
|
||||
connectSrc: [
|
||||
"'self'",
|
||||
tenantEndpointOrigin,
|
||||
...adminOrigins,
|
||||
...cloudOrigins,
|
||||
...developmentOrigins,
|
||||
],
|
||||
// Allow Main Flow origin loaded in preview iframe
|
||||
frameSrc: ["'self'", tenantEndpointOrigin],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const buildHelmetMiddleware: (options: HelmetOptions) => Middleware = (options) =>
|
||||
helmet(options);
|
||||
|
||||
return async (ctx, next) => {
|
||||
const requestPath = ctx.request.path;
|
||||
|
||||
// Admin Console
|
||||
if (
|
||||
requestPath.startsWith(`/${AdminApps.Console}`) ||
|
||||
requestPath.startsWith(`/${AdminApps.Welcome}`)
|
||||
) {
|
||||
return buildHelmetMiddleware(consoleSecurityHeaderSettings)(ctx, next);
|
||||
}
|
||||
|
||||
// Route has been handled by one of mounted apps
|
||||
if (mountedApps.some((app) => app !== '' && requestPath.startsWith(`/${app}`))) {
|
||||
return buildHelmetMiddleware(basicSecurityHeaderSettings)(ctx, next);
|
||||
}
|
||||
|
||||
// Main flow UI
|
||||
return buildHelmetMiddleware(mainFlowUiSecurityHeaderSettings)(ctx, next);
|
||||
};
|
||||
}
|
|
@ -14,6 +14,7 @@ import koaConsoleRedirectProxy from '#src/middleware/koa-console-redirect-proxy.
|
|||
import koaErrorHandler from '#src/middleware/koa-error-handler.js';
|
||||
import koaI18next from '#src/middleware/koa-i18next.js';
|
||||
import koaOIDCErrorHandler from '#src/middleware/koa-oidc-error-handler.js';
|
||||
import koaSecurityHeaders from '#src/middleware/koa-security-headers.js';
|
||||
import koaSlonikErrorHandler from '#src/middleware/koa-slonik-error-handler.js';
|
||||
import koaSpaProxy from '#src/middleware/koa-spa-proxy.js';
|
||||
import koaSpaSessionGuard from '#src/middleware/koa-spa-session-guard.js';
|
||||
|
@ -69,6 +70,7 @@ export default class Tenant implements TenantContext {
|
|||
app.use(koaConnectorErrorHandler());
|
||||
app.use(koaI18next());
|
||||
app.use(koaCompress());
|
||||
app.use(koaSecurityHeaders(mountedApps, id));
|
||||
|
||||
// Mount OIDC
|
||||
const provider = initOidc(id, envSet, queries, libraries);
|
||||
|
@ -82,6 +84,7 @@ export default class Tenant implements TenantContext {
|
|||
libraries,
|
||||
envSet,
|
||||
};
|
||||
|
||||
// Mount APIs
|
||||
app.use(mount('/api', initApis(tenantContext)));
|
||||
|
||||
|
@ -126,6 +129,7 @@ export default class Tenant implements TenantContext {
|
|||
this.provider = provider;
|
||||
|
||||
const { isPathBasedMultiTenancy, adminUrlSet } = EnvSet.values;
|
||||
|
||||
this.run =
|
||||
isPathBasedMultiTenancy &&
|
||||
// If admin URL Set is specified, consider that URL first
|
||||
|
|
11
packages/shared/src/env/UrlSet.test.ts
vendored
11
packages/shared/src/env/UrlSet.test.ts
vendored
|
@ -20,6 +20,10 @@ describe('UrlSet', () => {
|
|||
new URL('https://localhost:3001'),
|
||||
new URL('https://logto.mock'),
|
||||
]);
|
||||
expect(set1.origins).toStrictEqual([
|
||||
new URL('https://localhost:3001').origin,
|
||||
new URL('https://logto.mock').origin,
|
||||
]);
|
||||
expect(set1.port).toEqual(3001);
|
||||
expect(set1.localhostUrl).toEqual(new URL('https://localhost:3001'));
|
||||
expect(set1.endpoint).toEqual(new URL('https://logto.mock'));
|
||||
|
@ -30,6 +34,10 @@ describe('UrlSet', () => {
|
|||
new URL('http://localhost:3002/'),
|
||||
new URL('https://admin.logto.mock/'),
|
||||
]);
|
||||
expect(set2.origins).toStrictEqual([
|
||||
new URL('http://localhost:3002/').origin,
|
||||
new URL('https://admin.logto.mock/').origin,
|
||||
]);
|
||||
expect(set2.port).toEqual(3002);
|
||||
expect(set2.localhostUrl).toEqual(new URL('http://localhost:3002'));
|
||||
expect(set2.endpoint).toEqual(new URL('https://admin.logto.mock'));
|
||||
|
@ -44,6 +52,7 @@ describe('UrlSet', () => {
|
|||
const set1 = new UrlSet(false, 3001);
|
||||
|
||||
expect(set1.deduplicated()).toStrictEqual([new URL('http://localhost:3001/')]);
|
||||
expect(set1.origins).toStrictEqual([new URL('http://localhost:3001/').origin]);
|
||||
expect(set1.port).toEqual(3001);
|
||||
expect(set1.localhostUrl).toEqual(new URL('http://localhost:3001'));
|
||||
expect(set1.endpoint).toEqual(new URL('http://localhost:3001'));
|
||||
|
@ -59,6 +68,7 @@ describe('UrlSet', () => {
|
|||
const set1 = new UrlSet(true, 3001);
|
||||
|
||||
expect(set1.deduplicated()).toStrictEqual([new URL('https://logto.mock/logto')]);
|
||||
expect(set1.origins).toStrictEqual([new URL('https://logto.mock/logto').origin]);
|
||||
expect(() => set1.port).toThrowError('Localhost has been disabled in this URL Set.');
|
||||
expect(() => set1.localhostUrl).toThrowError('Localhost has been disabled in this URL Set.');
|
||||
expect(set1.endpoint).toEqual(new URL('https://logto.mock/logto'));
|
||||
|
@ -74,6 +84,7 @@ describe('UrlSet', () => {
|
|||
const set1 = new UrlSet(false, 3002, 'ADMIN_');
|
||||
|
||||
expect(set1.deduplicated()).toStrictEqual([]);
|
||||
expect(set1.origins).toStrictEqual([]);
|
||||
expect(() => set1.port).toThrowError('Localhost has been disabled in this URL Set.');
|
||||
expect(() => set1.localhostUrl).toThrowError('Localhost has been disabled in this URL Set.');
|
||||
expect(() => set1.endpoint).toThrowError('No available endpoint in this URL Set.');
|
||||
|
|
4
packages/shared/src/env/UrlSet.ts
vendored
4
packages/shared/src/env/UrlSet.ts
vendored
|
@ -39,6 +39,10 @@ export default class UrlSet {
|
|||
).map((value) => new URL(value));
|
||||
}
|
||||
|
||||
public get origins(): string[] {
|
||||
return this.deduplicated().map((url) => url.origin);
|
||||
}
|
||||
|
||||
public get port(): number {
|
||||
if (this.isLocalhostDisabled) {
|
||||
throw new Error('Localhost has been disabled in this URL Set.');
|
||||
|
|
|
@ -52,8 +52,7 @@ const IframeModal = ({ className, title = '', href = '', onClose }: ModalProps)
|
|||
<iframe
|
||||
title={title}
|
||||
src={href}
|
||||
// Applies all restrictions
|
||||
sandbox=""
|
||||
sandbox="allow-same-origin"
|
||||
className={conditional(isLoaded && styles.loaded)}
|
||||
onLoad={() => {
|
||||
setIsLoaded(true);
|
||||
|
|
|
@ -16,7 +16,7 @@ const BrandingHeader = ({ logo, headline, className }: Props) => {
|
|||
|
||||
return (
|
||||
<div className={classNames(styles.container, className)}>
|
||||
{logo && <img className={styles.logo} alt="app logo" src={logo} />}
|
||||
{logo && <img className={styles.logo} alt="app logo" src={logo} crossOrigin="anonymous" />}
|
||||
{headline && <div className={styles.headline}>{t(headline)}</div>}
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -35,7 +35,14 @@ const SocialLinkButton = ({ isDisabled, className, target, name, logo, onClick }
|
|||
type="button"
|
||||
onClick={onClick}
|
||||
>
|
||||
{logo && <img src={logo} alt={target} className={socialLinkButtonStyles.icon} />}
|
||||
{logo && (
|
||||
<img
|
||||
src={logo}
|
||||
alt={target}
|
||||
className={socialLinkButtonStyles.icon}
|
||||
crossOrigin="anonymous"
|
||||
/>
|
||||
)}
|
||||
<div className={socialLinkButtonStyles.name}>
|
||||
<div className={socialLinkButtonStyles.placeHolder} />
|
||||
<span>{t('action.sign_in_with', { name: localName })}</span>
|
||||
|
|
|
@ -24,6 +24,7 @@ const SocialLanding = ({ className, connectorId, isLoading = false }: Props) =>
|
|||
<img
|
||||
src={theme === Theme.Dark ? connector.logoDark ?? connector.logo : connector.logo}
|
||||
alt="logo"
|
||||
crossOrigin="anonymous"
|
||||
/>
|
||||
) : (
|
||||
connectorId
|
||||
|
|
|
@ -43,7 +43,9 @@ const Consent = () => {
|
|||
return (
|
||||
<div className={styles.viewBox}>
|
||||
<div className={styles.container}>
|
||||
{brandingLogo && <img alt="logo" className={styles.img} src={brandingLogo} />}
|
||||
{brandingLogo && (
|
||||
<img alt="logo" className={styles.img} src={brandingLogo} crossOrigin="anonymous" />
|
||||
)}
|
||||
<div className={styles.loadingWrapper}>{loading && <LoadingIcon />}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
233
pnpm-lock.yaml
233
pnpm-lock.yaml
|
@ -656,6 +656,9 @@ importers:
|
|||
koa-compress:
|
||||
specifier: ^5.1.0
|
||||
version: 5.1.0
|
||||
koa-helmet:
|
||||
specifier: ^7.0.2
|
||||
version: 7.0.2
|
||||
koa-logger:
|
||||
specifier: ^3.2.1
|
||||
version: 3.2.1
|
||||
|
@ -1627,7 +1630,7 @@ packages:
|
|||
engines: {node: '>=14.0.0'}
|
||||
dependencies:
|
||||
'@azure/abort-controller': 1.1.0
|
||||
tslib: 2.4.1
|
||||
tslib: 2.5.0
|
||||
dev: false
|
||||
|
||||
/@azure/logger@1.0.4:
|
||||
|
@ -1679,7 +1682,7 @@ packages:
|
|||
convert-source-map: 1.9.0
|
||||
debug: 4.3.4
|
||||
gensync: 1.0.0-beta.2
|
||||
json5: 2.2.3
|
||||
json5: 2.2.1
|
||||
lodash: 4.17.21
|
||||
resolve: 1.22.1
|
||||
semver: 5.7.1
|
||||
|
@ -1705,7 +1708,7 @@ packages:
|
|||
convert-source-map: 1.9.0
|
||||
debug: 4.3.4
|
||||
gensync: 1.0.0-beta.2
|
||||
json5: 2.2.3
|
||||
json5: 2.2.1
|
||||
semver: 6.3.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
@ -2026,7 +2029,7 @@ packages:
|
|||
resolution: {integrity: sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
regenerator-runtime: 0.13.11
|
||||
regenerator-runtime: 0.13.9
|
||||
|
||||
/@babel/runtime@7.19.4:
|
||||
resolution: {integrity: sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==}
|
||||
|
@ -2463,8 +2466,18 @@ packages:
|
|||
postcss-selector-parser: 6.0.11
|
||||
dev: true
|
||||
|
||||
/@eslint-community/eslint-utils@4.3.0(eslint@8.34.0):
|
||||
resolution: {integrity: sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==}
|
||||
/@eslint-community/eslint-utils@4.1.2(eslint@8.34.0):
|
||||
resolution: {integrity: sha512-7qELuQWWjVDdVsFQ5+beUl+KPczrEDA7S3zM4QUd/bJl7oXgsmpXaEVqrRTnOBqenOV4rWf2kVZk2Ot085zPWA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
dependencies:
|
||||
eslint: 8.34.0
|
||||
eslint-visitor-keys: 3.3.0
|
||||
dev: true
|
||||
|
||||
/@eslint-community/eslint-utils@4.4.0(eslint@8.34.0):
|
||||
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
|
||||
|
@ -2473,8 +2486,8 @@ packages:
|
|||
eslint-visitor-keys: 3.3.0
|
||||
dev: true
|
||||
|
||||
/@eslint-community/regexpp@4.4.0:
|
||||
resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==}
|
||||
/@eslint-community/regexpp@4.5.0:
|
||||
resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==}
|
||||
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
|
@ -3171,7 +3184,6 @@ packages:
|
|||
|
||||
/@microsoft/applicationinsights-react-js@3.4.1(history@5.3.0)(react@18.2.0)(tslib@2.4.1):
|
||||
resolution: {integrity: sha512-oosMkymmkkulUdFcUbqKc64Li0KpItmV/pClOr4DCLAxbitCjHDkKdxodvpUzMHVs1ko9cHP360oc1QVXprhXQ==}
|
||||
requiresBuild: true
|
||||
peerDependencies:
|
||||
history: '>= 4.10.1'
|
||||
react: '>= 17.0.1 || ^18.0.0'
|
||||
|
@ -3196,7 +3208,6 @@ packages:
|
|||
|
||||
/@microsoft/applicationinsights-web@2.8.11(tslib@2.4.1):
|
||||
resolution: {integrity: sha512-cLJl3MLQtvbwXU0hvFLl6S2/rIdoZKpZL8cvdaT0cXqd5XIiMbeUOxWHLf2hxT8IlIeVlu5nnFILeRYOFZowvw==}
|
||||
requiresBuild: true
|
||||
peerDependencies:
|
||||
tslib: '*'
|
||||
dependencies:
|
||||
|
@ -3221,7 +3232,7 @@ packages:
|
|||
dependencies:
|
||||
'@lezer/common': 0.15.12
|
||||
'@lezer/lr': 0.15.8
|
||||
json5: 2.2.3
|
||||
json5: 2.2.1
|
||||
dev: true
|
||||
|
||||
/@msgpackr-extract/msgpackr-extract-darwin-arm64@2.2.0:
|
||||
|
@ -3877,7 +3888,7 @@ packages:
|
|||
'@parcel/source-map': 2.1.1
|
||||
'@parcel/utils': 2.8.3
|
||||
browserslist: 4.21.4
|
||||
json5: 2.2.3
|
||||
json5: 2.2.1
|
||||
nullthrows: 1.1.1
|
||||
semver: 5.7.1
|
||||
transitivePeerDependencies:
|
||||
|
@ -3954,7 +3965,7 @@ packages:
|
|||
engines: {node: '>= 12.0.0', parcel: ^2.8.3}
|
||||
dependencies:
|
||||
'@parcel/plugin': 2.8.3(@parcel/core@2.8.3)
|
||||
json5: 2.2.3
|
||||
json5: 2.2.1
|
||||
transitivePeerDependencies:
|
||||
- '@parcel/core'
|
||||
dev: true
|
||||
|
@ -4151,7 +4162,7 @@ packages:
|
|||
open: 8.4.0
|
||||
picocolors: 1.0.0
|
||||
tiny-glob: 0.2.9
|
||||
tslib: 2.4.1
|
||||
tslib: 2.5.0
|
||||
dev: true
|
||||
|
||||
/@react-dnd/asap@5.0.0:
|
||||
|
@ -4286,23 +4297,23 @@ packages:
|
|||
prettier: ^2.8.2
|
||||
dependencies:
|
||||
'@silverhand/eslint-plugin-fp': 2.5.0(eslint@8.34.0)
|
||||
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/parser': 5.56.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/parser': 5.57.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
eslint: 8.34.0
|
||||
eslint-config-prettier: 8.8.0(eslint@8.34.0)
|
||||
eslint-config-xo: 0.42.0(eslint@8.34.0)
|
||||
eslint-config-xo-typescript: 0.56.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.34.0)(typescript@5.0.2)
|
||||
eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.34.0)
|
||||
eslint-config-xo-typescript: 0.56.0(@typescript-eslint/eslint-plugin@5.57.0)(@typescript-eslint/parser@5.57.0)(eslint@8.34.0)(typescript@5.0.2)
|
||||
eslint-import-resolver-typescript: 3.5.4(eslint-plugin-import@2.27.5)(eslint@8.34.0)
|
||||
eslint-plugin-consistent-default-export-name: 0.0.15
|
||||
eslint-plugin-eslint-comments: 3.2.0(eslint@8.34.0)
|
||||
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.56.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.34.0)
|
||||
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.34.0)
|
||||
eslint-plugin-no-use-extend-native: 0.5.0
|
||||
eslint-plugin-node: 11.1.0(eslint@8.34.0)
|
||||
eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.34.0)(prettier@2.8.4)
|
||||
eslint-plugin-promise: 6.1.0(eslint@8.34.0)
|
||||
eslint-plugin-sql: 2.1.0(eslint@8.34.0)
|
||||
eslint-plugin-unicorn: 45.0.2(eslint@8.34.0)
|
||||
eslint-plugin-unused-imports: 2.0.0(@typescript-eslint/eslint-plugin@5.56.0)(eslint@8.34.0)
|
||||
eslint-plugin-unused-imports: 2.0.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.34.0)
|
||||
prettier: 2.8.4
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-webpack
|
||||
|
@ -4585,7 +4596,7 @@ packages:
|
|||
/@swc/helpers@0.4.14:
|
||||
resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
|
||||
dependencies:
|
||||
tslib: 2.4.1
|
||||
tslib: 2.5.0
|
||||
dev: true
|
||||
|
||||
/@szmarczak/http-timer@5.0.1:
|
||||
|
@ -4829,7 +4840,7 @@ packages:
|
|||
/@types/is-ci@3.0.0:
|
||||
resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==}
|
||||
dependencies:
|
||||
ci-info: 3.8.0
|
||||
ci-info: 3.5.0
|
||||
dev: true
|
||||
|
||||
/@types/istanbul-lib-coverage@2.0.4:
|
||||
|
@ -5185,8 +5196,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@typescript-eslint/eslint-plugin@5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.34.0)(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==}
|
||||
/@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.34.0)(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
'@typescript-eslint/parser': ^5.0.0
|
||||
|
@ -5196,11 +5207,11 @@ packages:
|
|||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.4.0
|
||||
'@typescript-eslint/parser': 5.56.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/scope-manager': 5.56.0
|
||||
'@typescript-eslint/type-utils': 5.56.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/utils': 5.56.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@eslint-community/regexpp': 4.5.0
|
||||
'@typescript-eslint/parser': 5.57.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/scope-manager': 5.57.0
|
||||
'@typescript-eslint/type-utils': 5.57.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/utils': 5.57.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
debug: 4.3.4
|
||||
eslint: 8.34.0
|
||||
grapheme-splitter: 1.0.4
|
||||
|
@ -5213,8 +5224,8 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/parser@5.56.0(eslint@8.34.0)(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==}
|
||||
/@typescript-eslint/parser@5.57.0(eslint@8.34.0)(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
|
@ -5223,9 +5234,9 @@ packages:
|
|||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 5.56.0
|
||||
'@typescript-eslint/types': 5.56.0
|
||||
'@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.2)
|
||||
'@typescript-eslint/scope-manager': 5.57.0
|
||||
'@typescript-eslint/types': 5.57.0
|
||||
'@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2)
|
||||
debug: 4.3.4
|
||||
eslint: 8.34.0
|
||||
typescript: 5.0.2
|
||||
|
@ -5233,16 +5244,16 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/scope-manager@5.56.0:
|
||||
resolution: {integrity: sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==}
|
||||
/@typescript-eslint/scope-manager@5.57.0:
|
||||
resolution: {integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 5.56.0
|
||||
'@typescript-eslint/visitor-keys': 5.56.0
|
||||
'@typescript-eslint/types': 5.57.0
|
||||
'@typescript-eslint/visitor-keys': 5.57.0
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/type-utils@5.56.0(eslint@8.34.0)(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==}
|
||||
/@typescript-eslint/type-utils@5.57.0(eslint@8.34.0)(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: '*'
|
||||
|
@ -5251,8 +5262,8 @@ packages:
|
|||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.2)
|
||||
'@typescript-eslint/utils': 5.56.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2)
|
||||
'@typescript-eslint/utils': 5.57.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
debug: 4.3.4
|
||||
eslint: 8.34.0
|
||||
tsutils: 3.21.0(typescript@5.0.2)
|
||||
|
@ -5261,13 +5272,13 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/types@5.56.0:
|
||||
resolution: {integrity: sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==}
|
||||
/@typescript-eslint/types@5.57.0:
|
||||
resolution: {integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/typescript-estree@5.56.0(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==}
|
||||
/@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
|
@ -5275,8 +5286,8 @@ packages:
|
|||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 5.56.0
|
||||
'@typescript-eslint/visitor-keys': 5.56.0
|
||||
'@typescript-eslint/types': 5.57.0
|
||||
'@typescript-eslint/visitor-keys': 5.57.0
|
||||
debug: 4.3.4
|
||||
globby: 11.1.0
|
||||
is-glob: 4.0.3
|
||||
|
@ -5287,18 +5298,18 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/utils@5.56.0(eslint@8.34.0)(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==}
|
||||
/@typescript-eslint/utils@5.57.0(eslint@8.34.0)(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.3.0(eslint@8.34.0)
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.34.0)
|
||||
'@types/json-schema': 7.0.11
|
||||
'@types/semver': 7.3.12
|
||||
'@typescript-eslint/scope-manager': 5.56.0
|
||||
'@typescript-eslint/types': 5.56.0
|
||||
'@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.2)
|
||||
'@typescript-eslint/scope-manager': 5.57.0
|
||||
'@typescript-eslint/types': 5.57.0
|
||||
'@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2)
|
||||
eslint: 8.34.0
|
||||
eslint-scope: 5.1.1
|
||||
semver: 7.3.8
|
||||
|
@ -5307,11 +5318,11 @@ packages:
|
|||
- typescript
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/visitor-keys@5.56.0:
|
||||
resolution: {integrity: sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==}
|
||||
/@typescript-eslint/visitor-keys@5.57.0:
|
||||
resolution: {integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 5.56.0
|
||||
'@typescript-eslint/types': 5.57.0
|
||||
eslint-visitor-keys: 3.3.0
|
||||
dev: true
|
||||
|
||||
|
@ -5579,6 +5590,16 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/array.prototype.flat@1.3.0:
|
||||
resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.2
|
||||
define-properties: 1.1.4
|
||||
es-abstract: 1.20.4
|
||||
es-shim-unscopables: 1.0.0
|
||||
dev: true
|
||||
|
||||
/array.prototype.flat@1.3.1:
|
||||
resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
@ -7113,8 +7134,8 @@ packages:
|
|||
once: 1.4.0
|
||||
dev: true
|
||||
|
||||
/enhanced-resolve@5.10.0:
|
||||
resolution: {integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==}
|
||||
/enhanced-resolve@5.12.0:
|
||||
resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
dependencies:
|
||||
graceful-fs: 4.2.10
|
||||
|
@ -7264,7 +7285,7 @@ packages:
|
|||
eslint-plugin-react-hooks: 4.6.0(eslint@8.34.0)
|
||||
dev: true
|
||||
|
||||
/eslint-config-xo-typescript@0.56.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.34.0)(typescript@5.0.2):
|
||||
/eslint-config-xo-typescript@0.56.0(@typescript-eslint/eslint-plugin@5.57.0)(@typescript-eslint/parser@5.57.0)(eslint@8.34.0)(typescript@5.0.2):
|
||||
resolution: {integrity: sha512-JOuV9M6R0BphdWome5SiolbsZFpw5DX83HgUaIUoEZwkk0hDv+fmPoHNc3KwmoON5QEkuBxlIbW0o3PifzPCuw==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
|
@ -7273,8 +7294,8 @@ packages:
|
|||
eslint: '>=8.0.0'
|
||||
typescript: '>=4.4'
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/parser': 5.56.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/parser': 5.57.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
eslint: 8.34.0
|
||||
typescript: 5.0.2
|
||||
dev: true
|
||||
|
@ -7299,27 +7320,27 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.34.0):
|
||||
resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==}
|
||||
/eslint-import-resolver-typescript@3.5.4(eslint-plugin-import@2.27.5)(eslint@8.34.0):
|
||||
resolution: {integrity: sha512-9xUpnedEmSfG57sN1UvWPiEhfJ8bPt0Wg2XysA7Mlc79iFGhmJtRUg9LxtkK81FhMUui0YuR2E8iUsVhePkh4A==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: '*'
|
||||
eslint-plugin-import: '*'
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
enhanced-resolve: 5.10.0
|
||||
enhanced-resolve: 5.12.0
|
||||
eslint: 8.34.0
|
||||
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.56.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.34.0)
|
||||
get-tsconfig: 4.2.0
|
||||
globby: 13.1.2
|
||||
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.34.0)
|
||||
get-tsconfig: 4.5.0
|
||||
globby: 13.1.3
|
||||
is-core-module: 2.11.0
|
||||
is-glob: 4.0.3
|
||||
synckit: 0.8.4
|
||||
synckit: 0.8.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/eslint-module-utils@2.7.4(@typescript-eslint/parser@5.56.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.34.0):
|
||||
/eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.34.0):
|
||||
resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
|
@ -7340,11 +7361,11 @@ packages:
|
|||
eslint-import-resolver-webpack:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.56.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/parser': 5.57.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
debug: 3.2.7(supports-color@5.5.0)
|
||||
eslint: 8.34.0
|
||||
eslint-import-resolver-node: 0.3.7
|
||||
eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.34.0)
|
||||
eslint-import-resolver-typescript: 3.5.4(eslint-plugin-import@2.27.5)(eslint@8.34.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
@ -7379,7 +7400,7 @@ packages:
|
|||
ignore: 5.2.4
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.56.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.34.0):
|
||||
/eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.34.0):
|
||||
resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
|
@ -7389,7 +7410,7 @@ packages:
|
|||
'@typescript-eslint/parser':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.56.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/parser': 5.57.0(eslint@8.34.0)(typescript@5.0.2)
|
||||
array-includes: 3.1.6
|
||||
array.prototype.flat: 1.3.1
|
||||
array.prototype.flatmap: 1.3.1
|
||||
|
@ -7397,7 +7418,7 @@ packages:
|
|||
doctrine: 2.1.0
|
||||
eslint: 8.34.0
|
||||
eslint-import-resolver-node: 0.3.7
|
||||
eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.56.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.34.0)
|
||||
eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.34.0)
|
||||
has: 1.0.3
|
||||
is-core-module: 2.11.0
|
||||
is-glob: 4.0.3
|
||||
|
@ -7540,7 +7561,7 @@ packages:
|
|||
eslint: '>=8.28.0'
|
||||
dependencies:
|
||||
'@babel/helper-validator-identifier': 7.19.1
|
||||
'@eslint-community/eslint-utils': 4.3.0(eslint@8.34.0)
|
||||
'@eslint-community/eslint-utils': 4.1.2(eslint@8.34.0)
|
||||
ci-info: 3.8.0
|
||||
clean-regexp: 1.0.0
|
||||
eslint: 8.34.0
|
||||
|
@ -7558,7 +7579,7 @@ packages:
|
|||
strip-indent: 3.0.0
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.56.0)(eslint@8.34.0):
|
||||
/eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.34.0):
|
||||
resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
|
@ -7568,7 +7589,7 @@ packages:
|
|||
'@typescript-eslint/eslint-plugin':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.34.0)(typescript@5.0.2)
|
||||
'@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.34.0)(typescript@5.0.2)
|
||||
eslint: 8.34.0
|
||||
eslint-rule-composer: 0.3.0
|
||||
dev: true
|
||||
|
@ -8110,7 +8131,7 @@ packages:
|
|||
resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
graceful-fs: 4.2.10
|
||||
graceful-fs: 4.2.9
|
||||
jsonfile: 6.1.0
|
||||
universalify: 2.0.0
|
||||
dev: true
|
||||
|
@ -8232,8 +8253,8 @@ packages:
|
|||
get-intrinsic: 1.1.3
|
||||
dev: true
|
||||
|
||||
/get-tsconfig@4.2.0:
|
||||
resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==}
|
||||
/get-tsconfig@4.5.0:
|
||||
resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==}
|
||||
dev: true
|
||||
|
||||
/git-raw-commits@2.0.11:
|
||||
|
@ -8366,8 +8387,8 @@ packages:
|
|||
slash: 3.0.0
|
||||
dev: true
|
||||
|
||||
/globby@13.1.2:
|
||||
resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==}
|
||||
/globby@13.1.3:
|
||||
resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
dependencies:
|
||||
dir-glob: 3.0.1
|
||||
|
@ -8419,6 +8440,10 @@ packages:
|
|||
resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
|
||||
dev: true
|
||||
|
||||
/graceful-fs@4.2.9:
|
||||
resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==}
|
||||
dev: true
|
||||
|
||||
/grapheme-splitter@1.0.4:
|
||||
resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
|
||||
dev: true
|
||||
|
@ -8535,6 +8560,11 @@ packages:
|
|||
space-separated-tokens: 1.1.5
|
||||
dev: true
|
||||
|
||||
/helmet@6.0.1:
|
||||
resolution: {integrity: sha512-8wo+VdQhTMVBMCITYZaGTbE4lvlthelPYSvoyNvk4RECTmrVjMerp9RfUOQXZWLvCcAn1pKj7ZRxK4lI9Alrcw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
dev: false
|
||||
|
||||
/hexoid@1.0.0:
|
||||
resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==}
|
||||
engines: {node: '>=8'}
|
||||
|
@ -9046,7 +9076,13 @@ packages:
|
|||
resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
ci-info: 3.8.0
|
||||
ci-info: 3.5.0
|
||||
dev: true
|
||||
|
||||
/is-core-module@2.10.0:
|
||||
resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==}
|
||||
dependencies:
|
||||
has: 1.0.3
|
||||
dev: true
|
||||
|
||||
/is-core-module@2.11.0:
|
||||
|
@ -9922,7 +9958,7 @@ packages:
|
|||
'@jest/types': 29.5.0
|
||||
'@types/node': 18.11.18
|
||||
chalk: 4.1.2
|
||||
ci-info: 3.5.0
|
||||
ci-info: 3.8.0
|
||||
graceful-fs: 4.2.10
|
||||
picomatch: 2.3.1
|
||||
dev: true
|
||||
|
@ -10259,6 +10295,13 @@ packages:
|
|||
koa-compose: 4.1.0
|
||||
dev: false
|
||||
|
||||
/koa-helmet@7.0.2:
|
||||
resolution: {integrity: sha512-AvzS6VuEfFgbAm0mTUnkk/BpMarMcs5A56g+f0sfrJ6m63wII48d2GDrnUQGp0Nj+RR950vNtgqXm9UJSe7GOg==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
dependencies:
|
||||
helmet: 6.0.1
|
||||
dev: false
|
||||
|
||||
/koa-is-json@1.0.0:
|
||||
resolution: {integrity: sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw==}
|
||||
dev: false
|
||||
|
@ -10679,7 +10722,7 @@ packages:
|
|||
/lower-case@2.0.2:
|
||||
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
|
||||
dependencies:
|
||||
tslib: 2.4.1
|
||||
tslib: 2.5.0
|
||||
dev: false
|
||||
|
||||
/lowercase-keys@1.0.1:
|
||||
|
@ -11428,7 +11471,7 @@ packages:
|
|||
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
|
||||
dependencies:
|
||||
lower-case: 2.0.2
|
||||
tslib: 2.4.1
|
||||
tslib: 2.5.0
|
||||
dev: false
|
||||
|
||||
/node-addon-api@3.2.1:
|
||||
|
@ -11544,7 +11587,7 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
hosted-git-info: 4.1.0
|
||||
is-core-module: 2.11.0
|
||||
is-core-module: 2.10.0
|
||||
semver: 7.3.8
|
||||
validate-npm-package-license: 3.0.4
|
||||
dev: true
|
||||
|
@ -13224,6 +13267,9 @@ packages:
|
|||
/regenerator-runtime@0.13.11:
|
||||
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
|
||||
|
||||
/regenerator-runtime@0.13.9:
|
||||
resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==}
|
||||
|
||||
/regexp-tree@0.1.24:
|
||||
resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==}
|
||||
hasBin: true
|
||||
|
@ -13861,7 +13907,7 @@ packages:
|
|||
engines: {node: '>=6'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
array.prototype.flat: 1.3.1
|
||||
array.prototype.flat: 1.3.0
|
||||
breakword: 1.0.5
|
||||
grapheme-splitter: 1.0.4
|
||||
strip-ansi: 6.0.1
|
||||
|
@ -14394,12 +14440,12 @@ packages:
|
|||
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
|
||||
dev: true
|
||||
|
||||
/synckit@0.8.4:
|
||||
resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==}
|
||||
/synckit@0.8.5:
|
||||
resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
dependencies:
|
||||
'@pkgr/utils': 2.3.1
|
||||
tslib: 2.4.1
|
||||
tslib: 2.5.0
|
||||
dev: true
|
||||
|
||||
/table@5.4.6:
|
||||
|
@ -14695,6 +14741,9 @@ packages:
|
|||
/tslib@2.4.1:
|
||||
resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
|
||||
|
||||
/tslib@2.5.0:
|
||||
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
|
||||
|
||||
/tsscmp@1.0.6:
|
||||
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
|
||||
engines: {node: '>=0.6.x'}
|
||||
|
|
Loading…
Reference in a new issue