diff --git a/libs/modules/src/auth/auth.gaurd.ts b/libs/modules/src/auth/auth.gaurd.ts index c974a1a..ee0f47f 100644 --- a/libs/modules/src/auth/auth.gaurd.ts +++ b/libs/modules/src/auth/auth.gaurd.ts @@ -1,4 +1,3 @@ -import { CanActivate } from '@nestjs/common'; import { ExecutionContext, Injectable } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; import { AuthGuard as PassportAuthGuard } from '@nestjs/passport'; @@ -6,21 +5,18 @@ import { Observable } from 'rxjs'; import { IS_PUBLIC_KEY } from './public.decorator'; @Injectable() -export class AuthGuard extends PassportAuthGuard('azure-ad') implements CanActivate { +export class AuthGuard extends PassportAuthGuard('azure-ad') { constructor(private readonly reflector: Reflector) { super(); } canActivate(context: ExecutionContext): boolean | Promise | Observable { - const isPublic = this.reflector.get( - IS_PUBLIC_KEY, - context.getHandler() - ); - const req = context.switchToHttp().getRequest(); - const authHeader = req.headers.authorization; - const token = authHeader && authHeader.split(' ')[1]; + const isPublic = this.reflector.getAllAndOverride(IS_PUBLIC_KEY, [ + context.getHandler(), + context.getClass() + ]) - if (isPublic && !token) { + if (isPublic) { return true; } diff --git a/libs/modules/src/auth/auth.module.ts b/libs/modules/src/auth/auth.module.ts index 4234bb6..6b41f8d 100644 --- a/libs/modules/src/auth/auth.module.ts +++ b/libs/modules/src/auth/auth.module.ts @@ -9,6 +9,8 @@ import { ConfigurableModuleClass } from './auth.module-definition'; defaultStrategy: 'azure-ad' }) ], - providers: [AzureAdStrategy] + providers: [ + AzureAdStrategy + ] }) export class AuthModule extends ConfigurableModuleClass {} diff --git a/libs/modules/src/auth/auth.strategy.ts b/libs/modules/src/auth/auth.strategy.ts index b9d2930..05d86b0 100644 --- a/libs/modules/src/auth/auth.strategy.ts +++ b/libs/modules/src/auth/auth.strategy.ts @@ -3,8 +3,6 @@ import { PassportStrategy } from "@nestjs/passport"; import { AuthModuleOptions } from './auth.interface' import { MODULE_OPTIONS_TOKEN } from "./auth.module-definition"; import { BearerStrategy } from 'passport-azure-ad' -import { ExtractJwt, Strategy } from 'passport-jwt'; -import * as jwksRsa from 'jwks-rsa'; @Injectable() export class AzureAdStrategy extends PassportStrategy( @@ -25,27 +23,4 @@ export class AzureAdStrategy extends PassportStrategy( async validate(data: any): Promise { return data; } -} - -// @Injectable() -// export class AzureAdStrategy extends PassportStrategy(Strategy, 'azure-ad') { -// constructor(@Inject(MODULE_OPTIONS_TOKEN) authModuleOptions: AuthModuleOptions) { -// super({ -// jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), -// audience: `api://${authModuleOptions.clientId}`, -// issuer: `https://sts.windows.net/${authModuleOptions.tenantId}`, -// algorithms: ['RS256'], -// ignoreExpiration: true, -// secretOrKeyProvider: jwksRsa.passportJwtSecret({ -// cache: true, -// rateLimit: true, -// jwksRequestsPerMinute: 5, -// jwksUri: `https://login.microsoftonline.com/${authModuleOptions.tenantId}` -// }) -// }) -// } - -// validate(payload: any) { -// return payload; -// } -// } \ No newline at end of file +} \ No newline at end of file diff --git a/libs/modules/src/dapr/dapr.logger.ts b/libs/modules/src/dapr/dapr.logger.ts deleted file mode 100644 index 5522a98..0000000 --- a/libs/modules/src/dapr/dapr.logger.ts +++ /dev/null @@ -1,28 +0,0 @@ -// import { Logger } from '@nestjs/common'; -// import { LoggerService } from '@dapr/dapr'; - -// export class DaprLogger implements LoggerService { -// private readonly logger = new Logger(DaprLogger.name); - -// constructor() {} - -// error(message: any, ...optionalParams: any[]): void { -// this.logger.error(message, ...optionalParams); -// } - -// warn(message: any, ...optionalParams: any[]): void { -// this.logger.warn(message, ...optionalParams); -// } - -// info(message: any, ...optionalParams: any[]): void { -// this.logger.log(message, ...optionalParams); -// } - -// verbose(message: any, ...optionalParams: any[]): void { -// this.logger.verbose(message, ...optionalParams); -// } - -// debug(message: any, ...optionalParams: any[]): void { -// this.logger.debug(message, ...optionalParams); -// } -// } \ No newline at end of file diff --git a/libs/modules/src/dapr/dapr.module.ts b/libs/modules/src/dapr/dapr.module.ts deleted file mode 100644 index a4f7789..0000000 --- a/libs/modules/src/dapr/dapr.module.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Module } from "@nestjs/common"; -import { DaprService } from "./dapr.service"; - -@Module({ - providers: [ DaprService ], - exports: [ DaprService ] -}) -export class DaprModule {} \ No newline at end of file diff --git a/libs/modules/src/dapr/dapr.service.ts b/libs/modules/src/dapr/dapr.service.ts deleted file mode 100644 index 66b5ff7..0000000 --- a/libs/modules/src/dapr/dapr.service.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; -import { DaprClient } from '@dapr/dapr'; - -@Injectable() -export class DaprService { - daprClient: DaprClient; - private readonly logger = new Logger(DaprService.name); - - constructor() { - this.logger.log('Initializing DaprClient') - this.daprClient = new DaprClient(); - } -} diff --git a/libs/modules/src/index.ts b/libs/modules/src/index.ts index 31be3ca..6e3b586 100644 --- a/libs/modules/src/index.ts +++ b/libs/modules/src/index.ts @@ -4,17 +4,11 @@ export * from './auth/auth.module'; export * from './auth/auth.gaurd'; export * from './auth/public.decorator'; -// Dapr - -export * from './dapr/dapr.module' -export * from './dapr/dapr.service' - -// MS Graph - -export * from './msGraph/ms-graph.module'; -export * from './msGraph/ms-graph.service'; -export { Client as MsGraphClient } from '@microsoft/microsoft-graph-client'; - // Custom Error export * from './util/customError'; + +// User + +export * from './user/user.module'; +export * from './user/user.service'; diff --git a/libs/modules/src/msGraph/ms-graph.interface.ts b/libs/modules/src/msGraph/ms-graph.interface.ts deleted file mode 100644 index 2bfcb41..0000000 --- a/libs/modules/src/msGraph/ms-graph.interface.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface MsGraphModuleOptions { - tenantId: string; - clientId: string; - clientSecret: string; - } \ No newline at end of file diff --git a/libs/modules/src/msGraph/ms-graph.module-definition.ts b/libs/modules/src/msGraph/ms-graph.module-definition.ts deleted file mode 100644 index fc706db..0000000 --- a/libs/modules/src/msGraph/ms-graph.module-definition.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ConfigurableModuleBuilder } from '@nestjs/common'; -import { MsGraphModuleOptions } from './ms-graph.interface'; - -export const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder().build() \ No newline at end of file diff --git a/libs/modules/src/msGraph/ms-graph.module.ts b/libs/modules/src/msGraph/ms-graph.module.ts deleted file mode 100644 index 308abac..0000000 --- a/libs/modules/src/msGraph/ms-graph.module.ts +++ /dev/null @@ -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 {} \ No newline at end of file diff --git a/libs/modules/src/msGraph/ms-graph.service.ts b/libs/modules/src/msGraph/ms-graph.service.ts deleted file mode 100644 index a41efa5..0000000 --- a/libs/modules/src/msGraph/ms-graph.service.ts +++ /dev/null @@ -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 { - 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 { - const client = await Client.init({ - authProvider: (done) => { - done(null, accessToken); - } - }); - - return client; - } -} \ No newline at end of file diff --git a/libs/modules/src/user/user.constants.ts b/libs/modules/src/user/user.constants.ts new file mode 100644 index 0000000..ec72cec --- /dev/null +++ b/libs/modules/src/user/user.constants.ts @@ -0,0 +1 @@ +export const USER_MODULE_OPTIONS = 'USER_MODULE_OPTIONS' \ No newline at end of file diff --git a/libs/modules/src/user/user.controller.ts b/libs/modules/src/user/user.controller.ts new file mode 100644 index 0000000..6e08376 --- /dev/null +++ b/libs/modules/src/user/user.controller.ts @@ -0,0 +1,71 @@ +import { + Controller, + Get, + Headers, + Query, + StreamableFile, +} from '@nestjs/common'; +import { UserService } from './user.service'; +import { Client as MsGraphClient } from '@microsoft/microsoft-graph-client'; + +@Controller('user') +export class UserController { + constructor( + private readonly userService: UserService + ) {} + + @Get('photo') + async getProfilePhoto(@Headers() headers: any): Promise { + try { + const graphToken: string = await this.userService.getMsGraphAuth( + headers.authorization.replace('Bearer ', ''), + ['user.read'] + ); + const client: MsGraphClient = + await this.userService.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('profile') + async getUserProfile(@Headers() headers: any): Promise { + try { + const graphToken: string = await this.userService.getMsGraphAuth( + headers.authorization.replace('Bearer ', ''), + ['user.read'] + ); + const client: MsGraphClient = + await this.userService.getMsGraphClientDelegated(graphToken); + const userProfile = await client.api(`me`).get(); + + return userProfile; + } catch (error) { + return error; + } + } + + @Get('search') + async searchUsers( + @Headers() headers: any, + @Query('search') search: any + ): Promise { + try { + const accessToken: string = headers.authorization.replace('Bearer ', ''); + const personSearchResults: any[] = + await this.userService.searchUsers(accessToken, search); + + return personSearchResults; + } catch (error) { + return error; + } + } +} diff --git a/libs/modules/src/user/user.interface.ts b/libs/modules/src/user/user.interface.ts new file mode 100644 index 0000000..c2eeb23 --- /dev/null +++ b/libs/modules/src/user/user.interface.ts @@ -0,0 +1,5 @@ +export interface UserModuleOptions { + tenantId: string; + clientId: string; + clientSecret: string; +} \ No newline at end of file diff --git a/libs/modules/src/user/user.module-definition.ts b/libs/modules/src/user/user.module-definition.ts new file mode 100644 index 0000000..ad7b387 --- /dev/null +++ b/libs/modules/src/user/user.module-definition.ts @@ -0,0 +1,4 @@ +import { ConfigurableModuleBuilder } from '@nestjs/common'; +import { UserModuleOptions } from './user.interface'; + +export const { ConfigurableModuleClass, ASYNC_OPTIONS_TYPE, MODULE_OPTIONS_TOKEN, OPTIONS_TYPE } = new ConfigurableModuleBuilder().build() \ No newline at end of file diff --git a/libs/modules/src/user/user.module.ts b/libs/modules/src/user/user.module.ts new file mode 100644 index 0000000..6de25eb --- /dev/null +++ b/libs/modules/src/user/user.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { UserService } from './user.service'; +import { ConfigurableModuleClass } from './user.module-definition'; +import { UserController } from './user.controller'; + +@Module({ + controllers: [UserController], + providers: [UserService], + exports: [UserService] +}) +export class UserModule extends ConfigurableModuleClass {} \ No newline at end of file diff --git a/libs/modules/src/user/user.service.ts b/libs/modules/src/user/user.service.ts new file mode 100644 index 0000000..6a44556 --- /dev/null +++ b/libs/modules/src/user/user.service.ts @@ -0,0 +1,96 @@ +import { Inject, Injectable, StreamableFile } from '@nestjs/common'; +import { UserModuleOptions } from './user.interface'; +import { Client } from '@microsoft/microsoft-graph-client'; +import { AuthenticationResult, ConfidentialClientApplication, OnBehalfOfRequest } from '@azure/msal-node'; +import { MODULE_OPTIONS_TOKEN } from './user.module-definition'; + +@Injectable() +export class UserService { + constructor(@Inject(MODULE_OPTIONS_TOKEN) private userModuleOptions: UserModuleOptions) {} + + async getMsGraphAuth(accessToken: string, scopes: string[]): Promise { + try { + const oboRequest: OnBehalfOfRequest = { + oboAssertion: accessToken, + scopes: scopes + } + const cca = new ConfidentialClientApplication({ + auth: { + clientId: this.userModuleOptions.clientId, + clientSecret: this.userModuleOptions.clientSecret, + authority: `https://login.microsoftonline.com/${this.userModuleOptions.tenantId}` + } + }); + const authenticationResult: AuthenticationResult = await cca.acquireTokenOnBehalfOf(oboRequest); + + return authenticationResult.accessToken + } catch (error) { + return error + } + } + + async getMsGraphClientDelegated(accessToken): Promise { + const client = await Client.init({ + authProvider: (done) => { + done(null, accessToken); + } + }); + + return client; + } + + async getProfilePhoto(accessToken: string, scopes: string[]): Promise { + try { + const graphToken: string = await this.getMsGraphAuth(accessToken, scopes); + const client: Client = await this.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 buffer; + } catch (error) { + return error; + } + } + + async getUserProfile(accessToken): Promise { + try { + const graphToken: string = await this.getMsGraphAuth(accessToken, ['user.read']); + const client: Client = await this.getMsGraphClientDelegated(graphToken); + const userProfile = await client.api(`me`).get(); + + return userProfile + } catch (error) { + return error; + } + } + + async searchUsers(accessToken, searchText: string): Promise { + try { + const graphToken: string = await this.getMsGraphAuth(accessToken, ['user.read']); + const client: Client = await this.getMsGraphClientDelegated(graphToken); + const results: any = await client + .api('users') + .header('ConsistencyLevel', 'eventual') + .search(`"displayName:${searchText}"`) + .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); + } + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 04eaa85..53e1488 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,31 +1,26 @@ { "name": "@noahspan/noahspan-modules", - "version": "0.6.1", + "version": "0.7.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@noahspan/noahspan-modules", - "version": "0.6.1", + "version": "0.7.8", "license": "UNLICENSED", "dependencies": { - "@azure/app-configuration": "^1.6.0", - "@azure/data-tables": "^13.2.2", "@azure/identity": "^4.2.0", "@azure/msal-node": "^2.9.2", - "@dapr/dapr": "^3.4.1", "@microsoft/microsoft-graph-client": "^3.0.7", "@nestjs/common": "^10.0.0", "@nestjs/core": "^10.0.0", "@nestjs/passport": "^10.0.3", "@nestjs/platform-express": "^10.0.0", "axios": "^1.7.2", - "express-jwt": "^8.5.1", - "jwks-rsa": "^3.1.0", "passport": "^0.7.0", "passport-azure-ad": "^4.3.5", "passport-jwt": "^4.0.1", - "reflect-metadata": "^0.2.0", + "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1" }, "devDependencies": { @@ -248,27 +243,6 @@ "node": ">=12.0.0" } }, - "node_modules/@azure/app-configuration": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@azure/app-configuration/-/app-configuration-1.6.0.tgz", - "integrity": "sha512-5Ae4SB0g4VbTnF7B+bwlkRLesRIYcaeg6e2Qxf0RlOEIetIgfAZiX6S5e7hD83X5RkwiPmzDm8rJm6HDpnVcvQ==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^2.0.0", - "@azure/core-lro": "^2.5.1", - "@azure/core-paging": "^1.4.0", - "@azure/core-rest-pipeline": "^1.6.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@azure/core-auth": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", @@ -321,66 +295,6 @@ "node": ">=18.0.0" } }, - "node_modules/@azure/core-http-compat": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz", - "integrity": "sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-client": "^1.3.0", - "@azure/core-rest-pipeline": "^1.3.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-http-compat/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-lro": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", - "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.2.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-lro/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-paging": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", - "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@azure/core-rest-pipeline": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.0.tgz", @@ -444,45 +358,6 @@ "node": ">=18.0.0" } }, - "node_modules/@azure/core-xml": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.4.3.tgz", - "integrity": "sha512-D6G7FEmDiTctPKuWegX2WTrS1enKZwqYwdKTO6ZN6JMigcCehlT0/CYl+zWpI9vQ9frwwp7GQT3/owaEXgnOsA==", - "dependencies": { - "fast-xml-parser": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/data-tables": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@azure/data-tables/-/data-tables-13.2.2.tgz", - "integrity": "sha512-Dq2Aq0mMMF0BPzYQKdBY/OtO7VemP/foh6z+mJpUO1hRL+65C1rGQUJf20LJHotSyU8wHb4HJzOs+Z50GXSy1w==", - "dependencies": { - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.0.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-xml": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/data-tables/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@azure/identity": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.2.0.tgz", @@ -1206,23 +1081,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@dapr/dapr": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@dapr/dapr/-/dapr-3.4.1.tgz", - "integrity": "sha512-Ev9/Pqzo2ftiDU3gYOCiOJR/UZ5fZk+y+hFcn133mBkYvbU9cTU9S+/46kH2YVJCg6+62m/rG7LQ1o2s5gX76Q==", - "dependencies": { - "@grpc/grpc-js": "^1.9.3", - "@js-temporal/polyfill": "^0.3.0", - "@microsoft/durabletask-js": "^0.1.0-alpha.2", - "@types/google-protobuf": "^3.15.5", - "@types/node-fetch": "^2.6.2", - "body-parser": "^1.19.0", - "express": "^4.18.2", - "google-protobuf": "^3.18.0", - "http-terminator": "^3.2.0", - "node-fetch": "^2.6.7" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -1323,35 +1181,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@grpc/grpc-js": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.5.tgz", - "integrity": "sha512-d3iiHxdpg5+ZcJ6jnDSOT8Z0O0VMVGy34jAnYLUX8yd36b1qn8f1TwOA/Lc7TsOh03IkPJ38eGI5qD2EjNkoEA==", - "dependencies": { - "@grpc/proto-loader": "^0.7.13", - "@js-sdsl/ordered-map": "^4.4.2" - }, - "engines": { - "node": ">=12.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", - "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -1990,27 +1819,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/@js-temporal/polyfill": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@js-temporal/polyfill/-/polyfill-0.3.0.tgz", - "integrity": "sha512-cxxxis19j0WvK3+kUwKrXeXaDBaWxLeRfKqlVz7g50Cly6UgGs2p3wovH9zjtZ4TtjYHDR4De/880+aalduDZQ==", - "dependencies": { - "big-integer": "^1.6.51", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@ljharb/through": { "version": "2.3.13", "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", @@ -2031,15 +1839,6 @@ "node": ">=8" } }, - "node_modules/@microsoft/durabletask-js": { - "version": "0.1.0-alpha.2", - "resolved": "https://registry.npmjs.org/@microsoft/durabletask-js/-/durabletask-js-0.1.0-alpha.2.tgz", - "integrity": "sha512-EiUgOyT05JQ9/M/InjTKdXs5Y1XxdXRczb6nizceJglXr8S/myxMnQHDV1QRASxroFCoTyKiDHU6uAq4Cpe/LQ==", - "dependencies": { - "@grpc/grpc-js": "^1.8.14", - "google-protobuf": "^3.21.2" - } - }, "node_modules/@microsoft/microsoft-graph-client": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-3.0.7.tgz", @@ -2407,60 +2206,6 @@ "node": ">=14" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -2554,6 +2299,7 @@ "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -2563,6 +2309,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -2603,6 +2350,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -2614,6 +2362,7 @@ "version": "4.19.1", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.1.tgz", "integrity": "sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA==", + "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -2621,11 +2370,6 @@ "@types/send": "*" } }, - "node_modules/@types/google-protobuf": { - "version": "3.15.12", - "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz", - "integrity": "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==" - }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -2638,7 +2382,8 @@ "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", @@ -2680,15 +2425,6 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "node_modules/@types/jsonwebtoken": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", - "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", - "dependencies": { - "@types/ms": "*", - "@types/node": "*" - } - }, "node_modules/@types/methods": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", @@ -2698,39 +2434,29 @@ "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true }, "node_modules/@types/node": { "version": "20.12.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, - "node_modules/@types/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" - } - }, "node_modules/@types/qs": { "version": "6.9.15", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true }, "node_modules/@types/semver": { "version": "7.5.8", @@ -2742,6 +2468,7 @@ "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -2751,6 +2478,7 @@ "version": "1.15.7", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -3288,6 +3016,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -3543,14 +3272,6 @@ "node": ">=6.0.0" } }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "engines": { - "node": ">=0.6" - } - }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -3991,6 +3712,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -4004,6 +3726,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4336,17 +4059,6 @@ "node": ">=8" } }, - "node_modules/delay": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", - "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -4486,7 +4198,8 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/encodeurl": { "version": "1.0.2", @@ -4552,6 +4265,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, "engines": { "node": ">=6" } @@ -4907,24 +4621,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express-jwt": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/express-jwt/-/express-jwt-8.5.1.tgz", - "integrity": "sha512-Dv6QjDLpR2jmdb8M6XQXiCcpEom7mK8TOqnr0/TngDKsG2DHVkO8+XnVxkJVN7BuS1I3OrGw6N8j5DaaGgkDRQ==", - "dependencies": { - "@types/jsonwebtoken": "^9", - "express-unless": "^2.1.3", - "jsonwebtoken": "^9.0.0" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/express-unless": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/express-unless/-/express-unless-2.1.3.tgz", - "integrity": "sha512-wj4tLMyCVYuIIKHGt0FhCtIViBcwzWejX0EjNxveAa6dG+0XBCQhMbx+PnkLkFCxLC69qoFrxds4pIyL88inaQ==" - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -4991,40 +4687,11 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/fast-printf": { - "version": "1.6.10", - "resolved": "https://registry.npmjs.org/fast-printf/-/fast-printf-1.6.10.tgz", - "integrity": "sha512-GwTgG9O4FVIdShhbVF3JxOgSBY2+ePGsu2V/UONgoCPzF9VY6ZdBMKsHKCYQHZwNk3qNouUolRDsgVxcVA5G1w==", - "engines": { - "node": ">=10.0" - } - }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, - "node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -5406,6 +5073,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -5524,11 +5192,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/google-protobuf": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", - "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==" - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -5655,31 +5318,6 @@ "node": ">= 14" } }, - "node_modules/http-terminator": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/http-terminator/-/http-terminator-3.2.0.tgz", - "integrity": "sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g==", - "dependencies": { - "delay": "^5.0.0", - "p-wait-for": "^3.2.0", - "roarr": "^7.0.4", - "type-fest": "^2.3.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/http-terminator/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/https-proxy-agent": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", @@ -5900,6 +5538,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "engines": { "node": ">=8" } @@ -6771,14 +6410,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jose": { - "version": "4.15.9", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", - "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6894,22 +6525,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/jwks-rsa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.1.0.tgz", - "integrity": "sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==", - "dependencies": { - "@types/express": "^4.17.17", - "@types/jsonwebtoken": "^9.0.2", - "debug": "^4.3.4", - "jose": "^4.14.6", - "limiter": "^1.1.5", - "lru-memoizer": "^2.2.0" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/jws": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", @@ -6959,11 +6574,6 @@ "node": ">= 0.8.0" } }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -6999,11 +6609,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -7086,31 +6691,6 @@ "yallist": "^3.0.2" } }, - "node_modules/lru-memoizer": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz", - "integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==", - "dependencies": { - "lodash.clonedeep": "^4.5.0", - "lru-cache": "6.0.0" - } - }, - "node_modules/lru-memoizer/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lru-memoizer/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/magic-string": { "version": "0.30.5", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", @@ -7681,14 +7261,6 @@ "node": ">=0.10.0" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -7719,17 +7291,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -7739,20 +7300,6 @@ "node": ">=6" } }, - "node_modules/p-wait-for": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", - "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", - "dependencies": { - "p-timeout": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pako": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", @@ -8145,29 +7692,6 @@ "node": ">= 6" } }, - "node_modules/protobufjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", - "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -8359,6 +7883,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -8517,19 +8042,6 @@ "node": ">=8" } }, - "node_modules/roarr": { - "version": "7.21.1", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-7.21.1.tgz", - "integrity": "sha512-3niqt5bXFY1InKU8HKWqqYTYjtrBaxBMnXELXCXUYgtNYGUtZM5rB46HIC430AyacL95iEniGf7RgqsesykLmQ==", - "dependencies": { - "fast-printf": "^1.6.9", - "safe-stable-stringify": "^2.4.3", - "semver-compare": "^1.0.0" - }, - "engines": { - "node": ">=18.0" - } - }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -8595,14 +8107,6 @@ "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", "optional": true }, - "node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "engines": { - "node": ">=10" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -8668,11 +8172,6 @@ "node": ">=10" } }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" - }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -8993,6 +8492,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9021,6 +8521,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9071,11 +8572,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" - }, "node_modules/superagent": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", @@ -9622,7 +9118,8 @@ "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true }, "node_modules/universalify": { "version": "2.0.1", @@ -9966,6 +9463,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, "engines": { "node": ">=10" } @@ -9980,6 +9478,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -9997,6 +9496,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, "engines": { "node": ">=12" } diff --git a/package.json b/package.json index 3beffe2..67e4fba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@noahspan/noahspan-modules", - "version": "0.6.2", + "version": "0.9.2", "description": "", "author": "", "license": "UNLICENSED", @@ -24,23 +24,18 @@ "test:e2e": "jest --config ./test/jest-e2e.json" }, "dependencies": { - "@azure/app-configuration": "^1.6.0", - "@azure/data-tables": "^13.2.2", "@azure/identity": "^4.2.0", "@azure/msal-node": "^2.9.2", - "@dapr/dapr": "^3.4.1", "@microsoft/microsoft-graph-client": "^3.0.7", "@nestjs/common": "^10.0.0", "@nestjs/core": "^10.0.0", "@nestjs/passport": "^10.0.3", "@nestjs/platform-express": "^10.0.0", "axios": "^1.7.2", - "express-jwt": "^8.5.1", - "jwks-rsa": "^3.1.0", "passport": "^0.7.0", "passport-azure-ad": "^4.3.5", "passport-jwt": "^4.0.1", - "reflect-metadata": "^0.2.0", + "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1" }, "devDependencies": {