Feature/6 pilots delete (#42)
* adding pilot delete * adding pilot delete * adding pilot delete
This commit was merged in pull request #42.
This commit is contained in:
@@ -19,23 +19,18 @@
|
|||||||
"test:e2e": "jest --config ./test/jest-e2e.json"
|
"test:e2e": "jest --config ./test/jest-e2e.json"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@azure/app-configuration": "^1.8.0",
|
|
||||||
"@azure/data-tables": "^13.2.2",
|
|
||||||
"@azure/msal-node": "^2.16.2",
|
|
||||||
"@microsoft/microsoft-graph-client": "^3.0.7",
|
"@microsoft/microsoft-graph-client": "^3.0.7",
|
||||||
"@nestjs/axios": "^3.0.3",
|
"@nestjs/axios": "^3.0.3",
|
||||||
"@nestjs/azure-database": "^3.0.0",
|
|
||||||
"@nestjs/common": "^10.0.0",
|
"@nestjs/common": "^10.0.0",
|
||||||
"@nestjs/config": "^3.2.2",
|
"@nestjs/config": "^3.2.2",
|
||||||
"@nestjs/core": "^10.0.0",
|
"@nestjs/core": "^10.0.0",
|
||||||
"@nestjs/passport": "^10.0.3",
|
"@nestjs/passport": "^10.0.3",
|
||||||
"@nestjs/platform-express": "^10.0.0",
|
"@nestjs/platform-express": "^10.0.0",
|
||||||
"@noahspan/azure-database": "^3.1.2",
|
"@noahspan/azure-database": "^3.1.2",
|
||||||
|
"@noahspan/noahspan-modules": "^0.9.2",
|
||||||
"@schematics/angular": "^17.3.7",
|
"@schematics/angular": "^17.3.7",
|
||||||
"dotenv": "^16.4.7",
|
"dotenv": "^16.4.7",
|
||||||
"express-jwt": "^8.5.1",
|
"reflect-metadata": "^0.2.2",
|
||||||
"passport-azure-ad": "^4.3.5",
|
|
||||||
"reflect-metadata": "0.1.13",
|
|
||||||
"rxjs": "^7.8.1",
|
"rxjs": "^7.8.1",
|
||||||
"uuid": "^10.0.0"
|
"uuid": "^10.0.0"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
import {
|
|
||||||
Controller,
|
|
||||||
Get,
|
|
||||||
Headers,
|
|
||||||
Query,
|
|
||||||
StreamableFile,
|
|
||||||
UseGuards
|
|
||||||
} from '@nestjs/common';
|
|
||||||
import { Client as MsGraphClient } from '@microsoft/microsoft-graph-client';
|
|
||||||
import { MsGraphService } from './msGraph/ms-graph.service'
|
|
||||||
import { Person } from '@microsoft/microsoft-graph-types';
|
|
||||||
import { AppService } from './app.service';
|
|
||||||
import { AuthGuard } from '@nestjs/passport';
|
|
||||||
|
|
||||||
@Controller()
|
|
||||||
@UseGuards(AuthGuard('azure-ad'))
|
|
||||||
export class AppController {
|
|
||||||
constructor(
|
|
||||||
private readonly appService: AppService,
|
|
||||||
private readonly msGraphService: MsGraphService
|
|
||||||
) {}
|
|
||||||
|
|
||||||
@Get('userPhoto')
|
|
||||||
async getProfilePhoto(@Headers() headers: any): Promise<StreamableFile> {
|
|
||||||
try {
|
|
||||||
const graphToken: string = await this.msGraphService.getMsGraphAuth(
|
|
||||||
headers.authorization.replace('Bearer ', ''),
|
|
||||||
['user.read']
|
|
||||||
);
|
|
||||||
const client: MsGraphClient =
|
|
||||||
await this.msGraphService.getMsGraphClientDelegated(graphToken);
|
|
||||||
const blob: Blob = await client.api(`me/photos('48x48')/$value`).get();
|
|
||||||
const arrayBuffer: ArrayBuffer = await blob.arrayBuffer();
|
|
||||||
const buffer: Buffer = Buffer.from(arrayBuffer);
|
|
||||||
|
|
||||||
return new StreamableFile(buffer, {
|
|
||||||
type: 'application/json',
|
|
||||||
disposition: `attachment; filename="user_photo.png"`
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Get('userProfile')
|
|
||||||
async getUserProfile(@Headers() headers: any): Promise<any> {
|
|
||||||
try {
|
|
||||||
const graphToken: string = await this.msGraphService.getMsGraphAuth(
|
|
||||||
headers.authorization.replace('Bearer ', ''),
|
|
||||||
['user.read']
|
|
||||||
);
|
|
||||||
const client: MsGraphClient =
|
|
||||||
await this.msGraphService.getMsGraphClientDelegated(graphToken);
|
|
||||||
const userProfile = await client.api(`me`).get();
|
|
||||||
|
|
||||||
return userProfile;
|
|
||||||
} catch (error) {
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Get('personSearch')
|
|
||||||
async searchUsers(
|
|
||||||
@Headers() headers: any,
|
|
||||||
@Query('search') search: any
|
|
||||||
): Promise<any> {
|
|
||||||
try {
|
|
||||||
const accessToken: string = headers.authorization.replace('Bearer ', '');
|
|
||||||
const personSearchResults: any[] =
|
|
||||||
await this.appService.getPersonSearchResults(accessToken, search);
|
|
||||||
|
|
||||||
return personSearchResults;
|
|
||||||
} catch (error) {
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Get('hello')
|
|
||||||
async getHello(): Promise<string> {
|
|
||||||
return this.appService.getHello();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,19 +1,17 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { AppController } from './app.controller';
|
|
||||||
import { AppService } from './app.service';
|
|
||||||
import { AuthModule } from './auth/auth.module';
|
|
||||||
import { MsGraphModule } from './msGraph/ms-graph.module';
|
|
||||||
import { FeatureFlagModule } from './featureFlag/feature-flag.module'
|
import { FeatureFlagModule } from './featureFlag/feature-flag.module'
|
||||||
import { LogModule } from './log/log.module';
|
import { LogModule } from './log/log.module';
|
||||||
import { PilotModule } from './pilot/pilot.module';
|
import { PilotModule } from './pilot/pilot.module';
|
||||||
import { APP_FILTER } from '@nestjs/core';
|
import { APP_FILTER, APP_GUARD, Reflector } from '@nestjs/core';
|
||||||
import { HttpExceptionFilter } from './filters/http-exception.filter';
|
import { HttpExceptionFilter } from './filters/http-exception.filter';
|
||||||
import { ConfigModule, ConfigService } from '@nestjs/config';
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
||||||
|
import { AuthGuard, AuthModule, UserModule } from '@noahspan/noahspan-modules';
|
||||||
import configuration from './config/configuration';
|
import configuration from './config/configuration';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
AuthModule.registerAsync({
|
AuthModule.registerAsync({
|
||||||
|
inject: [ConfigService],
|
||||||
imports: [ConfigModule],
|
imports: [ConfigModule],
|
||||||
useFactory: async (configService: ConfigService) => {
|
useFactory: async (configService: ConfigService) => {
|
||||||
return {
|
return {
|
||||||
@@ -22,33 +20,35 @@ import configuration from './config/configuration';
|
|||||||
tenantId: configService.get<string>('tenantId')
|
tenantId: configService.get<string>('tenantId')
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
inject: [ConfigService]
|
|
||||||
}),
|
}),
|
||||||
ConfigModule.forRoot({
|
ConfigModule.forRoot({
|
||||||
load: [configuration]
|
load: [configuration]
|
||||||
}),
|
}),
|
||||||
FeatureFlagModule,
|
FeatureFlagModule,
|
||||||
LogModule,
|
LogModule,
|
||||||
MsGraphModule.registerAsync({
|
PilotModule,
|
||||||
|
UserModule.registerAsync({
|
||||||
|
inject: [ConfigService],
|
||||||
imports: [ConfigModule],
|
imports: [ConfigModule],
|
||||||
useFactory: async (configService: ConfigService) => {
|
useFactory: async (configService: ConfigService) => {
|
||||||
return {
|
return {
|
||||||
clientId: configService.get<string>('clientId'),
|
clientId: configService.get<string>('clientId'),
|
||||||
clientSecret: configService.get<string>('clientSecret'),
|
clientSecret: configService.get<string>('clientSecret'),
|
||||||
tenantId: configService.get<string>('tenantId')
|
tenantId: configService.get<string>('tenantId')
|
||||||
};
|
}
|
||||||
},
|
}
|
||||||
inject: [ConfigService]
|
})
|
||||||
}),
|
|
||||||
PilotModule
|
|
||||||
],
|
],
|
||||||
controllers: [AppController],
|
|
||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
provide: APP_FILTER,
|
provide: APP_FILTER,
|
||||||
useClass: HttpExceptionFilter
|
useClass: HttpExceptionFilter
|
||||||
},
|
},
|
||||||
AppService
|
{
|
||||||
|
provide: APP_GUARD,
|
||||||
|
useClass: AuthGuard
|
||||||
|
},
|
||||||
|
Reflector
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class AppModule {}
|
export class AppModule {}
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
|
||||||
// import { MsGraphService, MsGraphClient } from '@noahspan/noahspan-modules';
|
|
||||||
import { Client as MsGraphClient } from '@microsoft/microsoft-graph-client';
|
|
||||||
import { MsGraphService } from './msGraph/ms-graph.service';
|
|
||||||
|
|
||||||
@Injectable()
|
|
||||||
export class AppService {
|
|
||||||
constructor(private readonly msGraphService: MsGraphService) {}
|
|
||||||
|
|
||||||
getHello(): string {
|
|
||||||
return JSON.stringify(process.env);
|
|
||||||
}
|
|
||||||
|
|
||||||
async getPersonSearchResults(
|
|
||||||
accessToken: string,
|
|
||||||
search: string
|
|
||||||
): Promise<any[]> {
|
|
||||||
try {
|
|
||||||
const graphToken: string = await this.msGraphService.getMsGraphAuth(
|
|
||||||
accessToken,
|
|
||||||
['user.read']
|
|
||||||
);
|
|
||||||
const client: MsGraphClient =
|
|
||||||
await this.msGraphService.getMsGraphClientDelegated(graphToken);
|
|
||||||
const results: any = await client
|
|
||||||
.api('users')
|
|
||||||
.header('ConsistencyLevel', 'eventual')
|
|
||||||
.search(`"displayName:${search}"`)
|
|
||||||
.orderby('displayName')
|
|
||||||
.select(['displayName', 'userPrincipalName'])
|
|
||||||
.get();
|
|
||||||
let personResults: any[];
|
|
||||||
|
|
||||||
if (results.value) {
|
|
||||||
personResults = results.value.filter((result: any) => {
|
|
||||||
if (result.userPrincipalName !== null) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
personResults = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
return personResults;
|
|
||||||
} catch (error) {
|
|
||||||
throw new Error(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -13,11 +13,10 @@ import { LogDto } from './log.dto';
|
|||||||
import { Log } from './log.entity';
|
import { Log } from './log.entity';
|
||||||
import { LogService } from './log.service';
|
import { LogService } from './log.service';
|
||||||
import { CustomError } from '../error/customError';
|
import { CustomError } from '../error/customError';
|
||||||
import { AuthGuard } from '@nestjs/passport';
|
import { Public } from '@noahspan/noahspan-modules';
|
||||||
|
|
||||||
|
|
||||||
@Controller('logs')
|
@Controller('logs')
|
||||||
@UseGuards(AuthGuard('azure-ad'))
|
|
||||||
export class LogController {
|
export class LogController {
|
||||||
constructor(private readonly logService: LogService) {}
|
constructor(private readonly logService: LogService) {}
|
||||||
|
|
||||||
@@ -35,7 +34,7 @@ export class LogController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Public()
|
@Public()
|
||||||
@Get()
|
@Get()
|
||||||
async findAll(): Promise<Log[]> {
|
async findAll(): Promise<Log[]> {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
export interface MsGraphModuleOptions {
|
|
||||||
tenantId: string;
|
|
||||||
clientId: string;
|
|
||||||
clientSecret: string;
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
import { ConfigurableModuleBuilder } from '@nestjs/common';
|
|
||||||
import { MsGraphModuleOptions } from './ms-graph.interface';
|
|
||||||
|
|
||||||
export const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder<MsGraphModuleOptions>().build()
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
import { Module } from '@nestjs/common';
|
|
||||||
import { MsGraphService } from './ms-graph.service';
|
|
||||||
import { ConfigurableModuleClass } from './ms-graph.module-definition';
|
|
||||||
|
|
||||||
@Module({
|
|
||||||
providers: [MsGraphService],
|
|
||||||
exports: [MsGraphService]
|
|
||||||
})
|
|
||||||
export class MsGraphModule extends ConfigurableModuleClass {}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
import { Inject, Injectable } from '@nestjs/common';
|
|
||||||
import { MsGraphModuleOptions } from './ms-graph.interface';
|
|
||||||
import { Client } from '@microsoft/microsoft-graph-client';
|
|
||||||
import { AuthenticationResult, ConfidentialClientApplication, OnBehalfOfRequest } from '@azure/msal-node';
|
|
||||||
import { MODULE_OPTIONS_TOKEN } from './ms-graph.module-definition';
|
|
||||||
|
|
||||||
@Injectable()
|
|
||||||
export class MsGraphService {
|
|
||||||
constructor(@Inject(MODULE_OPTIONS_TOKEN) private msGraphModuleOptions: MsGraphModuleOptions) {}
|
|
||||||
|
|
||||||
async getMsGraphAuth(accessToken: string, scopes: string[]): Promise<string> {
|
|
||||||
try {
|
|
||||||
const oboRequest: OnBehalfOfRequest = {
|
|
||||||
oboAssertion: accessToken,
|
|
||||||
scopes: scopes
|
|
||||||
}
|
|
||||||
const cca = new ConfidentialClientApplication({
|
|
||||||
auth: {
|
|
||||||
clientId: this.msGraphModuleOptions.clientId,
|
|
||||||
clientSecret: this.msGraphModuleOptions.clientSecret,
|
|
||||||
authority: `https://login.microsoftonline.com/${this.msGraphModuleOptions.tenantId}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const authenticationResult: AuthenticationResult = await cca.acquireTokenOnBehalfOf(oboRequest);
|
|
||||||
|
|
||||||
return authenticationResult.accessToken
|
|
||||||
} catch (error) {
|
|
||||||
return error
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async getMsGraphClientDelegated(accessToken): Promise<Client> {
|
|
||||||
const client = await Client.init({
|
|
||||||
authProvider: (done) => {
|
|
||||||
done(null, accessToken);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return client;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,33 +1,33 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
// import { Injectable } from '@nestjs/common';
|
||||||
import { Repository, InjectRepository } from '@noahspan/azure-database';
|
// import { Repository, InjectRepository } from '@noahspan/azure-database';
|
||||||
import { Medical } from './medical.entity';
|
// import { Medical } from './medical.entity';
|
||||||
|
|
||||||
@Injectable()
|
// @Injectable()
|
||||||
export class MedicalService {
|
// export class MedicalService {
|
||||||
private readonly partitionKey: string = 'medical';
|
// private readonly partitionKey: string = 'medical';
|
||||||
|
|
||||||
constructor(
|
// constructor(
|
||||||
@InjectRepository(Medical)
|
// @InjectRepository(Medical)
|
||||||
private readonly profileRepository: Repository<Medical>
|
// private readonly profileRepository: Repository<Medical>
|
||||||
) {}
|
// ) {}
|
||||||
|
|
||||||
async find(rowKey: string): Promise<Medical> {
|
// async find(rowKey: string): Promise<Medical> {
|
||||||
return this.profileRepository.find(this.partitionKey, rowKey);
|
// return this.profileRepository.find(this.partitionKey, rowKey);
|
||||||
}
|
// }
|
||||||
|
|
||||||
async findAll(): Promise<Medical[]> {
|
// async findAll(): Promise<Medical[]> {
|
||||||
return this.profileRepository.findAll();
|
// return this.profileRepository.findAll();
|
||||||
}
|
// }
|
||||||
|
|
||||||
async create(profile: Medical): Promise<Medical> {
|
// async create(profile: Medical): Promise<Medical> {
|
||||||
return this.profileRepository.create(profile);
|
// return this.profileRepository.create(profile);
|
||||||
}
|
// }
|
||||||
|
|
||||||
async update(rowKey: string, profile: Medical): Promise<Medical> {
|
// async update(rowKey: string, profile: Medical): Promise<Medical> {
|
||||||
return this.profileRepository.update(this.partitionKey, rowKey, profile);
|
// return this.profileRepository.update(this.partitionKey, rowKey, profile);
|
||||||
}
|
// }
|
||||||
|
|
||||||
async delete(rowKey: string) {
|
// async delete(rowKey: string) {
|
||||||
return this.profileRepository.delete(this.partitionKey, rowKey);
|
// return this.profileRepository.delete(this.partitionKey, rowKey);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import { CustomError } from '../error/customError';
|
|||||||
import { AuthGuard } from '@nestjs/passport'
|
import { AuthGuard } from '@nestjs/passport'
|
||||||
|
|
||||||
@Controller('pilots')
|
@Controller('pilots')
|
||||||
@UseGuards(AuthGuard('azure-ad'))
|
|
||||||
export class PilotController {
|
export class PilotController {
|
||||||
constructor(private readonly pilotService: PilotService) {}
|
constructor(private readonly pilotService: PilotService) {}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
import { Alert } from "../../interfaces/Alert.interface";
|
||||||
|
|
||||||
export interface ILogFormState {
|
export interface ILogFormState {
|
||||||
error: string | undefined;
|
alert: Alert | undefined;
|
||||||
isDisabled: boolean;
|
isDisabled: boolean;
|
||||||
isLoading: boolean;
|
isLoading: boolean;
|
||||||
pilotOptions: { label: string; value: string }[];
|
pilotOptions: { label: string; value: string }[];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useEffect, useReducer, useState } from 'react';
|
import React, { useEffect, useReducer } from 'react';
|
||||||
import {
|
import {
|
||||||
Accordion,
|
Accordion,
|
||||||
AccordionDetails,
|
AccordionDetails,
|
||||||
@@ -19,7 +19,7 @@ import {
|
|||||||
import { useForm, Controller, FormProvider } from 'react-hook-form';
|
import { useForm, Controller, FormProvider } from 'react-hook-form';
|
||||||
import { ILogFormProps } from './ILogFormProps';
|
import { ILogFormProps } from './ILogFormProps';
|
||||||
import { initialState, reducer } from './reducer';
|
import { initialState, reducer } from './reducer';
|
||||||
import axios, { AxiosError, AxiosInstance, AxiosResponse } from 'axios';
|
import { AxiosError, AxiosInstance, AxiosResponse } from 'axios';
|
||||||
import { useHttpClient } from '../../hooks/httpClient/UseHttpClient';
|
import { useHttpClient } from '../../hooks/httpClient/UseHttpClient';
|
||||||
import { useAccessToken } from '../../hooks/accessToken/UseAcessToken';
|
import { useAccessToken } from '../../hooks/accessToken/UseAcessToken';
|
||||||
import { useIsAuthenticated } from '@azure/msal-react';
|
import { useIsAuthenticated } from '@azure/msal-react';
|
||||||
@@ -97,7 +97,7 @@ const LogForm: React.FC<ILogFormProps> = ({
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
const axiosError = error as AxiosError;
|
const axiosError = error as AxiosError;
|
||||||
|
|
||||||
dispatch({ type: 'SET_ERROR', payload: axiosError.message });
|
dispatch({ type: 'SET_ALERT', payload: { severity: 'error', message: axiosError.message }});
|
||||||
} finally {
|
} finally {
|
||||||
dispatch({ type: 'SET_IS_LOADING', payload: false });
|
dispatch({ type: 'SET_IS_LOADING', payload: false });
|
||||||
}
|
}
|
||||||
@@ -127,7 +127,7 @@ const LogForm: React.FC<ILogFormProps> = ({
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
const axiosError = error as AxiosError;
|
const axiosError = error as AxiosError;
|
||||||
|
|
||||||
dispatch({ type: 'SET_ERROR', payload: axiosError.message });
|
dispatch({ type: 'SET_ALERT', payload: { severity: 'error', message: axiosError.message }});
|
||||||
} finally {
|
} finally {
|
||||||
dispatch({ type: 'SET_IS_LOADING', payload: false });
|
dispatch({ type: 'SET_IS_LOADING', payload: false });
|
||||||
}
|
}
|
||||||
@@ -173,16 +173,16 @@ const LogForm: React.FC<ILogFormProps> = ({
|
|||||||
<XmarkIcon />
|
<XmarkIcon />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
</Grid>
|
</Grid>
|
||||||
{state.error && (
|
{state.alert && (
|
||||||
<Grid display="flex" justifyContent="center" size={12}>
|
<Grid display="flex" justifyContent="center" size={12}>
|
||||||
<Alert
|
<Alert
|
||||||
onClose={() =>
|
onClose={() =>
|
||||||
dispatch({ type: 'SET_ERROR', payload: undefined })
|
dispatch({ type: 'SET_ALERT', payload: undefined })
|
||||||
}
|
}
|
||||||
severity="error"
|
severity={state.alert.severity}
|
||||||
sx={{ width: '100%' }}
|
sx={{ width: '100%' }}
|
||||||
>
|
>
|
||||||
{state.error}
|
{state.alert.message}
|
||||||
</Alert>
|
</Alert>
|
||||||
</Grid>
|
</Grid>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
|
import { Alert } from '../../interfaces/Alert.interface';
|
||||||
import { ILogFormState } from './ILogFormState';
|
import { ILogFormState } from './ILogFormState';
|
||||||
|
|
||||||
type Action =
|
type Action =
|
||||||
| { type: 'SET_ERROR'; payload: string | undefined }
|
| { type: 'SET_ALERT'; payload: Alert | undefined }
|
||||||
| { type: 'SET_IS_DISABLED'; payload: boolean }
|
| { type: 'SET_IS_DISABLED'; payload: boolean }
|
||||||
| { type: 'SET_IS_LOADING'; payload: boolean }
|
| { type: 'SET_IS_LOADING'; payload: boolean }
|
||||||
| { type: 'SET_PILOT_OPTIONS'; payload: { label: string; value: string }[] }
|
| { type: 'SET_PILOT_OPTIONS'; payload: { label: string; value: string }[] }
|
||||||
| { type: 'SET_SELECTED_ENTRY_PILOT_NAME'; payload: string };
|
| { type: 'SET_SELECTED_ENTRY_PILOT_NAME'; payload: string };
|
||||||
|
|
||||||
export const initialState: ILogFormState = {
|
export const initialState: ILogFormState = {
|
||||||
error: undefined,
|
alert: undefined,
|
||||||
isDisabled: false,
|
isDisabled: false,
|
||||||
isLoading: true,
|
isLoading: true,
|
||||||
pilotOptions: [],
|
pilotOptions: [],
|
||||||
@@ -20,10 +21,10 @@ export const reducer = (
|
|||||||
action: Action
|
action: Action
|
||||||
): ILogFormState => {
|
): ILogFormState => {
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
case 'SET_ERROR': {
|
case 'SET_ALERT': {
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
error: action.payload
|
alert: action.payload
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case 'SET_IS_DISABLED': {
|
case 'SET_IS_DISABLED': {
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import { FormMode } from '../../enums/formMode';
|
import { FormMode } from '../../enums/formMode';
|
||||||
|
import { Alert } from '../../interfaces/Alert.interface';
|
||||||
import { ILogbookEntry } from './ILogbookEntry';
|
import { ILogbookEntry } from './ILogbookEntry';
|
||||||
|
|
||||||
export interface ILogbookState {
|
export interface ILogbookState {
|
||||||
|
alert: Alert | undefined;
|
||||||
entries: ILogbookEntry[];
|
entries: ILogbookEntry[];
|
||||||
formMode: FormMode;
|
formMode: FormMode;
|
||||||
error: string | undefined;
|
|
||||||
isConfirmDialogLoading: boolean;
|
isConfirmDialogLoading: boolean;
|
||||||
isConfirmDialogOpen: boolean;
|
isConfirmDialogOpen: boolean;
|
||||||
isFormOpen: boolean;
|
isFormOpen: boolean;
|
||||||
|
|||||||
@@ -31,19 +31,23 @@ const Logbook: React.FC<unknown> = () => {
|
|||||||
try {
|
try {
|
||||||
dispatch({ type: 'SET_IS_LOADING', payload: true });
|
dispatch({ type: 'SET_IS_LOADING', payload: true });
|
||||||
|
|
||||||
const token = await getAccessToken();
|
const response: AxiosResponse = await httpClient.get(`api/logs`);
|
||||||
const config = isAuthenticated
|
|
||||||
? { headers: { Authorization: `${token}` } }
|
|
||||||
: {};
|
|
||||||
const response: AxiosResponse = await httpClient.get(`api/logs`, config);
|
|
||||||
console.log(response)
|
console.log(response)
|
||||||
|
if (response.data.length > 0) {
|
||||||
dispatch({ type: 'SET_ENTRIES', payload: response.data });
|
dispatch({ type: 'SET_ENTRIES', payload: response.data });
|
||||||
|
|
||||||
|
if (state.alert) {
|
||||||
|
dispatch({ type: 'SET_ALERT', payload: undefined})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
dispatch({ type: 'SET_ALERT', payload: { severity: 'info', message: 'No logbook entries found.'}})
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const axiosError = error as AxiosError;
|
const axiosError = error as AxiosError;
|
||||||
|
|
||||||
dispatch({
|
dispatch({
|
||||||
type: 'SET_ERROR',
|
type: 'SET_ALERT',
|
||||||
payload: `Loading of logbook entries failed with the following message: ${axiosError.message}`
|
payload: { severity: 'error', message: `Loading of logbook entries failed with the following message: ${axiosError.message}`}
|
||||||
});
|
});
|
||||||
} finally {
|
} finally {
|
||||||
dispatch({ type: 'SET_IS_LOADING', payload: false });
|
dispatch({ type: 'SET_IS_LOADING', payload: false });
|
||||||
@@ -106,8 +110,8 @@ const Logbook: React.FC<unknown> = () => {
|
|||||||
const axiosError = error as AxiosError;
|
const axiosError = error as AxiosError;
|
||||||
|
|
||||||
dispatch({
|
dispatch({
|
||||||
type: 'SET_ERROR',
|
type: 'SET_ALERT',
|
||||||
payload: `Loading of logbook entries failed with the following message: ${axiosError.message}`
|
payload: { severity: 'error', message: `Loading of logbook entries failed with the following message: ${axiosError.message}`}
|
||||||
});
|
});
|
||||||
} finally {
|
} finally {
|
||||||
dispatch({ type: 'SET_IS_CONFIRMATION_DIALOG_LOADING', payload: false });
|
dispatch({ type: 'SET_IS_CONFIRMATION_DIALOG_LOADING', payload: false });
|
||||||
@@ -363,10 +367,10 @@ const Logbook: React.FC<unknown> = () => {
|
|||||||
];
|
];
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isAuthenticated && !state.isFormOpen) {
|
if (!state.isFormOpen) {
|
||||||
getLogbookEntries();
|
getLogbookEntries();
|
||||||
}
|
}
|
||||||
}, [isAuthenticated, state.isFormOpen]);
|
}, [state.isFormOpen]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box sx={{ margin: '20px' }}>
|
<Box sx={{ margin: '20px' }}>
|
||||||
@@ -386,16 +390,16 @@ const Logbook: React.FC<unknown> = () => {
|
|||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
</Grid>
|
</Grid>
|
||||||
{!state.isLoading && state.error && (
|
{!state.isLoading && state.alert && (
|
||||||
<Grid display="flex" justifyContent="center" size={12}>
|
<Grid display="flex" justifyContent="center" size={12}>
|
||||||
<Alert
|
<Alert
|
||||||
onClose={() =>
|
onClose={() =>
|
||||||
dispatch({ type: 'SET_ERROR', payload: undefined })
|
dispatch({ type: 'SET_ALERT', payload: undefined })
|
||||||
}
|
}
|
||||||
severity="error"
|
severity={state.alert.severity}
|
||||||
sx={{ width: '100%' }}
|
sx={{ width: '100%' }}
|
||||||
>
|
>
|
||||||
{state.error}
|
{state.alert.message}
|
||||||
</Alert>
|
</Alert>
|
||||||
</Grid>
|
</Grid>
|
||||||
)}
|
)}
|
||||||
@@ -406,7 +410,7 @@ const Logbook: React.FC<unknown> = () => {
|
|||||||
)}
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
)}
|
)}
|
||||||
{state.isLoading && !state.error && (
|
{state.isLoading && !state.alert && (
|
||||||
<>
|
<>
|
||||||
<Grid display="flex" justifyContent="center" size={12}>
|
<Grid display="flex" justifyContent="center" size={12}>
|
||||||
<Spinner />
|
<Spinner />
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { FormMode } from '../../enums/formMode';
|
import { FormMode } from '../../enums/formMode';
|
||||||
|
import { Alert } from '../../interfaces/Alert.interface';
|
||||||
import { ILogbookEntry } from './ILogbookEntry';
|
import { ILogbookEntry } from './ILogbookEntry';
|
||||||
import { ILogbookState } from './ILogbookState';
|
import { ILogbookState } from './ILogbookState';
|
||||||
|
|
||||||
@@ -11,7 +12,7 @@ type Action =
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
| { type: 'SET_ENTRIES'; payload: ILogbookEntry[] }
|
| { type: 'SET_ENTRIES'; payload: ILogbookEntry[] }
|
||||||
| { type: 'SET_ERROR'; payload: string | undefined }
|
| { type: 'SET_ALERT'; payload: Alert | undefined }
|
||||||
| { type: 'SET_FORM_MODE'; payload: FormMode }
|
| { type: 'SET_FORM_MODE'; payload: FormMode }
|
||||||
| { type: 'SET_IS_CONFIRMATION_DIALOG_LOADING'; payload: boolean }
|
| { type: 'SET_IS_CONFIRMATION_DIALOG_LOADING'; payload: boolean }
|
||||||
| { type: 'SET_IS_LOADING'; payload: boolean }
|
| { type: 'SET_IS_LOADING'; payload: boolean }
|
||||||
@@ -25,8 +26,8 @@ type Action =
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const initialState: ILogbookState = {
|
export const initialState: ILogbookState = {
|
||||||
|
alert: undefined,
|
||||||
entries: [],
|
entries: [],
|
||||||
error: undefined,
|
|
||||||
formMode: FormMode.CANCEL,
|
formMode: FormMode.CANCEL,
|
||||||
isConfirmDialogLoading: false,
|
isConfirmDialogLoading: false,
|
||||||
isConfirmDialogOpen: false,
|
isConfirmDialogOpen: false,
|
||||||
@@ -53,10 +54,10 @@ export const reducer = (
|
|||||||
entries: action.payload
|
entries: action.payload
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case 'SET_ERROR': {
|
case 'SET_ALERT': {
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
error: action.payload
|
alert: action.payload
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case 'SET_FORM_MODE': {
|
case 'SET_FORM_MODE': {
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ const PilotForm: React.FC<IPilotFormProps> = ({
|
|||||||
const searchString: string = value;
|
const searchString: string = value;
|
||||||
const accessToken: string = await getAccessToken();
|
const accessToken: string = await getAccessToken();
|
||||||
const response: AxiosResponse = await httpClient.get(
|
const response: AxiosResponse = await httpClient.get(
|
||||||
`api/personSearch?search=${searchString}`,
|
`api/user/search?search=${searchString}`,
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: accessToken
|
Authorization: accessToken
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { useEffect, useReducer, useState } from 'react';
|
import { useEffect, useReducer, useState } from 'react';
|
||||||
import PilotForm from '../pilotForm/PilotForm';
|
import PilotForm from '../pilotForm/PilotForm';
|
||||||
import {
|
import {
|
||||||
|
Alert,
|
||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
ColumnDef,
|
ColumnDef,
|
||||||
@@ -34,7 +35,7 @@ const Pilots: React.FC<unknown> = () => {
|
|||||||
const isAuthenticated = useIsAuthenticated();
|
const isAuthenticated = useIsAuthenticated();
|
||||||
const { getAccessToken } = useAccessToken();
|
const { getAccessToken } = useAccessToken();
|
||||||
|
|
||||||
const getPilots = async (): Promise<Pilot[]> => {
|
const getPilots = async () => {
|
||||||
try {
|
try {
|
||||||
const config = isAuthenticated
|
const config = isAuthenticated
|
||||||
? { headers: { Authorization: await getAccessToken() } }
|
? { headers: { Authorization: await getAccessToken() } }
|
||||||
@@ -43,11 +44,25 @@ const Pilots: React.FC<unknown> = () => {
|
|||||||
`api/pilots`,
|
`api/pilots`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
const pilots: Pilot[] = response.data;
|
console.log(response.data)
|
||||||
|
if (response.data.length > 0) {
|
||||||
|
dispatch({ type: 'SET_PILOTS', payload: response.data });
|
||||||
|
|
||||||
return pilots;
|
if (state.alert) {
|
||||||
|
dispatch({ type: 'SET_ALERT', payload: undefined })
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
dispatch({ type: 'SET_ALERT', payload: { severity: 'info', message: 'No pilots found.' }})
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new Error('broken');
|
const axiosError = error as AxiosError;
|
||||||
|
|
||||||
|
dispatch({
|
||||||
|
type: 'SET_ALERT',
|
||||||
|
payload: { severity: 'error', message: `Loading of pilots failed with the following message: ${axiosError.message}`}
|
||||||
|
})
|
||||||
|
} finally {
|
||||||
|
dispatch({ type: 'SET_IS_LOADING', payload: false })
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -107,8 +122,8 @@ const Pilots: React.FC<unknown> = () => {
|
|||||||
const axiosError = error as AxiosError;
|
const axiosError = error as AxiosError;
|
||||||
|
|
||||||
dispatch({
|
dispatch({
|
||||||
type: 'SET_ERROR',
|
type: 'SET_ALERT',
|
||||||
payload: `Loading of logbook entries failed with the following message: ${axiosError.message}`
|
payload: { severity: 'error', message: `Loading of logbook entries failed with the following message: ${axiosError.message}`}
|
||||||
});
|
});
|
||||||
} finally {
|
} finally {
|
||||||
dispatch({ type: 'SET_IS_CONFIRMATION_DIALOG_LOADING', payload: false });
|
dispatch({ type: 'SET_IS_CONFIRMATION_DIALOG_LOADING', payload: false });
|
||||||
@@ -140,18 +155,8 @@ const Pilots: React.FC<unknown> = () => {
|
|||||||
];
|
];
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const loadPilots = async () => {
|
|
||||||
try {
|
|
||||||
const pilots = await getPilots();
|
|
||||||
|
|
||||||
dispatch({ type: 'SET_PILOTS', payload: pilots })
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (isAuthenticated && !state.isFormOpen) {
|
if (isAuthenticated && !state.isFormOpen) {
|
||||||
loadPilots();
|
getPilots();
|
||||||
}
|
}
|
||||||
}, [isAuthenticated, state.isFormOpen]);
|
}, [isAuthenticated, state.isFormOpen]);
|
||||||
|
|
||||||
@@ -173,6 +178,19 @@ const Pilots: React.FC<unknown> = () => {
|
|||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
</Grid>
|
</Grid>
|
||||||
|
{!state.isLoading && state.alert && (
|
||||||
|
<Grid display="flex" justifyContent="center" size={12}>
|
||||||
|
<Alert
|
||||||
|
onClose={() =>
|
||||||
|
dispatch({ type: 'SET_ALERT', payload: undefined })
|
||||||
|
}
|
||||||
|
severity={state.alert.severity}
|
||||||
|
sx={{ width: '100%' }}
|
||||||
|
>
|
||||||
|
{state.alert.message}
|
||||||
|
</Alert>
|
||||||
|
</Grid>
|
||||||
|
)}
|
||||||
<Grid size={12}>
|
<Grid size={12}>
|
||||||
{state.pilots.length > 0 && <Table columns={columns} data={state.pilots} />}
|
{state.pilots.length > 0 && <Table columns={columns} data={state.pilots} />}
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
import { FormMode } from "../../enums/formMode";
|
import { FormMode } from "../../enums/formMode";
|
||||||
|
import { Alert } from "../../interfaces/Alert.interface";
|
||||||
import { Pilot } from "./Pilot.interface";
|
import { Pilot } from "./Pilot.interface";
|
||||||
|
|
||||||
export interface PilotsState {
|
export interface PilotsState {
|
||||||
pilots: Pilot[];
|
alert: Alert | undefined;
|
||||||
error: string | undefined;
|
|
||||||
isConfirmDialogLoading: boolean;
|
isConfirmDialogLoading: boolean;
|
||||||
isConfirmDialogOpen: boolean;
|
isConfirmDialogOpen: boolean;
|
||||||
isFormOpen: boolean;
|
isFormOpen: boolean;
|
||||||
isLoading: boolean;
|
isLoading: boolean;
|
||||||
formMode: FormMode;
|
formMode: FormMode;
|
||||||
|
pilots: Pilot[];
|
||||||
selectedPilotId: string | undefined;
|
selectedPilotId: string | undefined;
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import { FormMode } from "../../enums/formMode";
|
import { FormMode } from "../../enums/formMode";
|
||||||
|
import { Alert } from "../../interfaces/Alert.interface";
|
||||||
import { Pilot } from "./Pilot.interface";
|
import { Pilot } from "./Pilot.interface";
|
||||||
import { PilotsState } from './PilotsState.interface'
|
import { PilotsState } from './PilotsState.interface'
|
||||||
|
|
||||||
@@ -11,7 +12,7 @@ type Action =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
| { type: 'SET_PILOTS'; payload: Pilot[] }
|
| { type: 'SET_PILOTS'; payload: Pilot[] }
|
||||||
| { type: 'SET_ERROR'; payload: string | undefined }
|
| { type: 'SET_ALERT'; payload: Alert | undefined }
|
||||||
| { type: 'SET_FORM_MODE'; payload: FormMode }
|
| { type: 'SET_FORM_MODE'; payload: FormMode }
|
||||||
| { type: 'SET_IS_CONFIRMATION_DIALOG_LOADING'; payload: boolean }
|
| { type: 'SET_IS_CONFIRMATION_DIALOG_LOADING'; payload: boolean }
|
||||||
| { type: 'SET_IS_LOADING'; payload: boolean }
|
| { type: 'SET_IS_LOADING'; payload: boolean }
|
||||||
@@ -25,13 +26,13 @@ type Action =
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const initialState: PilotsState = {
|
export const initialState: PilotsState = {
|
||||||
pilots: [],
|
alert: undefined,
|
||||||
error: undefined,
|
|
||||||
formMode: FormMode.CANCEL,
|
formMode: FormMode.CANCEL,
|
||||||
isConfirmDialogLoading: false,
|
isConfirmDialogLoading: false,
|
||||||
isConfirmDialogOpen: false,
|
isConfirmDialogOpen: false,
|
||||||
isFormOpen: false,
|
isFormOpen: false,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
|
pilots: [],
|
||||||
selectedPilotId: undefined
|
selectedPilotId: undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,10 +54,10 @@ export const reducer = (
|
|||||||
pilots: action.payload
|
pilots: action.payload
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 'SET_ERROR': {
|
case 'SET_ALERT': {
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
error: action.payload
|
alert: action.payload
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 'SET_FORM_MODE': {
|
case 'SET_FORM_MODE': {
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ const SiteNav: React.FC<unknown> = () => {
|
|||||||
};
|
};
|
||||||
const getUserProfile = async (accessToken: string): Promise<User> => {
|
const getUserProfile = async (accessToken: string): Promise<User> => {
|
||||||
try {
|
try {
|
||||||
const response: AxiosResponse = await httpClient.get(`api/userProfile`, {
|
const response: AxiosResponse = await httpClient.get(`api/user/profile`, {
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: accessToken
|
Authorization: accessToken
|
||||||
}
|
}
|
||||||
@@ -67,7 +67,7 @@ const SiteNav: React.FC<unknown> = () => {
|
|||||||
};
|
};
|
||||||
const getUserPhoto = async (accessToken: string): Promise<string> => {
|
const getUserPhoto = async (accessToken: string): Promise<string> => {
|
||||||
try {
|
try {
|
||||||
const response: AxiosResponse = await httpClient.get(`api/userPhoto`, {
|
const response: AxiosResponse = await httpClient.get(`api/user/photo`, {
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: accessToken
|
Authorization: accessToken
|
||||||
},
|
},
|
||||||
@@ -98,45 +98,6 @@ const SiteNav: React.FC<unknown> = () => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
// useEffect(() => {
|
|
||||||
// const callback = instance.addEventCallback(
|
|
||||||
// async (message: EventMessage) => {
|
|
||||||
// if (message.eventType === EventType.LOGIN_SUCCESS) {
|
|
||||||
// try {
|
|
||||||
// setLoading(true);
|
|
||||||
|
|
||||||
// const eventPayload: EventPayloadExtended =
|
|
||||||
// message.payload as EventPayloadExtended;
|
|
||||||
// const userProfile: User = await getUserProfile(
|
|
||||||
// eventPayload.accessToken
|
|
||||||
// );
|
|
||||||
// const userPhoto = await getUserPhoto(eventPayload.accessToken);
|
|
||||||
|
|
||||||
// appContext.dispatch({
|
|
||||||
// type: 'SET_USER_PROFILE',
|
|
||||||
// payload: userProfile
|
|
||||||
// });
|
|
||||||
// } catch (error) {
|
|
||||||
// console.log(error);
|
|
||||||
// } finally {
|
|
||||||
// setLoading(false);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
|
|
||||||
// instance.handleRedirectPromise().then((response) => {
|
|
||||||
// console.log(response)
|
|
||||||
// })
|
|
||||||
|
|
||||||
// return () => {
|
|
||||||
// if (callback) {
|
|
||||||
// instance.removeEventCallback(callback);
|
|
||||||
// appContext.dispatch({ type: 'SET_USER_PROFILE', payload: {} });
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
// }, []);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const setUserProfile = async () => {
|
const setUserProfile = async () => {
|
||||||
try {
|
try {
|
||||||
|
|||||||
4
app/src/interfaces/Alert.interface.ts
Normal file
4
app/src/interfaces/Alert.interface.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
export interface Alert {
|
||||||
|
severity: 'success' | 'error' | 'info' | 'warning';
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
189
pnpm-lock.yaml
generated
189
pnpm-lock.yaml
generated
@@ -48,57 +48,42 @@ importers:
|
|||||||
|
|
||||||
api:
|
api:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@azure/app-configuration':
|
|
||||||
specifier: ^1.8.0
|
|
||||||
version: 1.8.0
|
|
||||||
'@azure/data-tables':
|
|
||||||
specifier: ^13.2.2
|
|
||||||
version: 13.3.0
|
|
||||||
'@azure/msal-node':
|
|
||||||
specifier: ^2.16.2
|
|
||||||
version: 2.16.2
|
|
||||||
'@microsoft/microsoft-graph-client':
|
'@microsoft/microsoft-graph-client':
|
||||||
specifier: ^3.0.7
|
specifier: ^3.0.7
|
||||||
version: 3.0.7(@azure/identity@4.6.0)
|
version: 3.0.7(@azure/identity@4.6.0)
|
||||||
'@nestjs/axios':
|
'@nestjs/axios':
|
||||||
specifier: ^3.0.3
|
specifier: ^3.0.3
|
||||||
version: 3.1.3(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(axios@1.7.9)(rxjs@7.8.1)
|
version: 3.1.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(axios@1.7.9)(rxjs@7.8.1)
|
||||||
'@nestjs/azure-database':
|
|
||||||
specifier: ^3.0.0
|
|
||||||
version: 3.0.0(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
|
||||||
'@nestjs/common':
|
'@nestjs/common':
|
||||||
specifier: ^10.0.0
|
specifier: ^10.0.0
|
||||||
version: 10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
version: 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
'@nestjs/config':
|
'@nestjs/config':
|
||||||
specifier: ^3.2.2
|
specifier: ^3.2.2
|
||||||
version: 3.3.0(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(rxjs@7.8.1)
|
version: 3.3.0(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(rxjs@7.8.1)
|
||||||
'@nestjs/core':
|
'@nestjs/core':
|
||||||
specifier: ^10.0.0
|
specifier: ^10.0.0
|
||||||
version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
'@nestjs/passport':
|
'@nestjs/passport':
|
||||||
specifier: ^10.0.3
|
specifier: ^10.0.3
|
||||||
version: 10.0.3(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(passport@0.7.0)
|
version: 10.0.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(passport@0.7.0)
|
||||||
'@nestjs/platform-express':
|
'@nestjs/platform-express':
|
||||||
specifier: ^10.0.0
|
specifier: ^10.0.0
|
||||||
version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
||||||
'@noahspan/azure-database':
|
'@noahspan/azure-database':
|
||||||
specifier: ^3.1.2
|
specifier: ^3.1.2
|
||||||
version: 3.1.2(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
version: 3.1.2(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
||||||
|
'@noahspan/noahspan-modules':
|
||||||
|
specifier: ^0.9.2
|
||||||
|
version: 0.9.2
|
||||||
'@schematics/angular':
|
'@schematics/angular':
|
||||||
specifier: ^17.3.7
|
specifier: ^17.3.7
|
||||||
version: 17.3.11(chokidar@3.6.0)
|
version: 17.3.11(chokidar@3.6.0)
|
||||||
dotenv:
|
dotenv:
|
||||||
specifier: ^16.4.7
|
specifier: ^16.4.7
|
||||||
version: 16.4.7
|
version: 16.4.7
|
||||||
express-jwt:
|
|
||||||
specifier: ^8.5.1
|
|
||||||
version: 8.5.1
|
|
||||||
passport-azure-ad:
|
|
||||||
specifier: ^4.3.5
|
|
||||||
version: 4.3.5
|
|
||||||
reflect-metadata:
|
reflect-metadata:
|
||||||
specifier: 0.1.13
|
specifier: ^0.2.2
|
||||||
version: 0.1.13
|
version: 0.2.2
|
||||||
rxjs:
|
rxjs:
|
||||||
specifier: ^7.8.1
|
specifier: ^7.8.1
|
||||||
version: 7.8.1
|
version: 7.8.1
|
||||||
@@ -117,7 +102,7 @@ importers:
|
|||||||
version: 10.2.3(chokidar@3.6.0)(typescript@5.7.3)
|
version: 10.2.3(chokidar@3.6.0)(typescript@5.7.3)
|
||||||
'@nestjs/testing':
|
'@nestjs/testing':
|
||||||
specifier: ^10.0.0
|
specifier: ^10.0.0
|
||||||
version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)(@nestjs/platform-express@10.4.15)
|
version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)(@nestjs/platform-express@10.4.15)
|
||||||
'@types/express':
|
'@types/express':
|
||||||
specifier: ^4.17.17
|
specifier: ^4.17.17
|
||||||
version: 4.17.21
|
version: 4.17.21
|
||||||
@@ -291,6 +276,7 @@ packages:
|
|||||||
'@azure/msal-browser@4.0.1':
|
'@azure/msal-browser@4.0.1':
|
||||||
resolution: {integrity: sha512-jqiwVJPArnEOUhmc+dvo481OP8b2PMcsu3EtGtxt7sxmKgFtdQyGDCndj+2me62JVG/HEgArEgKyMA7L0aNhdA==}
|
resolution: {integrity: sha512-jqiwVJPArnEOUhmc+dvo481OP8b2PMcsu3EtGtxt7sxmKgFtdQyGDCndj+2me62JVG/HEgArEgKyMA7L0aNhdA==}
|
||||||
engines: {node: '>=0.8.0'}
|
engines: {node: '>=0.8.0'}
|
||||||
|
deprecated: A bug was identified in this release that coule be production impacting. Use 4.0.2 or later.
|
||||||
|
|
||||||
'@azure/msal-browser@4.0.2':
|
'@azure/msal-browser@4.0.2':
|
||||||
resolution: {integrity: sha512-bq6PasUpJgBSOSMeSlh8gXh4LZGgAaPoJFNcu5u0zxwueh+I8NpMb9oxlCfS/8CJHyXUhTUAMLSnvThemNdyQw==}
|
resolution: {integrity: sha512-bq6PasUpJgBSOSMeSlh8gXh4LZGgAaPoJFNcu5u0zxwueh+I8NpMb9oxlCfS/8CJHyXUhTUAMLSnvThemNdyQw==}
|
||||||
@@ -1263,6 +1249,7 @@ packages:
|
|||||||
'@mui/base@5.0.0-beta.69':
|
'@mui/base@5.0.0-beta.69':
|
||||||
resolution: {integrity: sha512-r2YyGUXpZxj8rLAlbjp1x2BnMERTZ/dMqd9cClKj2OJ7ALAuiv/9X5E9eHfRc9o/dGRuLSMq/WTjREktJVjxVA==}
|
resolution: {integrity: sha512-r2YyGUXpZxj8rLAlbjp1x2BnMERTZ/dMqd9cClKj2OJ7ALAuiv/9X5E9eHfRc9o/dGRuLSMq/WTjREktJVjxVA==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
|
deprecated: This package has been replaced by @base-ui-components/react
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
@@ -1449,12 +1436,6 @@ packages:
|
|||||||
axios: ^1.3.1
|
axios: ^1.3.1
|
||||||
rxjs: ^6.0.0 || ^7.0.0
|
rxjs: ^6.0.0 || ^7.0.0
|
||||||
|
|
||||||
'@nestjs/azure-database@3.0.0':
|
|
||||||
resolution: {integrity: sha512-w/yGifKJNYtgrB11WWB6LD4aSflZuVhqDhyIffew3pXHffhqJcIw+7AiFzZr1gVV2cGLJy2J0QSNvHM1fLxS9Q==}
|
|
||||||
peerDependencies:
|
|
||||||
'@nestjs/common': ^9.0.0 || ^10.0.0
|
|
||||||
'@nestjs/core': ^9.0.0 || ^10.0.0
|
|
||||||
|
|
||||||
'@nestjs/cli@10.4.9':
|
'@nestjs/cli@10.4.9':
|
||||||
resolution: {integrity: sha512-s8qYd97bggqeK7Op3iD49X2MpFtW4LVNLAwXFkfbRxKME6IYT7X0muNTJ2+QfI8hpbNx9isWkrLWIp+g5FOhiA==}
|
resolution: {integrity: sha512-s8qYd97bggqeK7Op3iD49X2MpFtW4LVNLAwXFkfbRxKME6IYT7X0muNTJ2+QfI8hpbNx9isWkrLWIp+g5FOhiA==}
|
||||||
engines: {node: '>= 16.14'}
|
engines: {node: '>= 16.14'}
|
||||||
@@ -1550,6 +1531,9 @@ packages:
|
|||||||
'@noahspan/noahspan-modules@0.5.9':
|
'@noahspan/noahspan-modules@0.5.9':
|
||||||
resolution: {integrity: sha512-kkL9P/TNxuPp5T/gd6gTLAmAGi8SJD4MjTWtsrMvw4WWF69x69m2Nr2G6zCv9WLtFrm4NaJhF8I1MVVuNOCinw==}
|
resolution: {integrity: sha512-kkL9P/TNxuPp5T/gd6gTLAmAGi8SJD4MjTWtsrMvw4WWF69x69m2Nr2G6zCv9WLtFrm4NaJhF8I1MVVuNOCinw==}
|
||||||
|
|
||||||
|
'@noahspan/noahspan-modules@0.9.2':
|
||||||
|
resolution: {integrity: sha512-TU/qO7nNVo+3Ceap7dISUmDtAd/rnZnroCjCK82Zhk6rgj8tkazRhksdUemcdPyienQLJKBaUh6H/sZQNetC1Q==}
|
||||||
|
|
||||||
'@nodelib/fs.scandir@2.1.5':
|
'@nodelib/fs.scandir@2.1.5':
|
||||||
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
@@ -3456,8 +3440,8 @@ packages:
|
|||||||
debug:
|
debug:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
for-each@0.3.4:
|
for-each@0.3.5:
|
||||||
resolution: {integrity: sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==}
|
resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
foreground-child@3.3.0:
|
foreground-child@3.3.0:
|
||||||
@@ -4635,8 +4619,8 @@ packages:
|
|||||||
popmotion@11.0.3:
|
popmotion@11.0.3:
|
||||||
resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==}
|
resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==}
|
||||||
|
|
||||||
possible-typed-array-names@1.0.0:
|
possible-typed-array-names@1.1.0:
|
||||||
resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
|
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
postcss-loader@7.3.4:
|
postcss-loader@7.3.4:
|
||||||
@@ -4864,9 +4848,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==}
|
resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==}
|
||||||
engines: {node: '>= 4'}
|
engines: {node: '>= 4'}
|
||||||
|
|
||||||
reflect-metadata@0.1.13:
|
|
||||||
resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==}
|
|
||||||
|
|
||||||
reflect-metadata@0.2.2:
|
reflect-metadata@0.2.2:
|
||||||
resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==}
|
resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==}
|
||||||
|
|
||||||
@@ -5042,8 +5023,8 @@ packages:
|
|||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
semver@7.7.0:
|
semver@7.7.1:
|
||||||
resolution: {integrity: sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==}
|
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@@ -6972,21 +6953,12 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/react'
|
- '@types/react'
|
||||||
|
|
||||||
'@nestjs/axios@3.1.3(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(axios@1.7.9)(rxjs@7.8.1)':
|
'@nestjs/axios@3.1.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(axios@1.7.9)(rxjs@7.8.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
axios: 1.7.9
|
axios: 1.7.9
|
||||||
rxjs: 7.8.1
|
rxjs: 7.8.1
|
||||||
|
|
||||||
'@nestjs/azure-database@3.0.0(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)':
|
|
||||||
dependencies:
|
|
||||||
'@azure/cosmos': 4.2.0
|
|
||||||
'@azure/data-tables': 13.3.0
|
|
||||||
'@nestjs/common': 10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
|
||||||
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
'@nestjs/cli@10.4.9':
|
'@nestjs/cli@10.4.9':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@angular-devkit/core': 17.3.11(chokidar@3.6.0)
|
'@angular-devkit/core': 17.3.11(chokidar@3.6.0)
|
||||||
@@ -7013,14 +6985,6 @@ snapshots:
|
|||||||
- uglify-js
|
- uglify-js
|
||||||
- webpack-cli
|
- webpack-cli
|
||||||
|
|
||||||
'@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)':
|
|
||||||
dependencies:
|
|
||||||
iterare: 1.2.1
|
|
||||||
reflect-metadata: 0.1.13
|
|
||||||
rxjs: 7.8.1
|
|
||||||
tslib: 2.8.1
|
|
||||||
uid: 2.0.2
|
|
||||||
|
|
||||||
'@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)':
|
'@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
iterare: 1.2.1
|
iterare: 1.2.1
|
||||||
@@ -7029,33 +6993,17 @@ snapshots:
|
|||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
uid: 2.0.2
|
uid: 2.0.2
|
||||||
|
|
||||||
'@nestjs/config@3.3.0(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(rxjs@7.8.1)':
|
'@nestjs/config@3.3.0(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(rxjs@7.8.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
dotenv: 16.4.5
|
dotenv: 16.4.5
|
||||||
dotenv-expand: 10.0.0
|
dotenv-expand: 10.0.0
|
||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
rxjs: 7.8.1
|
rxjs: 7.8.1
|
||||||
|
|
||||||
'@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.1.13)(rxjs@7.8.1)':
|
'@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
'@nuxtjs/opencollective': 0.3.2
|
|
||||||
fast-safe-stringify: 2.1.1
|
|
||||||
iterare: 1.2.1
|
|
||||||
path-to-regexp: 3.3.0
|
|
||||||
reflect-metadata: 0.1.13
|
|
||||||
rxjs: 7.8.1
|
|
||||||
tslib: 2.8.1
|
|
||||||
uid: 2.0.2
|
|
||||||
optionalDependencies:
|
|
||||||
'@nestjs/platform-express': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- encoding
|
|
||||||
|
|
||||||
'@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)':
|
|
||||||
dependencies:
|
|
||||||
'@nestjs/common': 10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
|
||||||
'@nuxtjs/opencollective': 0.3.2
|
'@nuxtjs/opencollective': 0.3.2
|
||||||
fast-safe-stringify: 2.1.1
|
fast-safe-stringify: 2.1.1
|
||||||
iterare: 1.2.1
|
iterare: 1.2.1
|
||||||
@@ -7065,19 +7013,19 @@ snapshots:
|
|||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
uid: 2.0.2
|
uid: 2.0.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@nestjs/platform-express': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
'@nestjs/platform-express': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
|
|
||||||
'@nestjs/passport@10.0.3(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(passport@0.7.0)':
|
'@nestjs/passport@10.0.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(passport@0.7.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
passport: 0.7.0
|
passport: 0.7.0
|
||||||
|
|
||||||
'@nestjs/platform-express@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)':
|
'@nestjs/platform-express@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
body-parser: 1.20.3
|
body-parser: 1.20.3
|
||||||
cors: 2.8.5
|
cors: 2.8.5
|
||||||
express: 4.21.2
|
express: 4.21.2
|
||||||
@@ -7108,20 +7056,20 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- chokidar
|
- chokidar
|
||||||
|
|
||||||
'@nestjs/testing@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)(@nestjs/platform-express@10.4.15)':
|
'@nestjs/testing@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)(@nestjs/platform-express@10.4.15)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@nestjs/platform-express': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
'@nestjs/platform-express': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
||||||
|
|
||||||
'@noahspan/azure-database@3.1.2(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)':
|
'@noahspan/azure-database@3.1.2(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@azure/cosmos': 4.2.0
|
'@azure/cosmos': 4.2.0
|
||||||
'@azure/data-tables': 13.3.0
|
'@azure/data-tables': 13.3.0
|
||||||
'@nestjs/common': 10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.1.13)(rxjs@7.8.1)
|
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
'@noahspan/noahspan-modules': 0.5.9
|
'@noahspan/noahspan-modules': 0.5.9
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@azure/msal-browser'
|
- '@azure/msal-browser'
|
||||||
@@ -7194,9 +7142,9 @@ snapshots:
|
|||||||
'@dapr/dapr': 3.4.1
|
'@dapr/dapr': 3.4.1
|
||||||
'@microsoft/microsoft-graph-client': 3.0.7(@azure/identity@4.6.0)
|
'@microsoft/microsoft-graph-client': 3.0.7(@azure/identity@4.6.0)
|
||||||
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
'@nestjs/passport': 10.0.3(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(passport@0.7.0)
|
'@nestjs/passport': 10.0.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(passport@0.7.0)
|
||||||
'@nestjs/platform-express': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.1.13)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
'@nestjs/platform-express': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
||||||
axios: 1.7.9
|
axios: 1.7.9
|
||||||
express-jwt: 8.5.1
|
express-jwt: 8.5.1
|
||||||
jwks-rsa: 3.1.0
|
jwks-rsa: 3.1.0
|
||||||
@@ -7217,6 +7165,33 @@ snapshots:
|
|||||||
- stream-browserify
|
- stream-browserify
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@noahspan/noahspan-modules@0.9.2':
|
||||||
|
dependencies:
|
||||||
|
'@azure/identity': 4.6.0
|
||||||
|
'@azure/msal-node': 2.16.2
|
||||||
|
'@microsoft/microsoft-graph-client': 3.0.7(@azure/identity@4.6.0)
|
||||||
|
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
|
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
|
'@nestjs/passport': 10.0.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(passport@0.7.0)
|
||||||
|
'@nestjs/platform-express': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)
|
||||||
|
axios: 1.7.9
|
||||||
|
passport: 0.7.0
|
||||||
|
passport-azure-ad: 4.3.5
|
||||||
|
passport-jwt: 4.0.1
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
rxjs: 7.8.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@azure/msal-browser'
|
||||||
|
- '@nestjs/microservices'
|
||||||
|
- '@nestjs/websockets'
|
||||||
|
- buffer
|
||||||
|
- class-transformer
|
||||||
|
- class-validator
|
||||||
|
- debug
|
||||||
|
- encoding
|
||||||
|
- stream-browserify
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@nodelib/fs.scandir@2.1.5':
|
'@nodelib/fs.scandir@2.1.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nodelib/fs.stat': 2.0.5
|
'@nodelib/fs.stat': 2.0.5
|
||||||
@@ -7870,7 +7845,7 @@ snapshots:
|
|||||||
jsdoc-type-pratt-parser: 4.1.0
|
jsdoc-type-pratt-parser: 4.1.0
|
||||||
process: 0.11.10
|
process: 0.11.10
|
||||||
recast: 0.23.9
|
recast: 0.23.9
|
||||||
semver: 7.7.0
|
semver: 7.7.1
|
||||||
util: 0.12.5
|
util: 0.12.5
|
||||||
ws: 8.18.0
|
ws: 8.18.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -8488,7 +8463,7 @@ snapshots:
|
|||||||
|
|
||||||
available-typed-arrays@1.0.7:
|
available-typed-arrays@1.0.7:
|
||||||
dependencies:
|
dependencies:
|
||||||
possible-typed-array-names: 1.0.0
|
possible-typed-array-names: 1.1.0
|
||||||
|
|
||||||
axios@1.7.9:
|
axios@1.7.9:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -9424,7 +9399,7 @@ snapshots:
|
|||||||
|
|
||||||
follow-redirects@1.15.9: {}
|
follow-redirects@1.15.9: {}
|
||||||
|
|
||||||
for-each@0.3.4:
|
for-each@0.3.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
is-callable: 1.2.7
|
is-callable: 1.2.7
|
||||||
|
|
||||||
@@ -10280,7 +10255,7 @@ snapshots:
|
|||||||
lodash.isstring: 4.0.1
|
lodash.isstring: 4.0.1
|
||||||
lodash.once: 4.1.1
|
lodash.once: 4.1.1
|
||||||
ms: 2.1.3
|
ms: 2.1.3
|
||||||
semver: 7.6.3
|
semver: 7.7.1
|
||||||
|
|
||||||
jwa@1.4.1:
|
jwa@1.4.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -10475,7 +10450,7 @@ snapshots:
|
|||||||
|
|
||||||
make-dir@4.0.0:
|
make-dir@4.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
semver: 7.6.3
|
semver: 7.7.1
|
||||||
|
|
||||||
make-error@1.3.6: {}
|
make-error@1.3.6: {}
|
||||||
|
|
||||||
@@ -10833,7 +10808,7 @@ snapshots:
|
|||||||
style-value-types: 5.0.0
|
style-value-types: 5.0.0
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
possible-typed-array-names@1.0.0: {}
|
possible-typed-array-names@1.1.0: {}
|
||||||
|
|
||||||
postcss-loader@7.3.4(postcss@8.5.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.18.20)):
|
postcss-loader@7.3.4(postcss@8.5.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.18.20)):
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -11067,8 +11042,6 @@ snapshots:
|
|||||||
tiny-invariant: 1.3.3
|
tiny-invariant: 1.3.3
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
reflect-metadata@0.1.13: {}
|
|
||||||
|
|
||||||
reflect-metadata@0.2.2: {}
|
reflect-metadata@0.2.2: {}
|
||||||
|
|
||||||
regenerator-runtime@0.14.1: {}
|
regenerator-runtime@0.14.1: {}
|
||||||
@@ -11231,7 +11204,7 @@ snapshots:
|
|||||||
|
|
||||||
semver@7.6.3: {}
|
semver@7.6.3: {}
|
||||||
|
|
||||||
semver@7.7.0: {}
|
semver@7.7.1: {}
|
||||||
|
|
||||||
send@0.19.0:
|
send@0.19.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -11805,7 +11778,7 @@ snapshots:
|
|||||||
available-typed-arrays: 1.0.7
|
available-typed-arrays: 1.0.7
|
||||||
call-bind: 1.0.8
|
call-bind: 1.0.8
|
||||||
call-bound: 1.0.3
|
call-bound: 1.0.3
|
||||||
for-each: 0.3.4
|
for-each: 0.3.5
|
||||||
gopd: 1.2.0
|
gopd: 1.2.0
|
||||||
has-tostringtag: 1.0.2
|
has-tostringtag: 1.0.2
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user