From 694122c67a52ecf8d0e5f129d774dc1338f9cc44 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Thu, 20 Oct 2022 23:10:50 +0200 Subject: [PATCH] feat: move from cookie base auth to jwt auth test: mock redis --- docker-compose.dev.yml | 2 + packages/dashboard/src/generated/graphql.tsx | 508 ++++++++++--------- packages/system-api/src/server.ts | 1 + pnpm-lock.yaml | 252 +++++---- 4 files changed, 428 insertions(+), 335 deletions(-) diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 049204e1..7e1d9a9c 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -125,6 +125,8 @@ services: # Middlewares traefik.http.middlewares.redirect-middleware.redirectregex.regex: .* traefik.http.middlewares.redirect-middleware.redirectregex.replacement: /dashboard + + networks: tipi_main_network: diff --git a/packages/dashboard/src/generated/graphql.tsx b/packages/dashboard/src/generated/graphql.tsx index d2e6df60..777ffdae 100644 --- a/packages/dashboard/src/generated/graphql.tsx +++ b/packages/dashboard/src/generated/graphql.tsx @@ -153,42 +153,34 @@ export type Mutation = { updateAppConfig: App; }; - export type MutationInstallAppArgs = { input: AppInputType; }; - export type MutationLoginArgs = { input: UsernamePasswordInput; }; - export type MutationRegisterArgs = { input: UsernamePasswordInput; }; - export type MutationStartAppArgs = { id: Scalars['String']; }; - export type MutationStopAppArgs = { id: Scalars['String']; }; - export type MutationUninstallAppArgs = { id: Scalars['String']; }; - export type MutationUpdateAppArgs = { id: Scalars['String']; }; - export type MutationUpdateAppConfigArgs = { input: AppInputType; }; @@ -205,7 +197,6 @@ export type Query = { version: VersionResponse; }; - export type QueryGetAppArgs = { id: Scalars['String']; }; @@ -252,125 +243,182 @@ export type InstallAppMutationVariables = Exact<{ input: AppInputType; }>; - -export type InstallAppMutation = { __typename?: 'Mutation', installApp: { __typename: 'App', id: string, status: AppStatusEnum } }; +export type InstallAppMutation = { __typename?: 'Mutation'; installApp: { __typename: 'App'; id: string; status: AppStatusEnum } }; export type LoginMutationVariables = Exact<{ input: UsernamePasswordInput; }>; +export type LoginMutation = { __typename?: 'Mutation'; login: { __typename?: 'TokenResponse'; token: string } }; -export type LoginMutation = { __typename?: 'Mutation', login: { __typename?: 'TokenResponse', token: string } }; +export type LogoutMutationVariables = Exact<{ [key: string]: never }>; -export type LogoutMutationVariables = Exact<{ [key: string]: never; }>; - - -export type LogoutMutation = { __typename?: 'Mutation', logout: boolean }; +export type LogoutMutation = { __typename?: 'Mutation'; logout: boolean }; export type RegisterMutationVariables = Exact<{ input: UsernamePasswordInput; }>; +export type RegisterMutation = { __typename?: 'Mutation'; register: { __typename?: 'TokenResponse'; token: string } }; -export type RegisterMutation = { __typename?: 'Mutation', register: { __typename?: 'TokenResponse', token: string } }; +export type RestartMutationVariables = Exact<{ [key: string]: never }>; -export type RestartMutationVariables = Exact<{ [key: string]: never; }>; - - -export type RestartMutation = { __typename?: 'Mutation', restart: boolean }; +export type RestartMutation = { __typename?: 'Mutation'; restart: boolean }; export type StartAppMutationVariables = Exact<{ id: Scalars['String']; }>; - -export type StartAppMutation = { __typename?: 'Mutation', startApp: { __typename: 'App', id: string, status: AppStatusEnum } }; +export type StartAppMutation = { __typename?: 'Mutation'; startApp: { __typename: 'App'; id: string; status: AppStatusEnum } }; export type StopAppMutationVariables = Exact<{ id: Scalars['String']; }>; - -export type StopAppMutation = { __typename?: 'Mutation', stopApp: { __typename: 'App', id: string, status: AppStatusEnum } }; +export type StopAppMutation = { __typename?: 'Mutation'; stopApp: { __typename: 'App'; id: string; status: AppStatusEnum } }; export type UninstallAppMutationVariables = Exact<{ id: Scalars['String']; }>; +export type UninstallAppMutation = { __typename?: 'Mutation'; uninstallApp: { __typename: 'App'; id: string; status: AppStatusEnum } }; -export type UninstallAppMutation = { __typename?: 'Mutation', uninstallApp: { __typename: 'App', id: string, status: AppStatusEnum } }; +export type UpdateMutationVariables = Exact<{ [key: string]: never }>; -export type UpdateMutationVariables = Exact<{ [key: string]: never; }>; - - -export type UpdateMutation = { __typename?: 'Mutation', update: boolean }; +export type UpdateMutation = { __typename?: 'Mutation'; update: boolean }; export type UpdateAppMutationVariables = Exact<{ id: Scalars['String']; }>; - -export type UpdateAppMutation = { __typename?: 'Mutation', updateApp: { __typename: 'App', id: string, status: AppStatusEnum } }; +export type UpdateAppMutation = { __typename?: 'Mutation'; updateApp: { __typename: 'App'; id: string; status: AppStatusEnum } }; export type UpdateAppConfigMutationVariables = Exact<{ input: AppInputType; }>; - -export type UpdateAppConfigMutation = { __typename?: 'Mutation', updateAppConfig: { __typename: 'App', id: string, status: AppStatusEnum } }; +export type UpdateAppConfigMutation = { __typename?: 'Mutation'; updateAppConfig: { __typename: 'App'; id: string; status: AppStatusEnum } }; export type GetAppQueryVariables = Exact<{ appId: Scalars['String']; }>; +export type GetAppQuery = { + __typename?: 'Query'; + getApp: { + __typename?: 'App'; + id: string; + status: AppStatusEnum; + config: any; + version?: number | null; + exposed: boolean; + domain?: string | null; + updateInfo?: { __typename?: 'UpdateInfo'; current: number; latest: number; dockerVersion?: string | null } | null; + info?: { + __typename?: 'AppInfo'; + id: string; + port: number; + name: string; + description: string; + available: boolean; + version?: string | null; + tipi_version: number; + short_desc: string; + author: string; + source: string; + categories: Array; + url_suffix?: string | null; + https?: boolean | null; + exposable?: boolean | null; + form_fields: Array<{ + __typename?: 'FormField'; + type: FieldTypesEnum; + label: string; + max?: number | null; + min?: number | null; + hint?: string | null; + required?: boolean | null; + env_variable: string; + }>; + } | null; + }; +}; -export type GetAppQuery = { __typename?: 'Query', getApp: { __typename?: 'App', id: string, status: AppStatusEnum, config: any, version?: number | null, exposed: boolean, domain?: string | null, updateInfo?: { __typename?: 'UpdateInfo', current: number, latest: number, dockerVersion?: string | null } | null, info?: { __typename?: 'AppInfo', id: string, port: number, name: string, description: string, available: boolean, version?: string | null, tipi_version: number, short_desc: string, author: string, source: string, categories: Array, url_suffix?: string | null, https?: boolean | null, exposable?: boolean | null, form_fields: Array<{ __typename?: 'FormField', type: FieldTypesEnum, label: string, max?: number | null, min?: number | null, hint?: string | null, required?: boolean | null, env_variable: string }> } | null } }; +export type InstalledAppsQueryVariables = Exact<{ [key: string]: never }>; -export type InstalledAppsQueryVariables = Exact<{ [key: string]: never; }>; +export type InstalledAppsQuery = { + __typename?: 'Query'; + installedApps: Array<{ + __typename?: 'App'; + id: string; + status: AppStatusEnum; + config: any; + version?: number | null; + updateInfo?: { __typename?: 'UpdateInfo'; current: number; latest: number; dockerVersion?: string | null } | null; + info?: { __typename?: 'AppInfo'; id: string; name: string; description: string; tipi_version: number; short_desc: string; https?: boolean | null } | null; + }>; +}; +export type ConfiguredQueryVariables = Exact<{ [key: string]: never }>; -export type InstalledAppsQuery = { __typename?: 'Query', installedApps: Array<{ __typename?: 'App', id: string, status: AppStatusEnum, config: any, version?: number | null, updateInfo?: { __typename?: 'UpdateInfo', current: number, latest: number, dockerVersion?: string | null } | null, info?: { __typename?: 'AppInfo', id: string, name: string, description: string, tipi_version: number, short_desc: string, https?: boolean | null } | null }> }; +export type ConfiguredQuery = { __typename?: 'Query'; isConfigured: boolean }; -export type ConfiguredQueryVariables = Exact<{ [key: string]: never; }>; +export type ListAppsQueryVariables = Exact<{ [key: string]: never }>; +export type ListAppsQuery = { + __typename?: 'Query'; + listAppsInfo: { + __typename?: 'ListAppsResonse'; + total: number; + apps: Array<{ + __typename?: 'AppInfo'; + id: string; + available: boolean; + tipi_version: number; + port: number; + name: string; + version?: string | null; + short_desc: string; + author: string; + categories: Array; + https?: boolean | null; + }>; + }; +}; -export type ConfiguredQuery = { __typename?: 'Query', isConfigured: boolean }; +export type MeQueryVariables = Exact<{ [key: string]: never }>; -export type ListAppsQueryVariables = Exact<{ [key: string]: never; }>; +export type MeQuery = { __typename?: 'Query'; me?: { __typename?: 'User'; id: string } | null }; +export type RefreshTokenQueryVariables = Exact<{ [key: string]: never }>; -export type ListAppsQuery = { __typename?: 'Query', listAppsInfo: { __typename?: 'ListAppsResonse', total: number, apps: Array<{ __typename?: 'AppInfo', id: string, available: boolean, tipi_version: number, port: number, name: string, version?: string | null, short_desc: string, author: string, categories: Array, https?: boolean | null }> } }; +export type RefreshTokenQuery = { __typename?: 'Query'; refreshToken?: { __typename?: 'TokenResponse'; token: string } | null }; -export type MeQueryVariables = Exact<{ [key: string]: never; }>; +export type SystemInfoQueryVariables = Exact<{ [key: string]: never }>; +export type SystemInfoQuery = { + __typename?: 'Query'; + systemInfo?: { + __typename?: 'SystemInfoResponse'; + cpu: { __typename?: 'Cpu'; load: number }; + disk: { __typename?: 'DiskMemory'; available: number; used: number; total: number }; + memory: { __typename?: 'DiskMemory'; available: number; used: number; total: number }; + } | null; +}; -export type MeQuery = { __typename?: 'Query', me?: { __typename?: 'User', id: string } | null }; - -export type RefreshTokenQueryVariables = Exact<{ [key: string]: never; }>; - - -export type RefreshTokenQuery = { __typename?: 'Query', refreshToken?: { __typename?: 'TokenResponse', token: string } | null }; - -export type SystemInfoQueryVariables = Exact<{ [key: string]: never; }>; - - -export type SystemInfoQuery = { __typename?: 'Query', systemInfo?: { __typename?: 'SystemInfoResponse', cpu: { __typename?: 'Cpu', load: number }, disk: { __typename?: 'DiskMemory', available: number, used: number, total: number }, memory: { __typename?: 'DiskMemory', available: number, used: number, total: number } } | null }; - -export type VersionQueryVariables = Exact<{ [key: string]: never; }>; - - -export type VersionQuery = { __typename?: 'Query', version: { __typename?: 'VersionResponse', current: string, latest?: string | null } }; +export type VersionQueryVariables = Exact<{ [key: string]: never }>; +export type VersionQuery = { __typename?: 'Query'; version: { __typename?: 'VersionResponse'; current: string; latest?: string | null } }; export const InstallAppDocument = gql` - mutation InstallApp($input: AppInputType!) { - installApp(input: $input) { - id - status - __typename + mutation InstallApp($input: AppInputType!) { + installApp(input: $input) { + id + status + __typename + } } -} - `; +`; export type InstallAppMutationFn = Apollo.MutationFunction; /** @@ -398,12 +446,12 @@ export type InstallAppMutationHookResult = ReturnType; export type InstallAppMutationOptions = Apollo.BaseMutationOptions; export const LoginDocument = gql` - mutation Login($input: UsernamePasswordInput!) { - login(input: $input) { - token + mutation Login($input: UsernamePasswordInput!) { + login(input: $input) { + token + } } -} - `; +`; export type LoginMutationFn = Apollo.MutationFunction; /** @@ -431,10 +479,10 @@ export type LoginMutationHookResult = ReturnType; export type LoginMutationResult = Apollo.MutationResult; export type LoginMutationOptions = Apollo.BaseMutationOptions; export const LogoutDocument = gql` - mutation Logout { - logout -} - `; + mutation Logout { + logout + } +`; export type LogoutMutationFn = Apollo.MutationFunction; /** @@ -461,12 +509,12 @@ export type LogoutMutationHookResult = ReturnType; export type LogoutMutationResult = Apollo.MutationResult; export type LogoutMutationOptions = Apollo.BaseMutationOptions; export const RegisterDocument = gql` - mutation Register($input: UsernamePasswordInput!) { - register(input: $input) { - token + mutation Register($input: UsernamePasswordInput!) { + register(input: $input) { + token + } } -} - `; +`; export type RegisterMutationFn = Apollo.MutationFunction; /** @@ -494,10 +542,10 @@ export type RegisterMutationHookResult = ReturnType; export type RegisterMutationResult = Apollo.MutationResult; export type RegisterMutationOptions = Apollo.BaseMutationOptions; export const RestartDocument = gql` - mutation Restart { - restart -} - `; + mutation Restart { + restart + } +`; export type RestartMutationFn = Apollo.MutationFunction; /** @@ -524,14 +572,14 @@ export type RestartMutationHookResult = ReturnType; export type RestartMutationResult = Apollo.MutationResult; export type RestartMutationOptions = Apollo.BaseMutationOptions; export const StartAppDocument = gql` - mutation StartApp($id: String!) { - startApp(id: $id) { - id - status - __typename + mutation StartApp($id: String!) { + startApp(id: $id) { + id + status + __typename + } } -} - `; +`; export type StartAppMutationFn = Apollo.MutationFunction; /** @@ -559,14 +607,14 @@ export type StartAppMutationHookResult = ReturnType; export type StartAppMutationResult = Apollo.MutationResult; export type StartAppMutationOptions = Apollo.BaseMutationOptions; export const StopAppDocument = gql` - mutation StopApp($id: String!) { - stopApp(id: $id) { - id - status - __typename + mutation StopApp($id: String!) { + stopApp(id: $id) { + id + status + __typename + } } -} - `; +`; export type StopAppMutationFn = Apollo.MutationFunction; /** @@ -594,14 +642,14 @@ export type StopAppMutationHookResult = ReturnType; export type StopAppMutationResult = Apollo.MutationResult; export type StopAppMutationOptions = Apollo.BaseMutationOptions; export const UninstallAppDocument = gql` - mutation UninstallApp($id: String!) { - uninstallApp(id: $id) { - id - status - __typename + mutation UninstallApp($id: String!) { + uninstallApp(id: $id) { + id + status + __typename + } } -} - `; +`; export type UninstallAppMutationFn = Apollo.MutationFunction; /** @@ -629,10 +677,10 @@ export type UninstallAppMutationHookResult = ReturnType; export type UninstallAppMutationOptions = Apollo.BaseMutationOptions; export const UpdateDocument = gql` - mutation Update { - update -} - `; + mutation Update { + update + } +`; export type UpdateMutationFn = Apollo.MutationFunction; /** @@ -659,14 +707,14 @@ export type UpdateMutationHookResult = ReturnType; export type UpdateMutationResult = Apollo.MutationResult; export type UpdateMutationOptions = Apollo.BaseMutationOptions; export const UpdateAppDocument = gql` - mutation UpdateApp($id: String!) { - updateApp(id: $id) { - id - status - __typename + mutation UpdateApp($id: String!) { + updateApp(id: $id) { + id + status + __typename + } } -} - `; +`; export type UpdateAppMutationFn = Apollo.MutationFunction; /** @@ -694,14 +742,14 @@ export type UpdateAppMutationHookResult = ReturnType; export type UpdateAppMutationOptions = Apollo.BaseMutationOptions; export const UpdateAppConfigDocument = gql` - mutation UpdateAppConfig($input: AppInputType!) { - updateAppConfig(input: $input) { - id - status - __typename + mutation UpdateAppConfig($input: AppInputType!) { + updateAppConfig(input: $input) { + id + status + __typename + } } -} - `; +`; export type UpdateAppConfigMutationFn = Apollo.MutationFunction; /** @@ -729,47 +777,47 @@ export type UpdateAppConfigMutationHookResult = ReturnType; export type UpdateAppConfigMutationOptions = Apollo.BaseMutationOptions; export const GetAppDocument = gql` - query GetApp($appId: String!) { - getApp(id: $appId) { - id - status - config - version - exposed - domain - updateInfo { - current - latest - dockerVersion - } - info { + query GetApp($appId: String!) { + getApp(id: $appId) { id - port - name - description - available + status + config version - tipi_version - short_desc - author - source - categories - url_suffix - https - exposable - form_fields { - type - label - max - min - hint - required - env_variable + exposed + domain + updateInfo { + current + latest + dockerVersion + } + info { + id + port + name + description + available + version + tipi_version + short_desc + author + source + categories + url_suffix + https + exposable + form_fields { + type + label + max + min + hint + required + env_variable + } } } } -} - `; +`; /** * __useGetAppQuery__ @@ -799,28 +847,28 @@ export type GetAppQueryHookResult = ReturnType; export type GetAppLazyQueryHookResult = ReturnType; export type GetAppQueryResult = Apollo.QueryResult; export const InstalledAppsDocument = gql` - query InstalledApps { - installedApps { - id - status - config - version - updateInfo { - current - latest - dockerVersion - } - info { + query InstalledApps { + installedApps { id - name - description - tipi_version - short_desc - https + status + config + version + updateInfo { + current + latest + dockerVersion + } + info { + id + name + description + tipi_version + short_desc + https + } } } -} - `; +`; /** * __useInstalledAppsQuery__ @@ -849,10 +897,10 @@ export type InstalledAppsQueryHookResult = ReturnType; export type InstalledAppsQueryResult = Apollo.QueryResult; export const ConfiguredDocument = gql` - query Configured { - isConfigured -} - `; + query Configured { + isConfigured + } +`; /** * __useConfiguredQuery__ @@ -881,24 +929,24 @@ export type ConfiguredQueryHookResult = ReturnType; export type ConfiguredLazyQueryHookResult = ReturnType; export type ConfiguredQueryResult = Apollo.QueryResult; export const ListAppsDocument = gql` - query ListApps { - listAppsInfo { - apps { - id - available - tipi_version - port - name - version - short_desc - author - categories - https + query ListApps { + listAppsInfo { + apps { + id + available + tipi_version + port + name + version + short_desc + author + categories + https + } + total } - total } -} - `; +`; /** * __useListAppsQuery__ @@ -927,12 +975,12 @@ export type ListAppsQueryHookResult = ReturnType; export type ListAppsLazyQueryHookResult = ReturnType; export type ListAppsQueryResult = Apollo.QueryResult; export const MeDocument = gql` - query Me { - me { - id + query Me { + me { + id + } } -} - `; +`; /** * __useMeQuery__ @@ -961,12 +1009,12 @@ export type MeQueryHookResult = ReturnType; export type MeLazyQueryHookResult = ReturnType; export type MeQueryResult = Apollo.QueryResult; export const RefreshTokenDocument = gql` - query RefreshToken { - refreshToken { - token + query RefreshToken { + refreshToken { + token + } } -} - `; +`; /** * __useRefreshTokenQuery__ @@ -995,24 +1043,24 @@ export type RefreshTokenQueryHookResult = ReturnType; export type RefreshTokenQueryResult = Apollo.QueryResult; export const SystemInfoDocument = gql` - query SystemInfo { - systemInfo { - cpu { - load - } - disk { - available - used - total - } - memory { - available - used - total + query SystemInfo { + systemInfo { + cpu { + load + } + disk { + available + used + total + } + memory { + available + used + total + } } } -} - `; +`; /** * __useSystemInfoQuery__ @@ -1041,13 +1089,13 @@ export type SystemInfoQueryHookResult = ReturnType; export type SystemInfoLazyQueryHookResult = ReturnType; export type SystemInfoQueryResult = Apollo.QueryResult; export const VersionDocument = gql` - query Version { - version { - current - latest + query Version { + version { + current + latest + } } -} - `; +`; /** * __useVersionQuery__ @@ -1074,4 +1122,4 @@ export function useVersionLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions; export type VersionLazyQueryHookResult = ReturnType; -export type VersionQueryResult = Apollo.QueryResult; \ No newline at end of file +export type VersionQueryResult = Apollo.QueryResult; diff --git a/packages/system-api/src/server.ts b/packages/system-api/src/server.ts index accffd89..819c56ae 100644 --- a/packages/system-api/src/server.ts +++ b/packages/system-api/src/server.ts @@ -51,6 +51,7 @@ const main = async () => { app.use(cors(corsOptions)); app.use(express.static(`${getConfig().rootFolder}/repos/${getConfig().appsRepoId}`)); + app.use(cors()); app.use('/status', systemController.status); app.use(getSessionMiddleware); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d81539b9..91312839 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -128,14 +128,15 @@ importers: '@swc/core': ^1.2.210 '@types/cors': ^2.8.12 '@types/express': ^4.17.13 + '@types/express-session': ^1.17.4 '@types/fs-extra': ^9.0.13 '@types/jest': ^27.5.0 - '@types/jsonwebtoken': ^8.5.9 '@types/node': 17.0.31 '@types/node-cron': ^3.0.2 '@types/pg': ^8.6.5 '@types/semver': ^7.3.12 - '@types/uuid': ^8.3.4 + '@types/session-file-store': ^1.2.2 + '@types/tcp-port-used': ^1.0.1 '@types/validator': ^13.7.2 '@typescript-eslint/eslint-plugin': ^5.18.0 '@typescript-eslint/parser': ^5.22.0 @@ -153,28 +154,28 @@ importers: eslint-plugin-import: ^2.26.0 eslint-plugin-prettier: ^4.0.0 express: ^4.17.3 + express-session: ^1.17.3 fs-extra: ^10.1.0 graphql: ^15.3.0 graphql-import-node: ^0.0.5 graphql-type-json: ^0.3.2 http: 0.0.1-security jest: ^28.1.0 - jsonwebtoken: ^8.5.1 node-cache: ^5.1.2 node-cron: ^3.0.1 nodemon: ^2.0.15 pg: ^8.7.3 prettier: 2.6.2 - redis: ^4.3.1 reflect-metadata: ^0.1.13 rimraf: ^3.0.2 semver: ^7.3.7 + session-file-store: ^1.5.0 + tcp-port-used: ^1.0.2 ts-jest: ^28.0.2 ts-node: ^10.8.2 type-graphql: ^1.1.1 typeorm: ^0.3.6 typescript: 4.6.4 - uuid: ^9.0.0 validator: ^13.7.0 winston: ^3.7.2 zod: ^3.19.1 @@ -187,20 +188,21 @@ importers: cors: 2.8.5 dotenv: 16.0.0 express: 4.18.1 + express-session: 1.17.3 fs-extra: 10.1.0 graphql: 15.8.0 graphql-type-json: 0.3.2_graphql@15.8.0 http: 0.0.1-security - jsonwebtoken: 8.5.1 + internal-ip: 6.2.0 node-cache: 5.1.2 node-cron: 3.0.1 pg: 8.7.3 - redis: 4.4.0 reflect-metadata: 0.1.13 semver: 7.3.7 + session-file-store: 1.5.0 + tcp-port-used: 1.0.2 type-graphql: 1.1.1_v2revtygxcm7xrdg2oz3ssohfu - typeorm: 0.3.6_m4huv5xwi4swwdsf5kwbbltxia - uuid: 9.0.0 + typeorm: 0.3.6_pg@8.7.3+ts-node@10.8.2 validator: 13.7.0 winston: 3.7.2 zod: 3.19.1 @@ -210,14 +212,15 @@ importers: '@swc/core': 1.2.210 '@types/cors': 2.8.12 '@types/express': 4.17.13 + '@types/express-session': 1.17.4 '@types/fs-extra': 9.0.13 '@types/jest': 27.5.0 - '@types/jsonwebtoken': 8.5.9 '@types/node': 17.0.31 '@types/node-cron': 3.0.2 '@types/pg': 8.6.5 '@types/semver': 7.3.12 - '@types/uuid': 8.3.4 + '@types/session-file-store': 1.2.2 + '@types/tcp-port-used': 1.0.1 '@types/validator': 13.7.2 '@typescript-eslint/eslint-plugin': 5.22.0_tal4xlmvnofklupd3hwjtzfb4q '@typescript-eslint/parser': 5.22.0_hcfsmds2fshutdssjqluwm76uu @@ -3653,55 +3656,6 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@redis/bloom/1.1.0_@redis+client@1.3.1: - resolution: {integrity: sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ==} - peerDependencies: - '@redis/client': ^1.0.0 - dependencies: - '@redis/client': 1.3.1 - dev: false - - /@redis/client/1.3.1: - resolution: {integrity: sha512-FKEHpOu7Q4+cuM6VWjA54988K5jkqOxvhvj2hEGSx086lvKwXyjzO7Lya7hcirZ0/Db8FLBJN7UXsJuyoNWPJg==} - engines: {node: '>=14'} - dependencies: - cluster-key-slot: 1.1.1 - generic-pool: 3.9.0 - yallist: 4.0.0 - dev: false - - /@redis/graph/1.1.0_@redis+client@1.3.1: - resolution: {integrity: sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==} - peerDependencies: - '@redis/client': ^1.0.0 - dependencies: - '@redis/client': 1.3.1 - dev: false - - /@redis/json/1.0.4_@redis+client@1.3.1: - resolution: {integrity: sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==} - peerDependencies: - '@redis/client': ^1.0.0 - dependencies: - '@redis/client': 1.3.1 - dev: false - - /@redis/search/1.1.0_@redis+client@1.3.1: - resolution: {integrity: sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ==} - peerDependencies: - '@redis/client': ^1.0.0 - dependencies: - '@redis/client': 1.3.1 - dev: false - - /@redis/time-series/1.0.3_@redis+client@1.3.1: - resolution: {integrity: sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA==} - peerDependencies: - '@redis/client': ^1.0.0 - dependencies: - '@redis/client': 1.3.1 - dev: false - /@rushstack/eslint-patch/1.0.8: resolution: {integrity: sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw==} dev: true @@ -4024,6 +3978,12 @@ packages: '@types/range-parser': 1.2.4 dev: false + /@types/express-session/1.17.4: + resolution: {integrity: sha512-7cNlSI8+oOBUHTfPXMwDxF/Lchx5aJ3ho7+p9jJZYVg9dVDJFh3qdMXmJtRsysnvS+C6x46k9DRYmrmCkE+MVg==} + dependencies: + '@types/express': 4.17.13 + dev: true + /@types/express/4.17.13: resolution: {integrity: sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==} dependencies: @@ -4106,12 +4066,6 @@ packages: '@types/node': 17.0.31 dev: true - /@types/jsonwebtoken/8.5.9: - resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==} - dependencies: - '@types/node': 17.0.31 - dev: true - /@types/keyv/3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: @@ -4239,6 +4193,13 @@ packages: '@types/mime': 1.3.2 '@types/node': 17.0.31 + /@types/session-file-store/1.2.2: + resolution: {integrity: sha512-l9yZ+PQ8vaXhch03MrV+25BIbhKpeWfZB++3njPIm6lKeDGRS2qF2elLuVa4XrhfJbObqW0puhB3A6FCbkraZg==} + dependencies: + '@types/express': 4.17.13 + '@types/express-session': 1.17.4 + dev: true + /@types/stack-utils/2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true @@ -4247,10 +4208,6 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false - /@types/uuid/8.3.4: - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - dev: true - /@types/validator/13.7.2: resolution: {integrity: sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw==} dev: true @@ -5004,6 +4961,15 @@ packages: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: true + /asn1.js/5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: false + /ast-types-flow/0.0.7: resolution: {integrity: sha1-9wtzXGvKGlycItmCw+Oef+ujva0=} dev: true @@ -5201,6 +5167,10 @@ packages: babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.10 dev: true + /bagpipe/0.3.5: + resolution: {integrity: sha512-42sAlmPDKes1nLm/aly+0VdaopSU9br+jkRELedhQxI5uXHgtk47I83Mpmf4zoNTRMASdLFtUkimlu/Z9zQ8+g==} + dev: false + /bail/2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: false @@ -5224,6 +5194,10 @@ packages: readable-stream: 3.6.0 dev: true + /bn.js/4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: false + /body-parser/1.20.0: resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -5297,7 +5271,8 @@ packages: dev: true /buffer-equal-constant-time/1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} + dev: true /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -5621,11 +5596,6 @@ packages: engines: {node: '>=6'} dev: false - /cluster-key-slot/1.1.1: - resolution: {integrity: sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==} - engines: {node: '>=0.10.0'} - dev: false - /co/4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -5844,6 +5814,11 @@ packages: resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} dev: false + /cookie/0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: false + /cookie/0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} @@ -6272,6 +6247,7 @@ packages: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: safe-buffer: 5.2.1 + dev: true /ee-first/1.1.1: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} @@ -6570,7 +6546,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.22.0_uhoeudlwl7kc47h4kncsfowede + '@typescript-eslint/parser': 5.22.0_hcfsmds2fshutdssjqluwm76uu debug: 3.2.7 eslint-import-resolver-node: 0.3.6 find-up: 2.1.0 @@ -6978,6 +6954,22 @@ packages: jest-util: 28.1.0 dev: true + /express-session/1.17.3: + resolution: {integrity: sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==} + engines: {node: '>= 0.8.0'} + dependencies: + cookie: 0.4.2 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + on-headers: 1.0.2 + parseurl: 1.3.3 + safe-buffer: 5.2.1 + uid-safe: 2.1.5 + transitivePeerDependencies: + - supports-color + dev: false + /express/4.18.1: resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==} engines: {node: '>= 0.10.0'} @@ -7305,6 +7297,15 @@ packages: jsonfile: 6.1.0 universalify: 2.0.0 + /fs-extra/8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: false + /fs-extra/9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} @@ -7369,11 +7370,6 @@ packages: wide-align: 1.1.5 dev: false - /generic-pool/3.9.0: - resolution: {integrity: sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==} - engines: {node: '>= 4'} - dev: false - /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -7874,7 +7870,6 @@ packages: /imurmurhash/0.1.4: resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} engines: {node: '>=0.8.19'} - dev: true /indent-string/3.2.0: resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} @@ -8190,7 +8185,6 @@ packages: /is-typedarray/1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true /is-unc-path/1.0.0: resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} @@ -8886,6 +8880,12 @@ packages: hasBin: true dev: true + /jsonfile/4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.10 + dev: false + /jsonfile/6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -8916,6 +8916,7 @@ packages: lodash.once: 4.1.1 ms: 2.1.3 semver: 5.7.1 + dev: true /jsx-ast-utils/3.3.0: resolution: {integrity: sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==} @@ -8931,12 +8932,14 @@ packages: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 + dev: true /jws/3.2.2: resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} dependencies: jwa: 1.4.1 safe-buffer: 5.2.1 + dev: true /keyv/3.1.0: resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} @@ -8959,6 +8962,13 @@ packages: engines: {node: '>=6'} dev: false + /kruptein/2.2.3: + resolution: {integrity: sha512-BTwprBPTzkFT9oTugxKd3WnWrX630MqUDsnmBuoa98eQs12oD4n4TeI0GbpdGcYn/73Xueg2rfnw+oK4dovnJg==} + engines: {node: '>6'} + dependencies: + asn1.js: 5.4.1 + dev: false + /kuler/2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} dev: false @@ -9082,21 +9092,27 @@ packages: /lodash.includes/4.3.0: resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + dev: true /lodash.isboolean/3.0.3: resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + dev: true /lodash.isinteger/4.0.4: resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + dev: true /lodash.isnumber/3.0.3: resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + dev: true /lodash.isplainobject/4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true /lodash.isstring/4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + dev: true /lodash.map/4.6.0: resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} @@ -9116,6 +9132,7 @@ packages: /lodash.once/4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + dev: true /lodash.sortby/4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} @@ -9861,6 +9878,10 @@ packages: engines: {node: '>=4'} dev: true + /minimalistic-assert/1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false + /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -10205,6 +10226,11 @@ packages: ee-first: 1.1.1 dev: false + /on-headers/1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: false + /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -10759,6 +10785,11 @@ packages: engines: {node: '>=10'} dev: true + /random-bytes/1.0.0: + resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} + engines: {node: '>= 0.8'} + dev: false + /range-parser/1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -11017,17 +11048,6 @@ packages: strip-indent: 3.0.0 dev: true - /redis/4.4.0: - resolution: {integrity: sha512-tQyFG6O9iewLxxHYRyirJNklhe2QI7M/0o8q0jk7D9Z/Cxh/7oZrQyHKyjWz0TkkCls8ool/xvhL9K8zRnkaYQ==} - dependencies: - '@redis/bloom': 1.1.0_@redis+client@1.3.1 - '@redis/client': 1.3.1 - '@redis/graph': 1.1.0_@redis+client@1.3.1 - '@redis/json': 1.0.4_@redis+client@1.3.1 - '@redis/search': 1.1.0_@redis+client@1.3.1 - '@redis/time-series': 1.0.3_@redis+client@1.3.1 - dev: false - /reflect-metadata/0.1.13: resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} dev: false @@ -11226,6 +11246,11 @@ packages: signal-exit: 3.0.7 dev: true + /retry/0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: false + /retry/0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -11311,6 +11336,7 @@ packages: /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true + dev: true /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} @@ -11364,6 +11390,18 @@ packages: - supports-color dev: false + /session-file-store/1.5.0: + resolution: {integrity: sha512-60IZaJNzyu2tIeHutkYE8RiXVx3KRvacOxfLr2Mj92SIsRIroDsH0IlUUR6fJAjoTW4RQISbaOApa2IZpIwFdQ==} + engines: {node: '>= 6'} + dependencies: + bagpipe: 0.3.5 + fs-extra: 8.1.0 + kruptein: 2.2.3 + object-assign: 4.1.1 + retry: 0.12.0 + write-file-atomic: 3.0.3 + dev: false + /set-blocking/2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -12209,9 +12247,8 @@ packages: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 - dev: true - /typeorm/0.3.6_m4huv5xwi4swwdsf5kwbbltxia: + /typeorm/0.3.6_pg@8.7.3+ts-node@10.8.2: resolution: {integrity: sha512-DRqgfqcelMiGgWSMbBmVoJNFN2nPNA3EeY2gC324ndr2DZoGRTb9ILtp2oGVGnlA+cu5zgQ6it5oqKFNkte7Aw==} engines: {node: '>= 12.9.0'} hasBin: true @@ -12281,7 +12318,6 @@ packages: js-yaml: 4.1.0 mkdirp: 1.0.4 pg: 8.7.3 - redis: 4.4.0 reflect-metadata: 0.1.13 sha.js: 2.4.11 ts-node: 10.8.2_uva6s4l7h33czpzezvop6ux5pe @@ -12303,6 +12339,13 @@ packages: resolution: {integrity: sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==} dev: true + /uid-safe/2.1.5: + resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} + engines: {node: '>= 0.8'} + dependencies: + random-bytes: 1.0.0 + dev: false + /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -12414,6 +12457,11 @@ packages: unist-util-visit-parents: 5.1.0 dev: false + /universalify/0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: false + /universalify/2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} @@ -12527,11 +12575,6 @@ packages: hasBin: true dev: false - /uuid/9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} - hasBin: true - dev: false - /uvu/0.5.3: resolution: {integrity: sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==} engines: {node: '>=8'} @@ -12581,7 +12624,7 @@ packages: engines: {node: '>=12'} /vary/1.1.2: - resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=} + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: false @@ -12755,7 +12798,6 @@ packages: is-typedarray: 1.0.0 signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - dev: true /write-file-atomic/4.0.1: resolution: {integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==}