mirror of
https://github.com/docmost/docmost.git
synced 2026-05-08 07:13:06 +08:00
Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b43de81013 | |||
| 6659adc7fe | |||
| 24adff9679 | |||
| e960b8c1a9 | |||
| 1958067110 | |||
| 3e519ebcd8 | |||
| 07cd650205 | |||
| 949d782a28 | |||
| 295d4325bf | |||
| 40a40bb3c7 | |||
| bc1579b022 | |||
| 85b3073681 | |||
| 4af3a54649 | |||
| c4c169b17a | |||
| a0536d852f | |||
| f12f93b373 | |||
| 35dcd5f254 | |||
| 9496ec9b57 | |||
| 5ace7616d0 | |||
| ce6a05ab66 | |||
| 66773dfaca |
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "client",
|
"name": "client",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.2.3",
|
"version": "0.2.4",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build",
|
||||||
|
|||||||
@@ -4,11 +4,7 @@ import { useNavigate } from "react-router-dom";
|
|||||||
import { useAtom } from "jotai";
|
import { useAtom } from "jotai";
|
||||||
import { authTokensAtom } from "@/features/auth/atoms/auth-tokens-atom";
|
import { authTokensAtom } from "@/features/auth/atoms/auth-tokens-atom";
|
||||||
import { currentUserAtom } from "@/features/user/atoms/current-user-atom";
|
import { currentUserAtom } from "@/features/user/atoms/current-user-atom";
|
||||||
import {
|
import { ILogin, ISetupWorkspace } from "@/features/auth/types/auth.types";
|
||||||
ILogin,
|
|
||||||
IRegister,
|
|
||||||
ISetupWorkspace,
|
|
||||||
} from "@/features/auth/types/auth.types";
|
|
||||||
import { notifications } from "@mantine/notifications";
|
import { notifications } from "@mantine/notifications";
|
||||||
import { IAcceptInvite } from "@/features/workspace/types/workspace.types.ts";
|
import { IAcceptInvite } from "@/features/workspace/types/workspace.types.ts";
|
||||||
import { acceptInvitation } from "@/features/workspace/services/workspace-service.ts";
|
import { acceptInvitation } from "@/features/workspace/services/workspace-service.ts";
|
||||||
@@ -49,7 +45,6 @@ export default function useAuth() {
|
|||||||
const res = await acceptInvitation(data);
|
const res = await acceptInvitation(data);
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
|
|
||||||
console.log(res);
|
|
||||||
setAuthToken(res.tokens);
|
setAuthToken(res.tokens);
|
||||||
|
|
||||||
navigate(APP_ROUTE.HOME);
|
navigate(APP_ROUTE.HOME);
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
import axios, { AxiosInstance } from "axios";
|
import axios, { AxiosInstance } from "axios";
|
||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import Routes from "@/lib/app-route.ts";
|
import Routes from "@/lib/app-route.ts";
|
||||||
import { getBackendUrl } from "@/lib/config.ts";
|
|
||||||
|
|
||||||
const api: AxiosInstance = axios.create({
|
const api: AxiosInstance = axios.create({
|
||||||
baseURL: getBackendUrl(),
|
baseURL: "/api",
|
||||||
withCredentials: true,
|
withCredentials: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -27,7 +26,7 @@ api.interceptors.request.use(
|
|||||||
},
|
},
|
||||||
(error) => {
|
(error) => {
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
},
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
api.interceptors.response.use(
|
api.interceptors.response.use(
|
||||||
@@ -68,7 +67,7 @@ api.interceptors.response.use(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
},
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
function redirectToLogin() {
|
function redirectToLogin() {
|
||||||
|
|||||||
@@ -19,5 +19,13 @@ export default defineConfig(({ mode }) => {
|
|||||||
"@": "/src",
|
"@": "/src",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
server: {
|
||||||
|
proxy: {
|
||||||
|
"/api": {
|
||||||
|
target: APP_URL,
|
||||||
|
changeOrigin: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "server",
|
"name": "server",
|
||||||
"version": "0.2.3",
|
"version": "0.2.4",
|
||||||
"description": "",
|
"description": "",
|
||||||
"author": "",
|
"author": "",
|
||||||
"private": true,
|
"private": true,
|
||||||
@@ -44,6 +44,7 @@
|
|||||||
"@nestjs/passport": "^10.0.3",
|
"@nestjs/passport": "^10.0.3",
|
||||||
"@nestjs/platform-fastify": "^10.3.9",
|
"@nestjs/platform-fastify": "^10.3.9",
|
||||||
"@nestjs/platform-socket.io": "^10.3.9",
|
"@nestjs/platform-socket.io": "^10.3.9",
|
||||||
|
"@nestjs/terminus": "^10.2.3",
|
||||||
"@nestjs/websockets": "^10.3.9",
|
"@nestjs/websockets": "^10.3.9",
|
||||||
"@react-email/components": "0.0.19",
|
"@react-email/components": "0.0.19",
|
||||||
"@react-email/render": "^0.0.15",
|
"@react-email/render": "^0.0.15",
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { MailModule } from './integrations/mail/mail.module';
|
|||||||
import { QueueModule } from './integrations/queue/queue.module';
|
import { QueueModule } from './integrations/queue/queue.module';
|
||||||
import { StaticModule } from './integrations/static/static.module';
|
import { StaticModule } from './integrations/static/static.module';
|
||||||
import { EventEmitterModule } from '@nestjs/event-emitter';
|
import { EventEmitterModule } from '@nestjs/event-emitter';
|
||||||
|
import { HealthModule } from './integrations/health/health.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -21,6 +22,7 @@ import { EventEmitterModule } from '@nestjs/event-emitter';
|
|||||||
WsModule,
|
WsModule,
|
||||||
QueueModule,
|
QueueModule,
|
||||||
StaticModule,
|
StaticModule,
|
||||||
|
HealthModule,
|
||||||
StorageModule.forRootAsync({
|
StorageModule.forRootAsync({
|
||||||
imports: [EnvironmentModule],
|
imports: [EnvironmentModule],
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -16,7 +16,15 @@ export class TransformHttpResponseInterceptor<T>
|
|||||||
intercept(
|
intercept(
|
||||||
context: ExecutionContext,
|
context: ExecutionContext,
|
||||||
next: CallHandler<T>,
|
next: CallHandler<T>,
|
||||||
): Observable<Response<T>> {
|
): Observable<Response<T> | any> {
|
||||||
|
const request = context.switchToHttp().getRequest();
|
||||||
|
const path = request.url;
|
||||||
|
|
||||||
|
// Skip interceptor for the /api/health path
|
||||||
|
if (path === '/api/health') {
|
||||||
|
return next.handle();
|
||||||
|
}
|
||||||
|
|
||||||
return next.handle().pipe(
|
return next.handle().pipe(
|
||||||
map((data) => {
|
map((data) => {
|
||||||
const status = context.switchToHttp().getResponse().statusCode;
|
const status = context.switchToHttp().getResponse().statusCode;
|
||||||
|
|||||||
@@ -34,7 +34,10 @@ export class CoreModule implements NestModule {
|
|||||||
configure(consumer: MiddlewareConsumer) {
|
configure(consumer: MiddlewareConsumer) {
|
||||||
consumer
|
consumer
|
||||||
.apply(DomainMiddleware)
|
.apply(DomainMiddleware)
|
||||||
.exclude({ path: 'auth/setup', method: RequestMethod.POST })
|
.exclude(
|
||||||
|
{ path: 'auth/setup', method: RequestMethod.POST },
|
||||||
|
{ path: 'health', method: RequestMethod.GET },
|
||||||
|
)
|
||||||
.forRoutes('*');
|
.forRoutes('*');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ types.setTypeParser(types.builtins.INT8, (val) => Number(val));
|
|||||||
dialect: new PostgresDialect({
|
dialect: new PostgresDialect({
|
||||||
pool: new Pool({
|
pool: new Pool({
|
||||||
connectionString: environmentService.getDatabaseURL(),
|
connectionString: environmentService.getDatabaseURL(),
|
||||||
|
}).on('error', (err) => {
|
||||||
|
console.error('Database error:', err.message);
|
||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
plugins: [new CamelCasePlugin()],
|
plugins: [new CamelCasePlugin()],
|
||||||
@@ -102,7 +104,7 @@ export class DatabaseModule implements OnModuleDestroy, OnApplicationBootstrap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async establishConnection() {
|
async establishConnection() {
|
||||||
const retryAttempts = 10;
|
const retryAttempts = 15;
|
||||||
const retryDelay = 3000;
|
const retryDelay = 3000;
|
||||||
|
|
||||||
this.logger.log('Establishing database connection');
|
this.logger.log('Establishing database connection');
|
||||||
|
|||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
import { type Kysely } from 'kysely';
|
||||||
|
|
||||||
|
export async function up(db: Kysely<any>): Promise<void> {
|
||||||
|
await db.schema.dropIndex('pages_slug_id_idx').ifExists().execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function down(db: Kysely<any>): Promise<void> {}
|
||||||
@@ -6,15 +6,11 @@ import { hashPassword } from '../../../common/helpers';
|
|||||||
import { dbOrTx } from '@docmost/db/utils';
|
import { dbOrTx } from '@docmost/db/utils';
|
||||||
import {
|
import {
|
||||||
InsertableUser,
|
InsertableUser,
|
||||||
Space,
|
|
||||||
UpdatableUser,
|
UpdatableUser,
|
||||||
User,
|
User,
|
||||||
} from '@docmost/db/types/entity.types';
|
} from '@docmost/db/types/entity.types';
|
||||||
import { PaginationOptions } from '../../pagination/pagination-options';
|
import { PaginationOptions } from '../../pagination/pagination-options';
|
||||||
import {
|
import { executeWithPagination } from '@docmost/db/pagination/pagination';
|
||||||
executeWithPagination,
|
|
||||||
PaginationResult,
|
|
||||||
} from '@docmost/db/pagination/pagination';
|
|
||||||
import { sql } from 'kysely';
|
import { sql } from 'kysely';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
@@ -66,7 +62,7 @@ export class UserRepo {
|
|||||||
.selectFrom('users')
|
.selectFrom('users')
|
||||||
.select(this.baseFields)
|
.select(this.baseFields)
|
||||||
.$if(includePassword, (qb) => qb.select('password'))
|
.$if(includePassword, (qb) => qb.select('password'))
|
||||||
.where('email', '=', email)
|
.where(sql`LOWER(email)`, '=', sql`LOWER(${email})`)
|
||||||
.where('workspaceId', '=', workspaceId)
|
.where('workspaceId', '=', workspaceId)
|
||||||
.executeTakeFirst();
|
.executeTakeFirst();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import { Controller, Get } from '@nestjs/common';
|
||||||
|
import { HealthCheck, HealthCheckService } from '@nestjs/terminus';
|
||||||
|
import { PostgresHealthIndicator } from './postgres.health';
|
||||||
|
import { RedisHealthIndicator } from './redis.health';
|
||||||
|
|
||||||
|
@Controller('health')
|
||||||
|
export class HealthController {
|
||||||
|
constructor(
|
||||||
|
private health: HealthCheckService,
|
||||||
|
private postgres: PostgresHealthIndicator,
|
||||||
|
private redis: RedisHealthIndicator,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
@Get()
|
||||||
|
@HealthCheck()
|
||||||
|
async check() {
|
||||||
|
return this.health.check([
|
||||||
|
() => this.postgres.pingCheck('database'),
|
||||||
|
() => this.redis.pingCheck('redis'),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import { Global, Module } from '@nestjs/common';
|
||||||
|
import { HealthController } from './health.controller';
|
||||||
|
import { TerminusModule } from '@nestjs/terminus';
|
||||||
|
import { PostgresHealthIndicator } from './postgres.health';
|
||||||
|
import { RedisHealthIndicator } from './redis.health';
|
||||||
|
|
||||||
|
@Global()
|
||||||
|
@Module({
|
||||||
|
controllers: [HealthController],
|
||||||
|
providers: [PostgresHealthIndicator, RedisHealthIndicator],
|
||||||
|
imports: [TerminusModule],
|
||||||
|
})
|
||||||
|
export class HealthModule {}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
import { InjectKysely } from 'nestjs-kysely';
|
||||||
|
import {
|
||||||
|
HealthCheckError,
|
||||||
|
HealthIndicator,
|
||||||
|
HealthIndicatorResult,
|
||||||
|
} from '@nestjs/terminus';
|
||||||
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
|
import { sql } from 'kysely';
|
||||||
|
import { KyselyDB } from '@docmost/db/types/kysely.types';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class PostgresHealthIndicator extends HealthIndicator {
|
||||||
|
private readonly logger = new Logger(PostgresHealthIndicator.name);
|
||||||
|
|
||||||
|
constructor(@InjectKysely() private readonly db: KyselyDB) {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
async pingCheck(key: string): Promise<HealthIndicatorResult> {
|
||||||
|
try {
|
||||||
|
await sql`SELECT 1=1`.execute(this.db);
|
||||||
|
return this.getStatus(key, true);
|
||||||
|
} catch (e) {
|
||||||
|
this.logger.error(JSON.stringify(e));
|
||||||
|
throw new HealthCheckError(
|
||||||
|
`${key} is not available`,
|
||||||
|
this.getStatus(key, false),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import {
|
||||||
|
HealthCheckError,
|
||||||
|
HealthIndicator,
|
||||||
|
HealthIndicatorResult,
|
||||||
|
} from '@nestjs/terminus';
|
||||||
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
|
import { EnvironmentService } from '../environment/environment.service';
|
||||||
|
import { Redis } from 'ioredis';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class RedisHealthIndicator extends HealthIndicator {
|
||||||
|
private readonly logger = new Logger(RedisHealthIndicator.name);
|
||||||
|
|
||||||
|
constructor(private environmentService: EnvironmentService) {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
async pingCheck(key: string): Promise<HealthIndicatorResult> {
|
||||||
|
try {
|
||||||
|
const redis = new Redis(this.environmentService.getRedisUrl(), {
|
||||||
|
maxRetriesPerRequest: 15,
|
||||||
|
});
|
||||||
|
|
||||||
|
await redis.ping();
|
||||||
|
return this.getStatus(key, true);
|
||||||
|
} catch (e) {
|
||||||
|
this.logger.error(e);
|
||||||
|
throw new HealthCheckError(
|
||||||
|
`${key} is not available`,
|
||||||
|
this.getStatus(key, false),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -34,9 +34,6 @@ export class S3Driver implements StorageDriver {
|
|||||||
});
|
});
|
||||||
|
|
||||||
await this.s3Client.send(command);
|
await this.s3Client.send(command);
|
||||||
// we can get the path from location
|
|
||||||
|
|
||||||
console.log(`File uploaded successfully: ${filePath}`);
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw new Error(`Failed to upload file: ${(err as Error).message}`);
|
throw new Error(`Failed to upload file: ${(err as Error).message}`);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,20 +41,34 @@ export const storageDriverConfigProvider = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
case StorageOption.S3:
|
case StorageOption.S3:
|
||||||
return {
|
const s3Config = {
|
||||||
driver,
|
driver,
|
||||||
config: {
|
config: {
|
||||||
region: environmentService.getAwsS3Region(),
|
region: environmentService.getAwsS3Region(),
|
||||||
endpoint: environmentService.getAwsS3Endpoint(),
|
endpoint: environmentService.getAwsS3Endpoint(),
|
||||||
bucket: environmentService.getAwsS3Bucket(),
|
bucket: environmentService.getAwsS3Bucket(),
|
||||||
baseUrl: environmentService.getAwsS3Url(),
|
baseUrl: environmentService.getAwsS3Url(),
|
||||||
credentials: {
|
credentials: undefined,
|
||||||
accessKeyId: environmentService.getAwsS3AccessKeyId(),
|
|
||||||
secretAccessKey: environmentService.getAwsS3SecretAccessKey(),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This makes use of AWS_S3_ACCESS_KEY_ID and AWS_S3_SECRET_ACCESS_KEY if present,
|
||||||
|
* If not present, it makes it lenient for the AWS SDK to use
|
||||||
|
* AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY if they are present in the environment
|
||||||
|
*/
|
||||||
|
if (
|
||||||
|
environmentService.getAwsS3AccessKeyId() ||
|
||||||
|
environmentService.getAwsS3SecretAccessKey()
|
||||||
|
) {
|
||||||
|
s3Config.config.credentials = {
|
||||||
|
accessKeyId: environmentService.getAwsS3AccessKeyId(),
|
||||||
|
secretAccessKey: environmentService.getAwsS3SecretAccessKey(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return s3Config;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new Error(`Unknown storage driver: ${driver}`);
|
throw new Error(`Unknown storage driver: ${driver}`);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,17 @@
|
|||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable, Logger } from '@nestjs/common';
|
||||||
import { STORAGE_DRIVER_TOKEN } from './constants/storage.constants';
|
import { STORAGE_DRIVER_TOKEN } from './constants/storage.constants';
|
||||||
import { StorageDriver } from './interfaces';
|
import { StorageDriver } from './interfaces';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class StorageService {
|
export class StorageService {
|
||||||
|
private readonly logger = new Logger(StorageService.name);
|
||||||
constructor(
|
constructor(
|
||||||
@Inject(STORAGE_DRIVER_TOKEN) private storageDriver: StorageDriver,
|
@Inject(STORAGE_DRIVER_TOKEN) private storageDriver: StorageDriver,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
async upload(filePath: string, fileContent: Buffer | any) {
|
async upload(filePath: string, fileContent: Buffer | any) {
|
||||||
await this.storageDriver.upload(filePath, fileContent);
|
await this.storageDriver.upload(filePath, fileContent);
|
||||||
|
this.logger.debug(`File uploaded successfully. Path: ${filePath}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
async read(filePath: string): Promise<Buffer> {
|
async read(filePath: string): Promise<Buffer> {
|
||||||
|
|||||||
+3
-10
@@ -40,7 +40,8 @@ async function bootstrap() {
|
|||||||
.addHook('preHandler', function (req, reply, done) {
|
.addHook('preHandler', function (req, reply, done) {
|
||||||
if (
|
if (
|
||||||
req.originalUrl.startsWith('/api') &&
|
req.originalUrl.startsWith('/api') &&
|
||||||
!req.originalUrl.startsWith('/api/auth/setup')
|
!req.originalUrl.startsWith('/api/auth/setup') &&
|
||||||
|
!req.originalUrl.startsWith('/api/health')
|
||||||
) {
|
) {
|
||||||
if (!req.raw?.['workspaceId']) {
|
if (!req.raw?.['workspaceId']) {
|
||||||
throw new NotFoundException('Workspace not found');
|
throw new NotFoundException('Workspace not found');
|
||||||
@@ -59,15 +60,7 @@ async function bootstrap() {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (process.env.NODE_ENV !== 'production') {
|
app.enableCors();
|
||||||
// make development easy
|
|
||||||
app.enableCors({
|
|
||||||
origin: ['http://localhost:5173'],
|
|
||||||
credentials: true,
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
app.enableCors();
|
|
||||||
}
|
|
||||||
|
|
||||||
app.useGlobalInterceptors(new TransformHttpResponseInterceptor());
|
app.useGlobalInterceptors(new TransformHttpResponseInterceptor());
|
||||||
app.enableShutdownHooks();
|
app.enableShutdownHooks();
|
||||||
|
|||||||
+8
-6
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "docmost",
|
"name": "docmost",
|
||||||
"homepage": "https://docmost.com",
|
"homepage": "https://docmost.com",
|
||||||
"version": "0.2.3",
|
"version": "0.2.4",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nx run-many -t build",
|
"build": "nx run-many -t build",
|
||||||
@@ -12,14 +12,15 @@
|
|||||||
"client:dev": "nx run client:dev",
|
"client:dev": "nx run client:dev",
|
||||||
"server:dev": "nx run server:start:dev",
|
"server:dev": "nx run server:start:dev",
|
||||||
"server:start": "nx run server:start:prod",
|
"server:start": "nx run server:start:prod",
|
||||||
"email:dev": "nx run @docmost/transactional:dev"
|
"email:dev": "nx run @docmost/transactional:dev",
|
||||||
|
"dev": "pnpm concurrently -n \"frontend,backend\" -c \"cyan,green\" \"pnpm run client:dev\" \"pnpm run server:dev\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docmost/editor-ext": "workspace:*",
|
"@docmost/editor-ext": "workspace:*",
|
||||||
"@hocuspocus/extension-redis": "^2.13.2",
|
"@hocuspocus/extension-redis": "^2.13.5",
|
||||||
"@hocuspocus/provider": "^2.13.2",
|
"@hocuspocus/provider": "^2.13.5",
|
||||||
"@hocuspocus/server": "^2.13.2",
|
"@hocuspocus/server": "^2.13.5",
|
||||||
"@hocuspocus/transformer": "^2.13.2",
|
"@hocuspocus/transformer": "^2.13.5",
|
||||||
"@sindresorhus/slugify": "^2.2.1",
|
"@sindresorhus/slugify": "^2.2.1",
|
||||||
"@tiptap/core": "^2.4.0",
|
"@tiptap/core": "^2.4.0",
|
||||||
"@tiptap/extension-code-block": "^2.4.0",
|
"@tiptap/extension-code-block": "^2.4.0",
|
||||||
@@ -66,6 +67,7 @@
|
|||||||
"@nx/js": "19.3.2",
|
"@nx/js": "19.3.2",
|
||||||
"@types/uuid": "^10.0.0",
|
"@types/uuid": "^10.0.0",
|
||||||
"nx": "19.3.2",
|
"nx": "19.3.2",
|
||||||
|
"concurrently": "^8.2.2",
|
||||||
"tsx": "^4.15.7"
|
"tsx": "^4.15.7"
|
||||||
},
|
},
|
||||||
"workspaces": {
|
"workspaces": {
|
||||||
|
|||||||
Generated
+172
-26
@@ -12,17 +12,17 @@ importers:
|
|||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:packages/editor-ext
|
version: link:packages/editor-ext
|
||||||
'@hocuspocus/extension-redis':
|
'@hocuspocus/extension-redis':
|
||||||
specifier: ^2.13.2
|
specifier: ^2.13.5
|
||||||
version: 2.13.2(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)
|
version: 2.13.5(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)
|
||||||
'@hocuspocus/provider':
|
'@hocuspocus/provider':
|
||||||
specifier: ^2.13.2
|
specifier: ^2.13.5
|
||||||
version: 2.13.2(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)
|
version: 2.13.5(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)
|
||||||
'@hocuspocus/server':
|
'@hocuspocus/server':
|
||||||
specifier: ^2.13.2
|
specifier: ^2.13.5
|
||||||
version: 2.13.2(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)
|
version: 2.13.5(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)
|
||||||
'@hocuspocus/transformer':
|
'@hocuspocus/transformer':
|
||||||
specifier: ^2.13.2
|
specifier: ^2.13.5
|
||||||
version: 2.13.2(@tiptap/pm@2.4.0)(y-prosemirror@1.2.3(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.32.7)(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18))(yjs@13.6.18)
|
version: 2.13.5(@tiptap/pm@2.4.0)(y-prosemirror@1.2.3(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.32.7)(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18))(yjs@13.6.18)
|
||||||
'@sindresorhus/slugify':
|
'@sindresorhus/slugify':
|
||||||
specifier: ^2.2.1
|
specifier: ^2.2.1
|
||||||
version: 2.2.1
|
version: 2.2.1
|
||||||
@@ -153,6 +153,9 @@ importers:
|
|||||||
'@types/uuid':
|
'@types/uuid':
|
||||||
specifier: ^10.0.0
|
specifier: ^10.0.0
|
||||||
version: 10.0.0
|
version: 10.0.0
|
||||||
|
concurrently:
|
||||||
|
specifier: ^8.2.2
|
||||||
|
version: 8.2.2
|
||||||
nx:
|
nx:
|
||||||
specifier: 19.3.2
|
specifier: 19.3.2
|
||||||
version: 19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))
|
version: 19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))
|
||||||
@@ -370,6 +373,9 @@ importers:
|
|||||||
'@nestjs/platform-socket.io':
|
'@nestjs/platform-socket.io':
|
||||||
specifier: ^10.3.9
|
specifier: ^10.3.9
|
||||||
version: 10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.3.9)(rxjs@7.8.1)
|
version: 10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.3.9)(rxjs@7.8.1)
|
||||||
|
'@nestjs/terminus':
|
||||||
|
specifier: ^10.2.3
|
||||||
|
version: 10.2.3(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.3.9)(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
'@nestjs/websockets':
|
'@nestjs/websockets':
|
||||||
specifier: ^10.3.9
|
specifier: ^10.3.9
|
||||||
version: 10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.9)(@nestjs/platform-socket.io@10.3.9)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
version: 10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.9)(@nestjs/platform-socket.io@10.3.9)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
@@ -1932,29 +1938,29 @@ packages:
|
|||||||
'@floating-ui/utils@0.2.1':
|
'@floating-ui/utils@0.2.1':
|
||||||
resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==}
|
resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==}
|
||||||
|
|
||||||
'@hocuspocus/common@2.13.2':
|
'@hocuspocus/common@2.13.5':
|
||||||
resolution: {integrity: sha512-NMsXx/Dl9xu1KlhNbGzLYLOjKtUOVmU+zA/br+EA4DhNDEtGWvHAmqY5r9SBTr2mGtGJagt+GEqZydSzBUFj4g==}
|
resolution: {integrity: sha512-8D9FzhZFlt0WsgXw5yT2zwSxi6z9d4V2vUz6co2vo3Cj+Y2bvGZsdDiTvU/MerGcCLME5k/w6PwLPojLYH/4pg==}
|
||||||
|
|
||||||
'@hocuspocus/extension-redis@2.13.2':
|
'@hocuspocus/extension-redis@2.13.5':
|
||||||
resolution: {integrity: sha512-QZJKMcMDl3KqDKrwJ65a47aB6scNcmhUN3AqoaeDy8gE3Z3RHo8GCGNcrZCy7MT/+U4KzgRl2rbdJLHciGsAew==}
|
resolution: {integrity: sha512-2wShUgOVXOUd2jd+ncmK3Wd/PUUwrIWNp17XZg/YD6L6kNSNvqPKo0vPmaT4uCekhVO6qPYX3fsLgX2j2hMyUQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
y-protocols: ^1.0.6
|
y-protocols: ^1.0.6
|
||||||
yjs: ^13.6.8
|
yjs: ^13.6.8
|
||||||
|
|
||||||
'@hocuspocus/provider@2.13.2':
|
'@hocuspocus/provider@2.13.5':
|
||||||
resolution: {integrity: sha512-Pi+b8gcXHomSDRzohbmVW4dwo5OIqEBoLVrsuEG/pCCS13gBAeUCKCxfrl0q5XCNhK1nu3/j6UW9lxuExqiY+g==}
|
resolution: {integrity: sha512-G3S0OiFSYkmbOwnbhV7FyJs4OBqB/+1YT9c44Ujux1RKowGm5H8+0p3FUHfXwd/3v9V0jE+E1FnFKoGonJSQwA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
y-protocols: ^1.0.6
|
y-protocols: ^1.0.6
|
||||||
yjs: ^13.6.8
|
yjs: ^13.6.8
|
||||||
|
|
||||||
'@hocuspocus/server@2.13.2':
|
'@hocuspocus/server@2.13.5':
|
||||||
resolution: {integrity: sha512-crUuMJaK8Ql6zC9x+N0kwKlHTZ2pXV7hG2yOQj5ieGxnQtX4uExU77yS9vji9R7w10YcPnkDwvwPMgeyWhwRfQ==}
|
resolution: {integrity: sha512-gDYax5ruaj30mMtFjq5+o5USXQD31hDOxBVU8eTAzezS6hpVllaP7HmM8iRda+UmQoeybHxzqsWAf74JCmYDug==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
y-protocols: ^1.0.6
|
y-protocols: ^1.0.6
|
||||||
yjs: ^13.6.8
|
yjs: ^13.6.8
|
||||||
|
|
||||||
'@hocuspocus/transformer@2.13.2':
|
'@hocuspocus/transformer@2.13.5':
|
||||||
resolution: {integrity: sha512-F6dCg3cCNB1QPXtkNvlYuVESTy5VJglNF6AbUAx1yh5zXRz9CMzxZs7tjVCdarZtjYmyu/dtYctub7uyA2RefA==}
|
resolution: {integrity: sha512-G5QWvV4K7lussF4lSWPFjtqSTZjiq1tkU4WEn1u8OdKQUF0GtfNcnrGWMlCeJdz5Ucpp4qJHWt4TTPI1Lpw/9Q==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@tiptap/pm': ^2.1.12
|
'@tiptap/pm': ^2.1.12
|
||||||
y-prosemirror: ^1.2.1
|
y-prosemirror: ^1.2.1
|
||||||
@@ -2289,6 +2295,54 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.2'
|
typescript: '>=4.8.2'
|
||||||
|
|
||||||
|
'@nestjs/terminus@10.2.3':
|
||||||
|
resolution: {integrity: sha512-iX7gXtAooePcyQqFt57aDke5MzgdkBeYgF5YsFNNFwOiAFdIQEhfv3PR0G+HlH9F6D7nBCDZt9U87Pks/qHijg==}
|
||||||
|
peerDependencies:
|
||||||
|
'@grpc/grpc-js': '*'
|
||||||
|
'@grpc/proto-loader': '*'
|
||||||
|
'@mikro-orm/core': '*'
|
||||||
|
'@mikro-orm/nestjs': '*'
|
||||||
|
'@nestjs/axios': ^1.0.0 || ^2.0.0 || ^3.0.0
|
||||||
|
'@nestjs/common': ^9.0.0 || ^10.0.0
|
||||||
|
'@nestjs/core': ^9.0.0 || ^10.0.0
|
||||||
|
'@nestjs/microservices': ^9.0.0 || ^10.0.0
|
||||||
|
'@nestjs/mongoose': ^9.0.0 || ^10.0.0
|
||||||
|
'@nestjs/sequelize': ^9.0.0 || ^10.0.0
|
||||||
|
'@nestjs/typeorm': ^9.0.0 || ^10.0.0
|
||||||
|
'@prisma/client': '*'
|
||||||
|
mongoose: '*'
|
||||||
|
reflect-metadata: 0.1.x || 0.2.x
|
||||||
|
rxjs: 7.x
|
||||||
|
sequelize: '*'
|
||||||
|
typeorm: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@grpc/grpc-js':
|
||||||
|
optional: true
|
||||||
|
'@grpc/proto-loader':
|
||||||
|
optional: true
|
||||||
|
'@mikro-orm/core':
|
||||||
|
optional: true
|
||||||
|
'@mikro-orm/nestjs':
|
||||||
|
optional: true
|
||||||
|
'@nestjs/axios':
|
||||||
|
optional: true
|
||||||
|
'@nestjs/microservices':
|
||||||
|
optional: true
|
||||||
|
'@nestjs/mongoose':
|
||||||
|
optional: true
|
||||||
|
'@nestjs/sequelize':
|
||||||
|
optional: true
|
||||||
|
'@nestjs/typeorm':
|
||||||
|
optional: true
|
||||||
|
'@prisma/client':
|
||||||
|
optional: true
|
||||||
|
mongoose:
|
||||||
|
optional: true
|
||||||
|
sequelize:
|
||||||
|
optional: true
|
||||||
|
typeorm:
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@nestjs/testing@10.3.9':
|
'@nestjs/testing@10.3.9':
|
||||||
resolution: {integrity: sha512-z24SdpZIRtYyM5s2vnu7rbBosXJY/KcAP7oJlwgFa/h/z/wg8gzyoKy5lhibH//OZNO+pYKajV5wczxuy5WeAg==}
|
resolution: {integrity: sha512-z24SdpZIRtYyM5s2vnu7rbBosXJY/KcAP7oJlwgFa/h/z/wg8gzyoKy5lhibH//OZNO+pYKajV5wczxuy5WeAg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -4164,6 +4218,9 @@ packages:
|
|||||||
ajv@8.12.0:
|
ajv@8.12.0:
|
||||||
resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
|
resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
|
||||||
|
|
||||||
|
ansi-align@3.0.1:
|
||||||
|
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
|
||||||
|
|
||||||
ansi-colors@4.1.3:
|
ansi-colors@4.1.3:
|
||||||
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
|
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -4349,6 +4406,10 @@ packages:
|
|||||||
bowser@2.11.0:
|
bowser@2.11.0:
|
||||||
resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
|
resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
|
||||||
|
|
||||||
|
boxen@5.1.2:
|
||||||
|
resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
brace-expansion@1.1.11:
|
brace-expansion@1.1.11:
|
||||||
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
|
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
|
||||||
|
|
||||||
@@ -4443,6 +4504,10 @@ packages:
|
|||||||
chardet@0.7.0:
|
chardet@0.7.0:
|
||||||
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
|
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
|
||||||
|
|
||||||
|
check-disk-space@3.4.0:
|
||||||
|
resolution: {integrity: sha512-drVkSqfwA+TvuEhFipiR1OC9boEGZL5RrWvVsOthdcvQNXyCCuKkEiTOTXZ7qxSf/GLwq4GvzfrQD/Wz325hgw==}
|
||||||
|
engines: {node: '>=16'}
|
||||||
|
|
||||||
chokidar@3.5.3:
|
chokidar@3.5.3:
|
||||||
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
|
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
|
||||||
engines: {node: '>= 8.10.0'}
|
engines: {node: '>= 8.10.0'}
|
||||||
@@ -4472,6 +4537,10 @@ packages:
|
|||||||
class-validator@0.14.1:
|
class-validator@0.14.1:
|
||||||
resolution: {integrity: sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==}
|
resolution: {integrity: sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==}
|
||||||
|
|
||||||
|
cli-boxes@2.2.1:
|
||||||
|
resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
cli-cursor@3.1.0:
|
cli-cursor@3.1.0:
|
||||||
resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
|
resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -4584,6 +4653,11 @@ packages:
|
|||||||
concat-map@0.0.1:
|
concat-map@0.0.1:
|
||||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||||
|
|
||||||
|
concurrently@8.2.2:
|
||||||
|
resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==}
|
||||||
|
engines: {node: ^14.13.0 || >=16.0.0}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
config-chain@1.1.13:
|
config-chain@1.1.13:
|
||||||
resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
|
resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
|
||||||
|
|
||||||
@@ -4686,6 +4760,10 @@ packages:
|
|||||||
dash-get@1.0.2:
|
dash-get@1.0.2:
|
||||||
resolution: {integrity: sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==}
|
resolution: {integrity: sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==}
|
||||||
|
|
||||||
|
date-fns@2.30.0:
|
||||||
|
resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
|
||||||
|
engines: {node: '>=0.11'}
|
||||||
|
|
||||||
date-fns@3.6.0:
|
date-fns@3.6.0:
|
||||||
resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==}
|
resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==}
|
||||||
|
|
||||||
@@ -7191,6 +7269,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
|
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
shell-quote@1.8.1:
|
||||||
|
resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
|
||||||
|
|
||||||
shelljs.exec@1.1.8:
|
shelljs.exec@1.1.8:
|
||||||
resolution: {integrity: sha512-vFILCw+lzUtiwBAHV8/Ex8JsFjelFMdhONIsgKNLgTzeRckp2AOYRQtHJE/9LhNvdMmE27AGtzWx0+DHpwIwSw==}
|
resolution: {integrity: sha512-vFILCw+lzUtiwBAHV8/Ex8JsFjelFMdhONIsgKNLgTzeRckp2AOYRQtHJE/9LhNvdMmE27AGtzWx0+DHpwIwSw==}
|
||||||
engines: {node: '>= 4.0.0'}
|
engines: {node: '>= 4.0.0'}
|
||||||
@@ -7275,6 +7356,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
|
resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
||||||
|
spawn-command@0.0.2:
|
||||||
|
resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==}
|
||||||
|
|
||||||
split2@4.2.0:
|
split2@4.2.0:
|
||||||
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
|
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
|
||||||
engines: {node: '>= 10.x'}
|
engines: {node: '>= 10.x'}
|
||||||
@@ -7608,6 +7692,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
|
resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
|
||||||
|
type-fest@0.20.2:
|
||||||
|
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
type-fest@0.21.3:
|
type-fest@0.21.3:
|
||||||
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
|
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@@ -7850,6 +7938,10 @@ packages:
|
|||||||
wide-align@1.1.5:
|
wide-align@1.1.5:
|
||||||
resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
|
resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
|
||||||
|
|
||||||
|
widest-line@3.1.0:
|
||||||
|
resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
wrap-ansi@6.2.0:
|
wrap-ansi@6.2.0:
|
||||||
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
|
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -9884,13 +9976,13 @@ snapshots:
|
|||||||
|
|
||||||
'@floating-ui/utils@0.2.1': {}
|
'@floating-ui/utils@0.2.1': {}
|
||||||
|
|
||||||
'@hocuspocus/common@2.13.2':
|
'@hocuspocus/common@2.13.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
lib0: 0.2.93
|
lib0: 0.2.93
|
||||||
|
|
||||||
'@hocuspocus/extension-redis@2.13.2(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)':
|
'@hocuspocus/extension-redis@2.13.5(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@hocuspocus/server': 2.13.2(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)
|
'@hocuspocus/server': 2.13.5(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)
|
||||||
ioredis: 4.28.5
|
ioredis: 4.28.5
|
||||||
kleur: 4.1.5
|
kleur: 4.1.5
|
||||||
lodash.debounce: 4.0.8
|
lodash.debounce: 4.0.8
|
||||||
@@ -9903,9 +9995,9 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
|
|
||||||
'@hocuspocus/provider@2.13.2(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)':
|
'@hocuspocus/provider@2.13.5(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@hocuspocus/common': 2.13.2
|
'@hocuspocus/common': 2.13.5
|
||||||
'@lifeomic/attempt': 3.0.3
|
'@lifeomic/attempt': 3.0.3
|
||||||
lib0: 0.2.93
|
lib0: 0.2.93
|
||||||
ws: 8.17.1
|
ws: 8.17.1
|
||||||
@@ -9915,9 +10007,9 @@ snapshots:
|
|||||||
- bufferutil
|
- bufferutil
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
|
|
||||||
'@hocuspocus/server@2.13.2(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)':
|
'@hocuspocus/server@2.13.5(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@hocuspocus/common': 2.13.2
|
'@hocuspocus/common': 2.13.5
|
||||||
async-lock: 1.4.1
|
async-lock: 1.4.1
|
||||||
kleur: 4.1.5
|
kleur: 4.1.5
|
||||||
lib0: 0.2.93
|
lib0: 0.2.93
|
||||||
@@ -9929,7 +10021,7 @@ snapshots:
|
|||||||
- bufferutil
|
- bufferutil
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
|
|
||||||
'@hocuspocus/transformer@2.13.2(@tiptap/pm@2.4.0)(y-prosemirror@1.2.3(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.32.7)(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18))(yjs@13.6.18)':
|
'@hocuspocus/transformer@2.13.5(@tiptap/pm@2.4.0)(y-prosemirror@1.2.3(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.32.7)(y-protocols@1.0.6(yjs@13.6.18))(yjs@13.6.18))(yjs@13.6.18)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tiptap/core': 2.4.0(@tiptap/pm@2.4.0)
|
'@tiptap/core': 2.4.0(@tiptap/pm@2.4.0)
|
||||||
'@tiptap/pm': 2.4.0
|
'@tiptap/pm': 2.4.0
|
||||||
@@ -10404,6 +10496,15 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- chokidar
|
- chokidar
|
||||||
|
|
||||||
|
'@nestjs/terminus@10.2.3(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.3.9)(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)(rxjs@7.8.1)':
|
||||||
|
dependencies:
|
||||||
|
'@nestjs/common': 10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
|
'@nestjs/core': 10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.3.9)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
|
boxen: 5.1.2
|
||||||
|
check-disk-space: 3.4.0
|
||||||
|
reflect-metadata: 0.2.2
|
||||||
|
rxjs: 7.8.1
|
||||||
|
|
||||||
'@nestjs/testing@10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.3.9)(reflect-metadata@0.2.2)(rxjs@7.8.1))':
|
'@nestjs/testing@10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.3.9)(reflect-metadata@0.2.2)(rxjs@7.8.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nestjs/common': 10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
'@nestjs/common': 10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
|
||||||
@@ -12466,6 +12567,10 @@ snapshots:
|
|||||||
require-from-string: 2.0.2
|
require-from-string: 2.0.2
|
||||||
uri-js: 4.4.1
|
uri-js: 4.4.1
|
||||||
|
|
||||||
|
ansi-align@3.0.1:
|
||||||
|
dependencies:
|
||||||
|
string-width: 4.2.3
|
||||||
|
|
||||||
ansi-colors@4.1.3: {}
|
ansi-colors@4.1.3: {}
|
||||||
|
|
||||||
ansi-escapes@4.3.2:
|
ansi-escapes@4.3.2:
|
||||||
@@ -12721,6 +12826,17 @@ snapshots:
|
|||||||
|
|
||||||
bowser@2.11.0: {}
|
bowser@2.11.0: {}
|
||||||
|
|
||||||
|
boxen@5.1.2:
|
||||||
|
dependencies:
|
||||||
|
ansi-align: 3.0.1
|
||||||
|
camelcase: 6.3.0
|
||||||
|
chalk: 4.1.2
|
||||||
|
cli-boxes: 2.2.1
|
||||||
|
string-width: 4.2.3
|
||||||
|
type-fest: 0.20.2
|
||||||
|
widest-line: 3.1.0
|
||||||
|
wrap-ansi: 7.0.0
|
||||||
|
|
||||||
brace-expansion@1.1.11:
|
brace-expansion@1.1.11:
|
||||||
dependencies:
|
dependencies:
|
||||||
balanced-match: 1.0.2
|
balanced-match: 1.0.2
|
||||||
@@ -12822,6 +12938,8 @@ snapshots:
|
|||||||
|
|
||||||
chardet@0.7.0: {}
|
chardet@0.7.0: {}
|
||||||
|
|
||||||
|
check-disk-space@3.4.0: {}
|
||||||
|
|
||||||
chokidar@3.5.3:
|
chokidar@3.5.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
anymatch: 3.1.3
|
anymatch: 3.1.3
|
||||||
@@ -12862,6 +12980,8 @@ snapshots:
|
|||||||
libphonenumber-js: 1.10.58
|
libphonenumber-js: 1.10.58
|
||||||
validator: 13.12.0
|
validator: 13.12.0
|
||||||
|
|
||||||
|
cli-boxes@2.2.1: {}
|
||||||
|
|
||||||
cli-cursor@3.1.0:
|
cli-cursor@3.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
restore-cursor: 3.1.0
|
restore-cursor: 3.1.0
|
||||||
@@ -12947,6 +13067,18 @@ snapshots:
|
|||||||
|
|
||||||
concat-map@0.0.1: {}
|
concat-map@0.0.1: {}
|
||||||
|
|
||||||
|
concurrently@8.2.2:
|
||||||
|
dependencies:
|
||||||
|
chalk: 4.1.2
|
||||||
|
date-fns: 2.30.0
|
||||||
|
lodash: 4.17.21
|
||||||
|
rxjs: 7.8.1
|
||||||
|
shell-quote: 1.8.1
|
||||||
|
spawn-command: 0.0.2
|
||||||
|
supports-color: 8.1.1
|
||||||
|
tree-kill: 1.2.2
|
||||||
|
yargs: 17.7.2
|
||||||
|
|
||||||
config-chain@1.1.13:
|
config-chain@1.1.13:
|
||||||
dependencies:
|
dependencies:
|
||||||
ini: 1.3.8
|
ini: 1.3.8
|
||||||
@@ -13053,6 +13185,10 @@ snapshots:
|
|||||||
|
|
||||||
dash-get@1.0.2: {}
|
dash-get@1.0.2: {}
|
||||||
|
|
||||||
|
date-fns@2.30.0:
|
||||||
|
dependencies:
|
||||||
|
'@babel/runtime': 7.23.7
|
||||||
|
|
||||||
date-fns@3.6.0: {}
|
date-fns@3.6.0: {}
|
||||||
|
|
||||||
debounce@2.0.0: {}
|
debounce@2.0.0: {}
|
||||||
@@ -15963,6 +16099,8 @@ snapshots:
|
|||||||
|
|
||||||
shebang-regex@3.0.0: {}
|
shebang-regex@3.0.0: {}
|
||||||
|
|
||||||
|
shell-quote@1.8.1: {}
|
||||||
|
|
||||||
shelljs.exec@1.1.8: {}
|
shelljs.exec@1.1.8: {}
|
||||||
|
|
||||||
shelljs@0.8.5:
|
shelljs@0.8.5:
|
||||||
@@ -16084,6 +16222,8 @@ snapshots:
|
|||||||
|
|
||||||
source-map@0.7.4: {}
|
source-map@0.7.4: {}
|
||||||
|
|
||||||
|
spawn-command@0.0.2: {}
|
||||||
|
|
||||||
split2@4.2.0: {}
|
split2@4.2.0: {}
|
||||||
|
|
||||||
sprintf-js@1.0.3: {}
|
sprintf-js@1.0.3: {}
|
||||||
@@ -16451,6 +16591,8 @@ snapshots:
|
|||||||
|
|
||||||
type-detect@4.0.8: {}
|
type-detect@4.0.8: {}
|
||||||
|
|
||||||
|
type-fest@0.20.2: {}
|
||||||
|
|
||||||
type-fest@0.21.3: {}
|
type-fest@0.21.3: {}
|
||||||
|
|
||||||
type-fest@0.7.1: {}
|
type-fest@0.7.1: {}
|
||||||
@@ -16668,6 +16810,10 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
string-width: 4.2.3
|
string-width: 4.2.3
|
||||||
|
|
||||||
|
widest-line@3.1.0:
|
||||||
|
dependencies:
|
||||||
|
string-width: 4.2.3
|
||||||
|
|
||||||
wrap-ansi@6.2.0:
|
wrap-ansi@6.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-styles: 4.3.0
|
ansi-styles: 4.3.0
|
||||||
|
|||||||
Reference in New Issue
Block a user